! function (e, n) {
  module.exports = n(e)
}(window, function(e, n) {
	function i(n, i, t) {
		e.WeixinJSBridge ? WeixinJSBridge.invoke(n, o(i), function(e) {
			c(n, e, t)
		}) : u(n, t)
	}

	function t(n, i, t) {
		e.WeixinJSBridge ? WeixinJSBridge.on(n, function(e) {
			t && t.trigger && t.trigger(e), c(n, e, i)
		}) : t ? u(n, t) : u(n, i)
	}

	function o(e) {
		return e = e || {}, e.appId = C.appId, e.verifyAppId = C.appId, e.verifySignType = "sha1", e.verifyTimestamp = C.timestamp +
			"", e.verifyNonceStr = C.nonceStr, e.verifySignature = C.signature, e
	}

	function r(e) {
		return {
			timeStamp: e.timestamp + "",
			nonceStr: e.nonceStr,
			package: e.package,
			paySign: e.paySign,
			signType: e.signType || "SHA1"
		}
	}

	function a(e) {
		return e.postalCode = e.addressPostalCode, delete e.addressPostalCode, e.provinceName = e.proviceFirstStageName,
			delete e.proviceFirstStageName, e.cityName = e.addressCitySecondStageName, delete e.addressCitySecondStageName, e.countryName =
			e.addressCountiesThirdStageName, delete e.addressCountiesThirdStageName, e.detailInfo = e.addressDetailInfo, delete e
			.addressDetailInfo, e
	}

	function c(e, n, i) {
		"openEnterpriseChat" == e && (n.errCode = n.err_code), delete n.err_code, delete n.err_desc, delete n.err_detail;
		var t = n.errMsg;
		t || (t = n.err_msg, delete n.err_msg, t = s(e, t), n.errMsg = t), (i = i || {})._complete && (i._complete(n),
			delete i._complete), t = n.errMsg || "", C.debug && !i.isInnerInvoke && alert(JSON.stringify(n));
		var o = t.indexOf(":");
		switch (t.substring(o + 1)) {
			case "ok":
				i.success && i.success(n);
				break;
			case "cancel":
				i.cancel && i.cancel(n);
				break;
			default:
				i.fail && i.fail(n)
		}
		i.complete && i.complete(n)
	}

	function s(e, n) {
		var i = e,
			t = v[i];
		t && (i = t);
		var o = "ok";
		if (n) {
			var r = n.indexOf(":");
			"confirm" == (o = n.substring(r + 1)) && (o = "ok"), "failed" == o && (o = "fail"), -1 != o.indexOf("failed_") && (
					o = o.substring(7)), -1 != o.indexOf("fail_") && (o = o.substring(5)), "access denied" != (o = (o = o.replace(
					/_/g, " ")).toLowerCase()) && "no permission to execute" != o || (o = "permission denied"), "config" == i &&
				"function not exist" == o && (o = "ok"), "" == o && (o = "fail")
		}
		return n = i + ":" + o
	}

	function d(e) {
		if (e) {
			for (var n = 0, i = e.length; n < i; ++n) {
				var t = e[n],
					o = h[t];
				o && (e[n] = o)
			}
			return e
		}
	}

	function u(e, n) {
		if (!(!C.debug || n && n.isInnerInvoke)) {
			var i = v[e];
			i && (e = i), n && n._complete && delete n._complete, console.log('"' + e + '",', n || "")
		}
	}

	function l(e) {
		if (!(k || w || C.debug || x < "6.0.2" || V.systemType < 0)) {
			var n = new Image;
			V.appId = C.appId, V.initTime = A.initEndTime - A.initStartTime, V.preVerifyTime = A.preVerifyEndTime - A.preVerifyStartTime,
				N.getNetworkType({
					isInnerInvoke: !0,
					success: function(e) {
						V.networkType = e.networkType;
						var i = "https://open.weixin.qq.com/sdk/report?v=" + V.version + "&o=" + V.isPreVerifyOk + "&s=" + V.systemType +
							"&c=" + V.clientVersion + "&a=" + V.appId + "&n=" + V.networkType + "&i=" + V.initTime + "&p=" + V.preVerifyTime +
							"&u=" + V.url;
						n.src = i
					}
				})
		}
	}

	function p() {
		return (new Date).getTime()
	}

	function f(n) {
		T && (e.WeixinJSBridge ? n() : S.addEventListener && S.addEventListener("WeixinJSBridgeReady", n, !1))
	}

	function m() {
		N.invoke || (N.invoke = function(n, i, t) {
			e.WeixinJSBridge && WeixinJSBridge.invoke(n, o(i), t)
		}, N.on = function(n, i) {
			e.WeixinJSBridge && WeixinJSBridge.on(n, i)
		})
	}

	function g(e) {
		if ("string" == typeof e && e.length > 0) {
			var n = e.split("?")[0],
				i = e.split("?")[1];
			return n += ".html", void 0 !== i ? n + "?" + i : n
		}
	}
	if (!e.jWeixin) {
		var h = {
				config: "preVerifyJSAPI",
				onMenuShareTimeline: "menu:share:timeline",
				onMenuShareAppMessage: "menu:share:appmessage",
				onMenuShareQQ: "menu:share:qq",
				onMenuShareWeibo: "menu:share:weiboApp",
				onMenuShareQZone: "menu:share:QZone",
				previewImage: "imagePreview",
				getLocation: "geoLocation",
				openProductSpecificView: "openProductViewWithPid",
				addCard: "batchAddCard",
				openCard: "batchViewCard",
				chooseWXPay: "getBrandWCPayRequest",
				openEnterpriseRedPacket: "getRecevieBizHongBaoRequest",
				startSearchBeacons: "startMonitoringBeacons",
				stopSearchBeacons: "stopMonitoringBeacons",
				onSearchBeacons: "onBeaconsInRange",
				consumeAndShareCard: "consumedShareCard",
				openAddress: "editAddress"
			},
			v = function() {
				var e = {};
				for (var n in h) e[h[n]] = n;
				return e
			}(),
			S = e.document,
			I = S.title,
			y = navigator.userAgent.toLowerCase(),
			_ = navigator.platform.toLowerCase(),
			k = !(!_.match("mac") && !_.match("win")),
			w = -1 != y.indexOf("wxdebugger"),
			T = -1 != y.indexOf("micromessenger"),
			M = -1 != y.indexOf("android"),
			P = -1 != y.indexOf("iphone") || -1 != y.indexOf("ipad"),
			x = function() {
				var e = y.match(/micromessenger\/(\d+\.\d+\.\d+)/) || y.match(/micromessenger\/(\d+\.\d+)/);
				return e ? e[1] : ""
			}(),
			A = {
				initStartTime: p(),
				initEndTime: 0,
				preVerifyStartTime: 0,
				preVerifyEndTime: 0
			},
			V = {
				version: 1,
				appId: "",
				initTime: 0,
				preVerifyTime: 0,
				networkType: "",
				isPreVerifyOk: 1,
				systemType: P ? 1 : M ? 2 : -1,
				clientVersion: x,
				url: encodeURIComponent(location.href)
			},
			C = {},
			L = {
				_completes: []
			},
			B = {
				state: 0,
				data: {}
			};
		f(function() {
			A.initEndTime = p()
		});
		var O = !1,
			E = [],
			N = {
				config: function(e) {
					C = e, u("config", e);
					var n = !1 !== C.check;
					f(function() {
						if (n) i(h.config, {
							verifyJsApiList: d(C.jsApiList)
						}, function() {
							L._complete = function(e) {
								A.preVerifyEndTime = p(), B.state = 1, B.data = e
							}, L.success = function(e) {
								V.isPreVerifyOk = 0
							}, L.fail = function(e) {
								L._fail ? L._fail(e) : B.state = -1
							};
							var e = L._completes;
							return e.push(function() {
								l()
							}), L.complete = function(n) {
								for (var i = 0, t = e.length; i < t; ++i) e[i]();
								L._completes = []
							}, L
						}()), A.preVerifyStartTime = p();
						else {
							B.state = 1;
							for (var e = L._completes, t = 0, o = e.length; t < o; ++t) e[t]();
							L._completes = []
						}
					}), m()
				},
				ready: function(e) {
					0 != B.state ? e() : (L._completes.push(e), !T && C.debug && e())
				},
				error: function(e) {
					x < "6.0.2" || (-1 == B.state ? e(B.data) : L._fail = e)
				},
				checkJsApi: function(e) {
					var n = function(e) {
						var n = e.checkResult;
						for (var i in n) {
							var t = v[i];
							t && (n[t] = n[i], delete n[i])
						}
						return e
					};
					i("checkJsApi", {
						jsApiList: d(e.jsApiList)
					}, (e._complete = function(e) {
						if (M) {
							var i = e.checkResult;
							i && (e.checkResult = JSON.parse(i))
						}
						e = n(e)
					}, e))
				},
				onMenuShareTimeline: function(e) {
					t(h.onMenuShareTimeline, {
						complete: function() {
							i("shareTimeline", {
								title: e.title || I,
								desc: e.title || I,
								img_url: e.imgUrl || "",
								link: e.link || location.href,
								type: e.type || "link",
								data_url: e.dataUrl || ""
							}, e)
						}
					}, e)
				},
				onMenuShareAppMessage: function(e) {
					t(h.onMenuShareAppMessage, {
						complete: function(n) {
							"favorite" === n.scene ? i("sendAppMessage", {
								title: e.title || I,
								desc: e.desc || "",
								link: e.link || location.href,
								img_url: e.imgUrl || "",
								type: e.type || "link",
								data_url: e.dataUrl || ""
							}) : i("sendAppMessage", {
								title: e.title || I,
								desc: e.desc || "",
								link: e.link || location.href,
								img_url: e.imgUrl || "",
								type: e.type || "link",
								data_url: e.dataUrl || ""
							}, e)
						}
					}, e)
				},
				onMenuShareQQ: function(e) {
					t(h.onMenuShareQQ, {
						complete: function() {
							i("shareQQ", {
								title: e.title || I,
								desc: e.desc || "",
								img_url: e.imgUrl || "",
								link: e.link || location.href
							}, e)
						}
					}, e)
				},
				onMenuShareWeibo: function(e) {
					t(h.onMenuShareWeibo, {
						complete: function() {
							i("shareWeiboApp", {
								title: e.title || I,
								desc: e.desc || "",
								img_url: e.imgUrl || "",
								link: e.link || location.href
							}, e)
						}
					}, e)
				},
				onMenuShareQZone: function(e) {
					t(h.onMenuShareQZone, {
						complete: function() {
							i("shareQZone", {
								title: e.title || I,
								desc: e.desc || "",
								img_url: e.imgUrl || "",
								link: e.link || location.href
							}, e)
						}
					}, e)
				},
				updateTimelineShareData: function(e) {
					i("updateTimelineShareData", {
						title: e.title,
						link: e.link,
						imgUrl: e.imgUrl
					}, e)
				},
				updateAppMessageShareData: function(e) {
					i("updateAppMessageShareData", {
						title: e.title,
						desc: e.desc,
						link: e.link,
						imgUrl: e.imgUrl
					}, e)
				},
				startRecord: function(e) {
					i("startRecord", {}, e)
				},
				stopRecord: function(e) {
					i("stopRecord", {}, e)
				},
				onVoiceRecordEnd: function(e) {
					t("onVoiceRecordEnd", e)
				},
				playVoice: function(e) {
					i("playVoice", {
						localId: e.localId
					}, e)
				},
				pauseVoice: function(e) {
					i("pauseVoice", {
						localId: e.localId
					}, e)
				},
				stopVoice: function(e) {
					i("stopVoice", {
						localId: e.localId
					}, e)
				},
				onVoicePlayEnd: function(e) {
					t("onVoicePlayEnd", e)
				},
				uploadVoice: function(e) {
					i("uploadVoice", {
						localId: e.localId,
						isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
					}, e)
				},
				downloadVoice: function(e) {
					i("downloadVoice", {
						serverId: e.serverId,
						isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
					}, e)
				},
				translateVoice: function(e) {
					i("translateVoice", {
						localId: e.localId,
						isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
					}, e)
				},
				chooseImage: function(e) {
					i("chooseImage", {
						scene: "1|2",
						count: e.count || 9,
						sizeType: e.sizeType || ["original", "compressed"],
						sourceType: e.sourceType || ["album", "camera"]
					}, (e._complete = function(e) {
						if (M) {
							var n = e.localIds;
							try {
								n && (e.localIds = JSON.parse(n))
							} catch (e) {}
						}
					}, e))
				},
				getLocation: function(e) {},
				previewImage: function(e) {
					i(h.previewImage, {
						current: e.current,
						urls: e.urls
					}, e)
				},
				uploadImage: function(e) {
					i("uploadImage", {
						localId: e.localId,
						isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
					}, e)
				},
				downloadImage: function(e) {
					i("downloadImage", {
						serverId: e.serverId,
						isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1
					}, e)
				},
				getLocalImgData: function(e) {
					!1 === O ? (O = !0, i("getLocalImgData", {
						localId: e.localId
					}, (e._complete = function(e) {
						if (O = !1, E.length > 0) {
							var n = E.shift();
							wx.getLocalImgData(n)
						}
					}, e))) : E.push(e)
				},
				getNetworkType: function(e) {
					var n = function(e) {
						var n = e.errMsg;
						e.errMsg = "getNetworkType:ok";
						var i = e.subtype;
						if (delete e.subtype, i) e.networkType = i;
						else {
							var t = n.indexOf(":"),
								o = n.substring(t + 1);
							switch (o) {
								case "wifi":
								case "edge":
								case "wwan":
									e.networkType = o;
									break;
								default:
									e.errMsg = "getNetworkType:fail"
							}
						}
						return e
					};
					i("getNetworkType", {}, (e._complete = function(e) {
						e = n(e)
					}, e))
				},
				openLocation: function(e) {
					i("openLocation", {
						latitude: e.latitude,
						longitude: e.longitude,
						name: e.name || "",
						address: e.address || "",
						scale: e.scale || 28,
						infoUrl: e.infoUrl || ""
					}, e)
				},
				getLocation: function(e) {
					e = e || {}, i(h.getLocation, {
						type: e.type || "wgs84"
					}, (e._complete = function(e) {
						delete e.type
					}, e))
				},
				hideOptionMenu: function(e) {
					i("hideOptionMenu", {}, e)
				},
				showOptionMenu: function(e) {
					i("showOptionMenu", {}, e)
				},
				closeWindow: function(e) {
					i("closeWindow", {}, e = e || {})
				},
				hideMenuItems: function(e) {
					i("hideMenuItems", {
						menuList: e.menuList
					}, e)
				},
				showMenuItems: function(e) {
					i("showMenuItems", {
						menuList: e.menuList
					}, e)
				},
				hideAllNonBaseMenuItem: function(e) {
					i("hideAllNonBaseMenuItem", {}, e)
				},
				showAllNonBaseMenuItem: function(e) {
					i("showAllNonBaseMenuItem", {}, e)
				},
				scanQRCode: function(e) {
					i("scanQRCode", {
						needResult: (e = e || {}).needResult || 0,
						scanType: e.scanType || ["qrCode", "barCode"]
					}, (e._complete = function(e) {
						if (P) {
							var n = e.resultStr;
							if (n) {
								var i = JSON.parse(n);
								e.resultStr = i && i.scan_code && i.scan_code.scan_result
							}
						}
					}, e))
				},
				openAddress: function(e) {
					i(h.openAddress, {}, (e._complete = function(e) {
						e = a(e)
					}, e))
				},
				openProductSpecificView: function(e) {
					i(h.openProductSpecificView, {
						pid: e.productId,
						view_type: e.viewType || 0,
						ext_info: e.extInfo
					}, e)
				},
				addCard: function(e) {
					for (var n = e.cardList, t = [], o = 0, r = n.length; o < r; ++o) {
						var a = n[o],
							c = {
								card_id: a.cardId,
								card_ext: a.cardExt
							};
						t.push(c)
					}
					i(h.addCard, {
						card_list: t
					}, (e._complete = function(e) {
						var n = e.card_list;
						if (n) {
							for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {
								var o = n[i];
								o.cardId = o.card_id, o.cardExt = o.card_ext, o.isSuccess = !!o.is_succ, delete o.card_id, delete o.card_ext,
									delete o.is_succ
							}
							e.cardList = n, delete e.card_list
						}
					}, e))
				},
				chooseCard: function(e) {
					i("chooseCard", {
						app_id: C.appId,
						location_id: e.shopId || "",
						sign_type: e.signType || "SHA1",
						card_id: e.cardId || "",
						card_type: e.cardType || "",
						card_sign: e.cardSign,
						time_stamp: e.timestamp + "",
						nonce_str: e.nonceStr
					}, (e._complete = function(e) {
						e.cardList = e.choose_card_info, delete e.choose_card_info
					}, e))
				},
				openCard: function(e) {
					for (var n = e.cardList, t = [], o = 0, r = n.length; o < r; ++o) {
						var a = n[o],
							c = {
								card_id: a.cardId,
								code: a.code
							};
						t.push(c)
					}
					i(h.openCard, {
						card_list: t
					}, e)
				},
				consumeAndShareCard: function(e) {
					i(h.consumeAndShareCard, {
						consumedCardId: e.cardId,
						consumedCode: e.code
					}, e)
				},
				chooseWXPay: function(e) {
					i(h.chooseWXPay, r(e), e)
				},
				openEnterpriseRedPacket: function(e) {
					i(h.openEnterpriseRedPacket, r(e), e)
				},
				startSearchBeacons: function(e) {
					i(h.startSearchBeacons, {
						ticket: e.ticket
					}, e)
				},
				stopSearchBeacons: function(e) {
					i(h.stopSearchBeacons, {}, e)
				},
				onSearchBeacons: function(e) {
					t(h.onSearchBeacons, e)
				},
				openEnterpriseChat: function(e) {
					i("openEnterpriseChat", {
						useridlist: e.userIds,
						chatname: e.groupName
					}, e)
				},
				launchMiniProgram: function(e) {
					i("launchMiniProgram", {
						targetAppId: e.targetAppId,
						path: g(e.path),
						envVersion: e.envVersion
					}, e)
				},
				miniProgram: {
					navigateBack: function(e) {
						e = e || {}, f(function() {
							i("invokeMiniProgramAPI", {
								name: "navigateBack",
								arg: {
									delta: e.delta || 1
								}
							}, e)
						})
					},
					navigateTo: function(e) {
						f(function() {
							i("invokeMiniProgramAPI", {
								name: "navigateTo",
								arg: {
									url: e.url
								}
							}, e)
						})
					},
					redirectTo: function(e) {
						f(function() {
							i("invokeMiniProgramAPI", {
								name: "redirectTo",
								arg: {
									url: e.url
								}
							}, e)
						})
					},
					switchTab: function(e) {
						f(function() {
							i("invokeMiniProgramAPI", {
								name: "switchTab",
								arg: {
									url: e.url
								}
							}, e)
						})
					},
					reLaunch: function(e) {
						f(function() {
							i("invokeMiniProgramAPI", {
								name: "reLaunch",
								arg: {
									url: e.url
								}
							}, e)
						})
					},
					postMessage: function(e) {
						f(function() {
							i("invokeMiniProgramAPI", {
								name: "postMessage",
								arg: e.data || {}
							}, e)
						})
					},
					getEnv: function(n) {
						f(function() {
							n({
								miniprogram: "miniprogram" === e.__wxjs_environment
							})
						})
					}
				}
			},
			b = 1,
			R = {};
		return S.addEventListener("error", function(e) {
			if (!M) {
				var n = e.target,
					i = n.tagName,
					t = n.src;
				if (("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) && -1 != t.indexOf("wxlocalresource://")) {
					e.preventDefault(), e.stopPropagation();
					var o = n["wx-id"];
					if (o || (o = b++, n["wx-id"] = o), R[o]) return;
					R[o] = !0, wx.ready(function() {
						wx.getLocalImgData({
							localId: t,
							success: function(e) {
								n.src = e.localData
							}
						})
					})
				}
			}
		}, !0), S.addEventListener("load", function(e) {
			if (!M) {
				var n = e.target,
					i = n.tagName;
				n.src;
				if ("IMG" == i || "VIDEO" == i || "AUDIO" == i || "SOURCE" == i) {
					var t = n["wx-id"];
					t && (R[t] = !1)
				}
			}
		}, !0), n && (e.wx = e.jWeixin = N), N
	}
});
