UNPKG

elara-ui

Version:

Elara based on element-ui, and add other usefull components

2,489 lines 91.4 kB
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 149);
/******/ })
/************************************************************************/
/******/ ({

/***/ 0:
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */

// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.

function normalizeComponent (
  scriptExports,
  render,
  staticRenderFns,
  functionalTemplate,
  injectStyles,
  scopeId,
  moduleIdentifier, /* server only */
  shadowMode /* vue-cli only */
) {
  // Vue.extend constructor export interop
  var options = typeof scriptExports === 'function'
    ? scriptExports.options
    : scriptExports

  // render functions
  if (render) {
    options.render = render
    options.staticRenderFns = staticRenderFns
    options._compiled = true
  }

  // functional template
  if (functionalTemplate) {
    options.functional = true
  }

  // scopedId
  if (scopeId) {
    options._scopeId = 'data-v-' + scopeId
  }

  var hook
  if (moduleIdentifier) { // server build
    hook = function (context) {
      // 2.3 injection
      context =
        context || // cached call
        (this.$vnode && this.$vnode.ssrContext) || // stateful
        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
      // 2.2 with runInNewContext: true
      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
        context = __VUE_SSR_CONTEXT__
      }
      // inject component styles
      if (injectStyles) {
        injectStyles.call(this, context)
      }
      // register component module identifier for async chunk inferrence
      if (context && context._registeredComponents) {
        context._registeredComponents.add(moduleIdentifier)
      }
    }
    // used by ssr in case component is cached and beforeCreate
    // never gets called
    options._ssrRegister = hook
  } else if (injectStyles) {
    hook = shadowMode
      ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
      : injectStyles
  }

  if (hook) {
    if (options.functional) {
      // for template-only hot-reload because in that case the render fn doesn't
      // go through the normalizer
      options._injectStyles = hook
      // register for functioal component in vue file
      var originalRender = options.render
      options.render = function renderWithStyleInjection (h, context) {
        hook.call(context)
        return originalRender(h, context)
      }
    } else {
      // inject component registration as beforeCreate hook
      var existing = options.beforeCreate
      options.beforeCreate = existing
        ? [].concat(existing, hook)
        : [hook]
    }
  }

  return {
    exports: scriptExports,
    options: options
  }
}


/***/ }),

/***/ 149:
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
__webpack_require__.r(__webpack_exports__);

// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/password/src/main.vue?vue&type=template&id=fd678f10&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"elara-password"},[_c('div',{staticClass:"elara-password__content"},[_c('div',{staticClass:"password-content",attrs:{"id":_vm.contentId}}),_vm._v(" "),(_vm.initSuccess && _vm.pwdPreview)?_c('i',{class:_vm.showPwd?'elara-icon-eye-open':'elara-icon-eye-close',style:({color: _vm.showPwd ? '#999' : '#ccc'}),on:{"click":_vm.onClick}}):_vm._e()]),_vm._v(" "),(_vm.showHint)?[(_vm.descriptions.length)?_c('div',{staticClass:"elara-password__description"},_vm._l((_vm.descriptions),function(d){return _c('div',{domProps:{"textContent":_vm._s(d)}})}),0):_vm._e(),_vm._v(" "),(_vm.showStrenth)?_c('elara-password-strenth',{staticClass:"top10",attrs:{"strenth":_vm.strenth}}):_vm._e()]:_vm._e()],2)}
var staticRenderFns = []


// CONCATENATED MODULE: ./packages/password/src/main.vue?vue&type=template&id=fd678f10&

// EXTERNAL MODULE: external "elara-ui/lib/password-strenth"
var password_strenth_ = __webpack_require__(44);
var password_strenth_default = /*#__PURE__*/__webpack_require__.n(password_strenth_);

// EXTERNAL MODULE: external "elara-ui/lib/mixins/emitter"
var emitter_ = __webpack_require__(4);
var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);

// EXTERNAL MODULE: ./packages/password/src/PassGuardCtrl.js
var PassGuardCtrl = __webpack_require__(45);

// CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--6!./node_modules/vue-loader/lib??vue-loader-options!./packages/password/src/main.vue?vue&type=script&lang=js&
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//

// const passwordComponentUrl = '//p1.jkimg.net/h5/web_angularjs/webangular3/framework/component-bportal-password.js';
// const passwordComponentUrl = '//teststable-m.stg.yqb.com/web_angularjs/webangular3/framework/component-bportal-password.js';



// import './crypto-js';
// import './encryptor';
// import './B_PassGuardCtrl';
// import './B_passwordCtrl';


/* harmony default export */ var mainvue_type_script_lang_js_ = ({
  componentName: 'ElaraPassword',
  name: 'ElaraPassword',
  components: _defineProperty({}, password_strenth_default.a.name, password_strenth_default.a),
  mixins: [emitter_default.a],
  props: {
    value: String,
    contentId: String,
    pgeId: String,
    type: { // 加密方式, plugin:插件加密, option:可选插件加密, simple:js加密,  **目前只支持插件方式**
      type: String,
      default: 'plugin'
    },
    k1: String,
    k2: String,
    k3: String,
    pwdPreview: {
      type: Boolean,
      default: false
    },
    showStrenth: {
      type: Boolean,
      default: false
    },
    focusShowHint: { // 聚焦的时候显示密码提示
      type: Boolean,
      default: false
    },
    ts: {
      type: String
    },
    // ------------------- 通用配置
    pwdType: Number, // 密码类型 0代表复杂密码 1代表6位数字支付密码 (可选)<必选安装插件,纯js加密>
    pgePath: { // 控件文件目录(可选)<必选安装插件,可选安装控件>
      type: String,
      default: '//p1.jkimg.net/h5/web_angularjs/webangular3/framework/js/passwordCtrl/ocx/B_Portal/'
    },
    pgeEdittype: Number, // 控件类型,0星号,1明文(可选)<必选安装插件,可选安装控件>
    pgeEreg1: {
      type: String,
      default: '[\\s\\S]*'
    }, // 输入过程中字符类型限制
    pgeEreg2: {
      type: String,
      default: '[\\s\\S]{6,20}'
    }, //  输入完毕后字符类型判断条件
    pgeMaxlength: { // 允许最大输入长度,默认是20(可选)<必选安装插件,可选安装控件>
      type: Number,
      default: 20
    },
    pgeClass: {
      type: String,
      default: 'pge-default-style' // 控件css样式
    },
    pgeInstallClass: {
      type: String,
      default: 'pge-install-style' // 针对安装或升级
    },
    // --------------------非插件模式必传
    // pgeWindowID: {
    //   type: String
    //   // default: 'password' + new Date().getTime() + 3
    // }, // 非插件控件Id,需唯一(非必传)
    pgeRZRandNum: {
      type: String,
      default: 'ggpqask72qlzw3wpe1v7om5a92gvsfef'
    }, // 非插件数据校验随机数
    pgeRZDataB: {
      type: String,
      default: 'EzM+0BwmNQj8vLuk/kVqRJBho3Mw0CVFSdQiKTc73dY='
    }, // 非插件数据校验数据B
    descriptions: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    placeholder: String
  },
  data: function data() {
    return {
      passwordCtrl: null,
      strenth: 0,
      showHint: !this.focusShowHint,
      initStart: false,
      initSuccess: false,
      showPwd: false
    };
  },

  watch: {
    'k1': {
      handler: function handler(v) {
        var _this = this;

        this.$nextTick(function () {
          if (v && !_this.initStart) {
            _this.initStart = true;
            _this.init({
              k1: _this.k1,
              k2: _this.k2,
              k3: _this.k3 || _this.k1
            });
          }
        });
      },

      immediate: true
    }
  },
  mounted: function mounted() {
    this.$on('fieldReset', this.clearPwdResult);
  },

  methods: {
    init: function init(data) {
      var _this2 = this;

      var option = Object.assign({
        k1: data.k1,
        k2: data.k2,
        k3: data.k3 || data.k1,
        pgeWindowID: 'password' + Math.floor(Math.random() * Math.pow(10, 15)),
        intervalCheck: function intervalCheck() {
          _this2.strenth = _this2.getPwdStrength();
          _this2.focusShowHint && (_this2.showHint = true);
          _this2.$emit('input', _this2.getPwdResult());
        },
        closeCheck: function closeCheck() {
          _this2.strenth = _this2.getPwdStrength();
          _this2.focusShowHint && (_this2.showHint = false);
          var pwdResult = _this2.getPwdResult();
          _this2.$emit('input', pwdResult);
          _this2.dispatch('ElaraFormItem', 'el.form.blur', pwdResult);
        },
        initCallBack: function initCallBack(installed) {
          _this2.$emit('init', installed);
          _this2.initSuccess = true;
        }
      }, this.$props);
      // this._loadJS(passwordComponentUrl, () => {
      switch (this.type) {
        case 'simple':
          // this.passwordCtrl = new SimplePasswordCtrl(option);
          break;
        case 'option':
          // this.passwordCtrl = new ChsPasswordCtrl(option);
          break;
        default:
          // this.passwordCtrl = new PasswordCtrl(option);
          this.passwordCtrl = new PassGuardCtrl["a" /* pge */](option);
          this.passwordCtrl.pwdhtml(this.contentId, this.passwordCtrl.load());
          this.passwordCtrl.pgInitialize(); // 初始化
          Object(PassGuardCtrl["b" /* pgeInit */])(); // input类型的另外需要用这个来初始化
      }
      // });
    },
    _loadJS: function _loadJS(url, callback) {
      if (!window.loadUrl) {
        window.loadUrl = {};
      }
      if (!window.loadUrl[url]) {
        window.loadUrl[url] = { status: 'initial' };
      }

      if (window.loadUrl[url].status === 'pending') {
        window.loadUrl[url].callbacks.push(callback);
      } else if (window.loadUrl[url].status === 'success') {
        callback();
      } else {
        window.loadUrl[url] = {
          callbacks: [callback],
          status: 'pending'
        };

        var handleSuccess = function handleSuccess() {
          window.loadUrl[url].status = 'success';
          window.loadUrl[url].callbacks.forEach(function (cb) {
            return cb();
          });
          window.loadUrl[url].callbacks = [];
        };

        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.charset = 'utf-8';

        if (document.documentMode === 8) {
          script.onreadystatechange = function () {
            if (script.readyState === 'loaded') {
              handleSuccess();
            }
          };
        } else {
          script.onload = function () {
            handleSuccess();
          };
        }
        script.src = url;
        script.onerror = handleSuccess;
        document.body.appendChild(script);
      }
    },
    onClick: function onClick() {
      if (this.showPwd) {
        this.hide();
      } else {
        this.show();
      }
    },
    show: function show() {
      this.showPwd = true;
      if (this.passwordCtrl.osBrowser === 10 || this.passwordCtrl.osBrowser === 11) {
        var x = this.passwordCtrl.pwdSetMing('1');
        document.getElementById(this.passwordCtrl.settings.pgeId).type = 'text';
        document.getElementById(this.passwordCtrl.settings.pgeId).value = x;
      } else {
        this.passwordCtrl.pwdSetMing('1');
      }
    },
    hide: function hide() {
      this.showPwd = false;
      if (this.passwordCtrl.osBrowser === 10 || this.passwordCtrl.osBrowser === 11) {
        var x = this.passwordCtrl.pwdLength();
        var temp = '';
        for (var i = 0; i < x; i++) {
          temp += '*';
        }
        if (this.passwordCtrl.osBrowser === 10) {
          document.getElementById(this.passwordCtrl.settings.pgeId).type = 'password';
        }
        document.getElementById(this.passwordCtrl.settings.pgeId).value = temp;
      } else {
        this.passwordCtrl.pwdSetMing('0');
      }
    },
    getPwdResult: function getPwdResult() {
      // 获取密码密文
      return this.passwordCtrl.pwdResult();
    },
    getDownloadPath: function getDownloadPath() {
      return this.pgePath + this.passwordCtrl.pgeditIEExe;
    },
    isEmpty: function isEmpty() {
      // 判断是否为空
      return this.passwordCtrl.isEmpty();
    },
    clearPwdResult: function clearPwdResult() {
      // 清空密码
      return this.passwordCtrl.clearPwdResult();
    },
    getPcInfo: function getPcInfo() {
      // 获取网卡信息密文
      return this.passwordCtrl.getPcInfo();
    },
    getDevID: function getDevID() {
      // 获取硬盘信息密文
      return this.passwordCtrl.getDevID();
    },
    getMachineCPU: function getMachineCPU() {
      // 获取cpu信息密文
      return this.passwordCtrl.machineCPU();
    },
    getBrowserInfo: function getBrowserInfo() {
      // 获取浏览器信息
      return this.passwordCtrl.getBrowserInfo();
    },
    checkInstall: function checkInstall() {
      // 判断下载控件是否安装
      return this.passwordCtrl.checkInstall();
    },
    getPwdLength: function getPwdLength() {
      // 获取控件密码长度
      return this.passwordCtrl.pwdLength();
    },
    getPwdStrength: function getPwdStrength() {
      // 获取输入密码复杂度
      if (this.passwordCtrl) {
        return this.passwordCtrl.pwdStrength();
      } else {
        return 0;
      }
    },
    pwdValid: function pwdValid() {
      return this.passwordCtrl.pwdValid();
    },
    checkBlackList: function checkBlackList() {
      // 判断密码是否属于灰名单
      return this.passwordCtrl.checkBlackList();
    },
    charsNum: function charsNum() {
      // 获取输入密码的字符种类的个数
      return this.passwordCtrl.charsNum();
    },
    isSupport: function isSupport() {
      // 判断控件是否支持当前浏览器
      return this.passwordCtrl.isSupport();
    },
    pwdHash: function pwdHash() {
      return this.passwordCtrl.pwdHash();
    }
  }
});
// CONCATENATED MODULE: ./packages/password/src/main.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__(0);

// CONCATENATED MODULE: ./packages/password/src/main.vue





/* normalize component */

var component = Object(componentNormalizer["a" /* default */])(
  src_mainvue_type_script_lang_js_,
  render,
  staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var main = (component.exports);
// CONCATENATED MODULE: ./packages/password/index.js


main.install = function (Vue) {
  Vue.component(main.name, main);
};

/* harmony default export */ var packages_password = __webpack_exports__["default"] = (main);

/***/ }),

/***/ 4:
/***/ (function(module, exports) {

module.exports = require("elara-ui/lib/mixins/emitter");

/***/ }),

/***/ 44:
/***/ (function(module, exports) {

module.exports = require("elara-ui/lib/password-strenth");

/***/ }),

/***/ 45:
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pge; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return pgeInit; });
/* harmony import */ var crypto_js_enc_utf8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(53);
/* harmony import */ var crypto_js_enc_utf8__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(crypto_js_enc_utf8__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var crypto_js_aes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54);
/* harmony import */ var crypto_js_aes__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(crypto_js_aes__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var crypto_js_mode_ecb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(55);
/* harmony import */ var crypto_js_mode_ecb__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(crypto_js_mode_ecb__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var crypto_js_pad_pkcs7__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56);
/* harmony import */ var crypto_js_pad_pkcs7__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(crypto_js_pad_pkcs7__WEBPACK_IMPORTED_MODULE_3__);
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

///////////////////////////////////////////////////////////





var Ajax = function () {
	function request(opt) {
		function fn() {}
		var url = opt.url || "";
		var async = opt.async !== false,
		    method = opt.method || 'GET',
		    data = opt.data || null,
		    success = opt.success || fn,
		    error = opt.failure || fn;
		method = method.toUpperCase();
		if (method == 'GET' && data) {
			var args = "";
			if (typeof data == 'string') {
				//alert("string")  
				args = data;
			} else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) == 'object') {
				//alert("object")  
				var arr = new Array();
				for (var k in data) {
					var v = data[k];
					arr.push(k + "=" + v);
				}
				args = arr.join("&");
			}
			url += (url.indexOf('?') == -1 ? '?' : '&') + args;
			data = null;
		}
		var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
		xhr.onreadystatechange = function () {
			_onStateChange(xhr, success, error);
		};
		xhr.open(method, url, async);
		if (method == 'POST') {
			xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;');
		}
		xhr.send(data);
		return xhr;
	}
	function _onStateChange(xhr, success, failure) {
		if (xhr.readyState == 4) {
			var s = xhr.status;
			if (s >= 200 && s < 300) {
				success(xhr);
			} else {
				failure(xhr);
			}
		} else {}
	}
	return {
		request: request
	};
}();
function jsonp(options) {
	options = options || {};
	if (!options.url || !options.callback) {
		throw new Error("参数不合法");
	}
	var callbackName = ('jsonp_' + Math.random()).replace(".", "");
	var oHead = document.getElementsByTagName('head')[0];
	options.data[options.callback] = callbackName;
	var params = formatParams(options.data);
	var oS = document.createElement('script');
	oHead.appendChild(oS);

	//创建jsonp回调函数
	window[callbackName] = function (json) {
		oHead.removeChild(oS);
		clearTimeout(oS.timer);
		window[callbackName] = null;
		options.success && options.success(json);
	};

	//发送请求
	oS.src = options.url + '?' + params;

	//超时处理
	if (options.time) {
		oS.timer = setTimeout(function () {
			window[callbackName] = null;
			oHead.removeChild(oS);
			options.fail && options.fail({ message: "超时" });
		}, options.time);
	}
};

//格式化参数
function formatParams(data) {
	var arr = [];
	for (var name in data) {
		arr.push(name + '=' + encodeURIComponent(data[name]));
	}
	return arr.join('&');
}

function setAttribute(attrs, settings) {
	var att = '';
	for (var i in attrs) {
		if (settings[attrs[i]]) {
			att += attrs[i] + '=' + settings[attrs[i]];
		}
	}
	return att;
}

///////////////////////////////////////////////////////////
// util class - base64
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);
// encode 
function base64encode(str) {
	var out, i, len;
	var c1, c2, c3;
	len = str.length;
	i = 0;
	out = "";
	while (i < len) {
		c1 = str.charCodeAt(i++) & 255;
		if (i == len) {
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt((c1 & 3) << 4);
			out += "==";
			break;
		}
		c2 = str.charCodeAt(i++);
		if (i == len) {
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
			out += base64EncodeChars.charAt((c2 & 15) << 2);
			out += "=";
			break;
		}
		c3 = str.charCodeAt(i++);
		out += base64EncodeChars.charAt(c1 >> 2);
		out += base64EncodeChars.charAt((c1 & 3) << 4 | (c2 & 240) >> 4);
		out += base64EncodeChars.charAt((c2 & 15) << 2 | (c3 & 192) >> 6);
		out += base64EncodeChars.charAt(c3 & 63);
	}
	return out;
}
// decode 
function base64decode(str) {
	var c1, c2, c3, c4;
	var i, len, out;
	len = str.length;
	i = 0;
	out = "";
	while (i < len) {
		do {
			c1 = base64DecodeChars[str.charCodeAt(i++) & 255];
		} while (i < len && c1 == -1);
		if (c1 == -1) break;
		do {
			c2 = base64DecodeChars[str.charCodeAt(i++) & 255];
		} while (i < len && c2 == -1);
		if (c2 == -1) break;
		out += String.fromCharCode(c1 << 2 | (c2 & 48) >> 4);
		do {
			c3 = str.charCodeAt(i++) & 255;
			if (c3 == 61) return out;
			c3 = base64DecodeChars[c3];
		} while (i < len && c3 == -1);
		if (c3 == -1) break;
		out += String.fromCharCode((c2 & 15) << 4 | (c3 & 60) >> 2);
		do {
			c4 = str.charCodeAt(i++) & 255;
			if (c4 == 61) return out;
			c4 = base64DecodeChars[c4];
		} while (i < len && c4 == -1);
		if (c4 == -1) break;
		out += String.fromCharCode((c3 & 3) << 6 | c4);
	}
	return out;
}
function utf16to8(str) {
	var out, i, len, c;
	out = "";
	len = str.length;
	for (i = 0; i < len; i++) {
		c = str.charCodeAt(i);
		if (c >= 1 && c <= 127) {
			out += str.charAt(i);
		} else if (c > 2047) {
			out += String.fromCharCode(224 | c >> 12 & 15);
			out += String.fromCharCode(128 | c >> 6 & 63);
			out += String.fromCharCode(128 | c >> 0 & 63);
		} else {
			out += String.fromCharCode(192 | c >> 6 & 31);
			out += String.fromCharCode(128 | c >> 0 & 63);
		}
	}
	return out;
}
function utf8to16(str) {
	var out, i, len, c;
	var char2, char3;
	out = "";
	len = str.length;
	i = 0;
	while (i < len) {
		c = str.charCodeAt(i++);
		switch (c >> 4) {
			case 0:
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
			case 7:
				// 0xxxxxxx
				out += str.charAt(i - 1);
				break;

			case 12:
			case 13:
				// 110x xxxx 10xx xxxx
				char2 = str.charCodeAt(i++);
				out += String.fromCharCode((c & 31) << 6 | char2 & 63);
				break;

			case 14:
				// 1110 xxxx 10xx xxxx 10xx xxxx
				char2 = str.charCodeAt(i++);
				char3 = str.charCodeAt(i++);
				out += String.fromCharCode((c & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0);
				break;
		}
	}
	return out;
}
///////////////////////////////////////////////////////////

var pge = void 0;

(function (a) {
	var PGEdit_IE32_CLASSID = "B406D90D-BF27-4F1A-8730-D4564AFFE06E";
	var PGEdit_IE32_CAB = "";
	var PGEdit_IE32_EXE = "PingAnALL.exe";
	var PGEdit_IE_VERSION = "1,0,0,4";
	var PGEdit_IE64_CLASSID = "B406D90D-BF27-4F1A-8730-D4564AFFE06E";
	var PGEdit_IE64_CAB = "";
	var PGEdit_IE64_EXE = "PingAnALL.exe";
	var PGEdit_FF = "PingAnALL.exe";
	var PGEdit_FF_VERSION = "1.0.0.4";
	var PGEdit_MacOs = "PingAnPaySecurity.pkg";
	var PGEdit_MacOs_VERSION = "1.0.0.6";
	var PGEdit_MacOs_Safari = "PingAnPaySecurity.pkg";
	var PGEdit_MacOs_Safari_VERSION = "1.0.0.6";
	/** Edge/Chrome42+ **/
	var PGEdit_Edge = "PingAnALL.exe";
	var PGEdit_Edge_Mac = "PingAnPaySecurity.pkg";
	var PGEdit_Edge_VERSION = "1.0.0.5";
	var PGEdit_EdgeMac_VERSION = "1.0.0.3";
	var BLACKLIST = "1234qwer,Pass1234,qwer1234,1qaz2wsx,000000,111111,11111111,112233,123123,123321,123456,12345678,654321,666666,888888,abcdef,abcabc,abc123,a1b2c3,aaa111,123qwe,qwerty,qweasd,admin,password,p@ssword,passwd,p@sswd,pa$$wd,pas$wd,pa$swd,iloveyou,5201314,password,123456,12345678,qwerty,abc123,monkey,1234567,letmein,trustno1,dragon,baseball,111111,iloveyou,master,sunshine,ashley,bailey,passw0rd,shadow,123123,654321,superman,qazwsx,michael,football"; // .split(",");
	/** Edge/Chrome42+ some vars * */
	var urls = "https://windows10.microdone.cn:5251",
	    port = 5251;
	var CIJSON = { "interfacetype": 0, "data": { "switch": 3 } };
	var ICJSON = { "interfacetype": 0, "data": { "switch": 2 } };
	var INCJSON = { "interfacetype": 1, "data": {} };
	var OPJSON = { "interfacetype": 0, "data": { "switch": 0 } };
	var XTJSON = { "interfacetype": 0, "data": { "switch": 5 } };
	var CPJSON = { "interfacetype": 0, "data": { "switch": 1 } };
	var OUTJSON = { "interfacetype": 2, "data": {} };
	var CLPJSON = { "interfacetype": 0, "data": { "switch": 4 } };
	var isInstalled = 0,
	    objVersion = "",
	    interv,
	    urls,
	    logFlag = true,
	    onceInterv = {},
	    iterArray = [],
	    RZCIJSON,
	    inFlag = {},
	    isInit = {};
	var license = "TGxEYmtzTitwdmhHVDJSb2g5U2VCT3EzVW1ac1NTdjgrOXE1RWZKbDZZMU9OVUViQ1dLa0RMTTRPWS9jeUJ0ZGRHVXBMNmF6cXhKMzhKNDI2aS84V3pRNzBwVC8yU29TQ3FKME5VVk1UZlUvZDlubzY0TG9sanRFdkVDajNhT1lvVTBJeUZPSHIzalNCZUdlaWxicG4xNmtBRW8wZ1hrWU0rUEFGYXVuUlg0PXsiaWQiOjAsInR5cGUiOiJwcm9kdWN0IiwicGFja2FnZSI6WyIiXSwiYXBwbHluYW1lIjpbIip5cWIuY29tIl0sInBsYXRmb3JtIjo0fQ==";
	var licenseMac = "SGtoNDNsVGlDNWMwZDhYZGJQc2IwS2ZCekFaRmdLTFc5bld5MEVMOEFNemJ0dTQvM1V4WWNiYVRSYVJoU2ZoOGZFdnBDem5RVzRYbmpUOUxySEhTV1RCQWk1L0dMNHlUOE4rTkpXay9yMmZISHRnanNKTkxvMDBNU0ZHSENlRVl6OFFEdzhtMFhmanZSQm55QWcrRDI2OG8wUVE5SVZwdnNCeUVkQkJNN1VNPXsiaWQiOjAsInR5cGUiOiJwcm9kdWN0IiwicGFja2FnZSI6WyIiXSwiYXBwbHluYW1lIjpbIip5cWIuY29tIl0sInBsYXRmb3JtIjo4fQ==";
	var UPEdit_Update = "1",
	    pges = [];
	if (navigator.userAgent.indexOf("MSIE") < 0) {
		navigator.plugins.refresh();
	}

	pge = function pge(option) {
		this.settings = {};
		if (option) {
			this.settings = option;
		}
		this.settings.pgeUrls = "https://windows10.microdone.cn";
		this.pgeDownText = "请点此安装控件";
		this.settings.pgePort = "5251";
		this.osBrowser = this.checkOsBrowser();
		if (this.osBrowser != 10 && this.osBrowser != 11) {
			this.pgeVersion = this.getVersion();
		}
		a.isInstalled = this.checkInstall();
		if (this.osBrowser == 10 || this.osBrowser == 11) {
			if (this.settings.pgeId) {
				for (var i = 0; i < pges.length; i++) {
					if (this.settings.pgeId == pges[i].settings.pgeId) {
						pges.splice(i, 1);
					}
				}
				pges.push(this);
				inFlag[this.settings.pgeWindowID] = { "flag": false };
			}
		}
	};
	pge.prototype.pwdGetData = function (datas) {
		var d = 0;
		var str = JSON.stringify(datas).replace(/\+/g, "%2B");
		Ajax.request({
			timeout: 1000,
			url: urls,
			type: 'GET',
			async: false,
			data: {
				"jsoncallback": "cb",
				"str": str
			},
			success: function success(x) {
				x = x.responseText.substr("cb(".length);
				x = x.substring(0, x.length - 1);
				x = JSON.parse(x);
				d = x.data;
				return d;
			},
			error: function error(x) {
				d = -1;
			}
		});
		return d;
	};
	//init control params
	pge.prototype.pgInitialize = function () {
		if (a.isInstalled) {
			if (this.osBrowser == 1 || this.osBrowser == 3) {
				var control = this.pwdGetEById(this.settings.pgeId);
				control.style.display = "";
				(this.settings.initCallBack || function () {})(a.isInstalled);
				var _this = this;
				control.addEventListener('keydown', function (event) {
					//20190821
					if (13 == event.keyCode || 27 == event.keyCode) {
						_this.settings.pgeOnkeydown && _this.settings.pgeOnkeydown();
					} else {
						_this.settings.intervalCheck && _this.settings.intervalCheck();
					}
				});
				control.addEventListener('blur', function (event) {
					//20190821
					_this.settings.closeCheck && _this.settings.closeCheck();
				});
			}
			if (this.osBrowser != 10 && this.osBrowser != 11) {
				var control = document.getElementById(this.settings.pgeId);
				if (this.settings.pgeBackColor != undefined && this.settings.pgeBackColor != "") control.BackColor = this.settings.pgeBackColor;
				if (this.settings.pgeForeColor != undefined && this.settings.pgeForeColor != "") control.ForeColor = this.settings.pgeForeColor;
				control.input11 = BLACKLIST;
				control.input12 = this.settings.k3;
				control.input16 = BLACKLIST;
				control.input10 = this.settings.k3;
			}
		} else {
			if (this.osBrowser == 1 || this.osBrowser == 3) {
				this.pwdGetEById(this.settings.pgeId + "_down").style.display = "";
				(this.settings.initCallBack || function () {})(a.isInstalled);
			}
		}
	};
	// return control html tag
	pge.prototype.load = function (callf) {
		if (this.osBrowser == 10 || this.osBrowser == 11) {
			return this.getpgeHtml();
		}
		if (!a.isInstalled) {
			if (!!callf) callf();
			return this.getDownHtml();
		} else {
			if (this.osBrowser == 2) {
				if (this.pgeVersion < PGEdit_FF_VERSION && UPEdit_Update == 1) {
					this.setDownText();
					return this.getDownHtml();
				}
			} else if (this.osBrowser == 6) {
				if (this.pgeVersion < PGEdit_MacOs_VERSION && UPEdit_Update == 1) {
					this.setDownText();
					return this.getDownHtml();
				}
			} else if (this.osBrowser == 8) {
				if (this.pgeVersion < PGEdit_MacOs_Safari_VERSION && UPEdit_Update == 1) {
					this.setDownText();
					return this.getDownHtml();
				}
			}
		}
		return this.getpgeHtml();
	};
	// the Tip
	pge.prototype.getTipHtml = function () {
		var html = [];
		// if (!this.pwdGetEById("pwdGrdTips")) {
		//     html.push('<div style="position:relative;width:0px;height:0px;overflow:visible"><div class="passwordCtrl-tips" id="pwdGrdTips">');
		//     html.push('<span class="passwordCtrl-tips-text">控件可保护您输入信息的安全</span>');
		//     html.push('<div class="passwordCtrl-tips-angle"></div>');
		//     html.push("</div></div>");
		// }
		return html.join("");
	};
	// get control html tag
	pge.prototype.getpgeHtml = function () {
		if (this.osBrowser == 1 || this.osBrowser == 3) {
			var pgeOcx = '<OBJECT align="middle" ID="' + this.settings.pgeId + '" CLASSID="CLSID:' + this.pgeditIEClassid + '" style="display:none" codebase="' + this.settings.pgePath + this.pgeditIECab + '"';
			// pgeOcx += ' onkeydown="if(13==event.keyCode || 27==event.keyCode){' + (this.settings.pgeOnkeydown || function(){}) + '}else{' + (this.settings.intervalCheck || function(){}) + '};"';
			// // if (this.settings.pgeOnblur != undefined && this.settings.pgeOnblur != "") pgeOcx += ' onblur="' + this.settings.pgeOnblur + '"';//为了与chrome等浏览器的input事件触发保持统一,所以换成closeCheck
			// pgeOcx += ' onblur="' + (this.settings.closeCheck || function(){}) + '"';//20190816, blur时候触发


			if (this.settings.pgeOnfocus != undefined && this.settings.pgeOnfocus != "") pgeOcx += ' onfocus="' + this.settings.pgeOnfocus + '"';
			if (this.settings.pgeTabindex != undefined && this.settings.pgeTabindex != "") pgeOcx += ' tabindex="' + this.settings.pgeTabindex + '" ';
			if (this.settings.pgeClass != undefined && this.settings.pgeClass != "") pgeOcx += ' class="' + this.settings.pgeClass + '"';
			pgeOcx += ">";
			if (this.settings.pgeEdittype != undefined && this.settings.pgeEdittype != "") pgeOcx += '<param name="edittype" value="' + this.settings.pgeEdittype + '">';
			if (this.settings.pgeMaxlength != undefined && this.settings.pgeMaxlength != "") pgeOcx += '<param name="maxlength" value="' + this.settings.pgeMaxlength + '">';
			if (this.settings.pgeEreg1 != undefined && this.settings.pgeEreg1 != "") pgeOcx += '<param name="input2" value="' + this.settings.pgeEreg1 + '">';
			if (this.settings.pgeEreg2 != undefined && this.settings.pgeEreg2 != "") pgeOcx += '<param name="input3" value="' + this.settings.pgeEreg2 + '">';
			if (this.settings.pgeCapsLKOn != undefined && this.settings.pgeCapsLKOn != "") pgeOcx += '<param name="input52" value="' + this.settings.pgeCapsLKOn + '">';
			if (this.settings.pgeCapsLKOff != undefined && this.settings.pgeCapsLKOff != "") pgeOcx += '<param name="input53" value="' + this.settings.pgeCapsLKOff + '">';
			pgeOcx += "</OBJECT>";
			pgeOcx += '<span id="' + this.settings.pgeId + '_down" class="' + this.settings.pgeInstallClass + '" style="text-align:center;display:none;">' + this.getTipHtml() + '<a href="' + this.settings.pgePath + this.pgeditIEExe + '">' + this.pgeDownText + "</a></span>";
			return pgeOcx;
		} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
			//输入无法检测
			var pgeOcx = '<embed align="absmiddle" ID="' + this.settings.pgeId + '"  maxlength="' + this.settings.pgeMaxlength + '" input_2="' + this.settings.pgeEreg1 + '" input_3="' + this.settings.pgeEreg2 + '" edittype="' + this.settings.pgeEdittype + '" type="application/pinganfu-edit" tabindex="' + this.settings.pgeTabindex + '" class="' + this.settings.pgeClass + '" ';
			// if (this.settings.pgeOnblur != undefined && this.settings.pgeOnblur != "") pgeOcx += ' onblur="' + this.settings.pgeOnblur + '"';
			pgeOcx += ' onblur="' + (this.settings.closeCheck || function () {}) + '"'; //20190816, blur时候触发

			if (this.settings.pgeOnkeydown != undefined && this.settings.pgeOnkeydown != "") pgeOcx += ' input_1013="' + this.settings.pgeOnkeydown + '"';
			if (this.settings.tabCallback != undefined && this.settings.tabCallback != "") pgeOcx += " input_1009=\"XPASSGUARD.postTab('" + this.settings.tabCallback + "')\"";
			if (this.settings.pgeFontName != undefined && this.settings.pgeFontName != "") pgeOcx += ' FontName="' + this.settings.pgeFontName + '"';
			if (this.settings.pgeFontSize != undefined && this.settings.pgeFontSize != "") pgeOcx += " FontSize=" + Number(this.settings.pgeFontSize) + "";
			if (this.settings.pgeCapsLKOn != undefined && this.settings.pgeCapsLKOn != "") pgeOcx += " input_1020=" + this.settings.pgeCapsLKOn + "";
			if (this.settings.pgeCapsLKOff != undefined && this.settings.pgeCapsLKOff != "") pgeOcx += " input_1016=" + this.settings.pgeCapsLKOff + "";
			pgeOcx += " >";
			return pgeOcx;
		} else if (this.osBrowser == 6) {
			//输入无法检测
			// return '<embed align="absmiddle" ID="' + this.settings.pgeId + '" input2="' + this.settings.pgeEreg1 + '" input3="' + this.settings.pgeEreg2 + '" losefocuscallback="'+this.settings.pgeOnblur+'" havefocuscallback="'+this.settings.pgeOnfocus+'" input4="' + Number(this.settings.pgeMaxlength) + '" input0="' + Number(this.settings.pgeEdittype) + '" type="application/pingan-pay" version="' + PGEdit_MacOs_VERSION + '" tabindex="' + this.settings.pgeTabindex + '" class="' + this.settings.pgeClass + '">';
			return '<embed align="absmiddle" ID="' + this.settings.pgeId + '" input2="' + this.settings.pgeEreg1 + '" input3="' + this.settings.pgeEreg2 + '" losefocuscallback="' + this.settings.closeCheck + '" havefocuscallback="' + this.settings.pgeOnfocus + '" input4="' + Number(this.settings.pgeMaxlength) + '" input0="' + Number(this.settings.pgeEdittype) + '" type="application/pingan-pay" version="' + PGEdit_MacOs_VERSION + '" tabindex="' + this.settings.pgeTabindex + '" class="' + this.settings.pgeClass + '">';
		} else if (this.osBrowser == 8) {
			//输入无法检测
			// return '<embed align="absmiddle" ID="' + this.settings.pgeId + '" input2="' + this.settings.pgeEreg1 + '" input3="' + this.settings.pgeEreg2 + '" losefocuscallback="'+this.settings.pgeOnblur+'" havefocuscallback="'+this.settings.pgeOnfocus+'" input4="' + Number(this.settings.pgeMaxlength) + '" input0="' + Number(this.settings.pgeEdittype) + '" type="application/pingan-pay" version="' + PGEdit_MacOs_Safari_VERSION + '" tabindex="' + this.settings.pgeTabindex + '" class="' + this.settings.pgeClass + '">';
			return '<embed align="absmiddle" ID="' + this.settings.pgeId + '" input2="' + this.settings.pgeEreg1 + '" input3="' + this.settings.pgeEreg2 + '" losefocuscallback="' + this.settings.closeCheck + '" havefocuscallback="' + this.settings.pgeOnfocus + '" input4="' + Number(this.settings.pgeMaxlength) + '" input0="' + Number(this.settings.pgeEdittype) + '" type="application/pingan-pay" version="' + PGEdit_MacOs_Safari_VERSION + '" tabindex="' + this.settings.pgeTabindex + '" class="' + this.settings.pgeClass + '">';
		} else if (this.osBrowser == 10 || this.osBrowser == 11) {
			return '<div id="' + this.settings.pgeId + '_down" class="' + this.settings.pgeInstallClass + '" >' + this.getTipHtml() + '<a style="padding-left:5px;" class="winA" href="' + this.settings.pgePath + this.pgeditFFExe + '">' + this.pgeDownText + '</a></div>';
		} else {
			return '<div id="' + this.settings.pgeId + '_down" class="' + this.settings.pgeInstallClass + '" style="text-align:center;">当前浏览器不支持安装安全控件,请更换浏览器后安装</div>';
		}
	},
	// get down html
	pge.prototype.getDownHtml = function () {
		if (this.osBrowser == 1 || this.osBrowser == 3) {
			return '<div id="' + this.settings.pgeId + '_down" class="' + this.settings.pgeInstallClass + '" >' + this.getTipHtml() + '<a style="padding-left:5px;" href="' + this.settings.pgePath + this.pgeditIEExe + '">' + this.pgeDownText + " </a></div>";
		} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5 || this.osBrowser == 6 || this.osBrowser == 8) {
			return '<div id="' + this.settings.pgeId + '_down" class="' + this.settings.pgeInstallClass + '" >' + this.getTipHtml() + '<a style="padding-left:5px;" href="' + this.settings.pgePath + this.pgeditFFExe + '">' + this.pgeDownText + "</a></div>";
		} else {
			return '<div id="' + this.settings.pgeId + '_down" class="' + this.settings.pgeInstallClass + '">当前浏览器不支持安装安全控件,请更换浏览器后安装</div>';
		}
	},
	// get browser info
	pge.prototype.getBrowserInfo = function () {
		var Sys = {};
		var ua = navigator.userAgent.toLowerCase();
		var re = /(msie|firefox|chrome|opr|version).*?([\d.]+)/;
		var m = ua.match(re);
		Sys.browser = m[1].replace(/version/, "'safari'");
		Sys.ver = m[2];
		return Sys;
	};
	// check os && browser
	pge.prototype.checkOsBrowser = function () {
		var userosbrowser;
		var regStr_chrome = /chrome\/[\d.]+/gi;
		var regStr_firefox = /firefox\/[\d.]+/gi;
		if (navigator.platform == "Win32" || navigator.platform == "Windows") {
			if (navigator.userAgent.indexOf("MSIE") > 0 || navigator.userAgent.indexOf("msie") > 0 || navigator.userAgent.indexOf("Trident") > 0 || navigator.userAgent.indexOf("trident") > 0) {
				if (navigator.userAgent.indexOf("ARM") > 0) {
					userosbrowser = 9; // win8 RAM Touch
					this.pgeditIEExe = "";
				} else {
					userosbrowser = 1; // windows32ie32
					this.pgeditIEClassid = PGEdit_IE32_CLASSID;
					this.pgeditIECab = PGEdit_IE32_CAB;
					this.pgeditIEExe = PGEdit_IE32_EXE;
				}
			} else if (navigator.userAgent.indexOf("Edge") > 0) {
				userosbrowser = 10;
				this.pgeditFFExe = PGEdit_Edge;
			} else if (navigator.userAgent.indexOf("Chrome") > 0) {
				var chromeVersion = navigator.userAgent.match(regStr_chrome).toString();
				chromeVersion = parseInt(chromeVersion.replace(/[^0-9.]/gi, ""));
				if (chromeVersion >= 42) {
					userosbrowser = 10;
					this.pgeditFFExe = PGEdit_Edge;
				} else {
					userosbrowser = 2;
					this.pgeditFFExe = PGEdit_FF;
				}
			} else if (navigator.userAgent.indexOf("Firefox") > 0) {
				var firefoxVersion = navigator.userAgent.match(regStr_firefox).toString();
				firefoxVersion = parseInt(firefoxVersion.replace(/[^0-9.]/gi, ""));
				if (firefoxVersion >= 51) {
					userosbrowser = 10;
					this.pgeditFFExe = PGEdit_Edge;
				} else {
					userosbrowser = 2;
					this.pgeditFFExe = PGEdit_FF;
				}
			} else {
				userosbrowser = 2; // windowsff
				this.pgeditFFExe = PGEdit_FF;
			}
		} else if (navigator.platform == "Win64") {
			if ((navigator.userAgent.indexOf("Windows NT 6.2") > 0 || navigator.userAgent.indexOf("windows nt 6.2") > 0) && navigator.userAgent.indexOf("Firefox") == -1) {
				userosbrowser = 1; // windows32ie32
				this.pgeditIEClassid = PGEdit_IE32_CLASSID;
				this.pgeditIECab = PGEdit_IE32_CAB;
				this.pgeditIEExe = PGEdit_IE32_EXE;
			} else if (navigator.userAgent.indexOf("MSIE") > 0 || navigator.userAgent.indexOf("msie") > 0 || navigator.userAgent.indexOf("Trident") > 0 || navigator.userAgent.indexOf("trident") > 0) {
				userosbrowser = 3; //windows64ie64
				this.pgeditIEClassid = PGEdit_IE64_CLASSID;
				this.pgeditIECab = PGEdit_IE64_CAB;
				this.pgeditIEExe = PGEdit_IE64_EXE;
			} else if (navigator.userAgent.indexOf("Edge") > 0 || navigator.userAgent.indexOf("Firefox")) {
				userosbrowser = 10;
				this.pgeditFFExe = PGEdit_Edge;
			} else if (navigator.userAgent.indexOf("Chrome") > 0) {
				var chromeVersion = navigator.userAgent.match(regStr_chrome).toString();
				chromeVersion = parseInt(chromeVersion.replace(/[^0-9.]/gi, ""));
				if (chromeVersion >= 42) {
					userosbrowser = 10;
					this.pgeditFFExe = PGEdit_Edge;
				} else {
					userosbrowser = 2;
					this.pgeditFFExe = PGEdit_FF;
				}
			} else {
				userosbrowser = 2;
				this.pgeditFFExe = PGEdit_FF;
			}
		} else if (navigator.userAgent.indexOf("Macintosh") > 0) {
			if (navigator.userAgent.indexOf("Safari") > 0 && (navigator.userAgent.indexOf("Version/5.1") > 0 || navigator.userAgent.indexOf("Version/5.2") > 0 || navigator.userAgent.indexOf("Version/6") > 0)) {
				userosbrowser = 8; //macos Safari 5.1 more
				this.pgeditFFExe = PGEdit_MacOs;
			} else if (navigator.userAgent.indexOf("Firefox") > 0 || navigator.userAgent.indexOf("Chrome") > 0) {
				var chromeVersion = navigator.userAgent.match(regStr_chrome);
				var firefoxVersion = navigator.userAgent.match(regStr_firefox);
				if (chromeVersion != null) {
					chromeVersion = chromeVersion.toString();
					chromeVersion = parseInt(chromeVersion.replace(/[^0-9.]/gi, ""));
					if (chromeVersion >= 42) {
						userosbrowser = 11;
						this.pgeditFFExe = PGEdit_Edge_Mac;
					} else {
						userosbrowser = 6;
						this.pgeditFFExe = PGEdit_MacOs;
					}
				}

				if (firefoxVersion != null) {
					firefoxVersion = firefoxVersion.toString();
					firefoxVersion = parseInt(firefoxVersion.replace(/[^0-9.]/gi, ""));
					if (firefoxVersion >= 50) {
						userosbrowser = 11;
						this.pgeditFFExe = PGEdit_Edge_Mac;
					} else {
						userosbrowser = 6;
						this.pgeditFFExe = PGEdit_MacOs;
					}
				}
			} else if (navigator.userAgent.indexOf("QQBrowserLite") > -1) {
				userosbrowser = 11;
				this.pgeditFFExe = PGEdit_Edge_Mac;
			} else if (navigator.userAgent.indexOf("Opera") >= 0 && (navigator.userAgent.indexOf("Version/11.6") > 0 || navigator.userAgent.indexOf("Version/11.7") > 0)) {
				userosbrowser = 6; //macos
				this.pgeditFFExe = PGEdit_MacOs;
			} else if (navigator.userAgent.indexOf("Safari") >= 0) {
				var regStr_mac = /Version\/[\d.]+/gi;
				var num = navigator.userAgent.match(regStr_mac).toString();
				num = parseInt(num.replace(/[^0-9.]/gi, ""));

				if (num >= 12) {
					userosbrowser = 11;
					this.pgeditFFExe = PGEdit_Edge_Mac;
				} else {

					userosbrowser = 6; //macos
					this.pgeditFFExe = PGEdit_MacOs;
				};
			} else {
				userosbrowser = 0; //macos
				this.pgeditFFExe = "";
			}
		}
		return userosbrowser;
	};
	// is support?
	pge.prototype.isSupport = function () {
		if (this.osBrowser == 1 || this.osBrowser == 3 || this.osBrowser == 2 || this.osBrowser == 6 || this.osBrowser == 8 || this.osBrowser == 10 || this.osBrowser == 11) {
			return true;
		} else {
			return false;
		}
	};
	// check install
	pge.prototype.checkInstall = function (s, callf) {
		try {
			if (this.osBrowser == 1) {
				var comActiveX = new ActiveXObject("PingAnPay.PassGuard.1");
				if (this.convertIEVersion(comActiveX.output35) < this.convertIEVersion(PGEdit_IE_VERSION)) {
					this.pgeDownText = "请点此升级控件";
					return false;
				}
			} else if (this.osBrowser == 2 || this.osBrowser == 6 || this.osBrowser == 8) {
				var arr = new Array();
				if (this.osBrowser == 6) {
					var pge_info = navigator.plugins['pinganpay 1G'].description;
				} else if (this.osBrowser == 8) {
					var pge_info = navigator.plugins['pinganpay 1G'].description;
				} else {
					var pge_info = navigator.plugins['PingAnFuEdit'].description;
				}

				if (pge_info.indexOf(":") > 0) {
					arr = pge_info.split(":");
					var pge_version = arr[1];
				} else {
					var pge_version = "";
				}
				if (this.osBrowser == 6 || this.osBrowser == 8) {
					if (this.convertVersion(pge_version) < this.convertVersion(PGEdit_MacOs_VERSION)) {
						this.pgeDownText = "请点此升级控件";
						return false;
					}
				}
				if (this.osBrowser == 2) {
					if (this.convertVersion(pge_version) < this.convertVersion(PGEdit_FF_VERSION)) {
						this.pgeDownText = "请点此升级控件";
						return false;
					}
				}
			} else if (this.osBrowser == 3) {
				var comActiveX = new ActiveXObject("PingAnPay.PassGuard.1");
				if (this.convertIEVersion(comActiveX.output35) < this.convertIEVersion(PGEdit_IE_VERSION)) {
					this.pgeDownText = "请点此升级控件";
					return false;
				}
			} else if ((this.osBrowser == 10 || this.osBrowser == 11) && s == 1) {
				var obj = this,
				    id = this.settings.pgeWindowID;
				CIJSON.id = this.settings.pgeWindowID;
				RZCIJSON = { "rankey": "", "datab": "", "datac": JSON.stringify(CIJSON) };
				urls = this.settings.pgeUrls + ":" + this.settings.pgePort;
				if (logFlag) console.log(urls);
				jsonp({ time: 7000, url: urls,
					data: { "str": JSON.stringify(RZCIJSON), "type": "check", "jsoncallback": "cb" },
					callback: "jsoncallback",
					success: function success(x) {
						objVersion = x.data;
						a.pgeversion = objVersion;
						if (!!callf) callf(obj);
					},
					fail: function fail(jqXHR, textStatus, errorThrown) {
						if (obj.settings.pgePort < 5255) {
							obj.settings.pgePort++;
							obj.checkInstall(1, callf);
						} else {
							a.isInstalled = false;if (!!callf) callf(false);return;
						}
					}
				});
			}
		} catch (e) {
			return false;
		}
		return true;
	};
	// get control version
	pge.prototype.getVersion = function (callf) {
		try {
			if (this.osBrowser == 1 || this.osBrowser == 3) {
				var comActiveX = new ActiveXObject("PingAnPay.PassGuard.1");
				return comActiveX.output35;
			} else if (this.osBrowser == 2 || this.osBrowser == 6 || this.osBrowser == 8) {
				var arr = new Array();
				if (this.osBrowser == 6) {
					var pge_info = navigator.plugins['pinganpay 1G'].description;
				} else if (this.osBrowser == 8) {
					var pge_info = navigator.plugins['pinganpay 1G'].description;
				} else {
					var pge_info = navigator.plugins['PingAnFuEdit'].description;
				}
				if (pge_info.indexOf(":") > 0) {
					arr = pge_info.split(":");
					var pge_version = arr[1];
				} else {
					var pge_version = "";
				}
			} else if (this.osBrowser == 10 || this.osBrowser == 11) {
				var id = this.settings.pgeWindowID;
				OUTJSON.id = id;
				OUTJSON.data.datatype = 12;
				OUTJSON.data.encrypttype = 0;
				var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
				RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
				pge_version = this.pwdGetData(RZCIJSON);
			}
			return pge_version;
		} catch (e) {
			return "";
		}
	};
	pge.prototype.convertIEVersion = function (version) {
		if (version != "") {
			var m = version.split(",");
			var v = parseInt(m[0] * 1000) + parseInt(m[1] * 100) + parseInt(m[2] * 10) + parseInt(m[3]);
			return v;
		} else {
			return "";
		}
	};
	pge.prototype.convertVersion = function (version) {
		if (version != "") {
			var m = version.split(".");
			var v = parseInt(m[0] * 1000) + parseInt(m[1] * 100) + parseInt(m[2] * 10) + parseInt(m[3]);
			return v;
		} else {
			return "";
		}
	};
	// clear pwd
	pge.prototype.pwdclear = function () {
		if (a.isInstalled) {
			if (this.osBrowser == 10 || this.osBrowser == 11) {
				var id = this.settings.pgeWindowID;
				var inputID = this.settings.pgeId;
				this.pwdGetEById(inputID).value = "";
				CLPJSON.id = id;
				var datac = this.getEnStr(this.settings.pgeRZRandNum, CLPJSON);
				RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
				this.pwdGetData(RZCIJSON);
			} else {
				var control = document.getElementById(this.settings.pgeId);
				control.ClearSeCtrl();
			}
		}
	};
	// set random key
	pge.prototype.pwdSetSk = function (s, callf) {
		if (a.isInstalled) {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3 || this.osBrowser == 6 || this.osBrowser == 8) {
					control.input1 = s;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					control.input(1, s);
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {

					var id = this.settings.pgeWindowID;
					var INCJSON = { "interfacetype": 1, "data": {} };
					INCJSON.id = id;
					INCJSON.data.reg1 = this.settings.pgeEreg1;
					INCJSON.data.aeskey = s;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, INCJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					this.pwdGetData(RZCIJSON);
				}
			} catch (err) {}
		}
	};
	// get pwd enstr
	pge.prototype.pwdResult = function () {
		var code = '';
		if (!a.isInstalled) {
			code = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					control.input1 = this.settings.ts;
					control.input9 = this.settings.k1;
					control.input10 = this.settings.k2;
					code = control.output29;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					control.input(900, this.settings.ts);
					control.input(901, this.settings.k1);
					control.input(902, this.settings.k2);
					code = control.output(900);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					control.input1 = this.settings.ts;
					control.input14 = this.settings.k1;
					control.input15 = this.settings.k2;
					code = control.get_output23();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					OUTJSON.id = this.settings.pgeWindowID;
					OUTJSON.data.datatype = 900;
					OUTJSON.data.encrypttype = 0;
					var id = OUTJSON.id;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = '02';
			}
		}
		return code;
	};
	// 包含几种字符
	pge.prototype.charsNum = function () {
		var chnum = '';
		if (!a.isInstalled) {
			chnum = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					var v = control.output54;
					if (v == 1 || v == 2 || v == 4 || v == 8) {
						v = 1;
					} else if (v == 3 || v == 5 || v == 6 || v == 9 || v == 10 || v == 12) {
						v = 2;
					} else if (v == 7 || v == 11 || v == 13 || v == 14) {
						v = 3;
					} else if (v == 15) {
						v = 4;
					}
					chnum = v;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					var v = control.output(4, 1);
					var o = 0;
					if (v & 1) o++;
					if (v & 2) o++;
					if (v & 4) o++;
					if (v & 8) o++;
					chnum = o;
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var v = control.get_output16();
					var o = 0;
					if (v & 1) o++;
					if (v & 2) o++;
					if (v & 4) o++;
					if (v & 8) o++;
					chnum = o;
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 4;
					OUTJSON.data.encrypttype = 1;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var v = this.pwdGetData(RZCIJSON);
					var o = 0;
					if (v & 1) o++;
					if (v & 2) o++;
					if (v & 4) o++;
					if (v & 8) o++;
					chnum = o;
				}
			} catch (err) {
				chnum = '02';
			}
		}
		return chnum;
	};
	// 获取密码组成方式
	pge.prototype.getPatternCode = function () {
		var patternCode = -1;
		if (a.isInstalled) {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					patternCode = control.output54;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					patternCode = control.output(4, 1);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					patternCode = control.get_output16();
				}
			} catch (err) {}
		}
		return patternCode;
	};
	// is blacklist?
	pge.prototype.checkBlackList = function (callf) {
		var isgrey = '';
		if (!a.isInstalled) {
			isgrey = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					var val = control.output44;
					if (val == 2) {
						isgrey = true;
					} else {
						isgrey = false;
					}
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					control.input(903, BLACKLIST);
					isgrey = control.output(901);
					if (isgrey == "true") {
						isgrey = true;
					} else {
						isgrey = false;
					}
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var val = control.get_output12();
					if (val == 2) {
						isgrey = true;
					} else {
						isgrey = false;
					}
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 901;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var isg = this.pwdGetData(RZCIJSON);
					if (isg == "true" || isg == "2") {
						isgrey = true;
					} else {
						isgrey = false;
					}
				}
			} catch (err) {
				isgrey = '02';
			}
		}
		return isgrey;
	};
	// is blackrules?:判断是否不是6位生日、身份证号前后六位、手机号的后六位
	pge.prototype.checkBlackRules = function (blackRules, callf) {
		var isgrey = '';
		if (!a.isInstalled) {
			isgrey = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					control.input111 = blackRules;
					var isgrey = control.output111;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					control.input(905, blackRules);
					var isgrey = control.output(905);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					control.input17 = blackRules;
					var isgrey = control.get_output24();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 905;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var isg = this.pwdGetData(RZCIJSON);
					if (isg == "2") {
						isgrey = 2;
					} else {
						isgrey = 0;
					}
				}
			} catch (err) {
				isgrey = '02';
			}
		}
		return isgrey;
	};
	// is simple?
	pge.prototype.pwdSimple = function (callf) {
		var code = '';
		if (!a.isInstalled) {
			code = '';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.output44;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(13);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output12();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 13;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var isg = this.pwdGetData(RZCIJSON);
					if (isg == "1") {
						code = 1;
					} else {
						code = 2;
					}
				}
			} catch (err) {
				code = '';
			}
		}
		return code;
	};
	// valid reg2
	pge.prototype.pwdValid = function (callf) {
		var code = '';
		if (!a.isInstalled) {
			code = 1;
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					if (control.output1) code = control.output5;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(5);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output5();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 5;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = 1;
			}
		}
		return code;
	};
	// get pwd hash value
	pge.prototype.pwdHash = function (callf) {
		var code = '';
		if (!a.isInstalled) {
			code = 0;
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.output2;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(2);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output2();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 2;
					OUTJSON.data.encrypttype = 1;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = 0;
			}
		}
		return code;
	};
	// get pwd length
	pge.prototype.pwdSetMing = function (val, callf) {
		var code = '';
		if (!window.isInstalled) {
			code = 0;
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					control.input14 = val;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(255, val);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					control.input0 = parseInt(val);
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 18;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = 0;
			}
		}
		return code;
	};
	// get pwd length
	pge.prototype.pwdLength = function (callf) {
		var code = '';
		if (!window.isInstalled) {
			code = 0;
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.output3;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(3);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output3();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 3;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = 0;
			}
		}
		return code;
	};
	// get pwd length
	pge.prototype.pwdIsLX = function (callf) {
		var code = '';
		if (!window.isInstalled) {
			code = 0;
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.output40;
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(3);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output6();
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 906;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = 0;
			}
		}
		return code;
	};
	// get pwd strength
	pge.prototype.pwdStrength = function () {
		var code = 0;
		if (!a.isInstalled) {
			code = 0;
		} else {
			try {
				var control = this.pwdGetEById(this.settings.pgeId);
				if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id, OUTJSON.data.datatype = 3, OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var len = this.pwdGetData(RZCIJSON);
					OUTJSON.data.datatype = 4, OUTJSON.data.encrypttype = 2, datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var num = this.pwdGetData(RZCIJSON);
					OUTJSON.data.datatype = 4, OUTJSON.data.encrypttype = 1, datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var zoom = this.pwdGetData(RZCIJSON);
					OUTJSON.data.datatype = 906, OUTJSON.data.encrypttype = 0, datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var islx = this.pwdGetData(RZCIJSON);
				} else if (this.osBrowser == 1 || this.osBrowser == 3) {
					var len = control.output3;
					var num = control.output4;
					var zoom = control.output54;
					var islx = control.output40;
				} else if (this.osBrowser == 2) {
					var len = control.output(3);
					var num = control.output(4);
					var zoom = control.output(4, 1);
					var islx = control.output(906);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var len = control.get_output3(); //长度
					var num = control.get_output4(); //字符类型种类
					var zoom = control.get_output16(); //组合方式
					var islx = control.get_output6(); //组合方式
				}
				if (islx == 1 || zoom == 1 || zoom == 2 || zoom == 4 || zoom == 8 || zoom != 0 && zoom != 1 && zoom != 2 && zoom != 4 && zoom != 8 && len < 8) {
					code = 1; // weak
				} else if ((zoom == 9 || zoom == 3 || zoom == 5) && len >= 8 && len <= 12 || (zoom == 10 || zoom == 12 || zoom == 6) && len >= 8 && len <= 12 || (zoom == 11 || zoom == 13 || zoom == 7 || zoom == 14) && len >= 8 && len <= 10 || zoom == 15 && len >= 8 && len <= 9) {
					code = 2; // middle
				} else if ((zoom == 3 || zoom == 5 || zoom == 6 || zoom == 9 || zoom == 10 || zoom == 12) && len > 12 || (zoom == 11 || zoom == 7 || zoom == 13 || zoom == 14) && len > 10 || zoom == 15 && len > 9) {
					code = 3; // strong
				}
			} catch (err) {
				code = "";
			}
		}
		return code;
	};

	pge.prototype.pwdStrength2 = function () {
		var code = 0;
		if (!a.isInstalled) {
			code = 0;
		} else {
			try {
				var control = this.pwdGetEById(this.settings.pgeId);
				if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id, OUTJSON.data.datatype = 3, OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var len = this.pwdGetData(RZCIJSON);
					OUTJSON.data.datatype = 4, OUTJSON.data.encrypttype = 2, datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var num = this.pwdGetData(RZCIJSON);
					OUTJSON.data.datatype = 4, OUTJSON.data.encrypttype = 1, datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					var zoom = this.pwdGetData(RZCIJSON);
				} else if (this.osBrowser == 1 || this.osBrowser == 3) {
					var len = control.output3;
					var num = control.output4;
					var zoom = control.output54;
				} else if (this.osBrowser == 2) {
					var len = control.output(3);
					var num = control.output(4);
					var zoom = control.output(4, 1);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var len = control.get_output3(); //长度
					var num = control.get_output4(); //字符类型种类
					var zoom = control.get_output16(); //组合方式
				}
				if (len < 6) {
					code = 0;
				} else if (zoom == 1 && len >= 6 || zoom == 8 && len >= 6 || zoom == 2 && len >= 6 || zoom == 4 && len >= 6 || zoom == 9 && len < 8 || zoom == 3 && len < 8 || zoom == 5 && len < 8 || zoom == 10 && len < 8 || zoom == 12 && len < 8 || zoom == 6 && len < 8 || zoom == 11 && len < 8 || zoom == 13 && len < 8 || zoom == 7 && len < 8 || zoom == 14 && len < 8 || zoom == 15 && len < 8) {
					code = 1; // weak
				} else if (zoom == 9 && len >= 8 && len <= 12 || zoom == 3 && len >= 8 && len <= 12 || zoom == 5 && len >= 8 && len <= 12 || zoom == 10 && len >= 8 && len <= 11 || zoom == 12 && len >= 8 && len <= 11 || zoom == 6 && len >= 8 && len <= 11 || zoom == 11 && len >= 8 && len <= 10 || zoom == 13 && len >= 8 && len <= 10 || zoom == 7 && len >= 8 && len <= 10 || zoom == 14 && len >= 8 && len <= 10 || zoom == 15 && len >= 8 && len <= 9) {
					code = 2; // middle
				} else if (zoom == 9 && len > 12 || zoom == 3 && len > 12 || zoom == 5 && len > 12 || zoom == 10 && len > 11 || zoom == 12 && len > 11 || zoom == 6 && len > 11 || zoom == 11 && len > 10 || zoom == 13 && len > 10 || zoom == 7 && len > 10 || zoom == 14 && len > 10 || zoom == 15 && len > 9) {
					code = 3; // strong
				}
			} catch (err) {
				code = "";
			}
		}
		return code;
	};
	// get pcinfo enstr
	pge.prototype.getPcInfo = function () {
		var pcinfo = '';
		if (!a.isInstalled) {
			pcinfo = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					var v = control.output28;
					pcinfo = utf8to16(base64decode(v));
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					control.input(904, this.settings.k3);
					var v = control.output(904);
					pcinfo = v;
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var v = control.get_output20();
					pcinfo = utf8to16(base64decode(v));
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 904;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					pcinfo = this.pwdGetData(RZCIJSON);
					if (this.osBrowser == 11) {
						pcinfo = utf8to16(base64decode(pcinfo));
					}
				}
			} catch (err) {
				pcinfo = '02';
			}
		}
		return pcinfo;
	};
	// get mac list
	pge.prototype.getMacList = function (callf) {
		var maclist = '';
		if (!a.isInstalled) {
			maclist = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					var v = control.output38;
					maclist = utf8to16(base64decode(v));
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					var v = control.output(903);
					maclist = v;
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var v = control.get_output21();
					maclist = utf8to16(base64decode(v));
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 903;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					maclist = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				maclist = '02';
			}
		}
		return maclist;
	};
	// get device id
	pge.prototype.getDevID = function (callf) {
		var devid = '';
		if (!a.isInstalled) {
			devid = '01';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					var v = control.output39;
					devid = utf8to16(base64decode(v));
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					var v = control.output(902);
					devid = v;
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					var v = control.get_output22();
					devid = utf8to16(base64decode(v));
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 902;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					devid = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				devid = '02';
			}
		}
		return devid;
	};
	//get mac enstr
	pge.prototype.machineNetwork = function (callf) {
		var code = '';
		if (!a.isInstalled) {
			code = '';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.GetIPMacList();
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(9);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output7(0);
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 9;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = '';
			}
		}
		return code;
	};
	// get hard disk enstr
	pge.prototype.machineDisk = function (callf) {
		var code = '';
		if (!a.isInstalled) {
			code = '';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.GetNicPhAddr(1);
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(11);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output7(2);
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 11;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = '';
			}
		}
		return code;
	};
	// get cpu enstr
	pge.prototype.machineCPU = function (callf) {
		var code = '';
		if (!a.isInstalled) {
			code = '';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.osBrowser == 1 || this.osBrowser == 3) {
					code = control.GetNicPhAddr(2);
				} else if (this.osBrowser == 2 || this.osBrowser == 4 || this.osBrowser == 5) {
					code = control.output(10);
				} else if (this.osBrowser == 6 || this.osBrowser == 8) {
					code = control.get_output7(1);
				} else if (this.osBrowser == 10 || this.osBrowser == 11) {
					var id = this.settings.pgeWindowID;
					OUTJSON.id = id;
					OUTJSON.data.datatype = 10;
					OUTJSON.data.encrypttype = 0;
					var datac = this.getEnStr(this.settings.pgeRZRandNum, OUTJSON);
					RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
					code = this.pwdGetData(RZCIJSON);
				}
			} catch (err) {
				code = '';
			}
		}
		return code;
	};
	//set color
	pge.prototype.setColor = function () {
		var code = '';
		if (!a.isInstalled) {
			code = '';
		} else {
			try {
				var control = document.getElementById(this.settings.pgeId);
				if (this.settings.pgeBackColor != undefined && this.settings.pgeBackColor != "") control.BackColor = this.settings.pgeBackColor;
				if (this.settings.pgeForeColor != undefined && this.settings.pgeForeColor != "") control.ForeColor = this.settings.pgeForeColor;
			} catch (err) {
				code = '';
			}
		}
	};
	//set update text
	pge.prototype.setDownText = function () {
		if (this.pgeVersion != undefined && this.pgeVersion != "") {
			this.pgeDownText = "请点此升级控件";
		}
	},
	// when press enter submit
	pge.prototype.setSX = function (e, m, o) {
		var keynum;
		// IE
		if (window.event) {
			keynum = e.keyCode;
			// Netscape/Firefox/Opera
		} else if (e.which) {
			keynum = e.which;
		}
		var va = document.getElementById(o.id);
		var len = va.value.length;
		var maxlen = this.settings.pgeMaxlength + 1;
		if (keynum == 13) {
			o.blur();
			eval("(" + m + ")");
		}
	},
	//control edit from middle
	pge.prototype.setCX = function (ctrl) {
		var caretPos = 0;
		// IE Support
		if (document.selection) {
			var sel = document.selection.createRange();
			sel.moveStart('character', -ctrl.value.length);
			caretPos = sel.text.length;
			// Firefox support
		} else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
			caretPos = ctrl.selectionStart;
		}
		var len = ctrl.value.length;
		if (caretPos <= len) {
			if (ctrl.setSelectionRange) {
				setTimeout(function () {
					ctrl.setSelectionRange(len, len);
				}, 1);
			} else if (ctrl.createTextRange) {
				var range = ctrl.createTextRange();
				range.collapse(true);
				range.moveEnd('character', len);
				range.moveStart('character', len);
				range.select();
			}
		}
	};
	pge.prototype.pwdGetTime = function () {
		return new Date().getTime();
	};
	pge.prototype.pwdGetEById = function (id) {
		return document.getElementById(id);
	};
	pge.prototype.pwdhtml = function (id, htmlstr) {
		this.pwdGetEById(id).innerHTML = htmlstr;
	};
	//js AES256 encrypt
	pge.prototype.getEnStr = function (sKey, jsonStr) {
		var neiKey = [0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x1A, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x1A, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x3A, 0x3B];
		var fkey = "";
		var lx = "";
		for (var i = 0; i < sKey.length; i++) {
			lx = String.fromCharCode(sKey[i].charCodeAt(0) ^ neiKey[i]);
			fkey += lx;
		}
		var hexKey = crypto_js_enc_utf8__WEBPACK_IMPORTED_MODULE_0___default.a.parse(fkey);
		var enStr = crypto_js_aes__WEBPACK_IMPORTED_MODULE_1___default.a.encrypt(JSON.stringify(jsonStr), hexKey, {
			mode: crypto_js_mode_ecb__WEBPACK_IMPORTED_MODULE_2___default.a,
			padding: crypto_js_pad_pkcs7__WEBPACK_IMPORTED_MODULE_3___default.a
		});
		return enStr.toString();
	};
	// inst control
	pge.prototype.instControl = function (id, obj) {
		ICJSON.id = id;
		RZCIJSON = { "rankey": "", "datab": "", "datac": JSON.stringify(ICJSON) };
		var str = JSON.stringify(RZCIJSON);
		jsonp({ timeout: 1000, url: urls,
			data: { "str": str, type: "inst", "jsoncallback": "cb" },
			callback: "jsoncallback",
			success: function success(x) {
				if (logFlag) console.log("id:" + id);
				if (logFlag) console.log("x.data:" + x.data + ",x.code:" + x.code);
				if (x.code == 0) {
					if (logFlag) console.info("inst control success!");
					obj.initControl(id);
				}
			}
		});
	};
	//init control
	pge.prototype.initControl = function (id) {
		INCJSON.id = id;
		INCJSON.data.edittype = this.settings.pgeEdittype;
		INCJSON.data.maxlength = this.settings.pgeMaxlength;
		INCJSON.data.reg1 = this.settings.pgeEreg1;
		INCJSON.data.reg2 = this.settings.pgeEreg2;
		INCJSON.data.oem_900 = this.settings.ts;
		INCJSON.data.oem_901 = this.settings.k1;
		INCJSON.data.oem_902 = this.settings.k2;
		INCJSON.data.oem_903 = BLACKLIST;
		INCJSON.data.oem_904 = this.settings.k3;
		INCJSON.data.oem_905 = this.settings.glist;
		if (this.osBrowser == 10) {
			INCJSON.data.lic = { "liccode": license, "url": "aHR0cDovL2EueXFiLmNvbS9sb2dpbg==" };
		} else if (this.osBrowser == 11) {
			INCJSON.data.lic = { "liccode": licenseMac, "url": "aHR0cDovL2EueXFiLmNvbS9sb2dpbg==" };
		}
		RZCIJSON = { "rankey": "", "datab": "", "datac": JSON.stringify(INCJSON) };
		var str = JSON.stringify(RZCIJSON);
		jsonp({
			url: urls,
			data: {
				"str": str,
				"type": "init",
				"jsoncallback": "cb"
			},
			callback: "jsoncallback",
			success: function success(x) {
				console.log("id:" + id);
				console.log("x.data:" + x.data + ",x.code:" + x.code);
				isInit[id] = true;
				if (x.code == 0) {
					if (logFlag) console.info("set params success!");
				} else {
					if (logFlag) console.info("data:" + x.data);
				}
			}
		});
		onceInterv[id] = "";
	},
	// open prot
	pge.prototype.openProt = function (id, inputID) {
		inFlag[id].flag = false;
		OPJSON.id = id;
		var datac = this.getEnStr(this.settings.pgeRZRandNum, OPJSON);
		RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
		//		var str = JSON.stringify(RZCIJSON).replace(/\+/g,"%2B");
		var str = JSON.stringify(RZCIJSON);
		jsonp({
			url: urls,
			dataType: "jsonp",
			data: {
				"str": str,
				"jsoncallback": "cb",
				"type": "open prot"
			},
			callback: "jsoncallback",
			success: function success(x) {
				if (logFlag) console.log("open prot success!");
				if (logFlag) console.log("x.data:" + x.data + ",x.code:" + x.code);
				inFlag[id].flag = true;
				if (logFlag) console.log(id + "inFlag:" + inFlag[id].flag);
			}
		});
		if (typeof onceInterv[id] == "string") {
			for (var i = 0; i < iterArray.length; i++) {
				window.clearInterval(iterArray[i]);
			}
			// onceInterv[id] = window.setInterval("pgeCtrl.intervlOut(\""+id+"\",\""+inputID+"\")",800);	
			onceInterv[id] = window.setInterval(this.intervlOut.bind(this, id, inputID), 800);
			iterArray.push(onceInterv[id]);
		}
	},
	//heart interv
	pge.prototype.intervlOut = function (id, inputID) {

		var intervalCheck = this.settings.intervalCheck || function () {};
		// for (const i in pges) {
		// 	if (pges[i].settings.pgeWindowID === id) {
		// 		intervalCheck = pges[i].settings.intervalCheck || function() {};
		// 	}
		// }

		var cla = this.settings.pgeInstallClass;
		XTJSON.id = id;
		var datac = this.getEnStr(this.settings.pgeRZRandNum, XTJSON);
		RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
		var str = JSON.stringify(RZCIJSON);
		var _this = this;
		jsonp({
			url: urls,
			data: {
				"str": str,
				"jsoncallback": "cb"
			},
			callback: "jsoncallback",
			success: function success(x) {
				var va = document.getElementById(inputID);
				var len = va.value.length;
				if (logFlag) console.log(id + " length:" + len);
				if (logFlag) console.log("x.data(len):" + x.data + ",x.code:" + x.code);
				var y = "";
				for (var i = 0; i < x.data; i++) {
					y += "*";
				}
				va.value = y;
				if (_this.pwdLength() !== 0) {
					console.log(_this.pwdLength());
					intervalCheck && intervalCheck();
				}
			}
		});
	},
	//close prot
	pge.prototype.closeProt = function (id, inputID) {
		CPJSON.id = id;
		var datac = this.getEnStr(this.settings.pgeRZRandNum, CPJSON);
		RZCIJSON = { "rankey": this.settings.pgeRZRandNum, "datab": this.settings.pgeRZDataB, "datac": datac };
		var str = JSON.stringify(RZCIJSON);
		// let closeCheck;
		// for (var i in pges) {
		// 	if (pges[i].settings.pgeWindowID === id) {
		// 		closeCheck = pges[i].settings.closeCheck || function() {};
		// 	}
		// }
		var closeCheck = this.settings.closeCheck || function () {}; //20190816

		jsonp({
			url: urls,
			data: {
				"str": str,
				"jsoncallback": "cb"
			},
			callback: "jsoncallback",
			success: function success(x) {
				if (logFlag) console.log("close prot success!");
				if (logFlag) console.log("x.data:" + x.data + ",x.code:" + x.code);
				inFlag[id].flag = false;
				closeCheck && closeCheck();
			}
		});
		if (typeof onceInterv[id] == "number") {
			for (var i = 0; i < iterArray.length; i++) {
				window.clearInterval(iterArray[i]);
			}
			onceInterv[id] = "";
		}
	};
	a.pge = pge;
	a.pges = pges;
	a.inFlag = inFlag;
	a.pgeversion = objVersion;
	a.PGEdit_Edge_VERSION = PGEdit_Edge_VERSION;
	a.PGEdit_EdgeMac_VERSION = PGEdit_EdgeMac_VERSION;
	a.UPEdit_Update = UPEdit_Update;
})(window);

window.pgeCtrl = new pge();
function sleep(n) {
	var start = new Date().getTime();
	while (true) {
		if (new Date() - start > n) break;
	}
}

function pgeInit(callf) {
	if (pgeCtrl.osBrowser != 10 && pgeCtrl.osBrowser != 11) {
		if (!!callf) {
			callf(window.isInstalled);
		}
	} else {
		pgeCtrl.checkInstall(1, function (isIns) {
			if (isIns) window.isInstalled = true;else window.isInstalled = false;
			if (!!callf) callf(window.isInstalled);
			if (window.isInstalled) {
				var o = void 0;

				var _loop = function _loop(i) {
					sleep(100); //delay 300ms
					var obj = pges[i];
					if (obj.installed) {
						return 'continue';
					}
					var id = obj.settings.pgeId;
					var winId = obj.settings.pgeWindowID;
					// let strr = "";
					// if(obj.osBrowser == 10){
					// 	strr = "this.type=\'password\';";
					// }
					if (pgeversion && pgeversion.indexOf(":") > -1) {
						var temp = pgeversion.substring(pgeversion.length - 1);
						if (temp == "1") {
							alert("您的非插件控件还剩90天到期,请做好升级准备!");
						}
						pgeversion = pgeversion.substr(0, pgeversion.length - 2);
					}
					if (obj.osBrowser == 11) {
						PGEdit_Edge_VERSION = PGEdit_EdgeMac_VERSION;
					}

					if (obj.convertVersion(pgeversion) < obj.convertVersion(PGEdit_Edge_VERSION) && UPEdit_Update == "1") {
						var winPath = obj.settings.pgePath + obj.pgeditFFExe;
						var pges2 = document.getElementsByClassName("winA");
						for (var _i = 0; _i < pges2.length; _i++) {
							pges2[_i].innerHTML = "请点此升级控件";
							pges2[_i].href = winPath;
						}
					} else {
						document.querySelector("#" + id + "_down").parentNode.innerHTML = '<input type="text" ' + setAttribute(['placeholder'], obj.settings) + ' id = "' + id + '" style="ime-mode:disabled" tabindex="2" class="' + obj.settings.pgeClass + '"/>';
						o = obj.pwdGetEById(id);
						o.addEventListener('focus', function () {
							if (obj.osBrowser == 10) {
								this.type = 'password';
							}
							obj.openProt(winId, this.id);
							obj.setCX(this);
							obj.settings.pgeOnfocus && obj.settings.pgeOnfocus();
						});
						o.addEventListener('keydown', function (event) {
							obj.setSX(event, obj.settings.pgeOnkeydown, this);
						});
						o.addEventListener('click', function (event) {
							obj.setCX(this);
						});
						o.addEventListener('blur', function (event) {
							obj.closeProt(obj.settings.pgeWindowID, this.id);
							// obj.settings.pgeOnblur && obj.settings.pgeOnblur();
						});
						o.pid = winId;
						if (obj.osBrowser == 10 || obj.osBrowser == 11) {
							if (o != null) {
								if (obj.osBrowser == 11) {
									o.onkeypress = function (e) {
										var chrTyped,
										    chrCode = 0,
										    evt = e ? e : event,
										    chrCode = evt.which;
										var x = String.fromCharCode(chrCode);
										var maxlength = parseInt(obj.settings.pgeMaxlength);
										if (chrCode >= 32 && chrCode <= 126) {
											if (this.value.length > maxlength - 1) return false;
											var reg1 = obj.settings.pgeEreg1.replace("*", "");
											reg1 = new RegExp(reg1);
											if (reg1.test(x)) this.value += '*';
											return false;
										} else return true;
									};
									o.onkeydown = function (e) {
										var chrTyped,
										    chrCode = 0,
										    evt = e ? e : event;
										chrCode = evt.which;
										var x = String.fromCharCode(chrCode);
										if (chrCode == 13) {
											this.blur();
											eval("(" + obj.settings.pgeOnkeydown + ")");
										} else if (chrCode >= 37 && chrCode <= 40) return false;else return true;
									};
								}
								if (obj.osBrowser == 10) {
									o.onkeypress = function () {
										return inFlag[this.pid].flag;
									};
								}
							}
							obj.instControl(winId, obj);
						}
					}
					(obj.settings.initCallBack || function () {})(isIns);
					obj.installed = true;
				};

				for (var i = 0; i < pges.length; i++) {
					var _ret = _loop(i);

					if (_ret === 'continue') continue;
				}
			}
		});
	}
}



/***/ }),

/***/ 53:
/***/ (function(module, exports) {

module.exports = require("crypto-js/enc-utf8");

/***/ }),

/***/ 54:
/***/ (function(module, exports) {

module.exports = require("crypto-js/aes");

/***/ }),

/***/ 55:
/***/ (function(module, exports) {

module.exports = require("crypto-js/mode-ecb");

/***/ }),

/***/ 56:
/***/ (function(module, exports) {

module.exports = require("crypto-js/pad-pkcs7");

/***/ })

/******/ });