在您安装前,Greasy Fork 希望您知道此脚本包含可能不受欢迎的功能,也许会帮助脚本作者获利,而不能给你带来任何收益。
你只有在参与某些事后才能使用脚本的全部功能,如加入某群组、订阅某频道或在某页点赞等。
脚本作者的说明:
关注微信公众号
所有网页均支持划词搜题,支持截图搜题,也可输入文本搜题悬浮窗可拖动可关闭,可个性化设置解除网页禁止复制限制适用于各类问答,网课问题,竞赛问题,专业术语,业务名称,情景问题,在线作业等
// ==UserScript== // @name 题海 x 划词搜题 // @version 2.2.0 // @namespace 题海官方团队 // @description 所有网页均支持划词搜题,支持截图搜题,也可输入文本搜题悬浮窗可拖动可关闭,可个性化设置解除网页禁止复制限制适用于各类问答,网课问题,竞赛问题,专业术语,业务名称,情景问题,在线作业等 // @author 题海官方团队 // @match *://*/* // @grant GM_getResourceText // @grant GM_info // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_registerMenuCommand // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @grant GM_setClipboard // @run-at document-end // @connect baidu.com // @connect app.itihey.com // @connect lyck6.cn // @connect localhost // @resource Vue http://lib.baomitu.com/vue/2.6.0/vue.min.js // @resource TCaptcha https://turing.captcha.qcloud.com/TCaptcha.js // @resource JQ361JS https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js // @resource jqueryweui https://cdn.bootcdn.net/ajax/libs/jquery-weui/1.2.1/js/jquery-weui.min.js // @resource weuiCss https://cdn.bootcdn.net/ajax/libs/weui/2.5.12/style/weui.min.css // @resource questionCss https://app.itihey.com/static/css/question_search.css // @resource bootstrap https://app.itihey.com/static/css/bootstrap.min.css // @resource Table https://www.forestpolice.org/ttf/2.0/table.json // @require https://greasyfork.org/scripts/466179-typr%E5%BA%93/code/Typr%E5%BA%93.js?version=1189955 // @require https://lib.baomitu.com/cryptico/0.0.1343522940/hash.min.js // @require https://lib.baomitu.com/jquery/3.6.0/jquery.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js // @antifeature membership 关注微信公众号 // @icon data:image/png;base64,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 // ==/UserScript== (function () { 'use strict'; (function($) { var tips = []; function handleWindowResize() { $.each(tips, function() { this.refresh(true); }); } $(window).resize(handleWindowResize); $.JPopBox = function(elm, options) { this.$elm = $(elm); this.opts = this.getOptions(options); var popBoxHtml=[]; popBoxHtml.push('<div class="'+this.opts.className+'">'); if(this.opts.title!=""){ popBoxHtml.push('<div class="JPopBox-tip-title">'+this.opts.title+'</div>'); } if(this.opts.isShowArrow){ popBoxHtml.push('<div class="JPopBox-tip-arrow JPopBox-tip-arrow-top JPopBox-tip-arrow-right JPopBox-tip-arrow-bottom JPopBox-tip-arrow-left" style="visibility:inherit"></div>'); } popBoxHtml.push('<div class="JPopBox-tip-content"></div>'), popBoxHtml.push('</div>'); this.$tip = $(popBoxHtml.join('')).appendTo(document.body); this.$arrow = this.$tip.find('div.JPopBox-tip-arrow'); this.$inner = this.$tip.find('div.JPopBox-tip-content'); this.disabled = false; this.content = null; this.init(); }; $.JPopBox.hideAll = function() { $.each(tips, function() { this.hide(); }); }; $.JPopBox.prototype = { getOptions:function(options){ options = $.extend({}, $.fn.jPopBox.defaults, options); if (options.delay && typeof options.delay == 'number') { options.delay = { show: options.delay, hide: options.delay }; } if (typeof options.offset == 'number') { options.offset = { X: options.offset, Y: options.offset }; } return options }, init: function() { tips.push(this); this.$elm.data('jPopBox', this); if (this.opts.trigger != 'none') { this.opts.trigger!="click" && this.$elm.on({ 'mouseenter.jPopBox': $.proxy(this.mouseenter, this), 'mouseleave.jPopBox': $.proxy(this.mouseleave, this) }); switch (this.opts.trigger) { case 'click': this.$elm.on('click.jPopBox', $.proxy(this.toggle, this)); break; case 'hover': if (this.opts.isTipHover) this.$tip.hover($.proxy(this.clearTimeouts, this), $.proxy(this.mouseleave, this)); break; case 'focus': this.$elm.on({ 'focus.jPopBox': $.proxy(this.showDelayed, this), 'blur.jPopBox': $.proxy(this.hideDelayed, this) }); break; } } }, toggle:function(){ var active=this.$tip.data('active'); if(!active) this.showDelayed(); else this.hideDelayed(); }, mouseenter: function(e) { if (this.disabled) return true; this.updateCursorPos(e); this.$elm.attr('title', ''); if (this.opts.trigger == 'focus') return true; this.showDelayed(); }, mouseleave: function(e) { if (this.disabled || this.asyncAnimating && (this.$tip[0] === e.relatedTarget || jQuery.contains(this.$tip[0], e.relatedTarget))) return true; if (this.opts.trigger == 'focus') return true; this.hideDelayed(); }, mousemove: function(e) { if (this.disabled) return true; this.updateCursorPos(e); if (this.opts.isFollowCursor && this.$tip.data('active')) { this.calcPos(); this.$tip.css({left: this.pos.l, top: this.pos.t}); } }, show: function() { this.$elm.trigger($.Event('show.jPopBox')); if (this.disabled || this.$tip.data('active')) return; this.reset(); this.update(); if (!this.content) return; this.display(); this.$elm.trigger($.Event('shown.jPopBox')); }, showDelayed: function(timeout) { this.clearTimeouts(); this.showTimeout = setTimeout($.proxy(this.show, this), typeof timeout == 'number' ? timeout:this.opts.delay.show); }, hide: function() { this.$elm.trigger($.Event('hide.jPopBox')); if (this.disabled || !this.$tip.data('active')) return; this.display(true); this.$elm.trigger($.Event('hidden.jPopBox')); }, hideDelayed: function(timeout) { this.clearTimeouts(); this.hideTimeout = setTimeout($.proxy(this.hide, this),typeof timeout == 'number' ? timeout :this.opts.delay.hide); }, reset: function() { this.$tip.queue([]).detach().css('visibility', 'hidden').data('active', false); this.$inner.find('*').jPopBox('hide'); this.$arrow.length && (this.$arrow[0].className = 'JPopBox-tip-arrow JPopBox-tip-arrow-top JPopBox-tip-arrow-right JPopBox-tip-arrow-bottom JPopBox-tip-arrow-left'); this.asyncAnimating = false; }, update: function(content, dontOverwriteOption) { if (this.disabled) return; var async = content !== undefined; if (async) { if (!dontOverwriteOption) this.opts.content = content; if (!this.$tip.data('active')) return; } else { content = this.opts.content; } // update content only if it has been changed since last time var self = this, newContent = typeof content == 'function' ? content.call(this.$elm[0], function(newContent) { self.update(newContent); }) : content; if (this.content !== newContent) { this.$inner.empty().append(newContent); this.content = newContent; } this.refresh(async); }, refresh: function(async) { if (this.disabled) return; if (async) { if (!this.$tip.data('active')) return; } this.$tip.css({left: 0, top: 0}).appendTo(document.body); if (this.opacity === undefined) this.opacity = this.$tip.css('opacity'); this.calcPos(); this.$tip.css({left: this.pos.l, top: this.pos.t}); }, display: function(hide) { var active = this.$tip.data('active'); if (active && !hide || !active && hide) return; this.$tip.stop(); var from = {}, to = {}; from.opacity = hide ? this.$tip.css('opacity') : 0; to.opacity = hide ? 0 : this.opacity; this.$tip.css(from).animate(to, 300); hide ? this.$tip.queue($.proxy(this.reset, this)) : this.$tip.css('visibility', 'inherit'); this.$tip.data('active', !active); }, disable: function() { this.reset(); this.disabled = true; }, enable: function() { this.disabled = false; }, destroy: function() { this.reset(); this.$tip.remove(); delete this.$tip; this.content = null; this.$elm.off('.jPopBox').removeData('jPopBox'); tips.splice($.inArray(this, tips), 1); }, clearTimeouts: function() { if (this.showTimeout) { clearTimeout(this.showTimeout); this.showTimeout = 0; } if (this.hideTimeout) { clearTimeout(this.hideTimeout); this.hideTimeout = 0; } }, updateCursorPos: function(e) { this.eventX = e.pageX; this.eventY = e.pageY; }, calcPos: function() { this.tipOuterW = this.$tip.outerWidth(); this.tipOuterH = this.$tip.outerHeight(); var pos = {l: 0, t: 0, arrow: ''}, $win = $(window), win = { l: $win.scrollLeft(), t: $win.scrollTop(), w: $win.width(), h: $win.height() }, xL, xC, xR, yT, yC, yB,arrowOuterWH,placement,isAuto=false; var elmOffset = this.$elm.offset(), elm = { l: elmOffset.left, t: elmOffset.top, w: this.$elm.outerWidth(), h: this.$elm.outerHeight() }; xL = elm.l; // left xC = xL + Math.floor(elm.w / 2); // h center xR = xL + elm.w; // right yT = elm.t; // top yC = yT + Math.floor(elm.h / 2); // v center yB = yT +elm.h; // bottom placement=this.opts.placement; var autoReg=/\s?auto?\s?/i; isAuto=autoReg.test(placement); if (isAuto) placement = placement.replace(autoReg, '') || 'top'; //calc left position switch (placement) { case "top": case "bottom": pos.l = xC - Math.floor(this.tipOuterW / 2)-this.opts.offset.X; { if (pos.l + this.tipOuterW > win.l + win.w) pos.l = win.l + win.w - this.tipOuterW; else if (pos.l < win.l) pos.l = win.l; } break; case "right": arrowOuterWH=this.setArrowAndGetWH(placement); pos.l = xR + this.opts.offset.X+arrowOuterWH.W; if (isAuto && pos.l + this.tipOuterW > win.l + win.w){ arrowOuterWH=this.setArrowAndGetWH("left"); pos.l =xL - this.tipOuterW - this.opts.offset.X-arrowOuterWH.W; } break; case "left": arrowOuterWH=this.setArrowAndGetWH(placement); pos.l = xL - this.tipOuterW- this.opts.offset.X-arrowOuterWH.W; if (isAuto && pos.l < win.l){ arrowOuterWH=this.setArrowAndGetWH("right"); pos.l =xR + this.opts.offset.X+arrowOuterWH.W; } break; } //calc top position switch (placement) { case "top": arrowOuterWH=this.setArrowAndGetWH(placement); pos.t = yT - this.tipOuterH - this.opts.offset.Y-arrowOuterWH.H; if (isAuto && pos.t < win.t) { arrowOuterWH=this.setArrowAndGetWH("bottom"); pos.t = yB + this.opts.offset.Y+arrowOuterWH.H; } break; case "bottom": arrowOuterWH=this.setArrowAndGetWH(placement); pos.t = yB+ this.opts.offset.Y +arrowOuterWH.H; if (isAuto && pos.t + this.tipOuterH > win.t + win.h) { arrowOuterWH=this.setArrowAndGetWH("top"); pos.t = yT - this.tipOuterH - this.opts.offset.Y-arrowOuterWH.H; } break; case "right": case "left": pos.t = yC - Math.floor(this.tipOuterH / 2)-this.opts.offset.Y; { if (pos.t + this.tipOuterH > win.t + win.h){ pos.t = win.t + win.h - this.tipOuterH; } else if (pos.t < win.t) pos.t = win.t; } break; } this.pos = pos; }, setArrowAndGetWH:function(placement){ var arrowOuteWH={}; var W=0,H=0; if(this.$arrow.length){ this.$arrow.attr("class", "JPopBox-tip-arrow JPopBox-tip-arrow-" + placement); W = this.$arrow.outerWidth(); H = this.$arrow.outerHeight(); } arrowOuteWH.W=W; arrowOuteWH.H=H; return arrowOuteWH; } }; $.fn.jPopBox = function(options) { if (typeof options == 'string') { var args = arguments, method = options; Array.prototype.shift.call(args); if (method == 'destroy') { this.die ? this.die('mouseenter.jPopBox').die('focus.jPopBox') : $(document).undelegate(this.selector, 'mouseenter.jPopBox').undelegate(this.selector, 'focus.jPopBox'); } return this.each(function() { var jPopBox = $(this).data('jPopBox'); if (jPopBox && jPopBox[method]) jPopBox[method].apply(jPopBox, args); }); } var opts = $.extend({}, $.fn.jPopBox.defaults, options); if (!$('#jPopBox-css-' + opts.className)[0]) $(['<style id="jPopBox-css-',opts.className,'" type="text/css">', 'div.',opts.className,'{visibility:hidden;position:absolute;top:0;left:0;}', 'div.',opts.className,' div.JPopBox-tip-arrow{visibility:hidden;position:absolute;font:1px/1px sans-serif;}', '</style>'].join('')).appendTo('head'); return this.each(function() { new $.JPopBox(this, opts); }); }; // default settings $.fn.jPopBox.defaults = { title:'', // 标题 content:'', // 弹出框内容 ('string', element, function(updateCallback){...}) className:'JPopBox-tip-white', // class名称 placement:'top', // 如何定位弹出框 (top|bottom|left|right|auto)。当指定为 auto 时,会动态调整弹出框。例如,如果 placement 是 "auto left",弹出框将会尽可能显示在左边,在情况不允许的情况下它才会显示在右边 delay:100, // 延迟显示和隐藏弹出框的毫秒数,对 trigger:none 手动触发类型不适用。如果提供的是一个数字,那么延迟将会应用于显示和隐藏。如果提供的是一个对象{ show: 500, hide: 100 },那么延迟将会分别应用于显示和隐藏 trigger:'hover', // 如何触发弹出框 ('click',hover', 'focus', 'none'),none为手动触发 offset:0, // 方向偏移量,值为负数时,将会反向偏移。如果提供的是一个数字,那么偏移量将会应用于X轴和Y轴。如果提供的是一个对象{ X:200, Y: 100 },那么偏移量将会分别应用于X轴和Y轴 isShowArrow:true, // 是否显示指向箭头 isTipHover:true // 是否允许在弹出框上移动,而不自动隐藏。只对trigger:hover有效。 }; })(jQuery); /** * 字符串模板格式化 * @param {string} formatStr - 字符串模板 * @returns {string} 格式化后的字符串 * @example * StringFormat("ab{0}c{1}ed",1,"q") output "ab1cqed" */ function StringFormat(formatStr) { var args = arguments; return formatStr.replace(/\{(\d+)\}/g, function (m, i) { i = parseInt(i); return args[i + 1]; }); } /** * 日期格式化 * @param {Date} date - 日期 * @param {string} formatStr - 格式化模板 * @returns {string} 格式化日期后的字符串 * @example * DateFormat(new Date(),"yyyy-MM-dd") output "2020-03-23" * @example * DateFormat(new Date(),"yyyy/MM/dd hh:mm:ss") output "2020/03/23 10:30:05" */ function DateFormat(date, formatStr) { var o = { "M+": date.getMonth() + 1, //月份 "d+": date.getDate(), //日 "h+": date.getHours(), //小时 "m+": date.getMinutes(), //分 "s+": date.getSeconds(), //秒 "q+": Math.floor((date.getMonth() + 3) / 3), //季度 "S": date.getMilliseconds() //毫秒 }; if (/(y+)/.test(formatStr)) { formatStr = formatStr.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(formatStr)) { formatStr = formatStr.replace( RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return formatStr; } /** * 清除dom元素默认事件 * @param {object} e - dom元素 */ function ClearBubble(e) { if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; } if (e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } } /** * 寻找最外层doc * @param _self * @param top * @returns {*|string|boolean|number|string|Window} */ function searchOutDocument(_self, top) { try { while (top !== _self.top) { top = top.parent.document ? top.parent : _self.top; if (top.location.pathname === '/mycourse/studentstudy') break; } } catch (err) { top = _self; } return top; } function imgOcrBase64(base64) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ url: "https://appwk.baidu.com/naapi/api/totxt", method: "POST", headers:{ 'Content-type':'application/x-www-form-urlencoded' }, responseType: 'json', data: 'image='+encodeURIComponent(base64), onload: function (r) { try { const res = r.response.words_result.map(item => { return item.words }).join(''); resolve(res); } catch (err) { resolve(''); } } }); }) } //面板 var Panel={ popBoxEl:{}, randomCode:"", Create:function(title,placement,isShowArrow,content,shownFn){ var self=this; $(self.popBoxEl).jPopBox({ title: title, className: 'JPopBox-tip-white', placement: placement, trigger: 'none', isTipHover: true, isShowArrow: isShowArrow, content: function(){ return StringFormat('<div id="panelBody{0}">{1}</div>',self.randomCode,content); } }); $(self.popBoxEl).on("shown.jPopBox",function(){ var $panel=$("div.JPopBox-tip-white"); typeof shownFn === 'function' && shownFn($panel); }); $(self.popBoxEl).jPopBox('show'); }, Update:function(Fn){ var $panel=$("div.JPopBox-tip-white"); Fn($panel); }, Destroy:function(){ //$(this.popBoxEl).jPopBox("hideDelayed"); $(this.popBoxEl).jPopBox("destroy"); }, CreateStyle:function(){ var s=""; s+=StringFormat("#panelBody{0}>div input,#panelBody{0}>div select{padding: 3px; margin: 0; background: #fff; font-size: 14px; border: 1px solid #a9a9a9; color:black;width: auto;min-height: auto; }",this.randomCode); s+=StringFormat("#panelBody{0}>div:first-child{padding-bottom: 5px;height:30px}",this.randomCode); s+=StringFormat("#panelBody{0}>div:last-child hr{border: 1px inset #eeeeee;background: none;height: 0px;margin: 0px;}",this.randomCode); return s; } }; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } var sso_pb = {}; var googleProtobuf = {}; /* Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ (function (exports) { var $jscomp = $jscomp || {}; $jscomp.scope = {}; $jscomp.findInternal = function (a, b, c) { a instanceof String && (a = String(a)); for (var d = a.length, e = 0; e < d; e++) { var f = a[e]; if (b.call(c, f, e, a)) return {i: e, v: f} } return {i: -1, v: void 0} }; $jscomp.ASSUME_ES5 = !1; $jscomp.ASSUME_NO_NATIVE_MAP = !1; $jscomp.ASSUME_NO_NATIVE_SET = !1; $jscomp.SIMPLE_FROUND_POLYFILL = !1; $jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function (a, b, c) { a != Array.prototype && a != Object.prototype && (a[b] = c.value); }; $jscomp.getGlobal = function (a) { return "undefined" != typeof window && window === a ? a : "undefined" != typeof commonjsGlobal && null != commonjsGlobal ? commonjsGlobal : a }; $jscomp.global = $jscomp.getGlobal(commonjsGlobal); $jscomp.polyfill = function (a, b, c, d) { if (b) { c = $jscomp.global; a = a.split("."); for (d = 0; d < a.length - 1; d++) { var e = a[d]; e in c || (c[e] = {}); c = c[e]; } a = a[a.length - 1]; d = c[a]; b = b(d); b != d && null != b && $jscomp.defineProperty(c, a, {configurable: !0, writable: !0, value: b}); } }; $jscomp.polyfill("Array.prototype.findIndex", function (a) { return a ? a : function (a, c) { return $jscomp.findInternal(this, a, c).i } }, "es6", "es3"); $jscomp.checkStringArgs = function (a, b, c) { if (null == a) throw new TypeError("The 'this' value for String.prototype." + c + " must not be null or undefined"); if (b instanceof RegExp) throw new TypeError("First argument to String.prototype." + c + " must not be a regular expression"); return a + "" }; $jscomp.polyfill("String.prototype.endsWith", function (a) { return a ? a : function (a, c) { var b = $jscomp.checkStringArgs(this, a, "endsWith"); a += ""; void 0 === c && (c = b.length); c = Math.max(0, Math.min(c | 0, b.length)); for (var e = a.length; 0 < e && 0 < c;) if (b[--c] != a[--e]) return !1; return 0 >= e } }, "es6", "es3"); $jscomp.polyfill("Array.prototype.find", function (a) { return a ? a : function (a, c) { return $jscomp.findInternal(this, a, c).v } }, "es6", "es3"); $jscomp.polyfill("String.prototype.startsWith", function (a) { return a ? a : function (a, c) { var b = $jscomp.checkStringArgs(this, a, "startsWith"); a += ""; var e = b.length, f = a.length; c = Math.max(0, Math.min(c | 0, b.length)); for (var g = 0; g < f && c < e;) if (b[c++] != a[g++]) return !1; return g >= f } }, "es6", "es3"); $jscomp.polyfill("String.prototype.repeat", function (a) { return a ? a : function (a) { var b = $jscomp.checkStringArgs(this, null, "repeat"); if (0 > a || 1342177279 < a) throw new RangeError("Invalid count value"); a |= 0; for (var d = ""; a;) if (a & 1 && (d += b), a >>>= 1) b += b; return d } }, "es6", "es3"); var COMPILED = !0, goog = goog || {}; goog.global = commonjsGlobal || self; goog.exportPath_ = function (a, b, c) { a = a.split("."); c = c || goog.global; a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]); for (var d; a.length && (d = a.shift());) a.length || void 0 === b ? c = c[d] && c[d] !== Object.prototype[d] ? c[d] : c[d] = {} : c[d] = b; }; goog.define = function (a, b) { return b }; goog.FEATURESET_YEAR = 2012; goog.DEBUG = !0; goog.LOCALE = "en"; goog.TRUSTED_SITE = !0; goog.STRICT_MODE_COMPATIBLE = !1; goog.DISALLOW_TEST_ONLY_CODE = !goog.DEBUG; goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1; goog.provide = function (a) { if (goog.isInModuleLoader_()) throw Error("goog.provide cannot be used within a module."); goog.constructNamespace_(a); }; goog.constructNamespace_ = function (a, b) { goog.exportPath_(a, b); }; goog.getScriptNonce = function (a) { if (a && a != goog.global) return goog.getScriptNonce_(a.document); null === goog.cspNonce_ && (goog.cspNonce_ = goog.getScriptNonce_(goog.global.document)); return goog.cspNonce_ }; goog.NONCE_PATTERN_ = /^[\w+/_-]+[=]{0,2}$/; goog.cspNonce_ = null; goog.getScriptNonce_ = function (a) { return (a = a.querySelector && a.querySelector("script[nonce]")) && (a = a.nonce || a.getAttribute("nonce")) && goog.NONCE_PATTERN_.test(a) ? a : "" }; goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/; goog.module = function (a) { if ("string" !== typeof a || !a || -1 == a.search(goog.VALID_MODULE_RE_)) throw Error("Invalid module identifier"); if (!goog.isInGoogModuleLoader_()) throw Error("Module " + a + " has been loaded incorrectly. Note, modules cannot be loaded as normal scripts. They require some kind of pre-processing step. You're likely trying to load a module via a script tag or as a part of a concatenated bundle without rewriting the module. For more info see: https://github.com/google/closure-library/wiki/goog.module:-an-ES6-module-like-alternative-to-goog.provide."); if (goog.moduleLoaderState_.moduleName) throw Error("goog.module may only be called once per module."); goog.moduleLoaderState_.moduleName = a; }; goog.module.get = function (a) { return goog.module.getInternal_(a) }; goog.module.getInternal_ = function (a) { return null }; goog.ModuleType = {ES6: "es6", GOOG: "goog"}; goog.moduleLoaderState_ = null; goog.isInModuleLoader_ = function () { return goog.isInGoogModuleLoader_() || goog.isInEs6ModuleLoader_() }; goog.isInGoogModuleLoader_ = function () { return !!goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.GOOG }; goog.isInEs6ModuleLoader_ = function () { if (goog.moduleLoaderState_ && goog.moduleLoaderState_.type == goog.ModuleType.ES6) return !0; var a = goog.global.$jscomp; return a ? "function" != typeof a.getCurrentModulePath ? !1 : !!a.getCurrentModulePath() : !1 }; goog.module.declareLegacyNamespace = function () { goog.moduleLoaderState_.declareLegacyNamespace = !0; }; goog.declareModuleId = function (a) { if (goog.moduleLoaderState_) goog.moduleLoaderState_.moduleName = a; else { var b = goog.global.$jscomp; if (!b || "function" != typeof b.getCurrentModulePath) throw Error('Module with namespace "' + a + '" has been loaded incorrectly.'); b = b.require(b.getCurrentModulePath()); goog.loadedModules_[a] = {exports: b, type: goog.ModuleType.ES6, moduleId: a}; } }; goog.setTestOnly = function (a) { if (goog.DISALLOW_TEST_ONLY_CODE) throw a = a || "", Error("Importing test-only code into non-debug environment" + (a ? ": " + a : ".")); }; goog.forwardDeclare = function (a) { }; goog.getObjectByName = function (a, b) { a = a.split("."); b = b || goog.global; for (var c = 0; c < a.length; c++) if (b = b[a[c]], null == b) return null; return b }; goog.globalize = function (a, b) { b = b || goog.global; for (var c in a) b[c] = a[c]; }; goog.addDependency = function (a, b, c, d) { }; goog.ENABLE_DEBUG_LOADER = !0; goog.logToConsole_ = function (a) { goog.global.console && goog.global.console.error(a); }; goog.require = function (a) { }; goog.requireType = function (a) { return {} }; goog.basePath = ""; goog.nullFunction = function () { }; goog.abstractMethod = function () { throw Error("unimplemented abstract method"); }; goog.addSingletonGetter = function (a) { a.instance_ = void 0; a.getInstance = function () { if (a.instance_) return a.instance_; goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a); return a.instance_ = new a }; }; goog.instantiatedSingletons_ = []; goog.LOAD_MODULE_USING_EVAL = !0; goog.SEAL_MODULE_EXPORTS = goog.DEBUG; goog.loadedModules_ = {}; goog.DEPENDENCIES_ENABLED = !COMPILED ; goog.TRANSPILE = "detect"; goog.ASSUME_ES_MODULES_TRANSPILED = !1; goog.TRANSPILE_TO_LANGUAGE = ""; goog.TRANSPILER = "transpile.js"; goog.hasBadLetScoping = null; goog.useSafari10Workaround = function () { if (null == goog.hasBadLetScoping) { try { var a = !eval('"use strict";let x = 1; function f() { return typeof x; };f() == "number";'); } catch (b) { a = !1; } goog.hasBadLetScoping = a; } return goog.hasBadLetScoping }; goog.workaroundSafari10EvalBug = function (a) { return "(function(){" + a + "\n;})();\n" }; goog.loadModule = function (a) { var b = goog.moduleLoaderState_; try { goog.moduleLoaderState_ = {moduleName: "", declareLegacyNamespace: !1, type: goog.ModuleType.GOOG}; if (goog.isFunction(a)) var c = a.call(void 0, {}); else if ("string" === typeof a) goog.useSafari10Workaround() && (a = goog.workaroundSafari10EvalBug(a)), c = goog.loadModuleFromSource_.call(void 0, a); else throw Error("Invalid module definition"); var d = goog.moduleLoaderState_.moduleName; if ("string" === typeof d && d) goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && "object" == typeof c && null != c && Object.seal(c), goog.loadedModules_[d] = { exports: c, type: goog.ModuleType.GOOG, moduleId: goog.moduleLoaderState_.moduleName }; else throw Error('Invalid module name "' + d + '"'); } finally { goog.moduleLoaderState_ = b; } }; goog.loadModuleFromSource_ = function (a) { eval(a); return {} }; goog.normalizePath_ = function (a) { a = a.split("/"); for (var b = 0; b < a.length;) "." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++; return a.join("/") }; goog.loadFileSync_ = function (a) { if (goog.global.CLOSURE_LOAD_FILE_SYNC) return goog.global.CLOSURE_LOAD_FILE_SYNC(a); try { var b = new goog.global.XMLHttpRequest; b.open("get", a, !1); b.send(); return 0 == b.status || 200 == b.status ? b.responseText : null } catch (c) { return null } }; goog.transpile_ = function (a, b, c) { var d = goog.global.$jscomp; d || (goog.global.$jscomp = d = {}); var e = d.transpile; if (!e) { var f = goog.basePath + goog.TRANSPILER, g = goog.loadFileSync_(f); if (g) { (function () { (0, eval)(g + "\n//# sourceURL=" + f); }).call(goog.global); if (goog.global.$gwtExport && goog.global.$gwtExport.$jscomp && !goog.global.$gwtExport.$jscomp.transpile) throw Error('The transpiler did not properly export the "transpile" method. $gwtExport: ' + JSON.stringify(goog.global.$gwtExport)); goog.global.$jscomp.transpile = goog.global.$gwtExport.$jscomp.transpile; d = goog.global.$jscomp; e = d.transpile; } } e || (e = d.transpile = function (a, b) { goog.logToConsole_(b + " requires transpilation but no transpiler was found."); return a }); return e(a, b, c) }; goog.typeOf = function (a) { var b = typeof a; if ("object" == b) if (a) { if (a instanceof Array) return "array"; if (a instanceof Object) return b; var c = Object.prototype.toString.call(a); if ("[object Window]" == c) return "object"; if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) return "array"; if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) return "function" } else return "null"; else if ("function" == b && "undefined" == typeof a.call) return "object"; return b }; goog.isArray = function (a) { return "array" == goog.typeOf(a) }; goog.isArrayLike = function (a) { var b = goog.typeOf(a); return "array" == b || "object" == b && "number" == typeof a.length }; goog.isDateLike = function (a) { return goog.isObject(a) && "function" == typeof a.getFullYear }; goog.isFunction = function (a) { return "function" == goog.typeOf(a) }; goog.isObject = function (a) { var b = typeof a; return "object" == b && null != a || "function" == b }; goog.getUid = function (a) { return Object.prototype.hasOwnProperty.call(a, goog.UID_PROPERTY_) && a[goog.UID_PROPERTY_] || (a[goog.UID_PROPERTY_] = ++goog.uidCounter_) }; goog.hasUid = function (a) { return !!a[goog.UID_PROPERTY_] }; goog.removeUid = function (a) { null !== a && "removeAttribute" in a && a.removeAttribute(goog.UID_PROPERTY_); try { delete a[goog.UID_PROPERTY_]; } catch (b) { } }; goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0); goog.uidCounter_ = 0; goog.getHashCode = goog.getUid; goog.removeHashCode = goog.removeUid; goog.cloneObject = function (a) { var b = goog.typeOf(a); if ("object" == b || "array" == b) { if ("function" === typeof a.clone) return a.clone(); b = "array" == b ? [] : {}; for (var c in a) b[c] = goog.cloneObject(a[c]); return b } return a }; goog.bindNative_ = function (a, b, c) { return a.call.apply(a.bind, arguments) }; goog.bindJs_ = function (a, b, c) { if (!a) throw Error(); if (2 < arguments.length) { var d = Array.prototype.slice.call(arguments, 2); return function () { var c = Array.prototype.slice.call(arguments); Array.prototype.unshift.apply(c, d); return a.apply(b, c) } } return function () { return a.apply(b, arguments) } }; goog.bind = function (a, b, c) { Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_; return goog.bind.apply(null, arguments) }; goog.partial = function (a, b) { var c = Array.prototype.slice.call(arguments, 1); return function () { var b = c.slice(); b.push.apply(b, arguments); return a.apply(this, b) } }; goog.mixin = function (a, b) { for (var c in b) a[c] = b[c]; }; goog.now = goog.TRUSTED_SITE && Date.now || function () { return +new Date }; goog.globalEval = function (a) { if (goog.global.execScript) goog.global.execScript(a, "JavaScript"); else if (goog.global.eval) { if (null == goog.evalWorksForGlobals_) { try { goog.global.eval("var _evalTest_ = 1;"); } catch (d) { } if ("undefined" != typeof goog.global._evalTest_) { try { delete goog.global._evalTest_; } catch (d) { } goog.evalWorksForGlobals_ = !0; } else goog.evalWorksForGlobals_ = !1; } if (goog.evalWorksForGlobals_) goog.global.eval(a); else { var b = goog.global.document, c = b.createElement("script"); c.type = "text/javascript"; c.defer = !1; c.appendChild(b.createTextNode(a)); b.head.appendChild(c); b.head.removeChild(c); } } else throw Error("goog.globalEval not available"); }; goog.evalWorksForGlobals_ = null; goog.getCssName = function (a, b) { if ("." == String(a).charAt(0)) throw Error('className passed in goog.getCssName must not start with ".". You passed: ' + a); var c = function (a) { return goog.cssNameMapping_[a] || a }, d = function (a) { a = a.split("-"); for (var b = [], d = 0; d < a.length; d++) b.push(c(a[d])); return b.join("-") }; d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function (a) { return a }; a = b ? a + "-" + d(b) : d(a); return goog.global.CLOSURE_CSS_NAME_MAP_FN ? goog.global.CLOSURE_CSS_NAME_MAP_FN(a) : a }; goog.setCssNameMapping = function (a, b) { goog.cssNameMapping_ = a; goog.cssNameMappingStyle_ = b; }; goog.getMsg = function (a, b, c) { c && c.html && (a = a.replace(/</g, "<")); b && (a = a.replace(/\{\$([^}]+)}/g, function (a, c) { return null != b && c in b ? b[c] : a })); return a }; goog.getMsgWithFallback = function (a, b) { return a }; goog.exportSymbol = function (a, b, c) { goog.exportPath_(a, b, c); }; goog.exportProperty = function (a, b, c) { a[b] = c; }; goog.inherits = function (a, b) { function c() { } c.prototype = b.prototype; a.superClass_ = b.prototype; a.prototype = new c; a.prototype.constructor = a; a.base = function (a, c, f) { for (var d = Array(arguments.length - 2), e = 2; e < arguments.length; e++) d[e - 2] = arguments[e]; return b.prototype[c].apply(a, d) }; }; goog.scope = function (a) { if (goog.isInModuleLoader_()) throw Error("goog.scope is not supported within a module."); a.call(goog.global); }; goog.defineClass = function (a, b) { var c = b.constructor, d = b.statics; c && c != Object.prototype.constructor || (c = function () { throw Error("cannot instantiate an interface (no constructor defined)."); }); c = goog.defineClass.createSealingConstructor_(c, a); a && goog.inherits(c, a); delete b.constructor; delete b.statics; goog.defineClass.applyProperties_(c.prototype, b); null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d)); return c }; goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG; goog.defineClass.createSealingConstructor_ = function (a, b) { if (!goog.defineClass.SEAL_CLASS_INSTANCES) return a; var c = !goog.defineClass.isUnsealable_(b), d = function () { var b = a.apply(this, arguments) || this; b[goog.UID_PROPERTY_] = b[goog.UID_PROPERTY_]; this.constructor === d && c && Object.seal instanceof Function && Object.seal(b); return b }; return d }; goog.defineClass.isUnsealable_ = function (a) { return a && a.prototype && a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_] }; goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); goog.defineClass.applyProperties_ = function (a, b) { for (var c in b) Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]); for (var d = 0; d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length; d++) c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d], Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]); }; goog.tagUnsealableClass = function (a) { }; goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_ = "goog_defineClass_legacy_unsealable"; goog.TRUSTED_TYPES_POLICY_NAME = ""; goog.identity_ = function (a) { return a }; goog.createTrustedTypesPolicy = function (a) { var b = null, c = goog.global.trustedTypes || goog.global.TrustedTypes; if (!c || !c.createPolicy) return b; try { b = c.createPolicy(a, { createHTML: goog.identity_, createScript: goog.identity_, createScriptURL: goog.identity_, createURL: goog.identity_ }); } catch (d) { goog.logToConsole_(d.message); } return b }; goog.TRUSTED_TYPES_POLICY_ = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#base") : null; goog.object = {}; goog.object.is = function (a, b) { return a === b ? 0 !== a || 1 / a === 1 / b : a !== a && b !== b }; goog.object.forEach = function (a, b, c) { for (var d in a) b.call(c, a[d], d, a); }; goog.object.filter = function (a, b, c) { var d = {}, e; for (e in a) b.call(c, a[e], e, a) && (d[e] = a[e]); return d }; goog.object.map = function (a, b, c) { var d = {}, e; for (e in a) d[e] = b.call(c, a[e], e, a); return d }; goog.object.some = function (a, b, c) { for (var d in a) if (b.call(c, a[d], d, a)) return !0; return !1 }; goog.object.every = function (a, b, c) { for (var d in a) if (!b.call(c, a[d], d, a)) return !1; return !0 }; goog.object.getCount = function (a) { var b = 0, c; for (c in a) b++; return b }; goog.object.getAnyKey = function (a) { for (var b in a) return b }; goog.object.getAnyValue = function (a) { for (var b in a) return a[b] }; goog.object.contains = function (a, b) { return goog.object.containsValue(a, b) }; goog.object.getValues = function (a) { var b = [], c = 0, d; for (d in a) b[c++] = a[d]; return b }; goog.object.getKeys = function (a) { var b = [], c = 0, d; for (d in a) b[c++] = d; return b }; goog.object.getValueByKeys = function (a, b) { var c = goog.isArrayLike(b), d = c ? b : arguments; for (c = c ? 0 : 1; c < d.length; c++) { if (null == a) return; a = a[d[c]]; } return a }; goog.object.containsKey = function (a, b) { return null !== a && b in a }; goog.object.containsValue = function (a, b) { for (var c in a) if (a[c] == b) return !0; return !1 }; goog.object.findKey = function (a, b, c) { for (var d in a) if (b.call(c, a[d], d, a)) return d }; goog.object.findValue = function (a, b, c) { return (b = goog.object.findKey(a, b, c)) && a[b] }; goog.object.isEmpty = function (a) { for (var b in a) return !1; return !0 }; goog.object.clear = function (a) { for (var b in a) delete a[b]; }; goog.object.remove = function (a, b) { var c; (c = b in a) && delete a[b]; return c }; goog.object.add = function (a, b, c) { if (null !== a && b in a) throw Error('The object already contains the key "' + b + '"'); goog.object.set(a, b, c); }; goog.object.get = function (a, b, c) { return null !== a && b in a ? a[b] : c }; goog.object.set = function (a, b, c) { a[b] = c; }; goog.object.setIfUndefined = function (a, b, c) { return b in a ? a[b] : a[b] = c }; goog.object.setWithReturnValueIfNotSet = function (a, b, c) { if (b in a) return a[b]; c = c(); return a[b] = c }; goog.object.equals = function (a, b) { for (var c in a) if (!(c in b) || a[c] !== b[c]) return !1; for (var d in b) if (!(d in a)) return !1; return !0 }; goog.object.clone = function (a) { var b = {}, c; for (c in a) b[c] = a[c]; return b }; goog.object.unsafeClone = function (a) { var b = goog.typeOf(a); if ("object" == b || "array" == b) { if (goog.isFunction(a.clone)) return a.clone(); b = "array" == b ? [] : {}; for (var c in a) b[c] = goog.object.unsafeClone(a[c]); return b } return a }; goog.object.transpose = function (a) { var b = {}, c; for (c in a) b[a[c]] = c; return b }; goog.object.PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); goog.object.extend = function (a, b) { for (var c, d, e = 1; e < arguments.length; e++) { d = arguments[e]; for (c in d) a[c] = d[c]; for (var f = 0; f < goog.object.PROTOTYPE_FIELDS_.length; f++) c = goog.object.PROTOTYPE_FIELDS_[f], Object.prototype.hasOwnProperty.call(d, c) && (a[c] = d[c]); } }; goog.object.create = function (a) { var b = arguments.length; if (1 == b && Array.isArray(arguments[0])) return goog.object.create.apply(null, arguments[0]); if (b % 2) throw Error("Uneven number of arguments"); for (var c = {}, d = 0; d < b; d += 2) c[arguments[d]] = arguments[d + 1]; return c }; goog.object.createSet = function (a) { var b = arguments.length; if (1 == b && Array.isArray(arguments[0])) return goog.object.createSet.apply(null, arguments[0]); for (var c = {}, d = 0; d < b; d++) c[arguments[d]] = !0; return c }; goog.object.createImmutableView = function (a) { var b = a; Object.isFrozen && !Object.isFrozen(a) && (b = Object.create(a), Object.freeze(b)); return b }; goog.object.isImmutableView = function (a) { return !!Object.isFrozen && Object.isFrozen(a) }; goog.object.getAllPropertyNames = function (a, b, c) { if (!a) return []; if (!Object.getOwnPropertyNames || !Object.getPrototypeOf) return goog.object.getKeys(a); for (var d = {}; a && (a !== Object.prototype || b) && (a !== Function.prototype || c);) { for (var e = Object.getOwnPropertyNames(a), f = 0; f < e.length; f++) d[e[f]] = !0; a = Object.getPrototypeOf(a); } return goog.object.getKeys(d) }; goog.object.getSuperClass = function (a) { return (a = Object.getPrototypeOf(a.prototype)) && a.constructor }; var jspb = {asserts: {}}; jspb.asserts.doAssertFailure = function (a, b, c, d) { var e = "Assertion failed"; if (c) { e += ": " + c; var f = d; } else a && (e += ": " + a, f = b); throw Error("" + e, f || []); }; jspb.asserts.assert = function (a, b, c) { for (var d = [], e = 2; e < arguments.length; ++e) d[e - 2] = arguments[e]; a || jspb.asserts.doAssertFailure("", null, b, d); return a }; jspb.asserts.assertString = function (a, b, c) { for (var d = [], e = 2; e < arguments.length; ++e) d[e - 2] = arguments[e]; "string" !== typeof a && jspb.asserts.doAssertFailure("Expected string but got %s: %s.", [goog.typeOf(a), a], b, d); return a }; jspb.asserts.assertArray = function (a, b, c) { for (var d = [], e = 2; e < arguments.length; ++e) d[e - 2] = arguments[e]; Array.isArray(a) || jspb.asserts.doAssertFailure("Expected array but got %s: %s.", [goog.typeOf(a), a], b, d); return a }; jspb.asserts.fail = function (a, b) { for (var c = [], d = 1; d < arguments.length; ++d) c[d - 1] = arguments[d]; throw Error("Failure" + (a ? ": " + a : ""), c); }; jspb.asserts.assertInstanceof = function (a, b, c, d) { for (var e = [], f = 3; f < arguments.length; ++f) e[f - 3] = arguments[f]; a instanceof b || jspb.asserts.doAssertFailure("Expected instanceof %s but got %s.", [jspb.asserts.getType(b), jspb.asserts.getType(a)], c, e); return a }; jspb.asserts.getType = function (a) { return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : typeof a }; jspb.BinaryConstants = {}; jspb.ConstBinaryMessage = function () { }; jspb.BinaryMessage = function () { }; jspb.BinaryConstants.FieldType = { INVALID: -1, DOUBLE: 1, FLOAT: 2, INT64: 3, UINT64: 4, INT32: 5, FIXED64: 6, FIXED32: 7, BOOL: 8, STRING: 9, GROUP: 10, MESSAGE: 11, BYTES: 12, UINT32: 13, ENUM: 14, SFIXED32: 15, SFIXED64: 16, SINT32: 17, SINT64: 18, FHASH64: 30, VHASH64: 31 }; jspb.BinaryConstants.WireType = { INVALID: -1, VARINT: 0, FIXED64: 1, DELIMITED: 2, START_GROUP: 3, END_GROUP: 4, FIXED32: 5 }; jspb.BinaryConstants.FieldTypeToWireType = function (a) { var b = jspb.BinaryConstants.FieldType, c = jspb.BinaryConstants.WireType; switch (a) { case b.INT32: case b.INT64: case b.UINT32: case b.UINT64: case b.SINT32: case b.SINT64: case b.BOOL: case b.ENUM: case b.VHASH64: return c.VARINT; case b.DOUBLE: case b.FIXED64: case b.SFIXED64: case b.FHASH64: return c.FIXED64; case b.STRING: case b.MESSAGE: case b.BYTES: return c.DELIMITED; case b.FLOAT: case b.FIXED32: case b.SFIXED32: return c.FIXED32; default: return c.INVALID } }; jspb.BinaryConstants.INVALID_FIELD_NUMBER = -1; jspb.BinaryConstants.FLOAT32_EPS = 1.401298464324817E-45; jspb.BinaryConstants.FLOAT32_MIN = 1.1754943508222875E-38; jspb.BinaryConstants.FLOAT32_MAX = 3.4028234663852886E38; jspb.BinaryConstants.FLOAT64_EPS = 4.9E-324; jspb.BinaryConstants.FLOAT64_MIN = 2.2250738585072014E-308; jspb.BinaryConstants.FLOAT64_MAX = 1.7976931348623157E308; jspb.BinaryConstants.TWO_TO_20 = 1048576; jspb.BinaryConstants.TWO_TO_23 = 8388608; jspb.BinaryConstants.TWO_TO_31 = 2147483648; jspb.BinaryConstants.TWO_TO_32 = 4294967296; jspb.BinaryConstants.TWO_TO_52 = 4503599627370496; jspb.BinaryConstants.TWO_TO_63 = 0x7fffffffffffffff; jspb.BinaryConstants.TWO_TO_64 = 1.8446744073709552E19; jspb.BinaryConstants.ZERO_HASH = "\x00\x00\x00\x00\x00\x00\x00\x00"; goog.debug = {}; goog.debug.Error = function (a) { if (Error.captureStackTrace) Error.captureStackTrace(this, goog.debug.Error); else { var b = Error().stack; b && (this.stack = b); } a && (this.message = String(a)); this.reportErrorToServer = !0; }; goog.inherits(goog.debug.Error, Error); goog.debug.Error.prototype.name = "CustomError"; goog.dom = {}; goog.dom.NodeType = { ELEMENT: 1, ATTRIBUTE: 2, TEXT: 3, CDATA_SECTION: 4, ENTITY_REFERENCE: 5, ENTITY: 6, PROCESSING_INSTRUCTION: 7, COMMENT: 8, DOCUMENT: 9, DOCUMENT_TYPE: 10, DOCUMENT_FRAGMENT: 11, NOTATION: 12 }; goog.asserts = {}; goog.asserts.ENABLE_ASSERTS = goog.DEBUG; goog.asserts.AssertionError = function (a, b) { goog.debug.Error.call(this, goog.asserts.subs_(a, b)); this.messagePattern = a; }; goog.inherits(goog.asserts.AssertionError, goog.debug.Error); goog.asserts.AssertionError.prototype.name = "AssertionError"; goog.asserts.DEFAULT_ERROR_HANDLER = function (a) { throw a; }; goog.asserts.errorHandler_ = goog.asserts.DEFAULT_ERROR_HANDLER; goog.asserts.subs_ = function (a, b) { a = a.split("%s"); for (var c = "", d = a.length - 1, e = 0; e < d; e++) c += a[e] + (e < b.length ? b[e] : "%s"); return c + a[d] }; goog.asserts.doAssertFailure_ = function (a, b, c, d) { var e = "Assertion failed"; if (c) { e += ": " + c; var f = d; } else a && (e += ": " + a, f = b); a = new goog.asserts.AssertionError("" + e, f || []); goog.asserts.errorHandler_(a); }; goog.asserts.setErrorHandler = function (a) { goog.asserts.ENABLE_ASSERTS && (goog.asserts.errorHandler_ = a); }; goog.asserts.assert = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && !a && goog.asserts.doAssertFailure_("", null, b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertExists = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && null == a && goog.asserts.doAssertFailure_("Expected to exist: %s.", [a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.fail = function (a, b) { goog.asserts.ENABLE_ASSERTS && goog.asserts.errorHandler_(new goog.asserts.AssertionError("Failure" + (a ? ": " + a : ""), Array.prototype.slice.call(arguments, 1))); }; goog.asserts.assertNumber = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && "number" !== typeof a && goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertString = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && "string" !== typeof a && goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertFunction = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && !goog.isFunction(a) && goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertObject = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && !goog.isObject(a) && goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertArray = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && !Array.isArray(a) && goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertBoolean = function (a, b, c) { goog.asserts.ENABLE_ASSERTS && "boolean" !== typeof a && goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertElement = function (a, b, c) { !goog.asserts.ENABLE_ASSERTS || goog.isObject(a) && a.nodeType == goog.dom.NodeType.ELEMENT || goog.asserts.doAssertFailure_("Expected Element but got %s: %s.", [goog.typeOf(a), a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertInstanceof = function (a, b, c, d) { !goog.asserts.ENABLE_ASSERTS || a instanceof b || goog.asserts.doAssertFailure_("Expected instanceof %s but got %s.", [goog.asserts.getType_(b), goog.asserts.getType_(a)], c, Array.prototype.slice.call(arguments, 3)); return a }; goog.asserts.assertFinite = function (a, b, c) { !goog.asserts.ENABLE_ASSERTS || "number" == typeof a && isFinite(a) || goog.asserts.doAssertFailure_("Expected %s to be a finite number but it is not.", [a], b, Array.prototype.slice.call(arguments, 2)); return a }; goog.asserts.assertObjectPrototypeIsIntact = function () { for (var a in Object.prototype) goog.asserts.fail(a + " should not be enumerable in Object.prototype."); }; goog.asserts.getType_ = function (a) { return a instanceof Function ? a.displayName || a.name || "unknown type name" : a instanceof Object ? a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) : null === a ? "null" : typeof a }; goog.array = {}; goog.NATIVE_ARRAY_PROTOTYPES = goog.TRUSTED_SITE; goog.array.ASSUME_NATIVE_FUNCTIONS = 2012 < goog.FEATURESET_YEAR; goog.array.peek = function (a) { return a[a.length - 1] }; goog.array.last = goog.array.peek; goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.indexOf) ? function (a, b, c) { goog.asserts.assert(null != a.length); return Array.prototype.indexOf.call(a, b, c) } : function (a, b, c) { c = null == c ? 0 : 0 > c ? Math.max(0, a.length + c) : c; if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.indexOf(b, c); for (; c < a.length; c++) if (c in a && a[c] === b) return c; return -1 }; goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.lastIndexOf) ? function (a, b, c) { goog.asserts.assert(null != a.length); return Array.prototype.lastIndexOf.call(a, b, null == c ? a.length - 1 : c) } : function (a, b, c) { c = null == c ? a.length - 1 : c; 0 > c && (c = Math.max(0, a.length + c)); if ("string" === typeof a) return "string" !== typeof b || 1 != b.length ? -1 : a.lastIndexOf(b, c); for (; 0 <= c; c--) if (c in a && a[c] === b) return c; return -1 }; goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.forEach) ? function (a, b, c) { goog.asserts.assert(null != a.length); Array.prototype.forEach.call(a, b, c); } : function (a, b, c) { for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) f in e && b.call(c, e[f], f, a); }; goog.array.forEachRight = function (a, b, c) { var d = a.length, e = "string" === typeof a ? a.split("") : a; for (--d; 0 <= d; --d) d in e && b.call(c, e[d], d, a); }; goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.filter) ? function (a, b, c) { goog.asserts.assert(null != a.length); return Array.prototype.filter.call(a, b, c) } : function (a, b, c) { for (var d = a.length, e = [], f = 0, g = "string" === typeof a ? a.split("") : a, h = 0; h < d; h++) if (h in g) { var k = g[h]; b.call(c, k, h, a) && (e[f++] = k); } return e }; goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.map) ? function (a, b, c) { goog.asserts.assert(null != a.length); return Array.prototype.map.call(a, b, c) } : function (a, b, c) { for (var d = a.length, e = Array(d), f = "string" === typeof a ? a.split("") : a, g = 0; g < d; g++) g in f && (e[g] = b.call(c, f[g], g, a)); return e }; goog.array.reduce = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduce) ? function (a, b, c, d) { goog.asserts.assert(null != a.length); d && (b = goog.bind(b, d)); return Array.prototype.reduce.call(a, b, c) } : function (a, b, c, d) { var e = c; goog.array.forEach(a, function (c, g) { e = b.call(d, e, c, g, a); }); return e }; goog.array.reduceRight = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.reduceRight) ? function (a, b, c, d) { goog.asserts.assert(null != a.length); goog.asserts.assert(null != b); d && (b = goog.bind(b, d)); return Array.prototype.reduceRight.call(a, b, c) } : function (a, b, c, d) { var e = c; goog.array.forEachRight(a, function (c, g) { e = b.call(d, e, c, g, a); }); return e }; goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.some) ? function (a, b, c) { goog.asserts.assert(null != a.length); return Array.prototype.some.call(a, b, c) } : function (a, b, c) { for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) if (f in e && b.call(c, e[f], f, a)) return !0; return !1 }; goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && (goog.array.ASSUME_NATIVE_FUNCTIONS || Array.prototype.every) ? function (a, b, c) { goog.asserts.assert(null != a.length); return Array.prototype.every.call(a, b, c) } : function (a, b, c) { for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) if (f in e && !b.call(c, e[f], f, a)) return !1; return !0 }; goog.array.count = function (a, b, c) { var d = 0; goog.array.forEach(a, function (a, f, g) { b.call(c, a, f, g) && ++d; }, c); return d }; goog.array.find = function (a, b, c) { b = goog.array.findIndex(a, b, c); return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b] }; goog.array.findIndex = function (a, b, c) { for (var d = a.length, e = "string" === typeof a ? a.split("") : a, f = 0; f < d; f++) if (f in e && b.call(c, e[f], f, a)) return f; return -1 }; goog.array.findRight = function (a, b, c) { b = goog.array.findIndexRight(a, b, c); return 0 > b ? null : "string" === typeof a ? a.charAt(b) : a[b] }; goog.array.findIndexRight = function (a, b, c) { var d = a.length, e = "string" === typeof a ? a.split("") : a; for (--d; 0 <= d; d--) if (d in e && b.call(c, e[d], d, a)) return d; return -1 }; goog.array.contains = function (a, b) { return 0 <= goog.array.indexOf(a, b) }; goog.array.isEmpty = function (a) { return 0 == a.length }; goog.array.clear = function (a) { if (!Array.isArray(a)) for (var b = a.length - 1; 0 <= b; b--) delete a[b]; a.length = 0; }; goog.array.insert = function (a, b) { goog.array.contains(a, b) || a.push(b); }; goog.array.insertAt = function (a, b, c) { goog.array.splice(a, c, 0, b); }; goog.array.insertArrayAt = function (a, b, c) { goog.partial(goog.array.splice, a, c, 0).apply(null, b); }; goog.array.insertBefore = function (a, b, c) { var d; 2 == arguments.length || 0 > (d = goog.array.indexOf(a, c)) ? a.push(b) : goog.array.insertAt(a, b, d); }; goog.array.remove = function (a, b) { b = goog.array.indexOf(a, b); var c; (c = 0 <= b) && goog.array.removeAt(a, b); return c }; goog.array.removeLast = function (a, b) { b = goog.array.lastIndexOf(a, b); return 0 <= b ? (goog.array.removeAt(a, b), !0) : !1 }; goog.array.removeAt = function (a, b) { goog.asserts.assert(null != a.length); return 1 == Array.prototype.splice.call(a, b, 1).length }; goog.array.removeIf = function (a, b, c) { b = goog.array.findIndex(a, b, c); return 0 <= b ? (goog.array.removeAt(a, b), !0) : !1 }; goog.array.removeAllIf = function (a, b, c) { var d = 0; goog.array.forEachRight(a, function (e, f) { b.call(c, e, f, a) && goog.array.removeAt(a, f) && d++; }); return d }; goog.array.concat = function (a) { return Array.prototype.concat.apply([], arguments) }; goog.array.join = function (a) { return Array.prototype.concat.apply([], arguments) }; goog.array.toArray = function (a) { var b = a.length; if (0 < b) { for (var c = Array(b), d = 0; d < b; d++) c[d] = a[d]; return c } return [] }; goog.array.clone = goog.array.toArray; goog.array.extend = function (a, b) { for (var c = 1; c < arguments.length; c++) { var d = arguments[c]; if (goog.isArrayLike(d)) { var e = a.length || 0, f = d.length || 0; a.length = e + f; for (var g = 0; g < f; g++) a[e + g] = d[g]; } else a.push(d); } }; goog.array.splice = function (a, b, c, d) { goog.asserts.assert(null != a.length); return Array.prototype.splice.apply(a, goog.array.slice(arguments, 1)) }; goog.array.slice = function (a, b, c) { goog.asserts.assert(null != a.length); return 2 >= arguments.length ? Array.prototype.slice.call(a, b) : Array.prototype.slice.call(a, b, c) }; goog.array.removeDuplicates = function (a, b, c) { b = b || a; var d = function (a) { return goog.isObject(a) ? "o" + goog.getUid(a) : (typeof a).charAt(0) + a }; c = c || d; d = {}; for (var e = 0, f = 0; f < a.length;) { var g = a[f++], h = c(g); Object.prototype.hasOwnProperty.call(d, h) || (d[h] = !0, b[e++] = g); } b.length = e; }; goog.array.binarySearch = function (a, b, c) { return goog.array.binarySearch_(a, c || goog.array.defaultCompare, !1, b) }; goog.array.binarySelect = function (a, b, c) { return goog.array.binarySearch_(a, b, !0, void 0, c) }; goog.array.binarySearch_ = function (a, b, c, d, e) { for (var f = 0, g = a.length, h; f < g;) { var k = f + (g - f >>> 1); var l = c ? b.call(e, a[k], k, a) : b(d, a[k]); 0 < l ? f = k + 1 : (g = k, h = !l); } return h ? f : -f - 1 }; goog.array.sort = function (a, b) { a.sort(b || goog.array.defaultCompare); }; goog.array.stableSort = function (a, b) { for (var c = Array(a.length), d = 0; d < a.length; d++) c[d] = {index: d, value: a[d]}; var e = b || goog.array.defaultCompare; goog.array.sort(c, function (a, b) { return e(a.value, b.value) || a.index - b.index }); for (d = 0; d < a.length; d++) a[d] = c[d].value; }; goog.array.sortByKey = function (a, b, c) { var d = c || goog.array.defaultCompare; goog.array.sort(a, function (a, c) { return d(b(a), b(c)) }); }; goog.array.sortObjectsByKey = function (a, b, c) { goog.array.sortByKey(a, function (a) { return a[b] }, c); }; goog.array.isSorted = function (a, b, c) { b = b || goog.array.defaultCompare; for (var d = 1; d < a.length; d++) { var e = b(a[d - 1], a[d]); if (0 < e || 0 == e && c) return !1 } return !0 }; goog.array.equals = function (a, b, c) { if (!goog.isArrayLike(a) || !goog.isArrayLike(b) || a.length != b.length) return !1; var d = a.length; c = c || goog.array.defaultCompareEquality; for (var e = 0; e < d; e++) if (!c(a[e], b[e])) return !1; return !0 }; goog.array.compare3 = function (a, b, c) { c = c || goog.array.defaultCompare; for (var d = Math.min(a.length, b.length), e = 0; e < d; e++) { var f = c(a[e], b[e]); if (0 != f) return f } return goog.array.defaultCompare(a.length, b.length) }; goog.array.defaultCompare = function (a, b) { return a > b ? 1 : a < b ? -1 : 0 }; goog.array.inverseDefaultCompare = function (a, b) { return -goog.array.defaultCompare(a, b) }; goog.array.defaultCompareEquality = function (a, b) { return a === b }; goog.array.binaryInsert = function (a, b, c) { c = goog.array.binarySearch(a, b, c); return 0 > c ? (goog.array.insertAt(a, b, -(c + 1)), !0) : !1 }; goog.array.binaryRemove = function (a, b, c) { b = goog.array.binarySearch(a, b, c); return 0 <= b ? goog.array.removeAt(a, b) : !1 }; goog.array.bucket = function (a, b, c) { for (var d = {}, e = 0; e < a.length; e++) { var f = a[e], g = b.call(c, f, e, a); void 0 !== g && (d[g] || (d[g] = [])).push(f); } return d }; goog.array.toObject = function (a, b, c) { var d = {}; goog.array.forEach(a, function (e, f) { d[b.call(c, e, f, a)] = e; }); return d }; goog.array.range = function (a, b, c) { var d = [], e = 0, f = a; c = c || 1; void 0 !== b && (e = a, f = b); if (0 > c * (f - e)) return []; if (0 < c) for (a = e; a < f; a += c) d.push(a); else for (a = e; a > f; a += c) d.push(a); return d }; goog.array.repeat = function (a, b) { for (var c = [], d = 0; d < b; d++) c[d] = a; return c }; goog.array.flatten = function (a) { for (var b = [], c = 0; c < arguments.length; c++) { var d = arguments[c]; if (Array.isArray(d)) for (var e = 0; e < d.length; e += 8192) { var f = goog.array.slice(d, e, e + 8192); f = goog.array.flatten.apply(null, f); for (var g = 0; g < f.length; g++) b.push(f[g]); } else b.push(d); } return b }; goog.array.rotate = function (a, b) { goog.asserts.assert(null != a.length); a.length && (b %= a.length, 0 < b ? Array.prototype.unshift.apply(a, a.splice(-b, b)) : 0 > b && Array.prototype.push.apply(a, a.splice(0, -b))); return a }; goog.array.moveItem = function (a, b, c) { goog.asserts.assert(0 <= b && b < a.length); goog.asserts.assert(0 <= c && c < a.length); b = Array.prototype.splice.call(a, b, 1); Array.prototype.splice.call(a, c, 0, b[0]); }; goog.array.zip = function (a) { if (!arguments.length) return []; for (var b = [], c = arguments[0].length, d = 1; d < arguments.length; d++) arguments[d].length < c && (c = arguments[d].length); for (d = 0; d < c; d++) { for (var e = [], f = 0; f < arguments.length; f++) e.push(arguments[f][d]); b.push(e); } return b }; goog.array.shuffle = function (a, b) { b = b || Math.random; for (var c = a.length - 1; 0 < c; c--) { var d = Math.floor(b() * (c + 1)), e = a[c]; a[c] = a[d]; a[d] = e; } }; goog.array.copyByIndex = function (a, b) { var c = []; goog.array.forEach(b, function (b) { c.push(a[b]); }); return c }; goog.array.concatMap = function (a, b, c) { return goog.array.concat.apply([], goog.array.map(a, b, c)) }; goog.crypt = {}; goog.crypt.stringToByteArray = function (a) { for (var b = [], c = 0, d = 0; d < a.length; d++) { var e = a.charCodeAt(d); 255 < e && (b[c++] = e & 255, e >>= 8); b[c++] = e; } return b }; goog.crypt.byteArrayToString = function (a) { if (8192 >= a.length) return String.fromCharCode.apply(null, a); for (var b = "", c = 0; c < a.length; c += 8192) { var d = goog.array.slice(a, c, c + 8192); b += String.fromCharCode.apply(null, d); } return b }; goog.crypt.byteArrayToHex = function (a, b) { return goog.array.map(a, function (a) { a = a.toString(16); return 1 < a.length ? a : "0" + a }).join(b || "") }; goog.crypt.hexToByteArray = function (a) { goog.asserts.assert(0 == a.length % 2, "Key string length must be multiple of 2"); for (var b = [], c = 0; c < a.length; c += 2) b.push(parseInt(a.substring(c, c + 2), 16)); return b }; goog.crypt.stringToUtf8ByteArray = function (a) { for (var b = [], c = 0, d = 0; d < a.length; d++) { var e = a.charCodeAt(d); 128 > e ? b[c++] = e : (2048 > e ? b[c++] = e >> 6 | 192 : (55296 == (e & 64512) && d + 1 < a.length && 56320 == (a.charCodeAt(d + 1) & 64512) ? (e = 65536 + ((e & 1023) << 10) + (a.charCodeAt(++d) & 1023), b[c++] = e >> 18 | 240, b[c++] = e >> 12 & 63 | 128) : b[c++] = e >> 12 | 224, b[c++] = e >> 6 & 63 | 128), b[c++] = e & 63 | 128); } return b }; goog.crypt.utf8ByteArrayToString = function (a) { for (var b = [], c = 0, d = 0; c < a.length;) { var e = a[c++]; if (128 > e) b[d++] = String.fromCharCode(e); else if (191 < e && 224 > e) { var f = a[c++]; b[d++] = String.fromCharCode((e & 31) << 6 | f & 63); } else if (239 < e && 365 > e) { f = a[c++]; var g = a[c++], h = a[c++]; e = ((e & 7) << 18 | (f & 63) << 12 | (g & 63) << 6 | h & 63) - 65536; b[d++] = String.fromCharCode(55296 + (e >> 10)); b[d++] = String.fromCharCode(56320 + (e & 1023)); } else f = a[c++], g = a[c++], b[d++] = String.fromCharCode((e & 15) << 12 | (f & 63) << 6 | g & 63); } return b.join("") }; goog.crypt.xorByteArray = function (a, b) { goog.asserts.assert(a.length == b.length, "XOR array lengths must match"); for (var c = [], d = 0; d < a.length; d++) c.push(a[d] ^ b[d]); return c }; goog.dom.asserts = {}; goog.dom.asserts.assertIsLocation = function (a) { if (goog.asserts.ENABLE_ASSERTS) { var b = goog.dom.asserts.getWindow_(a); b && (!a || !(a instanceof b.Location) && a instanceof b.Element) && goog.asserts.fail("Argument is not a Location (or a non-Element mock); got: %s", goog.dom.asserts.debugStringForType_(a)); } return a }; goog.dom.asserts.assertIsElementType_ = function (a, b) { if (goog.asserts.ENABLE_ASSERTS) { var c = goog.dom.asserts.getWindow_(a); c && "undefined" != typeof c[b] && (a && (a instanceof c[b] || !(a instanceof c.Location || a instanceof c.Element)) || goog.asserts.fail("Argument is not a %s (or a non-Element, non-Location mock); got: %s", b, goog.dom.asserts.debugStringForType_(a))); } return a }; goog.dom.asserts.assertIsHTMLAnchorElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLAnchorElement") }; goog.dom.asserts.assertIsHTMLButtonElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLButtonElement") }; goog.dom.asserts.assertIsHTMLLinkElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLLinkElement") }; goog.dom.asserts.assertIsHTMLImageElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLImageElement") }; goog.dom.asserts.assertIsHTMLAudioElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLAudioElement") }; goog.dom.asserts.assertIsHTMLVideoElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLVideoElement") }; goog.dom.asserts.assertIsHTMLInputElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLInputElement") }; goog.dom.asserts.assertIsHTMLTextAreaElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLTextAreaElement") }; goog.dom.asserts.assertIsHTMLCanvasElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLCanvasElement") }; goog.dom.asserts.assertIsHTMLEmbedElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLEmbedElement") }; goog.dom.asserts.assertIsHTMLFormElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLFormElement") }; goog.dom.asserts.assertIsHTMLFrameElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLFrameElement") }; goog.dom.asserts.assertIsHTMLIFrameElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLIFrameElement") }; goog.dom.asserts.assertIsHTMLObjectElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLObjectElement") }; goog.dom.asserts.assertIsHTMLScriptElement = function (a) { return goog.dom.asserts.assertIsElementType_(a, "HTMLScriptElement") }; goog.dom.asserts.debugStringForType_ = function (a) { if (goog.isObject(a)) try { return a.constructor.displayName || a.constructor.name || Object.prototype.toString.call(a) } catch (b) { return "<object could not be stringified>" } else return void 0 === a ? "undefined" : null === a ? "null" : typeof a }; goog.dom.asserts.getWindow_ = function (a) { try { var b = a && a.ownerDocument, c = b && (b.defaultView || b.parentWindow); c = c || goog.global; if (c.Element && c.Location) return c } catch (d) { } return null }; goog.functions = {}; goog.functions.constant = function (a) { return function () { return a } }; goog.functions.FALSE = function () { return !1 }; goog.functions.TRUE = function () { return !0 }; goog.functions.NULL = function () { return null }; goog.functions.identity = function (a, b) { return a }; goog.functions.error = function (a) { return function () { throw Error(a); } }; goog.functions.fail = function (a) { return function () { throw a; } }; goog.functions.lock = function (a, b) { b = b || 0; return function () { return a.apply(this, Array.prototype.slice.call(arguments, 0, b)) } }; goog.functions.nth = function (a) { return function () { return arguments[a] } }; goog.functions.partialRight = function (a, b) { var c = Array.prototype.slice.call(arguments, 1); return function () { var b = Array.prototype.slice.call(arguments); b.push.apply(b, c); return a.apply(this, b) } }; goog.functions.withReturnValue = function (a, b) { return goog.functions.sequence(a, goog.functions.constant(b)) }; goog.functions.equalTo = function (a, b) { return function (c) { return b ? a == c : a === c } }; goog.functions.compose = function (a, b) { var c = arguments, d = c.length; return function () { var a; d && (a = c[d - 1].apply(this, arguments)); for (var b = d - 2; 0 <= b; b--) a = c[b].call(this, a); return a } }; goog.functions.sequence = function (a) { var b = arguments, c = b.length; return function () { for (var a, e = 0; e < c; e++) a = b[e].apply(this, arguments); return a } }; goog.functions.and = function (a) { var b = arguments, c = b.length; return function () { for (var a = 0; a < c; a++) if (!b[a].apply(this, arguments)) return !1; return !0 } }; goog.functions.or = function (a) { var b = arguments, c = b.length; return function () { for (var a = 0; a < c; a++) if (b[a].apply(this, arguments)) return !0; return !1 } }; goog.functions.not = function (a) { return function () { return !a.apply(this, arguments) } }; goog.functions.create = function (a, b) { var c = function () { }; c.prototype = a.prototype; c = new c; a.apply(c, Array.prototype.slice.call(arguments, 1)); return c }; goog.functions.CACHE_RETURN_VALUE = !0; goog.functions.cacheReturnValue = function (a) { var b = !1, c; return function () { if (!goog.functions.CACHE_RETURN_VALUE) return a(); b || (c = a(), b = !0); return c } }; goog.functions.once = function (a) { var b = a; return function () { if (b) { var a = b; b = null; a(); } } }; goog.functions.debounce = function (a, b, c) { var d = 0; return function (e) { goog.global.clearTimeout(d); var f = arguments; d = goog.global.setTimeout(function () { a.apply(c, f); }, b); } }; goog.functions.throttle = function (a, b, c) { var d = 0, e = !1, f = [], g = function () { d = 0; e && (e = !1, h()); }, h = function () { d = goog.global.setTimeout(g, b); a.apply(c, f); }; return function (a) { f = arguments; d ? e = !0 : h(); } }; goog.functions.rateLimit = function (a, b, c) { var d = 0, e = function () { d = 0; }; return function (f) { d || (d = goog.global.setTimeout(e, b), a.apply(c, arguments)); } }; goog.dom.HtmlElement = function () { }; goog.dom.TagName = function (a) { this.tagName_ = a; }; goog.dom.TagName.prototype.toString = function () { return this.tagName_ }; goog.dom.TagName.A = new goog.dom.TagName("A"); goog.dom.TagName.ABBR = new goog.dom.TagName("ABBR"); goog.dom.TagName.ACRONYM = new goog.dom.TagName("ACRONYM"); goog.dom.TagName.ADDRESS = new goog.dom.TagName("ADDRESS"); goog.dom.TagName.APPLET = new goog.dom.TagName("APPLET"); goog.dom.TagName.AREA = new goog.dom.TagName("AREA"); goog.dom.TagName.ARTICLE = new goog.dom.TagName("ARTICLE"); goog.dom.TagName.ASIDE = new goog.dom.TagName("ASIDE"); goog.dom.TagName.AUDIO = new goog.dom.TagName("AUDIO"); goog.dom.TagName.B = new goog.dom.TagName("B"); goog.dom.TagName.BASE = new goog.dom.TagName("BASE"); goog.dom.TagName.BASEFONT = new goog.dom.TagName("BASEFONT"); goog.dom.TagName.BDI = new goog.dom.TagName("BDI"); goog.dom.TagName.BDO = new goog.dom.TagName("BDO"); goog.dom.TagName.BIG = new goog.dom.TagName("BIG"); goog.dom.TagName.BLOCKQUOTE = new goog.dom.TagName("BLOCKQUOTE"); goog.dom.TagName.BODY = new goog.dom.TagName("BODY"); goog.dom.TagName.BR = new goog.dom.TagName("BR"); goog.dom.TagName.BUTTON = new goog.dom.TagName("BUTTON"); goog.dom.TagName.CANVAS = new goog.dom.TagName("CANVAS"); goog.dom.TagName.CAPTION = new goog.dom.TagName("CAPTION"); goog.dom.TagName.CENTER = new goog.dom.TagName("CENTER"); goog.dom.TagName.CITE = new goog.dom.TagName("CITE"); goog.dom.TagName.CODE = new goog.dom.TagName("CODE"); goog.dom.TagName.COL = new goog.dom.TagName("COL"); goog.dom.TagName.COLGROUP = new goog.dom.TagName("COLGROUP"); goog.dom.TagName.COMMAND = new goog.dom.TagName("COMMAND"); goog.dom.TagName.DATA = new goog.dom.TagName("DATA"); goog.dom.TagName.DATALIST = new goog.dom.TagName("DATALIST"); goog.dom.TagName.DD = new goog.dom.TagName("DD"); goog.dom.TagName.DEL = new goog.dom.TagName("DEL"); goog.dom.TagName.DETAILS = new goog.dom.TagName("DETAILS"); goog.dom.TagName.DFN = new goog.dom.TagName("DFN"); goog.dom.TagName.DIALOG = new goog.dom.TagName("DIALOG"); goog.dom.TagName.DIR = new goog.dom.TagName("DIR"); goog.dom.TagName.DIV = new goog.dom.TagName("DIV"); goog.dom.TagName.DL = new goog.dom.TagName("DL"); goog.dom.TagName.DT = new goog.dom.TagName("DT"); goog.dom.TagName.EM = new goog.dom.TagName("EM"); goog.dom.TagName.EMBED = new goog.dom.TagName("EMBED"); goog.dom.TagName.FIELDSET = new goog.dom.TagName("FIELDSET"); goog.dom.TagName.FIGCAPTION = new goog.dom.TagName("FIGCAPTION"); goog.dom.TagName.FIGURE = new goog.dom.TagName("FIGURE"); goog.dom.TagName.FONT = new goog.dom.TagName("FONT"); goog.dom.TagName.FOOTER = new goog.dom.TagName("FOOTER"); goog.dom.TagName.FORM = new goog.dom.TagName("FORM"); goog.dom.TagName.FRAME = new goog.dom.TagName("FRAME"); goog.dom.TagName.FRAMESET = new goog.dom.TagName("FRAMESET"); goog.dom.TagName.H1 = new goog.dom.TagName("H1"); goog.dom.TagName.H2 = new goog.dom.TagName("H2"); goog.dom.TagName.H3 = new goog.dom.TagName("H3"); goog.dom.TagName.H4 = new goog.dom.TagName("H4"); goog.dom.TagName.H5 = new goog.dom.TagName("H5"); goog.dom.TagName.H6 = new goog.dom.TagName("H6"); goog.dom.TagName.HEAD = new goog.dom.TagName("HEAD"); goog.dom.TagName.HEADER = new goog.dom.TagName("HEADER"); goog.dom.TagName.HGROUP = new goog.dom.TagName("HGROUP"); goog.dom.TagName.HR = new goog.dom.TagName("HR"); goog.dom.TagName.HTML = new goog.dom.TagName("HTML"); goog.dom.TagName.I = new goog.dom.TagName("I"); goog.dom.TagName.IFRAME = new goog.dom.TagName("IFRAME"); goog.dom.TagName.IMG = new goog.dom.TagName("IMG"); goog.dom.TagName.INPUT = new goog.dom.TagName("INPUT"); goog.dom.TagName.INS = new goog.dom.TagName("INS"); goog.dom.TagName.ISINDEX = new goog.dom.TagName("ISINDEX"); goog.dom.TagName.KBD = new goog.dom.TagName("KBD"); goog.dom.TagName.KEYGEN = new goog.dom.TagName("KEYGEN"); goog.dom.TagName.LABEL = new goog.dom.TagName("LABEL"); goog.dom.TagName.LEGEND = new goog.dom.TagName("LEGEND"); goog.dom.TagName.LI = new goog.dom.TagName("LI"); goog.dom.TagName.LINK = new goog.dom.TagName("LINK"); goog.dom.TagName.MAIN = new goog.dom.TagName("MAIN"); goog.dom.TagName.MAP = new goog.dom.TagName("MAP"); goog.dom.TagName.MARK = new goog.dom.TagName("MARK"); goog.dom.TagName.MATH = new goog.dom.TagName("MATH"); goog.dom.TagName.MENU = new goog.dom.TagName("MENU"); goog.dom.TagName.MENUITEM = new goog.dom.TagName("MENUITEM"); goog.dom.TagName.META = new goog.dom.TagName("META"); goog.dom.TagName.METER = new goog.dom.TagName("METER"); goog.dom.TagName.NAV = new goog.dom.TagName("NAV"); goog.dom.TagName.NOFRAMES = new goog.dom.TagName("NOFRAMES"); goog.dom.TagName.NOSCRIPT = new goog.dom.TagName("NOSCRIPT"); goog.dom.TagName.OBJECT = new goog.dom.TagName("OBJECT"); goog.dom.TagName.OL = new goog.dom.TagName("OL"); goog.dom.TagName.OPTGROUP = new goog.dom.TagName("OPTGROUP"); goog.dom.TagName.OPTION = new goog.dom.TagName("OPTION"); goog.dom.TagName.OUTPUT = new goog.dom.TagName("OUTPUT"); goog.dom.TagName.P = new goog.dom.TagName("P"); goog.dom.TagName.PARAM = new goog.dom.TagName("PARAM"); goog.dom.TagName.PICTURE = new goog.dom.TagName("PICTURE"); goog.dom.TagName.PRE = new goog.dom.TagName("PRE"); goog.dom.TagName.PROGRESS = new goog.dom.TagName("PROGRESS"); goog.dom.TagName.Q = new goog.dom.TagName("Q"); goog.dom.TagName.RP = new goog.dom.TagName("RP"); goog.dom.TagName.RT = new goog.dom.TagName("RT"); goog.dom.TagName.RTC = new goog.dom.TagName("RTC"); goog.dom.TagName.RUBY = new goog.dom.TagName("RUBY"); goog.dom.TagName.S = new goog.dom.TagName("S"); goog.dom.TagName.SAMP = new goog.dom.TagName("SAMP"); goog.dom.TagName.SCRIPT = new goog.dom.TagName("SCRIPT"); goog.dom.TagName.SECTION = new goog.dom.TagName("SECTION"); goog.dom.TagName.SELECT = new goog.dom.TagName("SELECT"); goog.dom.TagName.SMALL = new goog.dom.TagName("SMALL"); goog.dom.TagName.SOURCE = new goog.dom.TagName("SOURCE"); goog.dom.TagName.SPAN = new goog.dom.TagName("SPAN"); goog.dom.TagName.STRIKE = new goog.dom.TagName("STRIKE"); goog.dom.TagName.STRONG = new goog.dom.TagName("STRONG"); goog.dom.TagName.STYLE = new goog.dom.TagName("STYLE"); goog.dom.TagName.SUB = new goog.dom.TagName("SUB"); goog.dom.TagName.SUMMARY = new goog.dom.TagName("SUMMARY"); goog.dom.TagName.SUP = new goog.dom.TagName("SUP"); goog.dom.TagName.SVG = new goog.dom.TagName("SVG"); goog.dom.TagName.TABLE = new goog.dom.TagName("TABLE"); goog.dom.TagName.TBODY = new goog.dom.TagName("TBODY"); goog.dom.TagName.TD = new goog.dom.TagName("TD"); goog.dom.TagName.TEMPLATE = new goog.dom.TagName("TEMPLATE"); goog.dom.TagName.TEXTAREA = new goog.dom.TagName("TEXTAREA"); goog.dom.TagName.TFOOT = new goog.dom.TagName("TFOOT"); goog.dom.TagName.TH = new goog.dom.TagName("TH"); goog.dom.TagName.THEAD = new goog.dom.TagName("THEAD"); goog.dom.TagName.TIME = new goog.dom.TagName("TIME"); goog.dom.TagName.TITLE = new goog.dom.TagName("TITLE"); goog.dom.TagName.TR = new goog.dom.TagName("TR"); goog.dom.TagName.TRACK = new goog.dom.TagName("TRACK"); goog.dom.TagName.TT = new goog.dom.TagName("TT"); goog.dom.TagName.U = new goog.dom.TagName("U"); goog.dom.TagName.UL = new goog.dom.TagName("UL"); goog.dom.TagName.VAR = new goog.dom.TagName("VAR"); goog.dom.TagName.VIDEO = new goog.dom.TagName("VIDEO"); goog.dom.TagName.WBR = new goog.dom.TagName("WBR"); goog.dom.tags = {}; goog.dom.tags.VOID_TAGS_ = { area: !0, base: !0, br: !0, col: !0, command: !0, embed: !0, hr: !0, img: !0, input: !0, keygen: !0, link: !0, meta: !0, param: !0, source: !0, track: !0, wbr: !0 }; goog.dom.tags.isVoidTag = function (a) { return !0 === goog.dom.tags.VOID_TAGS_[a] }; goog.html = {}; goog.html.trustedtypes = {}; goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY = goog.TRUSTED_TYPES_POLICY_NAME ? goog.createTrustedTypesPolicy(goog.TRUSTED_TYPES_POLICY_NAME + "#html") : null; goog.string = {}; goog.string.TypedString = function () { }; goog.string.Const = function (a, b) { this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = a === goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ && b || ""; this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ = goog.string.Const.TYPE_MARKER_; }; goog.string.Const.prototype.implementsGoogStringTypedString = !0; goog.string.Const.prototype.getTypedStringValue = function () { return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ }; goog.DEBUG && (goog.string.Const.prototype.toString = function () { return "Const{" + this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ + "}" }); goog.string.Const.unwrap = function (a) { if (a instanceof goog.string.Const && a.constructor === goog.string.Const && a.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ === goog.string.Const.TYPE_MARKER_) return a.stringConstValueWithSecurityContract__googStringSecurityPrivate_; goog.asserts.fail("expected object of type Const, got '" + a + "'"); return "type_error:Const" }; goog.string.Const.from = function (a) { return new goog.string.Const(goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_, a) }; goog.string.Const.TYPE_MARKER_ = {}; goog.string.Const.GOOG_STRING_CONSTRUCTOR_TOKEN_PRIVATE_ = {}; goog.string.Const.EMPTY = goog.string.Const.from(""); goog.html.SafeScript = function () { this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = ""; this.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_; }; goog.html.SafeScript.prototype.implementsGoogStringTypedString = !0; goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {}; goog.html.SafeScript.fromConstant = function (a) { a = goog.string.Const.unwrap(a); return 0 === a.length ? goog.html.SafeScript.EMPTY : goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeScript.fromConstantAndArgs = function (a, b) { for (var c = [], d = 1; d < arguments.length; d++) c.push(goog.html.SafeScript.stringify_(arguments[d])); return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse("(" + goog.string.Const.unwrap(a) + ")(" + c.join(", ") + ");") }; goog.html.SafeScript.fromJson = function (a) { return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(goog.html.SafeScript.stringify_(a)) }; goog.html.SafeScript.prototype.getTypedStringValue = function () { return this.privateDoNotAccessOrElseSafeScriptWrappedValue_.toString() }; goog.DEBUG && (goog.html.SafeScript.prototype.toString = function () { return "SafeScript{" + this.privateDoNotAccessOrElseSafeScriptWrappedValue_ + "}" }); goog.html.SafeScript.unwrap = function (a) { return goog.html.SafeScript.unwrapTrustedScript(a).toString() }; goog.html.SafeScript.unwrapTrustedScript = function (a) { if (a instanceof goog.html.SafeScript && a.constructor === goog.html.SafeScript && a.SAFE_SCRIPT_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeScript.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeScriptWrappedValue_; goog.asserts.fail("expected object of type SafeScript, got '" + a + "' of type " + goog.typeOf(a)); return "type_error:SafeScript" }; goog.html.SafeScript.stringify_ = function (a) { return JSON.stringify(a).replace(/</g, "\\x3c") }; goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse = function (a) { return (new goog.html.SafeScript).initSecurityPrivateDoNotAccessOrElse_(a) }; goog.html.SafeScript.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) { this.privateDoNotAccessOrElseSafeScriptWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScript(a) : a; return this }; goog.html.SafeScript.EMPTY = goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(""); goog.fs = {}; goog.fs.url = {}; goog.fs.url.createObjectUrl = function (a) { return goog.fs.url.getUrlObject_().createObjectURL(a) }; goog.fs.url.revokeObjectUrl = function (a) { goog.fs.url.getUrlObject_().revokeObjectURL(a); }; goog.fs.url.UrlObject_ = function () { }; goog.fs.url.UrlObject_.prototype.createObjectURL = function (a) { }; goog.fs.url.UrlObject_.prototype.revokeObjectURL = function (a) { }; goog.fs.url.getUrlObject_ = function () { var a = goog.fs.url.findUrlObject_(); if (null != a) return a; throw Error("This browser doesn't seem to support blob URLs"); }; goog.fs.url.findUrlObject_ = function () { return void 0 !== goog.global.URL && void 0 !== goog.global.URL.createObjectURL ? goog.global.URL : void 0 !== goog.global.webkitURL && void 0 !== goog.global.webkitURL.createObjectURL ? goog.global.webkitURL : void 0 !== goog.global.createObjectURL ? goog.global : null }; goog.fs.url.browserSupportsObjectUrls = function () { return null != goog.fs.url.findUrlObject_() }; goog.fs.blob = {}; goog.fs.blob.getBlob = function (a) { var b = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder; if (void 0 !== b) { b = new b; for (var c = 0; c < arguments.length; c++) b.append(arguments[c]); return b.getBlob() } return goog.fs.blob.getBlobWithProperties(goog.array.toArray(arguments)) }; goog.fs.blob.getBlobWithProperties = function (a, b, c) { var d = goog.global.BlobBuilder || goog.global.WebKitBlobBuilder; if (void 0 !== d) { d = new d; for (var e = 0; e < a.length; e++) d.append(a[e], c); return d.getBlob(b) } if (void 0 !== goog.global.Blob) return d = {}, b && (d.type = b), c && (d.endings = c), new Blob(a, d); throw Error("This browser doesn't seem to support creating Blobs"); }; goog.i18n = {}; goog.i18n.bidi = {}; goog.i18n.bidi.FORCE_RTL = !1; goog.i18n.bidi.IS_RTL = goog.i18n.bidi.FORCE_RTL || ("ar" == goog.LOCALE.substring(0, 2).toLowerCase() || "fa" == goog.LOCALE.substring(0, 2).toLowerCase() || "he" == goog.LOCALE.substring(0, 2).toLowerCase() || "iw" == goog.LOCALE.substring(0, 2).toLowerCase() || "ps" == goog.LOCALE.substring(0, 2).toLowerCase() || "sd" == goog.LOCALE.substring(0, 2).toLowerCase() || "ug" == goog.LOCALE.substring(0, 2).toLowerCase() || "ur" == goog.LOCALE.substring(0, 2).toLowerCase() || "yi" == goog.LOCALE.substring(0, 2).toLowerCase()) && (2 == goog.LOCALE.length || "-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) || 3 <= goog.LOCALE.length && "ckb" == goog.LOCALE.substring(0, 3).toLowerCase() && (3 == goog.LOCALE.length || "-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) || 7 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(2, 3) || "_" == goog.LOCALE.substring(2, 3)) && ("adlm" == goog.LOCALE.substring(3, 7).toLowerCase() || "arab" == goog.LOCALE.substring(3, 7).toLowerCase() || "hebr" == goog.LOCALE.substring(3, 7).toLowerCase() || "nkoo" == goog.LOCALE.substring(3, 7).toLowerCase() || "rohg" == goog.LOCALE.substring(3, 7).toLowerCase() || "thaa" == goog.LOCALE.substring(3, 7).toLowerCase()) || 8 <= goog.LOCALE.length && ("-" == goog.LOCALE.substring(3, 4) || "_" == goog.LOCALE.substring(3, 4)) && ("adlm" == goog.LOCALE.substring(4, 8).toLowerCase() || "arab" == goog.LOCALE.substring(4, 8).toLowerCase() || "hebr" == goog.LOCALE.substring(4, 8).toLowerCase() || "nkoo" == goog.LOCALE.substring(4, 8).toLowerCase() || "rohg" == goog.LOCALE.substring(4, 8).toLowerCase() || "thaa" == goog.LOCALE.substring(4, 8).toLowerCase()); goog.i18n.bidi.Format = {LRE: "\u202a", RLE: "\u202b", PDF: "\u202c", LRM: "\u200e", RLM: "\u200f"}; goog.i18n.bidi.Dir = {LTR: 1, RTL: -1, NEUTRAL: 0}; goog.i18n.bidi.RIGHT = "right"; goog.i18n.bidi.LEFT = "left"; goog.i18n.bidi.I18N_RIGHT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.LEFT : goog.i18n.bidi.RIGHT; goog.i18n.bidi.I18N_LEFT = goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT; goog.i18n.bidi.toDir = function (a, b) { return "number" == typeof a ? 0 < a ? goog.i18n.bidi.Dir.LTR : 0 > a ? goog.i18n.bidi.Dir.RTL : b ? null : goog.i18n.bidi.Dir.NEUTRAL : null == a ? null : a ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR }; goog.i18n.bidi.ltrChars_ = "A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02b8\u0300-\u0590\u0900-\u1fff\u200e\u2c00-\ud801\ud804-\ud839\ud83c-\udbff\uf900-\ufb1c\ufe00-\ufe6f\ufefd-\uffff"; goog.i18n.bidi.rtlChars_ = "\u0591-\u06ef\u06fa-\u08ff\u200f\ud802-\ud803\ud83a-\ud83b\ufb1d-\ufdff\ufe70-\ufefc"; goog.i18n.bidi.htmlSkipReg_ = /<[^>]*>|&[^;]+;/g; goog.i18n.bidi.stripHtmlIfNeeded_ = function (a, b) { return b ? a.replace(goog.i18n.bidi.htmlSkipReg_, "") : a }; goog.i18n.bidi.rtlCharReg_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "]"); goog.i18n.bidi.ltrCharReg_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "]"); goog.i18n.bidi.hasAnyRtl = function (a, b) { return goog.i18n.bidi.rtlCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b)) }; goog.i18n.bidi.hasRtlChar = goog.i18n.bidi.hasAnyRtl; goog.i18n.bidi.hasAnyLtr = function (a, b) { return goog.i18n.bidi.ltrCharReg_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b)) }; goog.i18n.bidi.ltrRe_ = new RegExp("^[" + goog.i18n.bidi.ltrChars_ + "]"); goog.i18n.bidi.rtlRe_ = new RegExp("^[" + goog.i18n.bidi.rtlChars_ + "]"); goog.i18n.bidi.isRtlChar = function (a) { return goog.i18n.bidi.rtlRe_.test(a) }; goog.i18n.bidi.isLtrChar = function (a) { return goog.i18n.bidi.ltrRe_.test(a) }; goog.i18n.bidi.isNeutralChar = function (a) { return !goog.i18n.bidi.isLtrChar(a) && !goog.i18n.bidi.isRtlChar(a) }; goog.i18n.bidi.ltrDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.rtlChars_ + "]*[" + goog.i18n.bidi.ltrChars_ + "]"); goog.i18n.bidi.rtlDirCheckRe_ = new RegExp("^[^" + goog.i18n.bidi.ltrChars_ + "]*[" + goog.i18n.bidi.rtlChars_ + "]"); goog.i18n.bidi.startsWithRtl = function (a, b) { return goog.i18n.bidi.rtlDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b)) }; goog.i18n.bidi.isRtlText = goog.i18n.bidi.startsWithRtl; goog.i18n.bidi.startsWithLtr = function (a, b) { return goog.i18n.bidi.ltrDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b)) }; goog.i18n.bidi.isLtrText = goog.i18n.bidi.startsWithLtr; goog.i18n.bidi.isRequiredLtrRe_ = /^http:\/\/.*/; goog.i18n.bidi.isNeutralText = function (a, b) { a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b); return goog.i18n.bidi.isRequiredLtrRe_.test(a) || !goog.i18n.bidi.hasAnyLtr(a) && !goog.i18n.bidi.hasAnyRtl(a) }; goog.i18n.bidi.ltrExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.ltrChars_ + "][^" + goog.i18n.bidi.rtlChars_ + "]*$"); goog.i18n.bidi.rtlExitDirCheckRe_ = new RegExp("[" + goog.i18n.bidi.rtlChars_ + "][^" + goog.i18n.bidi.ltrChars_ + "]*$"); goog.i18n.bidi.endsWithLtr = function (a, b) { return goog.i18n.bidi.ltrExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b)) }; goog.i18n.bidi.isLtrExitText = goog.i18n.bidi.endsWithLtr; goog.i18n.bidi.endsWithRtl = function (a, b) { return goog.i18n.bidi.rtlExitDirCheckRe_.test(goog.i18n.bidi.stripHtmlIfNeeded_(a, b)) }; goog.i18n.bidi.isRtlExitText = goog.i18n.bidi.endsWithRtl; goog.i18n.bidi.rtlLocalesRe_ = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i; goog.i18n.bidi.isRtlLanguage = function (a) { return goog.i18n.bidi.rtlLocalesRe_.test(a) }; goog.i18n.bidi.bracketGuardTextRe_ = /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g; goog.i18n.bidi.guardBracketInText = function (a, b) { b = (void 0 === b ? goog.i18n.bidi.hasAnyRtl(a) : b) ? goog.i18n.bidi.Format.RLM : goog.i18n.bidi.Format.LRM; return a.replace(goog.i18n.bidi.bracketGuardTextRe_, b + "$&" + b) }; goog.i18n.bidi.enforceRtlInHtml = function (a) { return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=rtl") : "\n<span dir=rtl>" + a + "</span>" }; goog.i18n.bidi.enforceRtlInText = function (a) { return goog.i18n.bidi.Format.RLE + a + goog.i18n.bidi.Format.PDF }; goog.i18n.bidi.enforceLtrInHtml = function (a) { return "<" == a.charAt(0) ? a.replace(/<\w+/, "$& dir=ltr") : "\n<span dir=ltr>" + a + "</span>" }; goog.i18n.bidi.enforceLtrInText = function (a) { return goog.i18n.bidi.Format.LRE + a + goog.i18n.bidi.Format.PDF }; goog.i18n.bidi.dimensionsRe_ = /:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g; goog.i18n.bidi.leftRe_ = /left/gi; goog.i18n.bidi.rightRe_ = /right/gi; goog.i18n.bidi.tempRe_ = /%%%%/g; goog.i18n.bidi.mirrorCSS = function (a) { return a.replace(goog.i18n.bidi.dimensionsRe_, ":$1 $4 $3 $2").replace(goog.i18n.bidi.leftRe_, "%%%%").replace(goog.i18n.bidi.rightRe_, goog.i18n.bidi.LEFT).replace(goog.i18n.bidi.tempRe_, goog.i18n.bidi.RIGHT) }; goog.i18n.bidi.doubleQuoteSubstituteRe_ = /([\u0591-\u05f2])"/g; goog.i18n.bidi.singleQuoteSubstituteRe_ = /([\u0591-\u05f2])'/g; goog.i18n.bidi.normalizeHebrewQuote = function (a) { return a.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_, "$1\u05f4").replace(goog.i18n.bidi.singleQuoteSubstituteRe_, "$1\u05f3") }; goog.i18n.bidi.wordSeparatorRe_ = /\s+/; goog.i18n.bidi.hasNumeralsRe_ = /[\d\u06f0-\u06f9]/; goog.i18n.bidi.rtlDetectionThreshold_ = .4; goog.i18n.bidi.estimateDirection = function (a, b) { var c = 0, d = 0, e = !1; a = goog.i18n.bidi.stripHtmlIfNeeded_(a, b).split(goog.i18n.bidi.wordSeparatorRe_); for (b = 0; b < a.length; b++) { var f = a[b]; goog.i18n.bidi.startsWithRtl(f) ? (c++, d++) : goog.i18n.bidi.isRequiredLtrRe_.test(f) ? e = !0 : goog.i18n.bidi.hasAnyLtr(f) ? d++ : goog.i18n.bidi.hasNumeralsRe_.test(f) && (e = !0); } return 0 == d ? e ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL : c / d > goog.i18n.bidi.rtlDetectionThreshold_ ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR }; goog.i18n.bidi.detectRtlDirectionality = function (a, b) { return goog.i18n.bidi.estimateDirection(a, b) == goog.i18n.bidi.Dir.RTL }; goog.i18n.bidi.setElementDirAndAlign = function (a, b) { a && (b = goog.i18n.bidi.toDir(b)) && (a.style.textAlign = b == goog.i18n.bidi.Dir.RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT, a.dir = b == goog.i18n.bidi.Dir.RTL ? "rtl" : "ltr"); }; goog.i18n.bidi.setElementDirByTextDirectionality = function (a, b) { switch (goog.i18n.bidi.estimateDirection(b)) { case goog.i18n.bidi.Dir.LTR: a.dir = "ltr"; break; case goog.i18n.bidi.Dir.RTL: a.dir = "rtl"; break; default: a.removeAttribute("dir"); } }; goog.i18n.bidi.DirectionalString = function () { }; goog.html.TrustedResourceUrl = function (a, b) { this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = a === goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || ""; this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_; }; goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = !0; goog.html.TrustedResourceUrl.prototype.getTypedStringValue = function () { return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_.toString() }; goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString = !0; goog.html.TrustedResourceUrl.prototype.getDirection = function () { return goog.i18n.bidi.Dir.LTR }; goog.html.TrustedResourceUrl.prototype.cloneWithParams = function (a, b) { var c = goog.html.TrustedResourceUrl.unwrap(this); c = goog.html.TrustedResourceUrl.URL_PARAM_PARSER_.exec(c); var d = c[3] || ""; return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(c[1] + goog.html.TrustedResourceUrl.stringifyParams_("?", c[2] || "", a) + goog.html.TrustedResourceUrl.stringifyParams_("#", d, b)) }; goog.DEBUG && (goog.html.TrustedResourceUrl.prototype.toString = function () { return "TrustedResourceUrl{" + this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + "}" }); goog.html.TrustedResourceUrl.unwrap = function (a) { return goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(a).toString() }; goog.html.TrustedResourceUrl.unwrapTrustedScriptURL = function (a) { if (a instanceof goog.html.TrustedResourceUrl && a.constructor === goog.html.TrustedResourceUrl && a.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_; goog.asserts.fail("expected object of type TrustedResourceUrl, got '" + a + "' of type " + goog.typeOf(a)); return "type_error:TrustedResourceUrl" }; goog.html.TrustedResourceUrl.format = function (a, b) { var c = goog.string.Const.unwrap(a); if (!goog.html.TrustedResourceUrl.BASE_URL_.test(c)) throw Error("Invalid TrustedResourceUrl format: " + c); a = c.replace(goog.html.TrustedResourceUrl.FORMAT_MARKER_, function (a, e) { if (!Object.prototype.hasOwnProperty.call(b, e)) throw Error('Found marker, "' + e + '", in format string, "' + c + '", but no valid label mapping found in args: ' + JSON.stringify(b)); a = b[e]; return a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : encodeURIComponent(String(a)) }); return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.TrustedResourceUrl.FORMAT_MARKER_ = /%{(\w+)}/g; goog.html.TrustedResourceUrl.BASE_URL_ = /^((https:)?\/\/[0-9a-z.:[\]-]+\/|\/[^/\\]|[^:/\\%]+\/|[^:/\\%]*[?#]|about:blank#)/i; goog.html.TrustedResourceUrl.URL_PARAM_PARSER_ = /^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/; goog.html.TrustedResourceUrl.formatWithParams = function (a, b, c, d) { return goog.html.TrustedResourceUrl.format(a, b).cloneWithParams(c, d) }; goog.html.TrustedResourceUrl.fromConstant = function (a) { return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a)) }; goog.html.TrustedResourceUrl.fromConstants = function (a) { for (var b = "", c = 0; c < a.length; c++) b += goog.string.Const.unwrap(a[c]); return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b) }; goog.html.TrustedResourceUrl.fromSafeScript = function (a) { a = goog.fs.blob.getBlobWithProperties([goog.html.SafeScript.unwrap(a)], "text/javascript"); a = goog.fs.url.createObjectUrl(a); return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {}; goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function (a) { a = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createScriptURL(a) : a; return new goog.html.TrustedResourceUrl(goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a) }; goog.html.TrustedResourceUrl.stringifyParams_ = function (a, b, c) { if (null == c) return b; if ("string" === typeof c) return c ? a + encodeURIComponent(c) : ""; for (var d in c) { var e = c[d]; e = Array.isArray(e) ? e : [e]; for (var f = 0; f < e.length; f++) { var g = e[f]; null != g && (b || (b = a), b += (b.length > a.length ? "&" : "") + encodeURIComponent(d) + "=" + encodeURIComponent(String(g))); } } return b }; goog.html.TrustedResourceUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {}; goog.string.internal = {}; goog.string.internal.startsWith = function (a, b) { return 0 == a.lastIndexOf(b, 0) }; goog.string.internal.endsWith = function (a, b) { var c = a.length - b.length; return 0 <= c && a.indexOf(b, c) == c }; goog.string.internal.caseInsensitiveStartsWith = function (a, b) { return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(0, b.length)) }; goog.string.internal.caseInsensitiveEndsWith = function (a, b) { return 0 == goog.string.internal.caseInsensitiveCompare(b, a.substr(a.length - b.length, b.length)) }; goog.string.internal.caseInsensitiveEquals = function (a, b) { return a.toLowerCase() == b.toLowerCase() }; goog.string.internal.isEmptyOrWhitespace = function (a) { return /^[\s\xa0]*$/.test(a) }; goog.string.internal.trim = goog.TRUSTED_SITE && String.prototype.trim ? function (a) { return a.trim() } : function (a) { return /^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1] }; goog.string.internal.caseInsensitiveCompare = function (a, b) { a = String(a).toLowerCase(); b = String(b).toLowerCase(); return a < b ? -1 : a == b ? 0 : 1 }; goog.string.internal.newLineToBr = function (a, b) { return a.replace(/(\r\n|\r|\n)/g, b ? "<br />" : "<br>") }; goog.string.internal.htmlEscape = function (a, b) { if (b) a = a.replace(goog.string.internal.AMP_RE_, "&").replace(goog.string.internal.LT_RE_, "<").replace(goog.string.internal.GT_RE_, ">").replace(goog.string.internal.QUOT_RE_, """).replace(goog.string.internal.SINGLE_QUOTE_RE_, "'").replace(goog.string.internal.NULL_RE_, "�"); else { if (!goog.string.internal.ALL_RE_.test(a)) return a; -1 != a.indexOf("&") && (a = a.replace(goog.string.internal.AMP_RE_, "&")); -1 != a.indexOf("<") && (a = a.replace(goog.string.internal.LT_RE_, "<")); -1 != a.indexOf(">") && (a = a.replace(goog.string.internal.GT_RE_, ">")); -1 != a.indexOf('"') && (a = a.replace(goog.string.internal.QUOT_RE_, """)); -1 != a.indexOf("'") && (a = a.replace(goog.string.internal.SINGLE_QUOTE_RE_, "'")); -1 != a.indexOf("\x00") && (a = a.replace(goog.string.internal.NULL_RE_, "�")); } return a }; goog.string.internal.AMP_RE_ = /&/g; goog.string.internal.LT_RE_ = /</g; goog.string.internal.GT_RE_ = />/g; goog.string.internal.QUOT_RE_ = /"/g; goog.string.internal.SINGLE_QUOTE_RE_ = /'/g; goog.string.internal.NULL_RE_ = /\x00/g; goog.string.internal.ALL_RE_ = /[\x00&<>"']/; goog.string.internal.whitespaceEscape = function (a, b) { return goog.string.internal.newLineToBr(a.replace(/ /g, "  "), b) }; goog.string.internal.contains = function (a, b) { return -1 != a.indexOf(b) }; goog.string.internal.caseInsensitiveContains = function (a, b) { return goog.string.internal.contains(a.toLowerCase(), b.toLowerCase()) }; goog.string.internal.compareVersions = function (a, b) { var c = 0; a = goog.string.internal.trim(String(a)).split("."); b = goog.string.internal.trim(String(b)).split("."); for (var d = Math.max(a.length, b.length), e = 0; 0 == c && e < d; e++) { var f = a[e] || "", g = b[e] || ""; do { f = /(\d*)(\D*)(.*)/.exec(f) || ["", "", "", ""]; g = /(\d*)(\D*)(.*)/.exec(g) || ["", "", "", ""]; if (0 == f[0].length && 0 == g[0].length) break; c = 0 == f[1].length ? 0 : parseInt(f[1], 10); var h = 0 == g[1].length ? 0 : parseInt(g[1], 10); c = goog.string.internal.compareElements_(c, h) || goog.string.internal.compareElements_(0 == f[2].length, 0 == g[2].length) || goog.string.internal.compareElements_(f[2], g[2]); f = f[3]; g = g[3]; } while (0 == c) } return c }; goog.string.internal.compareElements_ = function (a, b) { return a < b ? -1 : a > b ? 1 : 0 }; goog.html.SafeUrl = function (a, b) { this.privateDoNotAccessOrElseSafeUrlWrappedValue_ = a === goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ && b || ""; this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_; }; goog.html.SafeUrl.INNOCUOUS_STRING = "about:invalid#zClosurez"; goog.html.SafeUrl.prototype.implementsGoogStringTypedString = !0; goog.html.SafeUrl.prototype.getTypedStringValue = function () { return this.privateDoNotAccessOrElseSafeUrlWrappedValue_.toString() }; goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString = !0; goog.html.SafeUrl.prototype.getDirection = function () { return goog.i18n.bidi.Dir.LTR }; goog.DEBUG && (goog.html.SafeUrl.prototype.toString = function () { return "SafeUrl{" + this.privateDoNotAccessOrElseSafeUrlWrappedValue_ + "}" }); goog.html.SafeUrl.unwrap = function (a) { if (a instanceof goog.html.SafeUrl && a.constructor === goog.html.SafeUrl && a.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeUrlWrappedValue_; goog.asserts.fail("expected object of type SafeUrl, got '" + a + "' of type " + goog.typeOf(a)); return "type_error:SafeUrl" }; goog.html.SafeUrl.fromConstant = function (a) { return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.string.Const.unwrap(a)) }; goog.html.SAFE_MIME_TYPE_PATTERN_ = /^(?:audio\/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|text\/csv|video\/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\w+=(?:\w+|"[\w;,= ]+"))*$/i; goog.html.SafeUrl.isSafeMimeType = function (a) { return goog.html.SAFE_MIME_TYPE_PATTERN_.test(a) }; goog.html.SafeUrl.fromBlob = function (a) { a = goog.html.SafeUrl.isSafeMimeType(a.type) ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING; return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.fromMediaSource = function (a) { goog.asserts.assert("MediaSource" in goog.global, "No support for MediaSource"); a = a instanceof MediaSource ? goog.fs.url.createObjectUrl(a) : goog.html.SafeUrl.INNOCUOUS_STRING; return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.DATA_URL_PATTERN_ = /^data:(.*);base64,[a-z0-9+\/]+=*$/i; goog.html.SafeUrl.fromDataUrl = function (a) { a = a.replace(/(%0A|%0D)/g, ""); var b = a.match(goog.html.DATA_URL_PATTERN_); b = b && goog.html.SafeUrl.isSafeMimeType(b[1]); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b ? a : goog.html.SafeUrl.INNOCUOUS_STRING) }; goog.html.SafeUrl.fromTelUrl = function (a) { goog.string.internal.caseInsensitiveStartsWith(a, "tel:") || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SIP_URL_PATTERN_ = /^sip[s]?:[+a-z0-9_.!$%&'*\/=^`{|}~-]+@([a-z0-9-]+\.)+[a-z0-9]{2,63}$/i; goog.html.SafeUrl.fromSipUrl = function (a) { goog.html.SIP_URL_PATTERN_.test(decodeURIComponent(a)) || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.fromFacebookMessengerUrl = function (a) { goog.string.internal.caseInsensitiveStartsWith(a, "fb-messenger://share") || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.fromWhatsAppUrl = function (a) { goog.string.internal.caseInsensitiveStartsWith(a, "whatsapp://send") || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.fromSmsUrl = function (a) { goog.string.internal.caseInsensitiveStartsWith(a, "sms:") && goog.html.SafeUrl.isSmsUrlBodyValid_(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.isSmsUrlBodyValid_ = function (a) { var b = a.indexOf("#"); 0 < b && (a = a.substring(0, b)); b = a.match(/[?&]body=/gi); if (!b) return !0; if (1 < b.length) return !1; a = a.match(/[?&]body=([^&]*)/)[1]; if (!a) return !0; try { decodeURIComponent(a); } catch (c) { return !1 } return /^(?:[a-z0-9\-_.~]|%[0-9a-f]{2})+$/i.test(a) }; goog.html.SafeUrl.fromSshUrl = function (a) { goog.string.internal.caseInsensitiveStartsWith(a, "ssh://") || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.sanitizeChromeExtensionUrl = function (a, b) { return goog.html.SafeUrl.sanitizeExtensionUrl_(/^chrome-extension:\/\/([^\/]+)\//, a, b) }; goog.html.SafeUrl.sanitizeFirefoxExtensionUrl = function (a, b) { return goog.html.SafeUrl.sanitizeExtensionUrl_(/^moz-extension:\/\/([^\/]+)\//, a, b) }; goog.html.SafeUrl.sanitizeEdgeExtensionUrl = function (a, b) { return goog.html.SafeUrl.sanitizeExtensionUrl_(/^ms-browser-extension:\/\/([^\/]+)\//, a, b) }; goog.html.SafeUrl.sanitizeExtensionUrl_ = function (a, b, c) { (a = a.exec(b)) ? (a = a[1], -1 == (c instanceof goog.string.Const ? [goog.string.Const.unwrap(c)] : c.map(function (a) { return goog.string.Const.unwrap(a) })).indexOf(a) && (b = goog.html.SafeUrl.INNOCUOUS_STRING)) : b = goog.html.SafeUrl.INNOCUOUS_STRING; return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b) }; goog.html.SafeUrl.fromTrustedResourceUrl = function (a) { return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(goog.html.TrustedResourceUrl.unwrap(a)) }; goog.html.SAFE_URL_PATTERN_ = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i; goog.html.SafeUrl.SAFE_URL_PATTERN = goog.html.SAFE_URL_PATTERN_; goog.html.SafeUrl.sanitize = function (a) { if (a instanceof goog.html.SafeUrl) return a; a = "object" == typeof a && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a); goog.html.SAFE_URL_PATTERN_.test(a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.sanitizeAssertUnchanged = function (a, b) { if (a instanceof goog.html.SafeUrl) return a; a = "object" == typeof a && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a); if (b && /^data:/i.test(a) && (b = goog.html.SafeUrl.fromDataUrl(a), b.getTypedStringValue() == a)) return b; goog.asserts.assert(goog.html.SAFE_URL_PATTERN_.test(a), "%s does not match the safe URL pattern", a) || (a = goog.html.SafeUrl.INNOCUOUS_STRING); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {}; goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function (a) { return new goog.html.SafeUrl(goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_, a) }; goog.html.SafeUrl.ABOUT_BLANK = goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse("about:blank"); goog.html.SafeUrl.CONSTRUCTOR_TOKEN_PRIVATE_ = {}; goog.html.SafeStyle = function () { this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = ""; this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_; }; goog.html.SafeStyle.prototype.implementsGoogStringTypedString = !0; goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {}; goog.html.SafeStyle.fromConstant = function (a) { a = goog.string.Const.unwrap(a); if (0 === a.length) return goog.html.SafeStyle.EMPTY; goog.asserts.assert(goog.string.internal.endsWith(a, ";"), "Last character of style string is not ';': " + a); goog.asserts.assert(goog.string.internal.contains(a, ":"), "Style string must contain at least one ':', to specify a \"name: value\" pair: " + a); return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeStyle.prototype.getTypedStringValue = function () { return this.privateDoNotAccessOrElseSafeStyleWrappedValue_ }; goog.DEBUG && (goog.html.SafeStyle.prototype.toString = function () { return "SafeStyle{" + this.privateDoNotAccessOrElseSafeStyleWrappedValue_ + "}" }); goog.html.SafeStyle.unwrap = function (a) { if (a instanceof goog.html.SafeStyle && a.constructor === goog.html.SafeStyle && a.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeStyleWrappedValue_; goog.asserts.fail("expected object of type SafeStyle, got '" + a + "' of type " + goog.typeOf(a)); return "type_error:SafeStyle" }; goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function (a) { return (new goog.html.SafeStyle).initSecurityPrivateDoNotAccessOrElse_(a) }; goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) { this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = a; return this }; goog.html.SafeStyle.EMPTY = goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(""); goog.html.SafeStyle.INNOCUOUS_STRING = "zClosurez"; goog.html.SafeStyle.create = function (a) { var b = "", c; for (c in a) { if (!/^[-_a-zA-Z0-9]+$/.test(c)) throw Error("Name allows only [-_a-zA-Z0-9], got: " + c); var d = a[c]; null != d && (d = Array.isArray(d) ? goog.array.map(d, goog.html.SafeStyle.sanitizePropertyValue_).join(" ") : goog.html.SafeStyle.sanitizePropertyValue_(d), b += c + ":" + d + ";"); } return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY }; goog.html.SafeStyle.sanitizePropertyValue_ = function (a) { if (a instanceof goog.html.SafeUrl) return 'url("' + goog.html.SafeUrl.unwrap(a).replace(/</g, "%3c").replace(/[\\"]/g, "\\$&") + '")'; a = a instanceof goog.string.Const ? goog.string.Const.unwrap(a) : goog.html.SafeStyle.sanitizePropertyValueString_(String(a)); if (/[{;}]/.test(a)) throw new goog.asserts.AssertionError("Value does not allow [{;}], got: %s.", [a]); return a }; goog.html.SafeStyle.sanitizePropertyValueString_ = function (a) { var b = a.replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.FUNCTIONS_RE_, "$1").replace(goog.html.SafeStyle.URL_RE_, "url"); if (goog.html.SafeStyle.VALUE_RE_.test(b)) { if (goog.html.SafeStyle.COMMENT_RE_.test(a)) return goog.asserts.fail("String value disallows comments, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING; if (!goog.html.SafeStyle.hasBalancedQuotes_(a)) return goog.asserts.fail("String value requires balanced quotes, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING; if (!goog.html.SafeStyle.hasBalancedSquareBrackets_(a)) return goog.asserts.fail("String value requires balanced square brackets and one identifier per pair of brackets, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING } else return goog.asserts.fail("String value allows only " + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + " and simple functions, got: " + a), goog.html.SafeStyle.INNOCUOUS_STRING; return goog.html.SafeStyle.sanitizeUrl_(a) }; goog.html.SafeStyle.hasBalancedQuotes_ = function (a) { for (var b = !0, c = !0, d = 0; d < a.length; d++) { var e = a.charAt(d); "'" == e && c ? b = !b : '"' == e && b && (c = !c); } return b && c }; goog.html.SafeStyle.hasBalancedSquareBrackets_ = function (a) { for (var b = !0, c = /^[-_a-zA-Z0-9]$/, d = 0; d < a.length; d++) { var e = a.charAt(d); if ("]" == e) { if (b) return !1; b = !0; } else if ("[" == e) { if (!b) return !1; b = !1; } else if (!b && !c.test(e)) return !1 } return b }; goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ = "[-,.\"'%_!# a-zA-Z0-9\\[\\]]"; goog.html.SafeStyle.VALUE_RE_ = new RegExp("^" + goog.html.SafeStyle.VALUE_ALLOWED_CHARS_ + "+$"); goog.html.SafeStyle.URL_RE_ = /\b(url\([ \t\n]*)('[ -&(-\[\]-~]*'|"[ !#-\[\]-~]*"|[!#-&*-\[\]-~]*)([ \t\n]*\))/g; goog.html.SafeStyle.ALLOWED_FUNCTIONS_ = "calc cubic-bezier fit-content hsl hsla linear-gradient matrix minmax repeat rgb rgba (rotate|scale|translate)(X|Y|Z|3d)?".split(" "); goog.html.SafeStyle.FUNCTIONS_RE_ = new RegExp("\\b(" + goog.html.SafeStyle.ALLOWED_FUNCTIONS_.join("|") + ")\\([-+*/0-9a-z.%\\[\\], ]+\\)", "g"); goog.html.SafeStyle.COMMENT_RE_ = /\/\*/; goog.html.SafeStyle.sanitizeUrl_ = function (a) { return a.replace(goog.html.SafeStyle.URL_RE_, function (a, c, d, e) { var b = ""; d = d.replace(/^(['"])(.*)\1$/, function (a, c, d) { b = c; return d }); a = goog.html.SafeUrl.sanitize(d).getTypedStringValue(); return c + b + a + b + e }) }; goog.html.SafeStyle.concat = function (a) { var b = "", c = function (a) { Array.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyle.unwrap(a); }; goog.array.forEach(arguments, c); return b ? goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) : goog.html.SafeStyle.EMPTY }; goog.html.SafeStyleSheet = function () { this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = ""; this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_; }; goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString = !0; goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {}; goog.html.SafeStyleSheet.createRule = function (a, b) { if (goog.string.internal.contains(a, "<")) throw Error("Selector does not allow '<', got: " + a); var c = a.replace(/('|")((?!\1)[^\r\n\f\\]|\\[\s\S])*\1/g, ""); if (!/^[-_a-zA-Z0-9#.:* ,>+~[\]()=^$|]+$/.test(c)) throw Error("Selector allows only [-_a-zA-Z0-9#.:* ,>+~[\\]()=^$|] and strings, got: " + a); if (!goog.html.SafeStyleSheet.hasBalancedBrackets_(c)) throw Error("() and [] in selector must be balanced, got: " + a); b instanceof goog.html.SafeStyle || (b = goog.html.SafeStyle.create(b)); a = a + "{" + goog.html.SafeStyle.unwrap(b).replace(/</g, "\\3C ") + "}"; return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeStyleSheet.hasBalancedBrackets_ = function (a) { for (var b = {"(": ")", "[": "]"}, c = [], d = 0; d < a.length; d++) { var e = a[d]; if (b[e]) c.push(b[e]); else if (goog.object.contains(b, e) && c.pop() != e) return !1 } return 0 == c.length }; goog.html.SafeStyleSheet.concat = function (a) { var b = "", c = function (a) { Array.isArray(a) ? goog.array.forEach(a, c) : b += goog.html.SafeStyleSheet.unwrap(a); }; goog.array.forEach(arguments, c); return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b) }; goog.html.SafeStyleSheet.fromConstant = function (a) { a = goog.string.Const.unwrap(a); if (0 === a.length) return goog.html.SafeStyleSheet.EMPTY; goog.asserts.assert(!goog.string.internal.contains(a, "<"), "Forbidden '<' character in style sheet string: " + a); return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(a) }; goog.html.SafeStyleSheet.prototype.getTypedStringValue = function () { return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ }; goog.DEBUG && (goog.html.SafeStyleSheet.prototype.toString = function () { return "SafeStyleSheet{" + this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ + "}" }); goog.html.SafeStyleSheet.unwrap = function (a) { if (a instanceof goog.html.SafeStyleSheet && a.constructor === goog.html.SafeStyleSheet && a.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_; goog.asserts.fail("expected object of type SafeStyleSheet, got '" + a + "' of type " + goog.typeOf(a)); return "type_error:SafeStyleSheet" }; goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse = function (a) { return (new goog.html.SafeStyleSheet).initSecurityPrivateDoNotAccessOrElse_(a) }; goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a) { this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = a; return this }; goog.html.SafeStyleSheet.EMPTY = goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(""); goog.labs = {}; goog.labs.userAgent = {}; goog.labs.userAgent.util = {}; goog.labs.userAgent.util.getNativeUserAgentString_ = function () { var a = goog.labs.userAgent.util.getNavigator_(); return a && (a = a.userAgent) ? a : "" }; goog.labs.userAgent.util.getNavigator_ = function () { return goog.global.navigator }; goog.labs.userAgent.util.userAgent_ = goog.labs.userAgent.util.getNativeUserAgentString_(); goog.labs.userAgent.util.setUserAgent = function (a) { goog.labs.userAgent.util.userAgent_ = a || goog.labs.userAgent.util.getNativeUserAgentString_(); }; goog.labs.userAgent.util.getUserAgent = function () { return goog.labs.userAgent.util.userAgent_ }; goog.labs.userAgent.util.matchUserAgent = function (a) { var b = goog.labs.userAgent.util.getUserAgent(); return goog.string.internal.contains(b, a) }; goog.labs.userAgent.util.matchUserAgentIgnoreCase = function (a) { var b = goog.labs.userAgent.util.getUserAgent(); return goog.string.internal.caseInsensitiveContains(b, a) }; goog.labs.userAgent.util.extractVersionTuples = function (a) { for (var b = /(\w[\w ]+)\/([^\s]+)\s*(?:\((.*?)\))?/g, c = [], d; d = b.exec(a);) c.push([d[1], d[2], d[3] || void 0]); return c }; goog.labs.userAgent.browser = {}; goog.labs.userAgent.browser.matchOpera_ = function () { return goog.labs.userAgent.util.matchUserAgent("Opera") }; goog.labs.userAgent.browser.matchIE_ = function () { return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE") }; goog.labs.userAgent.browser.matchEdgeHtml_ = function () { return goog.labs.userAgent.util.matchUserAgent("Edge") }; goog.labs.userAgent.browser.matchEdgeChromium_ = function () { return goog.labs.userAgent.util.matchUserAgent("Edg/") }; goog.labs.userAgent.browser.matchOperaChromium_ = function () { return goog.labs.userAgent.util.matchUserAgent("OPR") }; goog.labs.userAgent.browser.matchFirefox_ = function () { return goog.labs.userAgent.util.matchUserAgent("Firefox") || goog.labs.userAgent.util.matchUserAgent("FxiOS") }; goog.labs.userAgent.browser.matchSafari_ = function () { return goog.labs.userAgent.util.matchUserAgent("Safari") && !(goog.labs.userAgent.browser.matchChrome_() || goog.labs.userAgent.browser.matchCoast_() || goog.labs.userAgent.browser.matchOpera_() || goog.labs.userAgent.browser.matchEdgeHtml_() || goog.labs.userAgent.browser.matchEdgeChromium_() || goog.labs.userAgent.browser.matchOperaChromium_() || goog.labs.userAgent.browser.matchFirefox_() || goog.labs.userAgent.browser.isSilk() || goog.labs.userAgent.util.matchUserAgent("Android")) }; goog.labs.userAgent.browser.matchCoast_ = function () { return goog.labs.userAgent.util.matchUserAgent("Coast") }; goog.labs.userAgent.browser.matchIosWebview_ = function () { return (goog.labs.userAgent.util.matchUserAgent("iPad") || goog.labs.userAgent.util.matchUserAgent("iPhone")) && !goog.labs.userAgent.browser.matchSafari_() && !goog.labs.userAgent.browser.matchChrome_() && !goog.labs.userAgent.browser.matchCoast_() && !goog.labs.userAgent.browser.matchFirefox_() && goog.labs.userAgent.util.matchUserAgent("AppleWebKit") }; goog.labs.userAgent.browser.matchChrome_ = function () { return (goog.labs.userAgent.util.matchUserAgent("Chrome") || goog.labs.userAgent.util.matchUserAgent("CriOS")) && !goog.labs.userAgent.browser.matchEdgeHtml_() }; goog.labs.userAgent.browser.matchAndroidBrowser_ = function () { return goog.labs.userAgent.util.matchUserAgent("Android") && !(goog.labs.userAgent.browser.isChrome() || goog.labs.userAgent.browser.isFirefox() || goog.labs.userAgent.browser.isOpera() || goog.labs.userAgent.browser.isSilk()) }; goog.labs.userAgent.browser.isOpera = goog.labs.userAgent.browser.matchOpera_; goog.labs.userAgent.browser.isIE = goog.labs.userAgent.browser.matchIE_; goog.labs.userAgent.browser.isEdge = goog.labs.userAgent.browser.matchEdgeHtml_; goog.labs.userAgent.browser.isEdgeChromium = goog.labs.userAgent.browser.matchEdgeChromium_; goog.labs.userAgent.browser.isOperaChromium = goog.labs.userAgent.browser.matchOperaChromium_; goog.labs.userAgent.browser.isFirefox = goog.labs.userAgent.browser.matchFirefox_; goog.labs.userAgent.browser.isSafari = goog.labs.userAgent.browser.matchSafari_; goog.labs.userAgent.browser.isCoast = goog.labs.userAgent.browser.matchCoast_; goog.labs.userAgent.browser.isIosWebview = goog.labs.userAgent.browser.matchIosWebview_; goog.labs.userAgent.browser.isChrome = goog.labs.userAgent.browser.matchChrome_; goog.labs.userAgent.browser.isAndroidBrowser = goog.labs.userAgent.browser.matchAndroidBrowser_; goog.labs.userAgent.browser.isSilk = function () { return goog.labs.userAgent.util.matchUserAgent("Silk") }; goog.labs.userAgent.browser.getVersion = function () { function a(a) { a = goog.array.find(a, d); return c[a] || "" } var b = goog.labs.userAgent.util.getUserAgent(); if (goog.labs.userAgent.browser.isIE()) return goog.labs.userAgent.browser.getIEVersion_(b); b = goog.labs.userAgent.util.extractVersionTuples(b); var c = {}; goog.array.forEach(b, function (a) { c[a[0]] = a[1]; }); var d = goog.partial(goog.object.containsKey, c); return goog.labs.userAgent.browser.isOpera() ? a(["Version", "Opera"]) : goog.labs.userAgent.browser.isEdge() ? a(["Edge"]) : goog.labs.userAgent.browser.isEdgeChromium() ? a(["Edg"]) : goog.labs.userAgent.browser.isChrome() ? a(["Chrome", "CriOS", "HeadlessChrome"]) : (b = b[2]) && b[1] || "" }; goog.labs.userAgent.browser.isVersionOrHigher = function (a) { return 0 <= goog.string.internal.compareVersions(goog.labs.userAgent.browser.getVersion(), a) }; goog.labs.userAgent.browser.getIEVersion_ = function (a) { var b = /rv: *([\d\.]*)/.exec(a); if (b && b[1]) return b[1]; b = ""; var c = /MSIE +([\d\.]+)/.exec(a); if (c && c[1]) if (a = /Trident\/(\d.\d)/.exec(a), "7.0" == c[1]) if (a && a[1]) switch (a[1]) { case "4.0": b = "8.0"; break; case "5.0": b = "9.0"; break; case "6.0": b = "10.0"; break; case "7.0": b = "11.0"; } else b = "7.0"; else b = c[1]; return b }; goog.html.SafeHtml = function () { this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = ""; this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_; this.dir_ = null; }; goog.html.SafeHtml.ENABLE_ERROR_MESSAGES = goog.DEBUG; goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE = !0; goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString = !0; goog.html.SafeHtml.prototype.getDirection = function () { return this.dir_ }; goog.html.SafeHtml.prototype.implementsGoogStringTypedString = !0; goog.html.SafeHtml.prototype.getTypedStringValue = function () { return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_.toString() }; goog.DEBUG && (goog.html.SafeHtml.prototype.toString = function () { return "SafeHtml{" + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ + "}" }); goog.html.SafeHtml.unwrap = function (a) { return goog.html.SafeHtml.unwrapTrustedHTML(a).toString() }; goog.html.SafeHtml.unwrapTrustedHTML = function (a) { if (a instanceof goog.html.SafeHtml && a.constructor === goog.html.SafeHtml && a.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ === goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) return a.privateDoNotAccessOrElseSafeHtmlWrappedValue_; goog.asserts.fail("expected object of type SafeHtml, got '" + a + "' of type " + goog.typeOf(a)); return "type_error:SafeHtml" }; goog.html.SafeHtml.htmlEscape = function (a) { if (a instanceof goog.html.SafeHtml) return a; var b = "object" == typeof a, c = null; b && a.implementsGoogI18nBidiDirectionalString && (c = a.getDirection()); a = b && a.implementsGoogStringTypedString ? a.getTypedStringValue() : String(a); return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.htmlEscape(a), c) }; goog.html.SafeHtml.htmlEscapePreservingNewlines = function (a) { if (a instanceof goog.html.SafeHtml) return a; a = goog.html.SafeHtml.htmlEscape(a); return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.newLineToBr(goog.html.SafeHtml.unwrap(a)), a.getDirection()) }; goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function (a) { if (a instanceof goog.html.SafeHtml) return a; a = goog.html.SafeHtml.htmlEscape(a); return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(goog.string.internal.whitespaceEscape(goog.html.SafeHtml.unwrap(a)), a.getDirection()) }; goog.html.SafeHtml.from = goog.html.SafeHtml.htmlEscape; goog.html.SafeHtml.comment = function (a) { return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("\x3c!--" + goog.string.internal.htmlEscape(a) + "--\x3e", null) }; goog.html.SafeHtml.VALID_NAMES_IN_TAG_ = /^[a-zA-Z0-9-]+$/; goog.html.SafeHtml.URL_ATTRIBUTES_ = { action: !0, cite: !0, data: !0, formaction: !0, href: !0, manifest: !0, poster: !0, src: !0 }; goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_ = { APPLET: !0, BASE: !0, EMBED: !0, IFRAME: !0, LINK: !0, MATH: !0, META: !0, OBJECT: !0, SCRIPT: !0, STYLE: !0, SVG: !0, TEMPLATE: !0 }; goog.html.SafeHtml.create = function (a, b, c) { goog.html.SafeHtml.verifyTagName(String(a)); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(String(a), b, c) }; goog.html.SafeHtml.verifyTagName = function (a) { if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(a)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Invalid tag name <" + a + ">." : ""); if (a.toUpperCase() in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "Tag name <" + a + "> is not allowed for SafeHtml." : ""); }; goog.html.SafeHtml.createIframe = function (a, b, c, d) { a && goog.html.TrustedResourceUrl.unwrap(a); var e = {}; e.src = a || null; e.srcdoc = b && goog.html.SafeHtml.unwrap(b); a = goog.html.SafeHtml.combineAttributes(e, {sandbox: ""}, c); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d) }; goog.html.SafeHtml.createSandboxIframe = function (a, b, c, d) { if (!goog.html.SafeHtml.canUseSandboxIframe()) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? "The browser does not support sandboxed iframes." : ""); var e = {}; e.src = a ? goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)) : null; e.srcdoc = b || null; e.sandbox = ""; a = goog.html.SafeHtml.combineAttributes(e, {}, c); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("iframe", a, d) }; goog.html.SafeHtml.canUseSandboxIframe = function () { return goog.global.HTMLIFrameElement && "sandbox" in goog.global.HTMLIFrameElement.prototype }; goog.html.SafeHtml.createScriptSrc = function (a, b) { goog.html.TrustedResourceUrl.unwrap(a); a = goog.html.SafeHtml.combineAttributes({src: a}, {}, b); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", a) }; goog.html.SafeHtml.createScript = function (a, b) { for (var c in b) { var d = c.toLowerCase(); if ("language" == d || "src" == d || "text" == d || "type" == d) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot set "' + d + '" attribute' : ""); } c = ""; a = goog.array.concat(a); for (d = 0; d < a.length; d++) c += goog.html.SafeScript.unwrap(a[d]); a = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("script", b, a) }; goog.html.SafeHtml.createStyle = function (a, b) { b = goog.html.SafeHtml.combineAttributes({type: "text/css"}, {}, b); var c = ""; a = goog.array.concat(a); for (var d = 0; d < a.length; d++) c += goog.html.SafeStyleSheet.unwrap(a[d]); a = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(c, goog.i18n.bidi.Dir.NEUTRAL); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("style", b, a) }; goog.html.SafeHtml.createMetaRefresh = function (a, b) { a = goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(a)); (goog.labs.userAgent.browser.isIE() || goog.labs.userAgent.browser.isEdge()) && goog.string.internal.contains(a, ";") && (a = "'" + a.replace(/'/g, "%27") + "'"); return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse("meta", { "http-equiv": "refresh", content: (b || 0) + "; url=" + a }) }; goog.html.SafeHtml.getAttrNameAndValue_ = function (a, b, c) { if (c instanceof goog.string.Const) c = goog.string.Const.unwrap(c); else if ("style" == b.toLowerCase()) if (goog.html.SafeHtml.SUPPORT_STYLE_ATTRIBUTE) c = goog.html.SafeHtml.getStyleValue_(c); else throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "style" not supported.' : ""); else { if (/^on/i.test(b)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" requires goog.string.Const value, "' + c + '" given.' : ""); if (b.toLowerCase() in goog.html.SafeHtml.URL_ATTRIBUTES_) if (c instanceof goog.html.TrustedResourceUrl) c = goog.html.TrustedResourceUrl.unwrap(c); else if (c instanceof goog.html.SafeUrl) c = goog.html.SafeUrl.unwrap(c); else if ("string" === typeof c) c = goog.html.SafeUrl.sanitize(c).getTypedStringValue(); else throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Attribute "' + b + '" on tag "' + a + '" requires goog.html.SafeUrl, goog.string.Const, or string, value "' + c + '" given.' : ""); } c.implementsGoogStringTypedString && (c = c.getTypedStringValue()); goog.asserts.assert("string" === typeof c || "number" === typeof c, "String or number value expected, got " + typeof c + " with value: " + c); return b + '="' + goog.string.internal.htmlEscape(String(c)) + '"' }; goog.html.SafeHtml.getStyleValue_ = function (a) { if (!goog.isObject(a)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'The "style" attribute requires goog.html.SafeStyle or map of style properties, ' + typeof a + " given: " + a : ""); a instanceof goog.html.SafeStyle || (a = goog.html.SafeStyle.create(a)); return goog.html.SafeStyle.unwrap(a) }; goog.html.SafeHtml.createWithDir = function (a, b, c, d) { b = goog.html.SafeHtml.create(b, c, d); b.dir_ = a; return b }; goog.html.SafeHtml.join = function (a, b) { a = goog.html.SafeHtml.htmlEscape(a); var c = a.getDirection(), d = [], e = function (a) { Array.isArray(a) ? goog.array.forEach(a, e) : (a = goog.html.SafeHtml.htmlEscape(a), d.push(goog.html.SafeHtml.unwrap(a)), a = a.getDirection(), c == goog.i18n.bidi.Dir.NEUTRAL ? c = a : a != goog.i18n.bidi.Dir.NEUTRAL && c != a && (c = null)); }; goog.array.forEach(b, e); return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(d.join(goog.html.SafeHtml.unwrap(a)), c) }; goog.html.SafeHtml.concat = function (a) { return goog.html.SafeHtml.join(goog.html.SafeHtml.EMPTY, Array.prototype.slice.call(arguments)) }; goog.html.SafeHtml.concatWithDir = function (a, b) { var c = goog.html.SafeHtml.concat(goog.array.slice(arguments, 1)); c.dir_ = a; return c }; goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {}; goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function (a, b) { return (new goog.html.SafeHtml).initSecurityPrivateDoNotAccessOrElse_(a, b) }; goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_ = function (a, b) { this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY ? goog.html.trustedtypes.PRIVATE_DO_NOT_ACCESS_OR_ELSE_POLICY.createHTML(a) : a; this.dir_ = b; return this }; goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function (a, b, c) { var d = null; var e = "<" + a + goog.html.SafeHtml.stringifyAttributes(a, b); null == c ? c = [] : Array.isArray(c) || (c = [c]); goog.dom.tags.isVoidTag(a.toLowerCase()) ? (goog.asserts.assert(!c.length, "Void tag <" + a + "> does not allow content."), e += ">") : (d = goog.html.SafeHtml.concat(c), e += ">" + goog.html.SafeHtml.unwrap(d) + "</" + a + ">", d = d.getDirection()); (a = b && b.dir) && (d = /^(ltr|rtl|auto)$/i.test(a) ? goog.i18n.bidi.Dir.NEUTRAL : null); return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(e, d) }; goog.html.SafeHtml.stringifyAttributes = function (a, b) { var c = ""; if (b) for (var d in b) { if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(d)) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Invalid attribute name "' + d + '".' : ""); var e = b[d]; null != e && (c += " " + goog.html.SafeHtml.getAttrNameAndValue_(a, d, e)); } return c }; goog.html.SafeHtml.combineAttributes = function (a, b, c) { var d = {}, e; for (e in a) goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"), d[e] = a[e]; for (e in b) goog.asserts.assert(e.toLowerCase() == e, "Must be lower case"), d[e] = b[e]; if (c) for (e in c) { var f = e.toLowerCase(); if (f in a) throw Error(goog.html.SafeHtml.ENABLE_ERROR_MESSAGES ? 'Cannot override "' + f + '" attribute, got "' + e + '" with value "' + c[e] + '"' : ""); f in b && delete d[f]; d[e] = c[e]; } return d }; goog.html.SafeHtml.DOCTYPE_HTML = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<!DOCTYPE html>", goog.i18n.bidi.Dir.NEUTRAL); goog.html.SafeHtml.EMPTY = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("", goog.i18n.bidi.Dir.NEUTRAL); goog.html.SafeHtml.BR = goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse("<br>", goog.i18n.bidi.Dir.NEUTRAL); goog.html.uncheckedconversions = {}; goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract = function (a, b, c) { goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification"); goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification"); return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(b, c || null) }; goog.html.uncheckedconversions.safeScriptFromStringKnownToSatisfyTypeContract = function (a, b) { goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification"); goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification"); return goog.html.SafeScript.createSafeScriptSecurityPrivateDoNotAccessOrElse(b) }; goog.html.uncheckedconversions.safeStyleFromStringKnownToSatisfyTypeContract = function (a, b) { goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification"); goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification"); return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(b) }; goog.html.uncheckedconversions.safeStyleSheetFromStringKnownToSatisfyTypeContract = function (a, b) { goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification"); goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification"); return goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(b) }; goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract = function (a, b) { goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification"); goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification"); return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(b) }; goog.html.uncheckedconversions.trustedResourceUrlFromStringKnownToSatisfyTypeContract = function (a, b) { goog.asserts.assertString(goog.string.Const.unwrap(a), "must provide justification"); goog.asserts.assert(!goog.string.internal.isEmptyOrWhitespace(goog.string.Const.unwrap(a)), "must provide non-empty justification"); return goog.html.TrustedResourceUrl.createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(b) }; goog.dom.safe = {}; goog.dom.safe.InsertAdjacentHtmlPosition = { AFTERBEGIN: "afterbegin", AFTEREND: "afterend", BEFOREBEGIN: "beforebegin", BEFOREEND: "beforeend" }; goog.dom.safe.insertAdjacentHtml = function (a, b, c) { a.insertAdjacentHTML(b, goog.html.SafeHtml.unwrapTrustedHTML(c)); }; goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_ = {MATH: !0, SCRIPT: !0, STYLE: !0, SVG: !0, TEMPLATE: !0}; goog.dom.safe.isInnerHtmlCleanupRecursive_ = goog.functions.cacheReturnValue(function () { if (goog.DEBUG && "undefined" === typeof document) return !1; var a = document.createElement("div"), b = document.createElement("div"); b.appendChild(document.createElement("div")); a.appendChild(b); if (goog.DEBUG && !a.firstChild) return !1; b = a.firstChild.firstChild; a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(goog.html.SafeHtml.EMPTY); return !b.parentElement }); goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse = function (a, b) { if (goog.dom.safe.isInnerHtmlCleanupRecursive_()) for (; a.lastChild;) a.removeChild(a.lastChild); a.innerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b); }; goog.dom.safe.setInnerHtml = function (a, b) { if (goog.asserts.ENABLE_ASSERTS) { var c = a.tagName.toUpperCase(); if (goog.dom.safe.SET_INNER_HTML_DISALLOWED_TAGS_[c]) throw Error("goog.dom.safe.setInnerHtml cannot be used to set content of " + a.tagName + "."); } goog.dom.safe.unsafeSetInnerHtmlDoNotUseOrElse(a, b); }; goog.dom.safe.setOuterHtml = function (a, b) { a.outerHTML = goog.html.SafeHtml.unwrapTrustedHTML(b); }; goog.dom.safe.setFormElementAction = function (a, b) { b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); goog.dom.asserts.assertIsHTMLFormElement(a).action = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setButtonFormAction = function (a, b) { b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); goog.dom.asserts.assertIsHTMLButtonElement(a).formAction = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setInputFormAction = function (a, b) { b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); goog.dom.asserts.assertIsHTMLInputElement(a).formAction = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setStyle = function (a, b) { a.style.cssText = goog.html.SafeStyle.unwrap(b); }; goog.dom.safe.documentWrite = function (a, b) { a.write(goog.html.SafeHtml.unwrapTrustedHTML(b)); }; goog.dom.safe.setAnchorHref = function (a, b) { goog.dom.asserts.assertIsHTMLAnchorElement(a); b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); a.href = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setImageSrc = function (a, b) { goog.dom.asserts.assertIsHTMLImageElement(a); if (!(b instanceof goog.html.SafeUrl)) { var c = /^data:image\//i.test(b); b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c); } a.src = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setAudioSrc = function (a, b) { goog.dom.asserts.assertIsHTMLAudioElement(a); if (!(b instanceof goog.html.SafeUrl)) { var c = /^data:audio\//i.test(b); b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c); } a.src = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setVideoSrc = function (a, b) { goog.dom.asserts.assertIsHTMLVideoElement(a); if (!(b instanceof goog.html.SafeUrl)) { var c = /^data:video\//i.test(b); b = goog.html.SafeUrl.sanitizeAssertUnchanged(b, c); } a.src = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.setEmbedSrc = function (a, b) { goog.dom.asserts.assertIsHTMLEmbedElement(a); a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b); }; goog.dom.safe.setFrameSrc = function (a, b) { goog.dom.asserts.assertIsHTMLFrameElement(a); a.src = goog.html.TrustedResourceUrl.unwrap(b); }; goog.dom.safe.setIframeSrc = function (a, b) { goog.dom.asserts.assertIsHTMLIFrameElement(a); a.src = goog.html.TrustedResourceUrl.unwrap(b); }; goog.dom.safe.setIframeSrcdoc = function (a, b) { goog.dom.asserts.assertIsHTMLIFrameElement(a); a.srcdoc = goog.html.SafeHtml.unwrapTrustedHTML(b); }; goog.dom.safe.setLinkHrefAndRel = function (a, b, c) { goog.dom.asserts.assertIsHTMLLinkElement(a); a.rel = c; goog.string.internal.caseInsensitiveContains(c, "stylesheet") ? (goog.asserts.assert(b instanceof goog.html.TrustedResourceUrl, 'URL must be TrustedResourceUrl because "rel" contains "stylesheet"'), a.href = goog.html.TrustedResourceUrl.unwrap(b)) : a.href = b instanceof goog.html.TrustedResourceUrl ? goog.html.TrustedResourceUrl.unwrap(b) : b instanceof goog.html.SafeUrl ? goog.html.SafeUrl.unwrap(b) : goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitizeAssertUnchanged(b)); }; goog.dom.safe.setObjectData = function (a, b) { goog.dom.asserts.assertIsHTMLObjectElement(a); a.data = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b); }; goog.dom.safe.setScriptSrc = function (a, b) { goog.dom.asserts.assertIsHTMLScriptElement(a); a.src = goog.html.TrustedResourceUrl.unwrapTrustedScriptURL(b); (b = goog.getScriptNonce()) && a.setAttribute("nonce", b); }; goog.dom.safe.setScriptContent = function (a, b) { goog.dom.asserts.assertIsHTMLScriptElement(a); a.text = goog.html.SafeScript.unwrapTrustedScript(b); (b = goog.getScriptNonce()) && a.setAttribute("nonce", b); }; goog.dom.safe.setLocationHref = function (a, b) { goog.dom.asserts.assertIsLocation(a); b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); a.href = goog.html.SafeUrl.unwrap(b); }; goog.dom.safe.assignLocation = function (a, b) { goog.dom.asserts.assertIsLocation(a); b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); a.assign(goog.html.SafeUrl.unwrap(b)); }; goog.dom.safe.replaceLocation = function (a, b) { b = b instanceof goog.html.SafeUrl ? b : goog.html.SafeUrl.sanitizeAssertUnchanged(b); a.replace(goog.html.SafeUrl.unwrap(b)); }; goog.dom.safe.openInWindow = function (a, b, c, d, e) { a = a instanceof goog.html.SafeUrl ? a : goog.html.SafeUrl.sanitizeAssertUnchanged(a); b = b || goog.global; c = c instanceof goog.string.Const ? goog.string.Const.unwrap(c) : c || ""; return b.open(goog.html.SafeUrl.unwrap(a), c, d, e) }; goog.dom.safe.parseFromStringHtml = function (a, b) { return goog.dom.safe.parseFromString(a, b, "text/html") }; goog.dom.safe.parseFromString = function (a, b, c) { return a.parseFromString(goog.html.SafeHtml.unwrapTrustedHTML(b), c) }; goog.dom.safe.createImageFromBlob = function (a) { if (!/^image\/.*/g.test(a.type)) throw Error("goog.dom.safe.createImageFromBlob only accepts MIME type image/.*."); var b = goog.global.URL.createObjectURL(a); a = new goog.global.Image; a.onload = function () { goog.global.URL.revokeObjectURL(b); }; goog.dom.safe.setImageSrc(a, goog.html.uncheckedconversions.safeUrlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Image blob URL."), b)); return a }; goog.string.DETECT_DOUBLE_ESCAPING = !1; goog.string.FORCE_NON_DOM_HTML_UNESCAPING = !1; goog.string.Unicode = {NBSP: "\u00a0"}; goog.string.startsWith = goog.string.internal.startsWith; goog.string.endsWith = goog.string.internal.endsWith; goog.string.caseInsensitiveStartsWith = goog.string.internal.caseInsensitiveStartsWith; goog.string.caseInsensitiveEndsWith = goog.string.internal.caseInsensitiveEndsWith; goog.string.caseInsensitiveEquals = goog.string.internal.caseInsensitiveEquals; goog.string.subs = function (a, b) { for (var c = a.split("%s"), d = "", e = Array.prototype.slice.call(arguments, 1); e.length && 1 < c.length;) d += c.shift() + e.shift(); return d + c.join("%s") }; goog.string.collapseWhitespace = function (a) { return a.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "") }; goog.string.isEmptyOrWhitespace = goog.string.internal.isEmptyOrWhitespace; goog.string.isEmptyString = function (a) { return 0 == a.length }; goog.string.isEmpty = goog.string.isEmptyOrWhitespace; goog.string.isEmptyOrWhitespaceSafe = function (a) { return goog.string.isEmptyOrWhitespace(goog.string.makeSafe(a)) }; goog.string.isEmptySafe = goog.string.isEmptyOrWhitespaceSafe; goog.string.isBreakingWhitespace = function (a) { return !/[^\t\n\r ]/.test(a) }; goog.string.isAlpha = function (a) { return !/[^a-zA-Z]/.test(a) }; goog.string.isNumeric = function (a) { return !/[^0-9]/.test(a) }; goog.string.isAlphaNumeric = function (a) { return !/[^a-zA-Z0-9]/.test(a) }; goog.string.isSpace = function (a) { return " " == a }; goog.string.isUnicodeChar = function (a) { return 1 == a.length && " " <= a && "~" >= a || "\u0080" <= a && "\ufffd" >= a }; goog.string.stripNewlines = function (a) { return a.replace(/(\r\n|\r|\n)+/g, " ") }; goog.string.canonicalizeNewlines = function (a) { return a.replace(/(\r\n|\r|\n)/g, "\n") }; goog.string.normalizeWhitespace = function (a) { return a.replace(/\xa0|\s/g, " ") }; goog.string.normalizeSpaces = function (a) { return a.replace(/\xa0|[ \t]+/g, " ") }; goog.string.collapseBreakingSpaces = function (a) { return a.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "") }; goog.string.trim = goog.string.internal.trim; goog.string.trimLeft = function (a) { return a.replace(/^[\s\xa0]+/, "") }; goog.string.trimRight = function (a) { return a.replace(/[\s\xa0]+$/, "") }; goog.string.caseInsensitiveCompare = goog.string.internal.caseInsensitiveCompare; goog.string.numberAwareCompare_ = function (a, b, c) { if (a == b) return 0; if (!a) return -1; if (!b) return 1; for (var d = a.toLowerCase().match(c), e = b.toLowerCase().match(c), f = Math.min(d.length, e.length), g = 0; g < f; g++) { c = d[g]; var h = e[g]; if (c != h) return a = parseInt(c, 10), !isNaN(a) && (b = parseInt(h, 10), !isNaN(b) && a - b) ? a - b : c < h ? -1 : 1 } return d.length != e.length ? d.length - e.length : a < b ? -1 : 1 }; goog.string.intAwareCompare = function (a, b) { return goog.string.numberAwareCompare_(a, b, /\d+|\D+/g) }; goog.string.floatAwareCompare = function (a, b) { return goog.string.numberAwareCompare_(a, b, /\d+|\.\d+|\D+/g) }; goog.string.numerateCompare = goog.string.floatAwareCompare; goog.string.urlEncode = function (a) { return encodeURIComponent(String(a)) }; goog.string.urlDecode = function (a) { return decodeURIComponent(a.replace(/\+/g, " ")) }; goog.string.newLineToBr = goog.string.internal.newLineToBr; goog.string.htmlEscape = function (a, b) { a = goog.string.internal.htmlEscape(a, b); goog.string.DETECT_DOUBLE_ESCAPING && (a = a.replace(goog.string.E_RE_, "e")); return a }; goog.string.E_RE_ = /e/g; goog.string.unescapeEntities = function (a) { return goog.string.contains(a, "&") ? !goog.string.FORCE_NON_DOM_HTML_UNESCAPING && "document" in goog.global ? goog.string.unescapeEntitiesUsingDom_(a) : goog.string.unescapePureXmlEntities_(a) : a }; goog.string.unescapeEntitiesWithDocument = function (a, b) { return goog.string.contains(a, "&") ? goog.string.unescapeEntitiesUsingDom_(a, b) : a }; goog.string.unescapeEntitiesUsingDom_ = function (a, b) { var c = {"&": "&", "<": "<", ">": ">", """: '"'}; var d = b ? b.createElement("div") : goog.global.document.createElement("div"); return a.replace(goog.string.HTML_ENTITY_PATTERN_, function (a, b) { var e = c[a]; if (e) return e; "#" == b.charAt(0) && (b = Number("0" + b.substr(1)), isNaN(b) || (e = String.fromCharCode(b))); e || (goog.dom.safe.setInnerHtml(d, goog.html.uncheckedconversions.safeHtmlFromStringKnownToSatisfyTypeContract(goog.string.Const.from("Single HTML entity."), a + " ")), e = d.firstChild.nodeValue.slice(0, -1)); return c[a] = e }) }; goog.string.unescapePureXmlEntities_ = function (a) { return a.replace(/&([^;]+);/g, function (a, c) { switch (c) { case "amp": return "&"; case "lt": return "<"; case "gt": return ">"; case "quot": return '"'; default: return "#" != c.charAt(0) || (c = Number("0" + c.substr(1)), isNaN(c)) ? a : String.fromCharCode(c) } }) }; goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g; goog.string.whitespaceEscape = function (a, b) { return goog.string.newLineToBr(a.replace(/ /g, "  "), b) }; goog.string.preserveSpaces = function (a) { return a.replace(/(^|[\n ]) /g, "$1" + goog.string.Unicode.NBSP) }; goog.string.stripQuotes = function (a, b) { for (var c = b.length, d = 0; d < c; d++) { var e = 1 == c ? b : b.charAt(d); if (a.charAt(0) == e && a.charAt(a.length - 1) == e) return a.substring(1, a.length - 1) } return a }; goog.string.truncate = function (a, b, c) { c && (a = goog.string.unescapeEntities(a)); a.length > b && (a = a.substring(0, b - 3) + "..."); c && (a = goog.string.htmlEscape(a)); return a }; goog.string.truncateMiddle = function (a, b, c, d) { c && (a = goog.string.unescapeEntities(a)); if (d && a.length > b) { d > b && (d = b); var e = a.length - d; a = a.substring(0, b - d) + "..." + a.substring(e); } else a.length > b && (d = Math.floor(b / 2), e = a.length - d, a = a.substring(0, d + b % 2) + "..." + a.substring(e)); c && (a = goog.string.htmlEscape(a)); return a }; goog.string.specialEscapeChars_ = { "\x00": "\\0", "\b": "\\b", "\f": "\\f", "\n": "\\n", "\r": "\\r", "\t": "\\t", "\x0B": "\\x0B", '"': '\\"', "\\": "\\\\", "<": "\\u003C" }; goog.string.jsEscapeCache_ = {"'": "\\'"}; goog.string.quote = function (a) { a = String(a); for (var b = ['"'], c = 0; c < a.length; c++) { var d = a.charAt(c), e = d.charCodeAt(0); b[c + 1] = goog.string.specialEscapeChars_[d] || (31 < e && 127 > e ? d : goog.string.escapeChar(d)); } b.push('"'); return b.join("") }; goog.string.escapeString = function (a) { for (var b = [], c = 0; c < a.length; c++) b[c] = goog.string.escapeChar(a.charAt(c)); return b.join("") }; goog.string.escapeChar = function (a) { if (a in goog.string.jsEscapeCache_) return goog.string.jsEscapeCache_[a]; if (a in goog.string.specialEscapeChars_) return goog.string.jsEscapeCache_[a] = goog.string.specialEscapeChars_[a]; var b = a.charCodeAt(0); if (31 < b && 127 > b) var c = a; else { if (256 > b) { if (c = "\\x", 16 > b || 256 < b) c += "0"; } else c = "\\u", 4096 > b && (c += "0"); c += b.toString(16).toUpperCase(); } return goog.string.jsEscapeCache_[a] = c }; goog.string.contains = goog.string.internal.contains; goog.string.caseInsensitiveContains = goog.string.internal.caseInsensitiveContains; goog.string.countOf = function (a, b) { return a && b ? a.split(b).length - 1 : 0 }; goog.string.removeAt = function (a, b, c) { var d = a; 0 <= b && b < a.length && 0 < c && (d = a.substr(0, b) + a.substr(b + c, a.length - b - c)); return d }; goog.string.remove = function (a, b) { return a.replace(b, "") }; goog.string.removeAll = function (a, b) { b = new RegExp(goog.string.regExpEscape(b), "g"); return a.replace(b, "") }; goog.string.replaceAll = function (a, b, c) { b = new RegExp(goog.string.regExpEscape(b), "g"); return a.replace(b, c.replace(/\$/g, "$$$$")) }; goog.string.regExpEscape = function (a) { return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08") }; goog.string.repeat = String.prototype.repeat ? function (a, b) { return a.repeat(b) } : function (a, b) { return Array(b + 1).join(a) }; goog.string.padNumber = function (a, b, c) { a = void 0 !== c ? a.toFixed(c) : String(a); c = a.indexOf("."); -1 == c && (c = a.length); return goog.string.repeat("0", Math.max(0, b - c)) + a }; goog.string.makeSafe = function (a) { return null == a ? "" : String(a) }; goog.string.buildString = function (a) { return Array.prototype.join.call(arguments, "") }; goog.string.getRandomString = function () { return Math.floor(2147483648 * Math.random()).toString(36) + Math.abs(Math.floor(2147483648 * Math.random()) ^ goog.now()).toString(36) }; goog.string.compareVersions = goog.string.internal.compareVersions; goog.string.hashCode = function (a) { for (var b = 0, c = 0; c < a.length; ++c) b = 31 * b + a.charCodeAt(c) >>> 0; return b }; goog.string.uniqueStringCounter_ = 2147483648 * Math.random() | 0; goog.string.createUniqueString = function () { return "goog_" + goog.string.uniqueStringCounter_++ }; goog.string.toNumber = function (a) { var b = Number(a); return 0 == b && goog.string.isEmptyOrWhitespace(a) ? NaN : b }; goog.string.isLowerCamelCase = function (a) { return /^[a-z]+([A-Z][a-z]*)*$/.test(a) }; goog.string.isUpperCamelCase = function (a) { return /^([A-Z][a-z]*)+$/.test(a) }; goog.string.toCamelCase = function (a) { return String(a).replace(/\-([a-z])/g, function (a, c) { return c.toUpperCase() }) }; goog.string.toSelectorCase = function (a) { return String(a).replace(/([A-Z])/g, "-$1").toLowerCase() }; goog.string.toTitleCase = function (a, b) { b = "string" === typeof b ? goog.string.regExpEscape(b) : "\\s"; return a.replace(new RegExp("(^" + (b ? "|[" + b + "]+" : "") + ")([a-z])", "g"), function (a, b, e) { return b + e.toUpperCase() }) }; goog.string.capitalize = function (a) { return String(a.charAt(0)).toUpperCase() + String(a.substr(1)).toLowerCase() }; goog.string.parseInt = function (a) { isFinite(a) && (a = String(a)); return "string" === typeof a ? /^\s*-?0x/i.test(a) ? parseInt(a, 16) : parseInt(a, 10) : NaN }; goog.string.splitLimit = function (a, b, c) { a = a.split(b); for (var d = []; 0 < c && a.length;) d.push(a.shift()), c--; a.length && d.push(a.join(b)); return d }; goog.string.lastComponent = function (a, b) { if (b) "string" == typeof b && (b = [b]); else return a; for (var c = -1, d = 0; d < b.length; d++) if ("" != b[d]) { var e = a.lastIndexOf(b[d]); e > c && (c = e); } return -1 == c ? a : a.slice(c + 1) }; goog.string.editDistance = function (a, b) { var c = [], d = []; if (a == b) return 0; if (!a.length || !b.length) return Math.max(a.length, b.length); for (var e = 0; e < b.length + 1; e++) c[e] = e; for (e = 0; e < a.length; e++) { d[0] = e + 1; for (var f = 0; f < b.length; f++) d[f + 1] = Math.min(d[f] + 1, c[f + 1] + 1, c[f] + Number(a[e] != b[f])); for (f = 0; f < c.length; f++) c[f] = d[f]; } return d[b.length] }; goog.labs.userAgent.engine = {}; goog.labs.userAgent.engine.isPresto = function () { return goog.labs.userAgent.util.matchUserAgent("Presto") }; goog.labs.userAgent.engine.isTrident = function () { return goog.labs.userAgent.util.matchUserAgent("Trident") || goog.labs.userAgent.util.matchUserAgent("MSIE") }; goog.labs.userAgent.engine.isEdge = function () { return goog.labs.userAgent.util.matchUserAgent("Edge") }; goog.labs.userAgent.engine.isWebKit = function () { return goog.labs.userAgent.util.matchUserAgentIgnoreCase("WebKit") && !goog.labs.userAgent.engine.isEdge() }; goog.labs.userAgent.engine.isGecko = function () { return goog.labs.userAgent.util.matchUserAgent("Gecko") && !goog.labs.userAgent.engine.isWebKit() && !goog.labs.userAgent.engine.isTrident() && !goog.labs.userAgent.engine.isEdge() }; goog.labs.userAgent.engine.getVersion = function () { var a = goog.labs.userAgent.util.getUserAgent(); if (a) { a = goog.labs.userAgent.util.extractVersionTuples(a); var b = goog.labs.userAgent.engine.getEngineTuple_(a); if (b) return "Gecko" == b[0] ? goog.labs.userAgent.engine.getVersionForKey_(a, "Firefox") : b[1]; a = a[0]; var c; if (a && (c = a[2]) && (c = /Trident\/([^\s;]+)/.exec(c))) return c[1] } return "" }; goog.labs.userAgent.engine.getEngineTuple_ = function (a) { if (!goog.labs.userAgent.engine.isEdge()) return a[1]; for (var b = 0; b < a.length; b++) { var c = a[b]; if ("Edge" == c[0]) return c } }; goog.labs.userAgent.engine.isVersionOrHigher = function (a) { return 0 <= goog.string.compareVersions(goog.labs.userAgent.engine.getVersion(), a) }; goog.labs.userAgent.engine.getVersionForKey_ = function (a, b) { return (a = goog.array.find(a, function (a) { return b == a[0] })) && a[1] || "" }; goog.labs.userAgent.platform = {}; goog.labs.userAgent.platform.isAndroid = function () { return goog.labs.userAgent.util.matchUserAgent("Android") }; goog.labs.userAgent.platform.isIpod = function () { return goog.labs.userAgent.util.matchUserAgent("iPod") }; goog.labs.userAgent.platform.isIphone = function () { return goog.labs.userAgent.util.matchUserAgent("iPhone") && !goog.labs.userAgent.util.matchUserAgent("iPod") && !goog.labs.userAgent.util.matchUserAgent("iPad") }; goog.labs.userAgent.platform.isIpad = function () { return goog.labs.userAgent.util.matchUserAgent("iPad") }; goog.labs.userAgent.platform.isIos = function () { return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpad() || goog.labs.userAgent.platform.isIpod() }; goog.labs.userAgent.platform.isMacintosh = function () { return goog.labs.userAgent.util.matchUserAgent("Macintosh") }; goog.labs.userAgent.platform.isLinux = function () { return goog.labs.userAgent.util.matchUserAgent("Linux") }; goog.labs.userAgent.platform.isWindows = function () { return goog.labs.userAgent.util.matchUserAgent("Windows") }; goog.labs.userAgent.platform.isChromeOS = function () { return goog.labs.userAgent.util.matchUserAgent("CrOS") }; goog.labs.userAgent.platform.isChromecast = function () { return goog.labs.userAgent.util.matchUserAgent("CrKey") }; goog.labs.userAgent.platform.isKaiOS = function () { return goog.labs.userAgent.util.matchUserAgentIgnoreCase("KaiOS") }; goog.labs.userAgent.platform.getVersion = function () { var a = goog.labs.userAgent.util.getUserAgent(), b = ""; goog.labs.userAgent.platform.isWindows() ? (b = /Windows (?:NT|Phone) ([0-9.]+)/, b = (a = b.exec(a)) ? a[1] : "0.0") : goog.labs.userAgent.platform.isIos() ? (b = /(?:iPhone|iPod|iPad|CPU)\s+OS\s+(\S+)/, b = (a = b.exec(a)) && a[1].replace(/_/g, ".")) : goog.labs.userAgent.platform.isMacintosh() ? (b = /Mac OS X ([0-9_.]+)/, b = (a = b.exec(a)) ? a[1].replace(/_/g, ".") : "10") : goog.labs.userAgent.platform.isKaiOS() ? (b = /(?:KaiOS)\/(\S+)/i, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isAndroid() ? (b = /Android\s+([^\);]+)(\)|;)/, b = (a = b.exec(a)) && a[1]) : goog.labs.userAgent.platform.isChromeOS() && (b = /(?:CrOS\s+(?:i686|x86_64)\s+([0-9.]+))/, b = (a = b.exec(a)) && a[1]); return b || "" }; goog.labs.userAgent.platform.isVersionOrHigher = function (a) { return 0 <= goog.string.compareVersions(goog.labs.userAgent.platform.getVersion(), a) }; goog.reflect = {}; goog.reflect.object = function (a, b) { return b }; goog.reflect.objectProperty = function (a, b) { return a }; goog.reflect.sinkValue = function (a) { goog.reflect.sinkValue[" "](a); return a }; goog.reflect.sinkValue[" "] = goog.nullFunction; goog.reflect.canAccessProperty = function (a, b) { try { return goog.reflect.sinkValue(a[b]), !0 } catch (c) { } return !1 }; goog.reflect.cache = function (a, b, c, d) { d = d ? d(b) : b; return Object.prototype.hasOwnProperty.call(a, d) ? a[d] : a[d] = c(b) }; goog.userAgent = {}; goog.userAgent.ASSUME_IE = !1; goog.userAgent.ASSUME_EDGE = !1; goog.userAgent.ASSUME_GECKO = !1; goog.userAgent.ASSUME_WEBKIT = !1; goog.userAgent.ASSUME_MOBILE_WEBKIT = !1; goog.userAgent.ASSUME_OPERA = !1; goog.userAgent.ASSUME_ANY_VERSION = !1; goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA; goog.userAgent.getUserAgentString = function () { return goog.labs.userAgent.util.getUserAgent() }; goog.userAgent.getNavigatorTyped = function () { return goog.global.navigator || null }; goog.userAgent.getNavigator = function () { return goog.userAgent.getNavigatorTyped() }; goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : goog.labs.userAgent.browser.isOpera(); goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : goog.labs.userAgent.browser.isIE(); goog.userAgent.EDGE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_EDGE : goog.labs.userAgent.engine.isEdge(); goog.userAgent.EDGE_OR_IE = goog.userAgent.EDGE || goog.userAgent.IE; goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : goog.labs.userAgent.engine.isGecko(); goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : goog.labs.userAgent.engine.isWebKit(); goog.userAgent.isMobile_ = function () { return goog.userAgent.WEBKIT && goog.labs.userAgent.util.matchUserAgent("Mobile") }; goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.isMobile_(); goog.userAgent.SAFARI = goog.userAgent.WEBKIT; goog.userAgent.determinePlatform_ = function () { var a = goog.userAgent.getNavigatorTyped(); return a && a.platform || "" }; goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_(); goog.userAgent.ASSUME_MAC = !1; goog.userAgent.ASSUME_WINDOWS = !1; goog.userAgent.ASSUME_LINUX = !1; goog.userAgent.ASSUME_X11 = !1; goog.userAgent.ASSUME_ANDROID = !1; goog.userAgent.ASSUME_IPHONE = !1; goog.userAgent.ASSUME_IPAD = !1; goog.userAgent.ASSUME_IPOD = !1; goog.userAgent.ASSUME_KAIOS = !1; goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD; goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.labs.userAgent.platform.isMacintosh(); goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.labs.userAgent.platform.isWindows(); goog.userAgent.isLegacyLinux_ = function () { return goog.labs.userAgent.platform.isLinux() || goog.labs.userAgent.platform.isChromeOS() }; goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.isLegacyLinux_(); goog.userAgent.isX11_ = function () { var a = goog.userAgent.getNavigatorTyped(); return !!a && goog.string.contains(a.appVersion || "", "X11") }; goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.isX11_(); goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.labs.userAgent.platform.isAndroid(); goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.labs.userAgent.platform.isIphone(); goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad(); goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIpod(); goog.userAgent.IOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD || goog.userAgent.ASSUME_IPOD : goog.labs.userAgent.platform.isIos(); goog.userAgent.KAIOS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_KAIOS : goog.labs.userAgent.platform.isKaiOS(); goog.userAgent.determineVersion_ = function () { var a = "", b = goog.userAgent.getVersionRegexResult_(); b && (a = b ? b[1] : ""); return goog.userAgent.IE && (b = goog.userAgent.getDocumentMode_(), null != b && b > parseFloat(a)) ? String(b) : a }; goog.userAgent.getVersionRegexResult_ = function () { var a = goog.userAgent.getUserAgentString(); if (goog.userAgent.GECKO) return /rv:([^\);]+)(\)|;)/.exec(a); if (goog.userAgent.EDGE) return /Edge\/([\d\.]+)/.exec(a); if (goog.userAgent.IE) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a); if (goog.userAgent.WEBKIT) return /WebKit\/(\S+)/.exec(a); if (goog.userAgent.OPERA) return /(?:Version)[ \/]?(\S+)/.exec(a) }; goog.userAgent.getDocumentMode_ = function () { var a = goog.global.document; return a ? a.documentMode : void 0 }; goog.userAgent.VERSION = goog.userAgent.determineVersion_(); goog.userAgent.compare = function (a, b) { return goog.string.compareVersions(a, b) }; goog.userAgent.isVersionOrHigherCache_ = {}; goog.userAgent.isVersionOrHigher = function (a) { return goog.userAgent.ASSUME_ANY_VERSION || goog.reflect.cache(goog.userAgent.isVersionOrHigherCache_, a, function () { return 0 <= goog.string.compareVersions(goog.userAgent.VERSION, a) }) }; goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher; goog.userAgent.isDocumentModeOrHigher = function (a) { return Number(goog.userAgent.DOCUMENT_MODE) >= a }; goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher; goog.userAgent.DOCUMENT_MODE = function () { if (goog.global.document && goog.userAgent.IE) { var a = goog.userAgent.getDocumentMode_(); return a ? a : parseInt(goog.userAgent.VERSION, 10) || void 0 } }(); goog.userAgent.product = {}; goog.userAgent.product.ASSUME_FIREFOX = !1; goog.userAgent.product.ASSUME_IPHONE = !1; goog.userAgent.product.ASSUME_IPAD = !1; goog.userAgent.product.ASSUME_ANDROID = !1; goog.userAgent.product.ASSUME_CHROME = !1; goog.userAgent.product.ASSUME_SAFARI = !1; goog.userAgent.product.PRODUCT_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_EDGE || goog.userAgent.ASSUME_OPERA || goog.userAgent.product.ASSUME_FIREFOX || goog.userAgent.product.ASSUME_IPHONE || goog.userAgent.product.ASSUME_IPAD || goog.userAgent.product.ASSUME_ANDROID || goog.userAgent.product.ASSUME_CHROME || goog.userAgent.product.ASSUME_SAFARI; goog.userAgent.product.OPERA = goog.userAgent.OPERA; goog.userAgent.product.IE = goog.userAgent.IE; goog.userAgent.product.EDGE = goog.userAgent.EDGE; goog.userAgent.product.FIREFOX = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_FIREFOX : goog.labs.userAgent.browser.isFirefox(); goog.userAgent.product.isIphoneOrIpod_ = function () { return goog.labs.userAgent.platform.isIphone() || goog.labs.userAgent.platform.isIpod() }; goog.userAgent.product.IPHONE = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPHONE : goog.userAgent.product.isIphoneOrIpod_(); goog.userAgent.product.IPAD = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPAD : goog.labs.userAgent.platform.isIpad(); goog.userAgent.product.ANDROID = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_ANDROID : goog.labs.userAgent.browser.isAndroidBrowser(); goog.userAgent.product.CHROME = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_CHROME : goog.labs.userAgent.browser.isChrome(); goog.userAgent.product.isSafariDesktop_ = function () { return goog.labs.userAgent.browser.isSafari() && !goog.labs.userAgent.platform.isIos() }; goog.userAgent.product.SAFARI = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_SAFARI : goog.userAgent.product.isSafariDesktop_(); goog.crypt.base64 = {}; goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; goog.crypt.base64.ENCODED_VALS = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ + "+/="; goog.crypt.base64.ENCODED_VALS_WEBSAFE = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_ + "-_."; goog.crypt.base64.Alphabet = {DEFAULT: 0, NO_PADDING: 1, WEBSAFE: 2, WEBSAFE_DOT_PADDING: 3, WEBSAFE_NO_PADDING: 4}; goog.crypt.base64.paddingChars_ = "=."; goog.crypt.base64.isPadding_ = function (a) { return goog.string.contains(goog.crypt.base64.paddingChars_, a) }; goog.crypt.base64.byteToCharMaps_ = {}; goog.crypt.base64.charToByteMap_ = null; goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ = goog.userAgent.GECKO || goog.userAgent.WEBKIT && !goog.userAgent.product.SAFARI || goog.userAgent.OPERA; goog.crypt.base64.HAS_NATIVE_ENCODE_ = goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ || "function" == typeof goog.global.btoa; goog.crypt.base64.HAS_NATIVE_DECODE_ = goog.crypt.base64.ASSUME_NATIVE_SUPPORT_ || !goog.userAgent.product.SAFARI && !goog.userAgent.IE && "function" == typeof goog.global.atob; goog.crypt.base64.encodeByteArray = function (a, b) { goog.asserts.assert(goog.isArrayLike(a), "encodeByteArray takes an array as a parameter"); void 0 === b && (b = goog.crypt.base64.Alphabet.DEFAULT); goog.crypt.base64.init_(); b = goog.crypt.base64.byteToCharMaps_[b]; for (var c = [], d = 0; d < a.length; d += 3) { var e = a[d], f = d + 1 < a.length, g = f ? a[d + 1] : 0, h = d + 2 < a.length, k = h ? a[d + 2] : 0, l = e >> 2; e = (e & 3) << 4 | g >> 4; g = (g & 15) << 2 | k >> 6; k &= 63; h || (k = 64, f || (g = 64)); c.push(b[l], b[e], b[g] || "", b[k] || ""); } return c.join("") }; goog.crypt.base64.encodeString = function (a, b) { return goog.crypt.base64.HAS_NATIVE_ENCODE_ && !b ? goog.global.btoa(a) : goog.crypt.base64.encodeByteArray(goog.crypt.stringToByteArray(a), b) }; goog.crypt.base64.decodeString = function (a, b) { if (goog.crypt.base64.HAS_NATIVE_DECODE_ && !b) return goog.global.atob(a); var c = ""; goog.crypt.base64.decodeStringInternal_(a, function (a) { c += String.fromCharCode(a); }); return c }; goog.crypt.base64.decodeStringToByteArray = function (a, b) { var c = []; goog.crypt.base64.decodeStringInternal_(a, function (a) { c.push(a); }); return c }; goog.crypt.base64.decodeStringToUint8Array = function (a) { goog.asserts.assert(!goog.userAgent.IE || goog.userAgent.isVersionOrHigher("10"), "Browser does not support typed arrays"); var b = a.length, c = 3 * b / 4; c % 3 ? c = Math.floor(c) : goog.crypt.base64.isPadding_(a[b - 1]) && (c = goog.crypt.base64.isPadding_(a[b - 2]) ? c - 2 : c - 1); var d = new Uint8Array(c), e = 0; goog.crypt.base64.decodeStringInternal_(a, function (a) { d[e++] = a; }); return d.subarray(0, e) }; goog.crypt.base64.decodeStringInternal_ = function (a, b) { function c(b) { for (; d < a.length;) { var c = a.charAt(d++), e = goog.crypt.base64.charToByteMap_[c]; if (null != e) return e; if (!goog.string.isEmptyOrWhitespace(c)) throw Error("Unknown base64 encoding at char: " + c); } return b } goog.crypt.base64.init_(); for (var d = 0; ;) { var e = c(-1), f = c(0), g = c(64), h = c(64); if (64 === h && -1 === e) break; b(e << 2 | f >> 4); 64 != g && (b(f << 4 & 240 | g >> 2), 64 != h && b(g << 6 & 192 | h)); } }; goog.crypt.base64.init_ = function () { if (!goog.crypt.base64.charToByteMap_) { goog.crypt.base64.charToByteMap_ = {}; for (var a = goog.crypt.base64.DEFAULT_ALPHABET_COMMON_.split(""), b = ["+/=", "+/", "-_=", "-_.", "-_"], c = 0; 5 > c; c++) { var d = a.concat(b[c].split("")); goog.crypt.base64.byteToCharMaps_[c] = d; for (var e = 0; e < d.length; e++) { var f = d[e], g = goog.crypt.base64.charToByteMap_[f]; void 0 === g ? goog.crypt.base64.charToByteMap_[f] = e : goog.asserts.assert(g === e); } } } }; jspb.utils = {}; jspb.utils.split64Low = 0; jspb.utils.split64High = 0; jspb.utils.splitUint64 = function (a) { var b = a >>> 0; a = Math.floor((a - b) / jspb.BinaryConstants.TWO_TO_32) >>> 0; jspb.utils.split64Low = b; jspb.utils.split64High = a; }; jspb.utils.splitInt64 = function (a) { var b = 0 > a; a = Math.abs(a); var c = a >>> 0; a = Math.floor((a - c) / jspb.BinaryConstants.TWO_TO_32); a >>>= 0; b && (a = ~a >>> 0, c = (~c >>> 0) + 1, 4294967295 < c && (c = 0, a++, 4294967295 < a && (a = 0))); jspb.utils.split64Low = c; jspb.utils.split64High = a; }; jspb.utils.splitZigzag64 = function (a) { var b = 0 > a; a = 2 * Math.abs(a); jspb.utils.splitUint64(a); a = jspb.utils.split64Low; var c = jspb.utils.split64High; b && (0 == a ? 0 == c ? c = a = 4294967295 : (c--, a = 4294967295) : a--); jspb.utils.split64Low = a; jspb.utils.split64High = c; }; jspb.utils.splitFloat32 = function (a) { var b = 0 > a ? 1 : 0; a = b ? -a : a; if (0 === a) 0 < 1 / a ? (jspb.utils.split64High = 0, jspb.utils.split64Low = 0) : (jspb.utils.split64High = 0, jspb.utils.split64Low = 2147483648); else if (isNaN(a)) jspb.utils.split64High = 0, jspb.utils.split64Low = 2147483647; else if (a > jspb.BinaryConstants.FLOAT32_MAX) jspb.utils.split64High = 0, jspb.utils.split64Low = (b << 31 | 2139095040) >>> 0; else if (a < jspb.BinaryConstants.FLOAT32_MIN) a = Math.round(a / Math.pow(2, -149)), jspb.utils.split64High = 0, jspb.utils.split64Low = (b << 31 | a) >>> 0; else { var c = Math.floor(Math.log(a) / Math.LN2); a *= Math.pow(2, -c); a = Math.round(a * jspb.BinaryConstants.TWO_TO_23); 16777216 <= a && ++c; jspb.utils.split64High = 0; jspb.utils.split64Low = (b << 31 | c + 127 << 23 | a & 8388607) >>> 0; } }; jspb.utils.splitFloat64 = function (a) { var b = 0 > a ? 1 : 0; a = b ? -a : a; if (0 === a) jspb.utils.split64High = 0 < 1 / a ? 0 : 2147483648, jspb.utils.split64Low = 0; else if (isNaN(a)) jspb.utils.split64High = 2147483647, jspb.utils.split64Low = 4294967295; else if (a > jspb.BinaryConstants.FLOAT64_MAX) jspb.utils.split64High = (b << 31 | 2146435072) >>> 0, jspb.utils.split64Low = 0; else if (a < jspb.BinaryConstants.FLOAT64_MIN) { var c = a / Math.pow(2, -1074); a = c / jspb.BinaryConstants.TWO_TO_32; jspb.utils.split64High = (b << 31 | a) >>> 0; jspb.utils.split64Low = c >>> 0; } else { c = a; var d = 0; if (2 <= c) for (; 2 <= c && 1023 > d;) d++, c /= 2; else for (; 1 > c && -1022 < d;) c *= 2, d--; c = a * Math.pow(2, -d); a = c * jspb.BinaryConstants.TWO_TO_20 & 1048575; c = c * jspb.BinaryConstants.TWO_TO_52 >>> 0; jspb.utils.split64High = (b << 31 | d + 1023 << 20 | a) >>> 0; jspb.utils.split64Low = c; } }; jspb.utils.splitHash64 = function (a) { var b = a.charCodeAt(0), c = a.charCodeAt(1), d = a.charCodeAt(2), e = a.charCodeAt(3), f = a.charCodeAt(4), g = a.charCodeAt(5), h = a.charCodeAt(6); a = a.charCodeAt(7); jspb.utils.split64Low = b + (c << 8) + (d << 16) + (e << 24) >>> 0; jspb.utils.split64High = f + (g << 8) + (h << 16) + (a << 24) >>> 0; }; jspb.utils.joinUint64 = function (a, b) { return b * jspb.BinaryConstants.TWO_TO_32 + (a >>> 0) }; jspb.utils.joinInt64 = function (a, b) { var c = b & 2147483648; c && (a = ~a + 1 >>> 0, b = ~b >>> 0, 0 == a && (b = b + 1 >>> 0)); a = jspb.utils.joinUint64(a, b); return c ? -a : a }; jspb.utils.toZigzag64 = function (a, b, c) { var d = b >> 31; return c(a << 1 ^ d, (b << 1 | a >>> 31) ^ d) }; jspb.utils.joinZigzag64 = function (a, b) { return jspb.utils.fromZigzag64(a, b, jspb.utils.joinInt64) }; jspb.utils.fromZigzag64 = function (a, b, c) { var d = -(a & 1); return c((a >>> 1 | b << 31) ^ d, b >>> 1 ^ d) }; jspb.utils.joinFloat32 = function (a, b) { b = 2 * (a >> 31) + 1; var c = a >>> 23 & 255; a &= 8388607; return 255 == c ? a ? NaN : Infinity * b : 0 == c ? b * Math.pow(2, -149) * a : b * Math.pow(2, c - 150) * (a + Math.pow(2, 23)) }; jspb.utils.joinFloat64 = function (a, b) { var c = 2 * (b >> 31) + 1, d = b >>> 20 & 2047; a = jspb.BinaryConstants.TWO_TO_32 * (b & 1048575) + a; return 2047 == d ? a ? NaN : Infinity * c : 0 == d ? c * Math.pow(2, -1074) * a : c * Math.pow(2, d - 1075) * (a + jspb.BinaryConstants.TWO_TO_52) }; jspb.utils.joinHash64 = function (a, b) { return String.fromCharCode(a >>> 0 & 255, a >>> 8 & 255, a >>> 16 & 255, a >>> 24 & 255, b >>> 0 & 255, b >>> 8 & 255, b >>> 16 & 255, b >>> 24 & 255) }; jspb.utils.DIGITS = "0123456789abcdef".split(""); jspb.utils.ZERO_CHAR_CODE_ = 48; jspb.utils.A_CHAR_CODE_ = 97; jspb.utils.joinUnsignedDecimalString = function (a, b) { function c(a, b) { a = a ? String(a) : ""; return b ? "0000000".slice(a.length) + a : a } if (2097151 >= b) return "" + jspb.utils.joinUint64(a, b); var d = (a >>> 24 | b << 8) >>> 0 & 16777215; b = b >> 16 & 65535; a = (a & 16777215) + 6777216 * d + 6710656 * b; d += 8147497 * b; b *= 2; 1E7 <= a && (d += Math.floor(a / 1E7), a %= 1E7); 1E7 <= d && (b += Math.floor(d / 1E7), d %= 1E7); return c(b, 0) + c(d, b) + c(a, 1) }; jspb.utils.joinSignedDecimalString = function (a, b) { var c = b & 2147483648; c && (a = ~a + 1 >>> 0, b = ~b + (0 == a ? 1 : 0) >>> 0); a = jspb.utils.joinUnsignedDecimalString(a, b); return c ? "-" + a : a }; jspb.utils.hash64ToDecimalString = function (a, b) { jspb.utils.splitHash64(a); a = jspb.utils.split64Low; var c = jspb.utils.split64High; return b ? jspb.utils.joinSignedDecimalString(a, c) : jspb.utils.joinUnsignedDecimalString(a, c) }; jspb.utils.hash64ArrayToDecimalStrings = function (a, b) { for (var c = Array(a.length), d = 0; d < a.length; d++) c[d] = jspb.utils.hash64ToDecimalString(a[d], b); return c }; jspb.utils.decimalStringToHash64 = function (a) { function b(a, b) { for (var c = 0; 8 > c && (1 !== a || 0 < b); c++) b = a * e[c] + b, e[c] = b & 255, b >>>= 8; } function c() { for (var a = 0; 8 > a; a++) e[a] = ~e[a] & 255; } jspb.asserts.assert(0 < a.length); var d = !1; "-" === a[0] && (d = !0, a = a.slice(1)); for (var e = [0, 0, 0, 0, 0, 0, 0, 0], f = 0; f < a.length; f++) b(10, a.charCodeAt(f) - jspb.utils.ZERO_CHAR_CODE_); d && (c(), b(1, 1)); return goog.crypt.byteArrayToString(e) }; jspb.utils.splitDecimalString = function (a) { jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a)); }; jspb.utils.toHexDigit_ = function (a) { return String.fromCharCode(10 > a ? jspb.utils.ZERO_CHAR_CODE_ + a : jspb.utils.A_CHAR_CODE_ - 10 + a) }; jspb.utils.fromHexCharCode_ = function (a) { return a >= jspb.utils.A_CHAR_CODE_ ? a - jspb.utils.A_CHAR_CODE_ + 10 : a - jspb.utils.ZERO_CHAR_CODE_ }; jspb.utils.hash64ToHexString = function (a) { var b = Array(18); b[0] = "0"; b[1] = "x"; for (var c = 0; 8 > c; c++) { var d = a.charCodeAt(7 - c); b[2 * c + 2] = jspb.utils.toHexDigit_(d >> 4); b[2 * c + 3] = jspb.utils.toHexDigit_(d & 15); } return b.join("") }; jspb.utils.hexStringToHash64 = function (a) { a = a.toLowerCase(); jspb.asserts.assert(18 == a.length); jspb.asserts.assert("0" == a[0]); jspb.asserts.assert("x" == a[1]); for (var b = "", c = 0; 8 > c; c++) { var d = jspb.utils.fromHexCharCode_(a.charCodeAt(2 * c + 2)), e = jspb.utils.fromHexCharCode_(a.charCodeAt(2 * c + 3)); b = String.fromCharCode(16 * d + e) + b; } return b }; jspb.utils.hash64ToNumber = function (a, b) { jspb.utils.splitHash64(a); a = jspb.utils.split64Low; var c = jspb.utils.split64High; return b ? jspb.utils.joinInt64(a, c) : jspb.utils.joinUint64(a, c) }; jspb.utils.numberToHash64 = function (a) { jspb.utils.splitInt64(a); return jspb.utils.joinHash64(jspb.utils.split64Low, jspb.utils.split64High) }; jspb.utils.countVarints = function (a, b, c) { for (var d = 0, e = b; e < c; e++) d += a[e] >> 7; return c - b - d }; jspb.utils.countVarintFields = function (a, b, c, d) { var e = 0; d = 8 * d + jspb.BinaryConstants.WireType.VARINT; if (128 > d) for (; b < c && a[b++] == d;) for (e++; ;) { var f = a[b++]; if (0 == (f & 128)) break } else for (; b < c;) { for (f = d; 128 < f;) { if (a[b] != (f & 127 | 128)) return e; b++; f >>= 7; } if (a[b++] != f) break; for (e++; f = a[b++], 0 != (f & 128);) ; } return e }; jspb.utils.countFixedFields_ = function (a, b, c, d, e) { var f = 0; if (128 > d) for (; b < c && a[b++] == d;) f++, b += e; else for (; b < c;) { for (var g = d; 128 < g;) { if (a[b++] != (g & 127 | 128)) return f; g >>= 7; } if (a[b++] != g) break; f++; b += e; } return f }; jspb.utils.countFixed32Fields = function (a, b, c, d) { return jspb.utils.countFixedFields_(a, b, c, 8 * d + jspb.BinaryConstants.WireType.FIXED32, 4) }; jspb.utils.countFixed64Fields = function (a, b, c, d) { return jspb.utils.countFixedFields_(a, b, c, 8 * d + jspb.BinaryConstants.WireType.FIXED64, 8) }; jspb.utils.countDelimitedFields = function (a, b, c, d) { var e = 0; for (d = 8 * d + jspb.BinaryConstants.WireType.DELIMITED; b < c;) { for (var f = d; 128 < f;) { if (a[b++] != (f & 127 | 128)) return e; f >>= 7; } if (a[b++] != f) break; e++; for (var g = 0, h = 1; f = a[b++], g += (f & 127) * h, h *= 128, 0 != (f & 128);) ; b += g; } return e }; jspb.utils.debugBytesToTextFormat = function (a) { var b = '"'; if (a) { a = jspb.utils.byteSourceToUint8Array(a); for (var c = 0; c < a.length; c++) b += "\\x", 16 > a[c] && (b += "0"), b += a[c].toString(16); } return b + '"' }; jspb.utils.debugScalarToTextFormat = function (a) { return "string" === typeof a ? goog.string.quote(a) : a.toString() }; jspb.utils.stringToByteArray = function (a) { for (var b = new Uint8Array(a.length), c = 0; c < a.length; c++) { var d = a.charCodeAt(c); if (255 < d) throw Error("Conversion error: string contains codepoint outside of byte range"); b[c] = d; } return b }; jspb.utils.byteSourceToUint8Array = function (a) { if (a.constructor === Uint8Array) return a; if (a.constructor === ArrayBuffer || a.constructor === Array) return new Uint8Array(a); if (a.constructor === String) return goog.crypt.base64.decodeStringToUint8Array(a); if (a instanceof Uint8Array) return new Uint8Array(a.buffer, a.byteOffset, a.byteLength); jspb.asserts.fail("Type not convertible to Uint8Array."); return new Uint8Array(0) }; jspb.BinaryDecoder = function (a, b, c) { this.bytes_ = null; this.cursor_ = this.end_ = this.start_ = 0; this.error_ = !1; a && this.setBlock(a, b, c); }; jspb.BinaryDecoder.instanceCache_ = []; jspb.BinaryDecoder.alloc = function (a, b, c) { if (jspb.BinaryDecoder.instanceCache_.length) { var d = jspb.BinaryDecoder.instanceCache_.pop(); a && d.setBlock(a, b, c); return d } return new jspb.BinaryDecoder(a, b, c) }; jspb.BinaryDecoder.prototype.free = function () { this.clear(); 100 > jspb.BinaryDecoder.instanceCache_.length && jspb.BinaryDecoder.instanceCache_.push(this); }; jspb.BinaryDecoder.prototype.clone = function () { return jspb.BinaryDecoder.alloc(this.bytes_, this.start_, this.end_ - this.start_) }; jspb.BinaryDecoder.prototype.clear = function () { this.bytes_ = null; this.cursor_ = this.end_ = this.start_ = 0; this.error_ = !1; }; jspb.BinaryDecoder.prototype.getBuffer = function () { return this.bytes_ }; jspb.BinaryDecoder.prototype.setBlock = function (a, b, c) { this.bytes_ = jspb.utils.byteSourceToUint8Array(a); this.start_ = void 0 !== b ? b : 0; this.end_ = void 0 !== c ? this.start_ + c : this.bytes_.length; this.cursor_ = this.start_; }; jspb.BinaryDecoder.prototype.getEnd = function () { return this.end_ }; jspb.BinaryDecoder.prototype.setEnd = function (a) { this.end_ = a; }; jspb.BinaryDecoder.prototype.reset = function () { this.cursor_ = this.start_; }; jspb.BinaryDecoder.prototype.getCursor = function () { return this.cursor_ }; jspb.BinaryDecoder.prototype.setCursor = function (a) { this.cursor_ = a; }; jspb.BinaryDecoder.prototype.advance = function (a) { this.cursor_ += a; jspb.asserts.assert(this.cursor_ <= this.end_); }; jspb.BinaryDecoder.prototype.atEnd = function () { return this.cursor_ == this.end_ }; jspb.BinaryDecoder.prototype.pastEnd = function () { return this.cursor_ > this.end_ }; jspb.BinaryDecoder.prototype.getError = function () { return this.error_ || 0 > this.cursor_ || this.cursor_ > this.end_ }; jspb.BinaryDecoder.prototype.readSplitVarint64 = function (a) { for (var b = 128, c = 0, d = 0, e = 0; 4 > e && 128 <= b; e++) b = this.bytes_[this.cursor_++], c |= (b & 127) << 7 * e; 128 <= b && (b = this.bytes_[this.cursor_++], c |= (b & 127) << 28, d |= (b & 127) >> 4); if (128 <= b) for (e = 0; 5 > e && 128 <= b; e++) b = this.bytes_[this.cursor_++], d |= (b & 127) << 7 * e + 3; if (128 > b) return a(c >>> 0, d >>> 0); jspb.asserts.fail("Failed to read varint, encoding is invalid."); this.error_ = !0; }; jspb.BinaryDecoder.prototype.readSplitZigzagVarint64 = function (a) { return this.readSplitVarint64(function (b, c) { return jspb.utils.fromZigzag64(b, c, a) }) }; jspb.BinaryDecoder.prototype.readSplitFixed64 = function (a) { var b = this.bytes_, c = this.cursor_; this.cursor_ += 8; for (var d = 0, e = 0, f = c + 7; f >= c; f--) d = d << 8 | b[f], e = e << 8 | b[f + 4]; return a(d, e) }; jspb.BinaryDecoder.prototype.skipVarint = function () { for (; this.bytes_[this.cursor_] & 128;) this.cursor_++; this.cursor_++; }; jspb.BinaryDecoder.prototype.unskipVarint = function (a) { for (; 128 < a;) this.cursor_--, a >>>= 7; this.cursor_--; }; jspb.BinaryDecoder.prototype.readUnsignedVarint32 = function () { var a = this.bytes_; var b = a[this.cursor_ + 0]; var c = b & 127; if (128 > b) return this.cursor_ += 1, jspb.asserts.assert(this.cursor_ <= this.end_), c; b = a[this.cursor_ + 1]; c |= (b & 127) << 7; if (128 > b) return this.cursor_ += 2, jspb.asserts.assert(this.cursor_ <= this.end_), c; b = a[this.cursor_ + 2]; c |= (b & 127) << 14; if (128 > b) return this.cursor_ += 3, jspb.asserts.assert(this.cursor_ <= this.end_), c; b = a[this.cursor_ + 3]; c |= (b & 127) << 21; if (128 > b) return this.cursor_ += 4, jspb.asserts.assert(this.cursor_ <= this.end_), c; b = a[this.cursor_ + 4]; c |= (b & 15) << 28; if (128 > b) return this.cursor_ += 5, jspb.asserts.assert(this.cursor_ <= this.end_), c >>> 0; this.cursor_ += 5; 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && 128 <= a[this.cursor_++] && jspb.asserts.assert(!1); jspb.asserts.assert(this.cursor_ <= this.end_); return c }; jspb.BinaryDecoder.prototype.readSignedVarint32 = function () { return ~~this.readUnsignedVarint32() }; jspb.BinaryDecoder.prototype.readUnsignedVarint32String = function () { return this.readUnsignedVarint32().toString() }; jspb.BinaryDecoder.prototype.readSignedVarint32String = function () { return this.readSignedVarint32().toString() }; jspb.BinaryDecoder.prototype.readZigzagVarint32 = function () { var a = this.readUnsignedVarint32(); return a >>> 1 ^ -(a & 1) }; jspb.BinaryDecoder.prototype.readUnsignedVarint64 = function () { return this.readSplitVarint64(jspb.utils.joinUint64) }; jspb.BinaryDecoder.prototype.readUnsignedVarint64String = function () { return this.readSplitVarint64(jspb.utils.joinUnsignedDecimalString) }; jspb.BinaryDecoder.prototype.readSignedVarint64 = function () { return this.readSplitVarint64(jspb.utils.joinInt64) }; jspb.BinaryDecoder.prototype.readSignedVarint64String = function () { return this.readSplitVarint64(jspb.utils.joinSignedDecimalString) }; jspb.BinaryDecoder.prototype.readZigzagVarint64 = function () { return this.readSplitVarint64(jspb.utils.joinZigzag64) }; jspb.BinaryDecoder.prototype.readZigzagVarintHash64 = function () { return this.readSplitZigzagVarint64(jspb.utils.joinHash64) }; jspb.BinaryDecoder.prototype.readZigzagVarint64String = function () { return this.readSplitZigzagVarint64(jspb.utils.joinSignedDecimalString) }; jspb.BinaryDecoder.prototype.readUint8 = function () { var a = this.bytes_[this.cursor_ + 0]; this.cursor_ += 1; jspb.asserts.assert(this.cursor_ <= this.end_); return a }; jspb.BinaryDecoder.prototype.readUint16 = function () { var a = this.bytes_[this.cursor_ + 0], b = this.bytes_[this.cursor_ + 1]; this.cursor_ += 2; jspb.asserts.assert(this.cursor_ <= this.end_); return a << 0 | b << 8 }; jspb.BinaryDecoder.prototype.readUint32 = function () { var a = this.bytes_[this.cursor_ + 0], b = this.bytes_[this.cursor_ + 1], c = this.bytes_[this.cursor_ + 2], d = this.bytes_[this.cursor_ + 3]; this.cursor_ += 4; jspb.asserts.assert(this.cursor_ <= this.end_); return (a << 0 | b << 8 | c << 16 | d << 24) >>> 0 }; jspb.BinaryDecoder.prototype.readUint64 = function () { var a = this.readUint32(), b = this.readUint32(); return jspb.utils.joinUint64(a, b) }; jspb.BinaryDecoder.prototype.readUint64String = function () { var a = this.readUint32(), b = this.readUint32(); return jspb.utils.joinUnsignedDecimalString(a, b) }; jspb.BinaryDecoder.prototype.readInt8 = function () { var a = this.bytes_[this.cursor_ + 0]; this.cursor_ += 1; jspb.asserts.assert(this.cursor_ <= this.end_); return a << 24 >> 24 }; jspb.BinaryDecoder.prototype.readInt16 = function () { var a = this.bytes_[this.cursor_ + 0], b = this.bytes_[this.cursor_ + 1]; this.cursor_ += 2; jspb.asserts.assert(this.cursor_ <= this.end_); return (a << 0 | b << 8) << 16 >> 16 }; jspb.BinaryDecoder.prototype.readInt32 = function () { var a = this.bytes_[this.cursor_ + 0], b = this.bytes_[this.cursor_ + 1], c = this.bytes_[this.cursor_ + 2], d = this.bytes_[this.cursor_ + 3]; this.cursor_ += 4; jspb.asserts.assert(this.cursor_ <= this.end_); return a << 0 | b << 8 | c << 16 | d << 24 }; jspb.BinaryDecoder.prototype.readInt64 = function () { var a = this.readUint32(), b = this.readUint32(); return jspb.utils.joinInt64(a, b) }; jspb.BinaryDecoder.prototype.readInt64String = function () { var a = this.readUint32(), b = this.readUint32(); return jspb.utils.joinSignedDecimalString(a, b) }; jspb.BinaryDecoder.prototype.readFloat = function () { var a = this.readUint32(); return jspb.utils.joinFloat32(a, 0) }; jspb.BinaryDecoder.prototype.readDouble = function () { var a = this.readUint32(), b = this.readUint32(); return jspb.utils.joinFloat64(a, b) }; jspb.BinaryDecoder.prototype.readBool = function () { return !!this.bytes_[this.cursor_++] }; jspb.BinaryDecoder.prototype.readEnum = function () { return this.readSignedVarint32() }; jspb.BinaryDecoder.prototype.readString = function (a) { var b = this.bytes_, c = this.cursor_; a = c + a; for (var d = [], e = ""; c < a;) { var f = b[c++]; if (128 > f) d.push(f); else if (192 > f) continue; else if (224 > f) { var g = b[c++]; d.push((f & 31) << 6 | g & 63); } else if (240 > f) { g = b[c++]; var h = b[c++]; d.push((f & 15) << 12 | (g & 63) << 6 | h & 63); } else if (248 > f) { g = b[c++]; h = b[c++]; var k = b[c++]; f = (f & 7) << 18 | (g & 63) << 12 | (h & 63) << 6 | k & 63; f -= 65536; d.push((f >> 10 & 1023) + 55296, (f & 1023) + 56320); } 8192 <= d.length && (e += String.fromCharCode.apply(null, d), d.length = 0); } e += goog.crypt.byteArrayToString(d); this.cursor_ = c; return e }; jspb.BinaryDecoder.prototype.readStringWithLength = function () { var a = this.readUnsignedVarint32(); return this.readString(a) }; jspb.BinaryDecoder.prototype.readBytes = function (a) { if (0 > a || this.cursor_ + a > this.bytes_.length) return this.error_ = !0, jspb.asserts.fail("Invalid byte length!"), new Uint8Array(0); var b = this.bytes_.subarray(this.cursor_, this.cursor_ + a); this.cursor_ += a; jspb.asserts.assert(this.cursor_ <= this.end_); return b }; jspb.BinaryDecoder.prototype.readVarintHash64 = function () { return this.readSplitVarint64(jspb.utils.joinHash64) }; jspb.BinaryDecoder.prototype.readFixedHash64 = function () { var a = this.bytes_, b = this.cursor_, c = a[b + 0], d = a[b + 1], e = a[b + 2], f = a[b + 3], g = a[b + 4], h = a[b + 5], k = a[b + 6]; a = a[b + 7]; this.cursor_ += 8; return String.fromCharCode(c, d, e, f, g, h, k, a) }; jspb.BinaryReader = function (a, b, c) { this.decoder_ = jspb.BinaryDecoder.alloc(a, b, c); this.fieldCursor_ = this.decoder_.getCursor(); this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER; this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID; this.error_ = !1; this.readCallbacks_ = null; }; jspb.BinaryReader.instanceCache_ = []; jspb.BinaryReader.alloc = function (a, b, c) { if (jspb.BinaryReader.instanceCache_.length) { var d = jspb.BinaryReader.instanceCache_.pop(); a && d.decoder_.setBlock(a, b, c); return d } return new jspb.BinaryReader(a, b, c) }; jspb.BinaryReader.prototype.alloc = jspb.BinaryReader.alloc; jspb.BinaryReader.prototype.free = function () { this.decoder_.clear(); this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER; this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID; this.error_ = !1; this.readCallbacks_ = null; 100 > jspb.BinaryReader.instanceCache_.length && jspb.BinaryReader.instanceCache_.push(this); }; jspb.BinaryReader.prototype.getFieldCursor = function () { return this.fieldCursor_ }; jspb.BinaryReader.prototype.getCursor = function () { return this.decoder_.getCursor() }; jspb.BinaryReader.prototype.getBuffer = function () { return this.decoder_.getBuffer() }; jspb.BinaryReader.prototype.getFieldNumber = function () { return this.nextField_ }; goog.exportProperty(jspb.BinaryReader.prototype, "getFieldNumber", jspb.BinaryReader.prototype.getFieldNumber); jspb.BinaryReader.prototype.getWireType = function () { return this.nextWireType_ }; jspb.BinaryReader.prototype.isDelimited = function () { return this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED }; goog.exportProperty(jspb.BinaryReader.prototype, "isDelimited", jspb.BinaryReader.prototype.isDelimited); jspb.BinaryReader.prototype.isEndGroup = function () { return this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP }; goog.exportProperty(jspb.BinaryReader.prototype, "isEndGroup", jspb.BinaryReader.prototype.isEndGroup); jspb.BinaryReader.prototype.getError = function () { return this.error_ || this.decoder_.getError() }; jspb.BinaryReader.prototype.setBlock = function (a, b, c) { this.decoder_.setBlock(a, b, c); this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER; this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID; }; jspb.BinaryReader.prototype.reset = function () { this.decoder_.reset(); this.nextField_ = jspb.BinaryConstants.INVALID_FIELD_NUMBER; this.nextWireType_ = jspb.BinaryConstants.WireType.INVALID; }; jspb.BinaryReader.prototype.advance = function (a) { this.decoder_.advance(a); }; jspb.BinaryReader.prototype.nextField = function () { if (this.decoder_.atEnd()) return !1; if (this.getError()) return jspb.asserts.fail("Decoder hit an error"), !1; this.fieldCursor_ = this.decoder_.getCursor(); var a = this.decoder_.readUnsignedVarint32(), b = a >>> 3; a &= 7; if (a != jspb.BinaryConstants.WireType.VARINT && a != jspb.BinaryConstants.WireType.FIXED32 && a != jspb.BinaryConstants.WireType.FIXED64 && a != jspb.BinaryConstants.WireType.DELIMITED && a != jspb.BinaryConstants.WireType.START_GROUP && a != jspb.BinaryConstants.WireType.END_GROUP) return jspb.asserts.fail("Invalid wire type: %s (at position %s)", a, this.fieldCursor_), this.error_ = !0, !1; this.nextField_ = b; this.nextWireType_ = a; return !0 }; goog.exportProperty(jspb.BinaryReader.prototype, "nextField", jspb.BinaryReader.prototype.nextField); jspb.BinaryReader.prototype.unskipHeader = function () { this.decoder_.unskipVarint(this.nextField_ << 3 | this.nextWireType_); }; jspb.BinaryReader.prototype.skipMatchingFields = function () { var a = this.nextField_; for (this.unskipHeader(); this.nextField() && this.getFieldNumber() == a;) this.skipField(); this.decoder_.atEnd() || this.unskipHeader(); }; jspb.BinaryReader.prototype.skipVarintField = function () { this.nextWireType_ != jspb.BinaryConstants.WireType.VARINT ? (jspb.asserts.fail("Invalid wire type for skipVarintField"), this.skipField()) : this.decoder_.skipVarint(); }; jspb.BinaryReader.prototype.skipDelimitedField = function () { if (this.nextWireType_ != jspb.BinaryConstants.WireType.DELIMITED) jspb.asserts.fail("Invalid wire type for skipDelimitedField"), this.skipField(); else { var a = this.decoder_.readUnsignedVarint32(); this.decoder_.advance(a); } }; jspb.BinaryReader.prototype.skipFixed32Field = function () { this.nextWireType_ != jspb.BinaryConstants.WireType.FIXED32 ? (jspb.asserts.fail("Invalid wire type for skipFixed32Field"), this.skipField()) : this.decoder_.advance(4); }; jspb.BinaryReader.prototype.skipFixed64Field = function () { this.nextWireType_ != jspb.BinaryConstants.WireType.FIXED64 ? (jspb.asserts.fail("Invalid wire type for skipFixed64Field"), this.skipField()) : this.decoder_.advance(8); }; jspb.BinaryReader.prototype.skipGroup = function () { var a = this.nextField_; do { if (!this.nextField()) { jspb.asserts.fail("Unmatched start-group tag: stream EOF"); this.error_ = !0; break } if (this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP) { this.nextField_ != a && (jspb.asserts.fail("Unmatched end-group tag"), this.error_ = !0); break } this.skipField(); } while (1) }; jspb.BinaryReader.prototype.skipField = function () { switch (this.nextWireType_) { case jspb.BinaryConstants.WireType.VARINT: this.skipVarintField(); break; case jspb.BinaryConstants.WireType.FIXED64: this.skipFixed64Field(); break; case jspb.BinaryConstants.WireType.DELIMITED: this.skipDelimitedField(); break; case jspb.BinaryConstants.WireType.FIXED32: this.skipFixed32Field(); break; case jspb.BinaryConstants.WireType.START_GROUP: this.skipGroup(); break; default: jspb.asserts.fail("Invalid wire encoding for field."); } }; jspb.BinaryReader.prototype.registerReadCallback = function (a, b) { null === this.readCallbacks_ && (this.readCallbacks_ = {}); jspb.asserts.assert(!this.readCallbacks_[a]); this.readCallbacks_[a] = b; }; jspb.BinaryReader.prototype.runReadCallback = function (a) { jspb.asserts.assert(null !== this.readCallbacks_); a = this.readCallbacks_[a]; jspb.asserts.assert(a); return a(this) }; jspb.BinaryReader.prototype.readAny = function (a) { this.nextWireType_ = jspb.BinaryConstants.FieldTypeToWireType(a); var b = jspb.BinaryConstants.FieldType; switch (a) { case b.DOUBLE: return this.readDouble(); case b.FLOAT: return this.readFloat(); case b.INT64: return this.readInt64(); case b.UINT64: return this.readUint64(); case b.INT32: return this.readInt32(); case b.FIXED64: return this.readFixed64(); case b.FIXED32: return this.readFixed32(); case b.BOOL: return this.readBool(); case b.STRING: return this.readString(); case b.GROUP: jspb.asserts.fail("Group field type not supported in readAny()"); case b.MESSAGE: jspb.asserts.fail("Message field type not supported in readAny()"); case b.BYTES: return this.readBytes(); case b.UINT32: return this.readUint32(); case b.ENUM: return this.readEnum(); case b.SFIXED32: return this.readSfixed32(); case b.SFIXED64: return this.readSfixed64(); case b.SINT32: return this.readSint32(); case b.SINT64: return this.readSint64(); case b.FHASH64: return this.readFixedHash64(); case b.VHASH64: return this.readVarintHash64(); default: jspb.asserts.fail("Invalid field type in readAny()"); } return 0 }; jspb.BinaryReader.prototype.readMessage = function (a, b) { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED); var c = this.decoder_.getEnd(), d = this.decoder_.readUnsignedVarint32(); d = this.decoder_.getCursor() + d; this.decoder_.setEnd(d); b(a, this); this.decoder_.setCursor(d); this.decoder_.setEnd(c); }; goog.exportProperty(jspb.BinaryReader.prototype, "readMessage", jspb.BinaryReader.prototype.readMessage); jspb.BinaryReader.prototype.readGroup = function (a, b, c) { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.START_GROUP); jspb.asserts.assert(this.nextField_ == a); c(b, this); this.error_ || this.nextWireType_ == jspb.BinaryConstants.WireType.END_GROUP || (jspb.asserts.fail("Group submessage did not end with an END_GROUP tag"), this.error_ = !0); }; goog.exportProperty(jspb.BinaryReader.prototype, "readGroup", jspb.BinaryReader.prototype.readGroup); jspb.BinaryReader.prototype.getFieldDecoder = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED); var a = this.decoder_.readUnsignedVarint32(), b = this.decoder_.getCursor(), c = b + a; a = jspb.BinaryDecoder.alloc(this.decoder_.getBuffer(), b, a); this.decoder_.setCursor(c); return a }; jspb.BinaryReader.prototype.readInt32 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSignedVarint32() }; goog.exportProperty(jspb.BinaryReader.prototype, "readInt32", jspb.BinaryReader.prototype.readInt32); jspb.BinaryReader.prototype.readInt32String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSignedVarint32String() }; jspb.BinaryReader.prototype.readInt64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSignedVarint64() }; goog.exportProperty(jspb.BinaryReader.prototype, "readInt64", jspb.BinaryReader.prototype.readInt64); jspb.BinaryReader.prototype.readInt64String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSignedVarint64String() }; jspb.BinaryReader.prototype.readUint32 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readUnsignedVarint32() }; goog.exportProperty(jspb.BinaryReader.prototype, "readUint32", jspb.BinaryReader.prototype.readUint32); jspb.BinaryReader.prototype.readUint32String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readUnsignedVarint32String() }; jspb.BinaryReader.prototype.readUint64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readUnsignedVarint64() }; goog.exportProperty(jspb.BinaryReader.prototype, "readUint64", jspb.BinaryReader.prototype.readUint64); jspb.BinaryReader.prototype.readUint64String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readUnsignedVarint64String() }; jspb.BinaryReader.prototype.readSint32 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readZigzagVarint32() }; goog.exportProperty(jspb.BinaryReader.prototype, "readSint32", jspb.BinaryReader.prototype.readSint32); jspb.BinaryReader.prototype.readSint64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readZigzagVarint64() }; goog.exportProperty(jspb.BinaryReader.prototype, "readSint64", jspb.BinaryReader.prototype.readSint64); jspb.BinaryReader.prototype.readSint64String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readZigzagVarint64String() }; jspb.BinaryReader.prototype.readFixed32 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32); return this.decoder_.readUint32() }; goog.exportProperty(jspb.BinaryReader.prototype, "readFixed32", jspb.BinaryReader.prototype.readFixed32); jspb.BinaryReader.prototype.readFixed64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readUint64() }; goog.exportProperty(jspb.BinaryReader.prototype, "readFixed64", jspb.BinaryReader.prototype.readFixed64); jspb.BinaryReader.prototype.readFixed64String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readUint64String() }; jspb.BinaryReader.prototype.readSfixed32 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32); return this.decoder_.readInt32() }; goog.exportProperty(jspb.BinaryReader.prototype, "readSfixed32", jspb.BinaryReader.prototype.readSfixed32); jspb.BinaryReader.prototype.readSfixed32String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32); return this.decoder_.readInt32().toString() }; jspb.BinaryReader.prototype.readSfixed64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readInt64() }; goog.exportProperty(jspb.BinaryReader.prototype, "readSfixed64", jspb.BinaryReader.prototype.readSfixed64); jspb.BinaryReader.prototype.readSfixed64String = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readInt64String() }; jspb.BinaryReader.prototype.readFloat = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED32); return this.decoder_.readFloat() }; goog.exportProperty(jspb.BinaryReader.prototype, "readFloat", jspb.BinaryReader.prototype.readFloat); jspb.BinaryReader.prototype.readDouble = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readDouble() }; goog.exportProperty(jspb.BinaryReader.prototype, "readDouble", jspb.BinaryReader.prototype.readDouble); jspb.BinaryReader.prototype.readBool = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return !!this.decoder_.readUnsignedVarint32() }; goog.exportProperty(jspb.BinaryReader.prototype, "readBool", jspb.BinaryReader.prototype.readBool); jspb.BinaryReader.prototype.readEnum = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSignedVarint64() }; goog.exportProperty(jspb.BinaryReader.prototype, "readEnum", jspb.BinaryReader.prototype.readEnum); jspb.BinaryReader.prototype.readString = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED); var a = this.decoder_.readUnsignedVarint32(); return this.decoder_.readString(a) }; goog.exportProperty(jspb.BinaryReader.prototype, "readString", jspb.BinaryReader.prototype.readString); jspb.BinaryReader.prototype.readBytes = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED); var a = this.decoder_.readUnsignedVarint32(); return this.decoder_.readBytes(a) }; goog.exportProperty(jspb.BinaryReader.prototype, "readBytes", jspb.BinaryReader.prototype.readBytes); jspb.BinaryReader.prototype.readVarintHash64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readVarintHash64() }; jspb.BinaryReader.prototype.readSintHash64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readZigzagVarintHash64() }; jspb.BinaryReader.prototype.readSplitVarint64 = function (a) { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSplitVarint64(a) }; jspb.BinaryReader.prototype.readSplitZigzagVarint64 = function (a) { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.VARINT); return this.decoder_.readSplitVarint64(function (b, c) { return jspb.utils.fromZigzag64(b, c, a) }) }; jspb.BinaryReader.prototype.readFixedHash64 = function () { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readFixedHash64() }; jspb.BinaryReader.prototype.readSplitFixed64 = function (a) { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.FIXED64); return this.decoder_.readSplitFixed64(a) }; jspb.BinaryReader.prototype.readPackedField_ = function (a) { jspb.asserts.assert(this.nextWireType_ == jspb.BinaryConstants.WireType.DELIMITED); var b = this.decoder_.readUnsignedVarint32(); b = this.decoder_.getCursor() + b; for (var c = []; this.decoder_.getCursor() < b;) c.push(a.call(this.decoder_)); return c }; jspb.BinaryReader.prototype.readPackedInt32 = function () { return this.readPackedField_(this.decoder_.readSignedVarint32) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedInt32", jspb.BinaryReader.prototype.readPackedInt32); jspb.BinaryReader.prototype.readPackedInt32String = function () { return this.readPackedField_(this.decoder_.readSignedVarint32String) }; jspb.BinaryReader.prototype.readPackedInt64 = function () { return this.readPackedField_(this.decoder_.readSignedVarint64) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedInt64", jspb.BinaryReader.prototype.readPackedInt64); jspb.BinaryReader.prototype.readPackedInt64String = function () { return this.readPackedField_(this.decoder_.readSignedVarint64String) }; jspb.BinaryReader.prototype.readPackedUint32 = function () { return this.readPackedField_(this.decoder_.readUnsignedVarint32) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedUint32", jspb.BinaryReader.prototype.readPackedUint32); jspb.BinaryReader.prototype.readPackedUint32String = function () { return this.readPackedField_(this.decoder_.readUnsignedVarint32String) }; jspb.BinaryReader.prototype.readPackedUint64 = function () { return this.readPackedField_(this.decoder_.readUnsignedVarint64) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedUint64", jspb.BinaryReader.prototype.readPackedUint64); jspb.BinaryReader.prototype.readPackedUint64String = function () { return this.readPackedField_(this.decoder_.readUnsignedVarint64String) }; jspb.BinaryReader.prototype.readPackedSint32 = function () { return this.readPackedField_(this.decoder_.readZigzagVarint32) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSint32", jspb.BinaryReader.prototype.readPackedSint32); jspb.BinaryReader.prototype.readPackedSint64 = function () { return this.readPackedField_(this.decoder_.readZigzagVarint64) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSint64", jspb.BinaryReader.prototype.readPackedSint64); jspb.BinaryReader.prototype.readPackedSint64String = function () { return this.readPackedField_(this.decoder_.readZigzagVarint64String) }; jspb.BinaryReader.prototype.readPackedFixed32 = function () { return this.readPackedField_(this.decoder_.readUint32) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFixed32", jspb.BinaryReader.prototype.readPackedFixed32); jspb.BinaryReader.prototype.readPackedFixed64 = function () { return this.readPackedField_(this.decoder_.readUint64) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFixed64", jspb.BinaryReader.prototype.readPackedFixed64); jspb.BinaryReader.prototype.readPackedFixed64String = function () { return this.readPackedField_(this.decoder_.readUint64String) }; jspb.BinaryReader.prototype.readPackedSfixed32 = function () { return this.readPackedField_(this.decoder_.readInt32) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSfixed32", jspb.BinaryReader.prototype.readPackedSfixed32); jspb.BinaryReader.prototype.readPackedSfixed64 = function () { return this.readPackedField_(this.decoder_.readInt64) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedSfixed64", jspb.BinaryReader.prototype.readPackedSfixed64); jspb.BinaryReader.prototype.readPackedSfixed64String = function () { return this.readPackedField_(this.decoder_.readInt64String) }; jspb.BinaryReader.prototype.readPackedFloat = function () { return this.readPackedField_(this.decoder_.readFloat) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedFloat", jspb.BinaryReader.prototype.readPackedFloat); jspb.BinaryReader.prototype.readPackedDouble = function () { return this.readPackedField_(this.decoder_.readDouble) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedDouble", jspb.BinaryReader.prototype.readPackedDouble); jspb.BinaryReader.prototype.readPackedBool = function () { return this.readPackedField_(this.decoder_.readBool) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedBool", jspb.BinaryReader.prototype.readPackedBool); jspb.BinaryReader.prototype.readPackedEnum = function () { return this.readPackedField_(this.decoder_.readEnum) }; goog.exportProperty(jspb.BinaryReader.prototype, "readPackedEnum", jspb.BinaryReader.prototype.readPackedEnum); jspb.BinaryReader.prototype.readPackedVarintHash64 = function () { return this.readPackedField_(this.decoder_.readVarintHash64) }; jspb.BinaryReader.prototype.readPackedFixedHash64 = function () { return this.readPackedField_(this.decoder_.readFixedHash64) }; jspb.BinaryEncoder = function () { this.buffer_ = []; }; jspb.BinaryEncoder.prototype.length = function () { return this.buffer_.length }; jspb.BinaryEncoder.prototype.end = function () { var a = this.buffer_; this.buffer_ = []; return a }; jspb.BinaryEncoder.prototype.writeSplitVarint64 = function (a, b) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(b == Math.floor(b)); jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32); for (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32); 0 < b || 127 < a;) this.buffer_.push(a & 127 | 128), a = (a >>> 7 | b << 25) >>> 0, b >>>= 7; this.buffer_.push(a); }; jspb.BinaryEncoder.prototype.writeSplitFixed64 = function (a, b) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(b == Math.floor(b)); jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32); jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32); this.writeUint32(a); this.writeUint32(b); }; jspb.BinaryEncoder.prototype.writeUnsignedVarint32 = function (a) { jspb.asserts.assert(a == Math.floor(a)); for (jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32); 127 < a;) this.buffer_.push(a & 127 | 128), a >>>= 7; this.buffer_.push(a); }; jspb.BinaryEncoder.prototype.writeSignedVarint32 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31); if (0 <= a) this.writeUnsignedVarint32(a); else { for (var b = 0; 9 > b; b++) this.buffer_.push(a & 127 | 128), a >>= 7; this.buffer_.push(1); } }; jspb.BinaryEncoder.prototype.writeUnsignedVarint64 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_64); jspb.utils.splitInt64(a); this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeSignedVarint64 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63); jspb.utils.splitInt64(a); this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeZigzagVarint32 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31); this.writeUnsignedVarint32((a << 1 ^ a >> 31) >>> 0); }; jspb.BinaryEncoder.prototype.writeZigzagVarint64 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63); jspb.utils.splitZigzag64(a); this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeZigzagVarint64String = function (a) { this.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(a)); }; jspb.BinaryEncoder.prototype.writeZigzagVarintHash64 = function (a) { var b = this; jspb.utils.splitHash64(a); jspb.utils.toZigzag64(jspb.utils.split64Low, jspb.utils.split64High, function (a, d) { b.writeSplitVarint64(a >>> 0, d >>> 0); }); }; jspb.BinaryEncoder.prototype.writeUint8 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(0 <= a && 256 > a); this.buffer_.push(a >>> 0 & 255); }; jspb.BinaryEncoder.prototype.writeUint16 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(0 <= a && 65536 > a); this.buffer_.push(a >>> 0 & 255); this.buffer_.push(a >>> 8 & 255); }; jspb.BinaryEncoder.prototype.writeUint32 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_32); this.buffer_.push(a >>> 0 & 255); this.buffer_.push(a >>> 8 & 255); this.buffer_.push(a >>> 16 & 255); this.buffer_.push(a >>> 24 & 255); }; jspb.BinaryEncoder.prototype.writeUint64 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(0 <= a && a < jspb.BinaryConstants.TWO_TO_64); jspb.utils.splitUint64(a); this.writeUint32(jspb.utils.split64Low); this.writeUint32(jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeInt8 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(-128 <= a && 128 > a); this.buffer_.push(a >>> 0 & 255); }; jspb.BinaryEncoder.prototype.writeInt16 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(-32768 <= a && 32768 > a); this.buffer_.push(a >>> 0 & 255); this.buffer_.push(a >>> 8 & 255); }; jspb.BinaryEncoder.prototype.writeInt32 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31); this.buffer_.push(a >>> 0 & 255); this.buffer_.push(a >>> 8 & 255); this.buffer_.push(a >>> 16 & 255); this.buffer_.push(a >>> 24 & 255); }; jspb.BinaryEncoder.prototype.writeInt64 = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_63 && a < jspb.BinaryConstants.TWO_TO_63); jspb.utils.splitInt64(a); this.writeSplitFixed64(jspb.utils.split64Low, jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeInt64String = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(+a >= -jspb.BinaryConstants.TWO_TO_63 && +a < jspb.BinaryConstants.TWO_TO_63); jspb.utils.splitHash64(jspb.utils.decimalStringToHash64(a)); this.writeSplitFixed64(jspb.utils.split64Low, jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeFloat = function (a) { jspb.asserts.assert(Infinity === a || -Infinity === a || isNaN(a) || a >= -jspb.BinaryConstants.FLOAT32_MAX && a <= jspb.BinaryConstants.FLOAT32_MAX); jspb.utils.splitFloat32(a); this.writeUint32(jspb.utils.split64Low); }; jspb.BinaryEncoder.prototype.writeDouble = function (a) { jspb.asserts.assert(Infinity === a || -Infinity === a || isNaN(a) || a >= -jspb.BinaryConstants.FLOAT64_MAX && a <= jspb.BinaryConstants.FLOAT64_MAX); jspb.utils.splitFloat64(a); this.writeUint32(jspb.utils.split64Low); this.writeUint32(jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeBool = function (a) { jspb.asserts.assert("boolean" === typeof a || "number" === typeof a); this.buffer_.push(a ? 1 : 0); }; jspb.BinaryEncoder.prototype.writeEnum = function (a) { jspb.asserts.assert(a == Math.floor(a)); jspb.asserts.assert(a >= -jspb.BinaryConstants.TWO_TO_31 && a < jspb.BinaryConstants.TWO_TO_31); this.writeSignedVarint32(a); }; jspb.BinaryEncoder.prototype.writeBytes = function (a) { this.buffer_.push.apply(this.buffer_, a); }; jspb.BinaryEncoder.prototype.writeVarintHash64 = function (a) { jspb.utils.splitHash64(a); this.writeSplitVarint64(jspb.utils.split64Low, jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeFixedHash64 = function (a) { jspb.utils.splitHash64(a); this.writeUint32(jspb.utils.split64Low); this.writeUint32(jspb.utils.split64High); }; jspb.BinaryEncoder.prototype.writeString = function (a) { var b = this.buffer_.length; jspb.asserts.assertString(a); for (var c = 0; c < a.length; c++) { var d = a.charCodeAt(c); if (128 > d) this.buffer_.push(d); else if (2048 > d) this.buffer_.push(d >> 6 | 192), this.buffer_.push(d & 63 | 128); else if (65536 > d) if (55296 <= d && 56319 >= d && c + 1 < a.length) { var e = a.charCodeAt(c + 1); 56320 <= e && 57343 >= e && (d = 1024 * (d - 55296) + e - 56320 + 65536, this.buffer_.push(d >> 18 | 240), this.buffer_.push(d >> 12 & 63 | 128), this.buffer_.push(d >> 6 & 63 | 128), this.buffer_.push(d & 63 | 128), c++); } else this.buffer_.push(d >> 12 | 224), this.buffer_.push(d >> 6 & 63 | 128), this.buffer_.push(d & 63 | 128); } return this.buffer_.length - b }; jspb.arith = {}; jspb.arith.UInt64 = function (a, b) { this.lo = a; this.hi = b; }; jspb.arith.UInt64.prototype.cmp = function (a) { return this.hi < a.hi || this.hi == a.hi && this.lo < a.lo ? -1 : this.hi == a.hi && this.lo == a.lo ? 0 : 1 }; jspb.arith.UInt64.prototype.rightShift = function () { return new jspb.arith.UInt64((this.lo >>> 1 | (this.hi & 1) << 31) >>> 0, this.hi >>> 1 >>> 0) }; jspb.arith.UInt64.prototype.leftShift = function () { return new jspb.arith.UInt64(this.lo << 1 >>> 0, (this.hi << 1 | this.lo >>> 31) >>> 0) }; jspb.arith.UInt64.prototype.msb = function () { return !!(this.hi & 2147483648) }; jspb.arith.UInt64.prototype.lsb = function () { return !!(this.lo & 1) }; jspb.arith.UInt64.prototype.zero = function () { return 0 == this.lo && 0 == this.hi }; jspb.arith.UInt64.prototype.add = function (a) { return new jspb.arith.UInt64((this.lo + a.lo & 4294967295) >>> 0 >>> 0, ((this.hi + a.hi & 4294967295) >>> 0) + (4294967296 <= this.lo + a.lo ? 1 : 0) >>> 0) }; jspb.arith.UInt64.prototype.sub = function (a) { return new jspb.arith.UInt64((this.lo - a.lo & 4294967295) >>> 0 >>> 0, ((this.hi - a.hi & 4294967295) >>> 0) - (0 > this.lo - a.lo ? 1 : 0) >>> 0) }; jspb.arith.UInt64.mul32x32 = function (a, b) { var c = a & 65535; a >>>= 16; var d = b & 65535, e = b >>> 16; b = c * d + 65536 * (c * e & 65535) + 65536 * (a * d & 65535); for (c = a * e + (c * e >>> 16) + (a * d >>> 16); 4294967296 <= b;) b -= 4294967296, c += 1; return new jspb.arith.UInt64(b >>> 0, c >>> 0) }; jspb.arith.UInt64.prototype.mul = function (a) { var b = jspb.arith.UInt64.mul32x32(this.lo, a); a = jspb.arith.UInt64.mul32x32(this.hi, a); a.hi = a.lo; a.lo = 0; return b.add(a) }; jspb.arith.UInt64.prototype.div = function (a) { if (0 == a) return []; var b = new jspb.arith.UInt64(0, 0), c = new jspb.arith.UInt64(this.lo, this.hi); a = new jspb.arith.UInt64(a, 0); for (var d = new jspb.arith.UInt64(1, 0); !a.msb();) a = a.leftShift(), d = d.leftShift(); for (; !d.zero();) 0 >= a.cmp(c) && (b = b.add(d), c = c.sub(a)), a = a.rightShift(), d = d.rightShift(); return [b, c] }; jspb.arith.UInt64.prototype.toString = function () { for (var a = "", b = this; !b.zero();) { b = b.div(10); var c = b[0]; a = b[1].lo + a; b = c; } "" == a && (a = "0"); return a }; jspb.arith.UInt64.fromString = function (a) { for (var b = new jspb.arith.UInt64(0, 0), c = new jspb.arith.UInt64(0, 0), d = 0; d < a.length; d++) { if ("0" > a[d] || "9" < a[d]) return null; var e = parseInt(a[d], 10); c.lo = e; b = b.mul(10).add(c); } return b }; jspb.arith.UInt64.prototype.clone = function () { return new jspb.arith.UInt64(this.lo, this.hi) }; jspb.arith.Int64 = function (a, b) { this.lo = a; this.hi = b; }; jspb.arith.Int64.prototype.add = function (a) { return new jspb.arith.Int64((this.lo + a.lo & 4294967295) >>> 0 >>> 0, ((this.hi + a.hi & 4294967295) >>> 0) + (4294967296 <= this.lo + a.lo ? 1 : 0) >>> 0) }; jspb.arith.Int64.prototype.sub = function (a) { return new jspb.arith.Int64((this.lo - a.lo & 4294967295) >>> 0 >>> 0, ((this.hi - a.hi & 4294967295) >>> 0) - (0 > this.lo - a.lo ? 1 : 0) >>> 0) }; jspb.arith.Int64.prototype.clone = function () { return new jspb.arith.Int64(this.lo, this.hi) }; jspb.arith.Int64.prototype.toString = function () { var a = 0 != (this.hi & 2147483648), b = new jspb.arith.UInt64(this.lo, this.hi); a && (b = (new jspb.arith.UInt64(0, 0)).sub(b)); return (a ? "-" : "") + b.toString() }; jspb.arith.Int64.fromString = function (a) { var b = 0 < a.length && "-" == a[0]; b && (a = a.substring(1)); a = jspb.arith.UInt64.fromString(a); if (null === a) return null; b && (a = (new jspb.arith.UInt64(0, 0)).sub(a)); return new jspb.arith.Int64(a.lo, a.hi) }; jspb.BinaryWriter = function () { this.blocks_ = []; this.totalLength_ = 0; this.encoder_ = new jspb.BinaryEncoder; this.bookmarks_ = []; }; jspb.BinaryWriter.prototype.appendUint8Array_ = function (a) { var b = this.encoder_.end(); this.blocks_.push(b); this.blocks_.push(a); this.totalLength_ += b.length + a.length; }; jspb.BinaryWriter.prototype.beginDelimited_ = function (a) { this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED); a = this.encoder_.end(); this.blocks_.push(a); this.totalLength_ += a.length; a.push(this.totalLength_); return a }; jspb.BinaryWriter.prototype.endDelimited_ = function (a) { var b = a.pop(); b = this.totalLength_ + this.encoder_.length() - b; for (jspb.asserts.assert(0 <= b); 127 < b;) a.push(b & 127 | 128), b >>>= 7, this.totalLength_++; a.push(b); this.totalLength_++; }; jspb.BinaryWriter.prototype.writeSerializedMessage = function (a, b, c) { this.appendUint8Array_(a.subarray(b, c)); }; jspb.BinaryWriter.prototype.maybeWriteSerializedMessage = function (a, b, c) { null != a && null != b && null != c && this.writeSerializedMessage(a, b, c); }; jspb.BinaryWriter.prototype.reset = function () { this.blocks_ = []; this.encoder_.end(); this.totalLength_ = 0; this.bookmarks_ = []; }; jspb.BinaryWriter.prototype.getResultBuffer = function () { jspb.asserts.assert(0 == this.bookmarks_.length); for (var a = new Uint8Array(this.totalLength_ + this.encoder_.length()), b = this.blocks_, c = b.length, d = 0, e = 0; e < c; e++) { var f = b[e]; a.set(f, d); d += f.length; } b = this.encoder_.end(); a.set(b, d); d += b.length; jspb.asserts.assert(d == a.length); this.blocks_ = [a]; return a }; goog.exportProperty(jspb.BinaryWriter.prototype, "getResultBuffer", jspb.BinaryWriter.prototype.getResultBuffer); jspb.BinaryWriter.prototype.getResultBase64String = function (a) { return goog.crypt.base64.encodeByteArray(this.getResultBuffer(), a) }; jspb.BinaryWriter.prototype.beginSubMessage = function (a) { this.bookmarks_.push(this.beginDelimited_(a)); }; jspb.BinaryWriter.prototype.endSubMessage = function () { jspb.asserts.assert(0 <= this.bookmarks_.length); this.endDelimited_(this.bookmarks_.pop()); }; jspb.BinaryWriter.prototype.writeFieldHeader_ = function (a, b) { jspb.asserts.assert(1 <= a && a == Math.floor(a)); this.encoder_.writeUnsignedVarint32(8 * a + b); }; jspb.BinaryWriter.prototype.writeAny = function (a, b, c) { var d = jspb.BinaryConstants.FieldType; switch (a) { case d.DOUBLE: this.writeDouble(b, c); break; case d.FLOAT: this.writeFloat(b, c); break; case d.INT64: this.writeInt64(b, c); break; case d.UINT64: this.writeUint64(b, c); break; case d.INT32: this.writeInt32(b, c); break; case d.FIXED64: this.writeFixed64(b, c); break; case d.FIXED32: this.writeFixed32(b, c); break; case d.BOOL: this.writeBool(b, c); break; case d.STRING: this.writeString(b, c); break; case d.GROUP: jspb.asserts.fail("Group field type not supported in writeAny()"); break; case d.MESSAGE: jspb.asserts.fail("Message field type not supported in writeAny()"); break; case d.BYTES: this.writeBytes(b, c); break; case d.UINT32: this.writeUint32(b, c); break; case d.ENUM: this.writeEnum(b, c); break; case d.SFIXED32: this.writeSfixed32(b, c); break; case d.SFIXED64: this.writeSfixed64(b, c); break; case d.SINT32: this.writeSint32(b, c); break; case d.SINT64: this.writeSint64(b, c); break; case d.FHASH64: this.writeFixedHash64(b, c); break; case d.VHASH64: this.writeVarintHash64(b, c); break; default: jspb.asserts.fail("Invalid field type in writeAny()"); } }; jspb.BinaryWriter.prototype.writeUnsignedVarint32_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeUnsignedVarint32(b)); }; jspb.BinaryWriter.prototype.writeSignedVarint32_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(b)); }; jspb.BinaryWriter.prototype.writeUnsignedVarint64_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeUnsignedVarint64(b)); }; jspb.BinaryWriter.prototype.writeSignedVarint64_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint64(b)); }; jspb.BinaryWriter.prototype.writeZigzagVarint32_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint32(b)); }; jspb.BinaryWriter.prototype.writeZigzagVarint64_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint64(b)); }; jspb.BinaryWriter.prototype.writeZigzagVarint64String_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarint64String(b)); }; jspb.BinaryWriter.prototype.writeZigzagVarintHash64_ = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeZigzagVarintHash64(b)); }; jspb.BinaryWriter.prototype.writeInt32 = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeSignedVarint32_(a, b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeInt32", jspb.BinaryWriter.prototype.writeInt32); jspb.BinaryWriter.prototype.writeInt32String = function (a, b) { null != b && (b = parseInt(b, 10), jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeSignedVarint32_(a, b)); }; jspb.BinaryWriter.prototype.writeInt64 = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeSignedVarint64_(a, b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeInt64", jspb.BinaryWriter.prototype.writeInt64); jspb.BinaryWriter.prototype.writeInt64String = function (a, b) { null != b && (b = jspb.arith.Int64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSplitVarint64(b.lo, b.hi)); }; jspb.BinaryWriter.prototype.writeUint32 = function (a, b) { null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeUnsignedVarint32_(a, b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeUint32", jspb.BinaryWriter.prototype.writeUint32); jspb.BinaryWriter.prototype.writeUint32String = function (a, b) { null != b && (b = parseInt(b, 10), jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeUnsignedVarint32_(a, b)); }; jspb.BinaryWriter.prototype.writeUint64 = function (a, b) { null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_64), this.writeUnsignedVarint64_(a, b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeUint64", jspb.BinaryWriter.prototype.writeUint64); jspb.BinaryWriter.prototype.writeUint64String = function (a, b) { null != b && (b = jspb.arith.UInt64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSplitVarint64(b.lo, b.hi)); }; jspb.BinaryWriter.prototype.writeSint32 = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeZigzagVarint32_(a, b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeSint32", jspb.BinaryWriter.prototype.writeSint32); jspb.BinaryWriter.prototype.writeSint64 = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeZigzagVarint64_(a, b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeSint64", jspb.BinaryWriter.prototype.writeSint64); jspb.BinaryWriter.prototype.writeSintHash64 = function (a, b) { null != b && this.writeZigzagVarintHash64_(a, b); }; jspb.BinaryWriter.prototype.writeSint64String = function (a, b) { null != b && this.writeZigzagVarint64String_(a, b); }; jspb.BinaryWriter.prototype.writeFixed32 = function (a, b) { null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_32), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeUint32(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeFixed32", jspb.BinaryWriter.prototype.writeFixed32); jspb.BinaryWriter.prototype.writeFixed64 = function (a, b) { null != b && (jspb.asserts.assert(0 <= b && b < jspb.BinaryConstants.TWO_TO_64), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeUint64(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeFixed64", jspb.BinaryWriter.prototype.writeFixed64); jspb.BinaryWriter.prototype.writeFixed64String = function (a, b) { null != b && (b = jspb.arith.UInt64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeSplitFixed64(b.lo, b.hi)); }; jspb.BinaryWriter.prototype.writeSfixed32 = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeInt32(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeSfixed32", jspb.BinaryWriter.prototype.writeSfixed32); jspb.BinaryWriter.prototype.writeSfixed64 = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_63 && b < jspb.BinaryConstants.TWO_TO_63), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeInt64(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeSfixed64", jspb.BinaryWriter.prototype.writeSfixed64); jspb.BinaryWriter.prototype.writeSfixed64String = function (a, b) { null != b && (b = jspb.arith.Int64.fromString(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeSplitFixed64(b.lo, b.hi)); }; jspb.BinaryWriter.prototype.writeFloat = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED32), this.encoder_.writeFloat(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeFloat", jspb.BinaryWriter.prototype.writeFloat); jspb.BinaryWriter.prototype.writeDouble = function (a, b) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeDouble(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeDouble", jspb.BinaryWriter.prototype.writeDouble); jspb.BinaryWriter.prototype.writeBool = function (a, b) { null != b && (jspb.asserts.assert("boolean" === typeof b || "number" === typeof b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeBool(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeBool", jspb.BinaryWriter.prototype.writeBool); jspb.BinaryWriter.prototype.writeEnum = function (a, b) { null != b && (jspb.asserts.assert(b >= -jspb.BinaryConstants.TWO_TO_31 && b < jspb.BinaryConstants.TWO_TO_31), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeEnum", jspb.BinaryWriter.prototype.writeEnum); jspb.BinaryWriter.prototype.writeString = function (a, b) { null != b && (a = this.beginDelimited_(a), this.encoder_.writeString(b), this.endDelimited_(a)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeString", jspb.BinaryWriter.prototype.writeString); jspb.BinaryWriter.prototype.writeBytes = function (a, b) { null != b && (b = jspb.utils.byteSourceToUint8Array(b), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(b.length), this.appendUint8Array_(b)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeBytes", jspb.BinaryWriter.prototype.writeBytes); jspb.BinaryWriter.prototype.writeMessage = function (a, b, c) { null != b && (a = this.beginDelimited_(a), c(b, this), this.endDelimited_(a)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeMessage", jspb.BinaryWriter.prototype.writeMessage); jspb.BinaryWriter.prototype.writeMessageSet = function (a, b, c) { null != b && (this.writeFieldHeader_(1, jspb.BinaryConstants.WireType.START_GROUP), this.writeFieldHeader_(2, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeSignedVarint32(a), a = this.beginDelimited_(3), c(b, this), this.endDelimited_(a), this.writeFieldHeader_(1, jspb.BinaryConstants.WireType.END_GROUP)); }; jspb.BinaryWriter.prototype.writeGroup = function (a, b, c) { null != b && (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.START_GROUP), c(b, this), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.END_GROUP)); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeGroup", jspb.BinaryWriter.prototype.writeGroup); jspb.BinaryWriter.prototype.writeFixedHash64 = function (a, b) { null != b && (jspb.asserts.assert(8 == b.length), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64), this.encoder_.writeFixedHash64(b)); }; jspb.BinaryWriter.prototype.writeVarintHash64 = function (a, b) { null != b && (jspb.asserts.assert(8 == b.length), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT), this.encoder_.writeVarintHash64(b)); }; jspb.BinaryWriter.prototype.writeSplitFixed64 = function (a, b, c) { this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.FIXED64); this.encoder_.writeSplitFixed64(b, c); }; jspb.BinaryWriter.prototype.writeSplitVarint64 = function (a, b, c) { this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT); this.encoder_.writeSplitVarint64(b, c); }; jspb.BinaryWriter.prototype.writeSplitZigzagVarint64 = function (a, b, c) { this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.VARINT); var d = this.encoder_; jspb.utils.toZigzag64(b, c, function (a, b) { d.writeSplitVarint64(a >>> 0, b >>> 0); }); }; jspb.BinaryWriter.prototype.writeRepeatedInt32 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeSignedVarint32_(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedInt32", jspb.BinaryWriter.prototype.writeRepeatedInt32); jspb.BinaryWriter.prototype.writeRepeatedInt32String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeInt32String(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedInt64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeSignedVarint64_(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedInt64", jspb.BinaryWriter.prototype.writeRepeatedInt64); jspb.BinaryWriter.prototype.writeRepeatedSplitFixed64 = function (a, b, c, d) { if (null != b) for (var e = 0; e < b.length; e++) this.writeSplitFixed64(a, c(b[e]), d(b[e])); }; jspb.BinaryWriter.prototype.writeRepeatedSplitVarint64 = function (a, b, c, d) { if (null != b) for (var e = 0; e < b.length; e++) this.writeSplitVarint64(a, c(b[e]), d(b[e])); }; jspb.BinaryWriter.prototype.writeRepeatedSplitZigzagVarint64 = function (a, b, c, d) { if (null != b) for (var e = 0; e < b.length; e++) this.writeSplitZigzagVarint64(a, c(b[e]), d(b[e])); }; jspb.BinaryWriter.prototype.writeRepeatedInt64String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeInt64String(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedUint32 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeUnsignedVarint32_(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedUint32", jspb.BinaryWriter.prototype.writeRepeatedUint32); jspb.BinaryWriter.prototype.writeRepeatedUint32String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeUint32String(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedUint64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeUnsignedVarint64_(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedUint64", jspb.BinaryWriter.prototype.writeRepeatedUint64); jspb.BinaryWriter.prototype.writeRepeatedUint64String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeUint64String(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedSint32 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeZigzagVarint32_(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSint32", jspb.BinaryWriter.prototype.writeRepeatedSint32); jspb.BinaryWriter.prototype.writeRepeatedSint64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeZigzagVarint64_(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSint64", jspb.BinaryWriter.prototype.writeRepeatedSint64); jspb.BinaryWriter.prototype.writeRepeatedSint64String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeZigzagVarint64String_(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedSintHash64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeZigzagVarintHash64_(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedFixed32 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeFixed32(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed32", jspb.BinaryWriter.prototype.writeRepeatedFixed32); jspb.BinaryWriter.prototype.writeRepeatedFixed64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeFixed64(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed64", jspb.BinaryWriter.prototype.writeRepeatedFixed64); jspb.BinaryWriter.prototype.writeRepeatedFixed64String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeFixed64String(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFixed64String", jspb.BinaryWriter.prototype.writeRepeatedFixed64String); jspb.BinaryWriter.prototype.writeRepeatedSfixed32 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeSfixed32(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSfixed32", jspb.BinaryWriter.prototype.writeRepeatedSfixed32); jspb.BinaryWriter.prototype.writeRepeatedSfixed64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeSfixed64(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedSfixed64", jspb.BinaryWriter.prototype.writeRepeatedSfixed64); jspb.BinaryWriter.prototype.writeRepeatedSfixed64String = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeSfixed64String(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedFloat = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeFloat(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedFloat", jspb.BinaryWriter.prototype.writeRepeatedFloat); jspb.BinaryWriter.prototype.writeRepeatedDouble = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeDouble(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedDouble", jspb.BinaryWriter.prototype.writeRepeatedDouble); jspb.BinaryWriter.prototype.writeRepeatedBool = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeBool(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedBool", jspb.BinaryWriter.prototype.writeRepeatedBool); jspb.BinaryWriter.prototype.writeRepeatedEnum = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeEnum(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedEnum", jspb.BinaryWriter.prototype.writeRepeatedEnum); jspb.BinaryWriter.prototype.writeRepeatedString = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeString(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedString", jspb.BinaryWriter.prototype.writeRepeatedString); jspb.BinaryWriter.prototype.writeRepeatedBytes = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeBytes(a, b[c]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedBytes", jspb.BinaryWriter.prototype.writeRepeatedBytes); jspb.BinaryWriter.prototype.writeRepeatedMessage = function (a, b, c) { if (null != b) for (var d = 0; d < b.length; d++) { var e = this.beginDelimited_(a); c(b[d], this); this.endDelimited_(e); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedMessage", jspb.BinaryWriter.prototype.writeRepeatedMessage); jspb.BinaryWriter.prototype.writeRepeatedGroup = function (a, b, c) { if (null != b) for (var d = 0; d < b.length; d++) this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.START_GROUP), c(b[d], this), this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.END_GROUP); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writeRepeatedGroup", jspb.BinaryWriter.prototype.writeRepeatedGroup); jspb.BinaryWriter.prototype.writeRepeatedFixedHash64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeFixedHash64(a, b[c]); }; jspb.BinaryWriter.prototype.writeRepeatedVarintHash64 = function (a, b) { if (null != b) for (var c = 0; c < b.length; c++) this.writeVarintHash64(a, b[c]); }; jspb.BinaryWriter.prototype.writePackedInt32 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeSignedVarint32(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedInt32", jspb.BinaryWriter.prototype.writePackedInt32); jspb.BinaryWriter.prototype.writePackedInt32String = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeSignedVarint32(parseInt(b[c], 10)); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedInt64 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeSignedVarint64(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedInt64", jspb.BinaryWriter.prototype.writePackedInt64); jspb.BinaryWriter.prototype.writePackedSplitFixed64 = function (a, b, c, d) { if (null != b) { a = this.beginDelimited_(a); for (var e = 0; e < b.length; e++) this.encoder_.writeSplitFixed64(c(b[e]), d(b[e])); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedSplitVarint64 = function (a, b, c, d) { if (null != b) { a = this.beginDelimited_(a); for (var e = 0; e < b.length; e++) this.encoder_.writeSplitVarint64(c(b[e]), d(b[e])); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedSplitZigzagVarint64 = function (a, b, c, d) { if (null != b) { a = this.beginDelimited_(a); for (var e = this.encoder_, f = 0; f < b.length; f++) jspb.utils.toZigzag64(c(b[f]), d(b[f]), function (a, b) { e.writeSplitVarint64(a >>> 0, b >>> 0); }); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedInt64String = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) { var d = jspb.arith.Int64.fromString(b[c]); this.encoder_.writeSplitVarint64(d.lo, d.hi); } this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedUint32 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeUnsignedVarint32(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedUint32", jspb.BinaryWriter.prototype.writePackedUint32); jspb.BinaryWriter.prototype.writePackedUint32String = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeUnsignedVarint32(parseInt(b[c], 10)); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedUint64 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeUnsignedVarint64(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedUint64", jspb.BinaryWriter.prototype.writePackedUint64); jspb.BinaryWriter.prototype.writePackedUint64String = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) { var d = jspb.arith.UInt64.fromString(b[c]); this.encoder_.writeSplitVarint64(d.lo, d.hi); } this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedSint32 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeZigzagVarint32(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSint32", jspb.BinaryWriter.prototype.writePackedSint32); jspb.BinaryWriter.prototype.writePackedSint64 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeZigzagVarint64(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSint64", jspb.BinaryWriter.prototype.writePackedSint64); jspb.BinaryWriter.prototype.writePackedSint64String = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeZigzagVarintHash64(jspb.utils.decimalStringToHash64(b[c])); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedSintHash64 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeZigzagVarintHash64(b[c]); this.endDelimited_(a); } }; jspb.BinaryWriter.prototype.writePackedFixed32 = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) this.encoder_.writeUint32(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFixed32", jspb.BinaryWriter.prototype.writePackedFixed32); jspb.BinaryWriter.prototype.writePackedFixed64 = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) this.encoder_.writeUint64(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFixed64", jspb.BinaryWriter.prototype.writePackedFixed64); jspb.BinaryWriter.prototype.writePackedFixed64String = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) { var c = jspb.arith.UInt64.fromString(b[a]); this.encoder_.writeSplitFixed64(c.lo, c.hi); } }; jspb.BinaryWriter.prototype.writePackedSfixed32 = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) this.encoder_.writeInt32(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSfixed32", jspb.BinaryWriter.prototype.writePackedSfixed32); jspb.BinaryWriter.prototype.writePackedSfixed64 = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) this.encoder_.writeInt64(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedSfixed64", jspb.BinaryWriter.prototype.writePackedSfixed64); jspb.BinaryWriter.prototype.writePackedSfixed64String = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) this.encoder_.writeInt64String(b[a]); }; jspb.BinaryWriter.prototype.writePackedFloat = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(4 * b.length), a = 0; a < b.length; a++) this.encoder_.writeFloat(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedFloat", jspb.BinaryWriter.prototype.writePackedFloat); jspb.BinaryWriter.prototype.writePackedDouble = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) this.encoder_.writeDouble(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedDouble", jspb.BinaryWriter.prototype.writePackedDouble); jspb.BinaryWriter.prototype.writePackedBool = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(b.length), a = 0; a < b.length; a++) this.encoder_.writeBool(b[a]); }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedBool", jspb.BinaryWriter.prototype.writePackedBool); jspb.BinaryWriter.prototype.writePackedEnum = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeEnum(b[c]); this.endDelimited_(a); } }; goog.exportProperty(jspb.BinaryWriter.prototype, "writePackedEnum", jspb.BinaryWriter.prototype.writePackedEnum); jspb.BinaryWriter.prototype.writePackedFixedHash64 = function (a, b) { if (null != b && b.length) for (this.writeFieldHeader_(a, jspb.BinaryConstants.WireType.DELIMITED), this.encoder_.writeUnsignedVarint32(8 * b.length), a = 0; a < b.length; a++) this.encoder_.writeFixedHash64(b[a]); }; jspb.BinaryWriter.prototype.writePackedVarintHash64 = function (a, b) { if (null != b && b.length) { a = this.beginDelimited_(a); for (var c = 0; c < b.length; c++) this.encoder_.writeVarintHash64(b[c]); this.endDelimited_(a); } }; jspb.Map = function (a, b) { this.arr_ = a; this.valueCtor_ = b; this.map_ = {}; this.arrClean = !0; 0 < this.arr_.length && this.loadFromArray_(); }; goog.exportSymbol("jspb.Map", jspb.Map); jspb.Map.prototype.loadFromArray_ = function () { for (var a = 0; a < this.arr_.length; a++) { var b = this.arr_[a], c = b[0]; this.map_[c.toString()] = new jspb.Map.Entry_(c, b[1]); } this.arrClean = !0; }; jspb.Map.prototype.toArray = function () { if (this.arrClean) { if (this.valueCtor_) { var a = this.map_, b; for (b in a) if (Object.prototype.hasOwnProperty.call(a, b)) { var c = a[b].valueWrapper; c && c.toArray(); } } } else { this.arr_.length = 0; a = this.stringKeys_(); a.sort(); for (b = 0; b < a.length; b++) { var d = this.map_[a[b]]; (c = d.valueWrapper) && c.toArray(); this.arr_.push([d.key, d.value]); } this.arrClean = !0; } return this.arr_ }; goog.exportProperty(jspb.Map.prototype, "toArray", jspb.Map.prototype.toArray); jspb.Map.prototype.toObject = function (a, b) { for (var c = this.toArray(), d = [], e = 0; e < c.length; e++) { var f = this.map_[c[e][0].toString()]; this.wrapEntry_(f); var g = f.valueWrapper; g ? (jspb.asserts.assert(b), d.push([f.key, b(a, g)])) : d.push([f.key, f.value]); } return d }; goog.exportProperty(jspb.Map.prototype, "toObject", jspb.Map.prototype.toObject); jspb.Map.fromObject = function (a, b, c) { b = new jspb.Map([], b); for (var d = 0; d < a.length; d++) { var e = a[d][0], f = c(a[d][1]); b.set(e, f); } return b }; goog.exportProperty(jspb.Map, "fromObject", jspb.Map.fromObject); jspb.Map.ArrayIteratorIterable_ = function (a) { this.idx_ = 0; this.arr_ = a; }; jspb.Map.ArrayIteratorIterable_.prototype.next = function () { return this.idx_ < this.arr_.length ? {done: !1, value: this.arr_[this.idx_++]} : {done: !0, value: void 0} }; "undefined" != typeof Symbol && (jspb.Map.ArrayIteratorIterable_.prototype[Symbol.iterator] = function () { return this }); jspb.Map.prototype.getLength = function () { return this.stringKeys_().length }; goog.exportProperty(jspb.Map.prototype, "getLength", jspb.Map.prototype.getLength); jspb.Map.prototype.clear = function () { this.map_ = {}; this.arrClean = !1; }; goog.exportProperty(jspb.Map.prototype, "clear", jspb.Map.prototype.clear); jspb.Map.prototype.del = function (a) { a = a.toString(); var b = this.map_.hasOwnProperty(a); delete this.map_[a]; this.arrClean = !1; return b }; goog.exportProperty(jspb.Map.prototype, "del", jspb.Map.prototype.del); jspb.Map.prototype.getEntryList = function () { var a = [], b = this.stringKeys_(); b.sort(); for (var c = 0; c < b.length; c++) { var d = this.map_[b[c]]; a.push([d.key, d.value]); } return a }; goog.exportProperty(jspb.Map.prototype, "getEntryList", jspb.Map.prototype.getEntryList); jspb.Map.prototype.entries = function () { var a = [], b = this.stringKeys_(); b.sort(); for (var c = 0; c < b.length; c++) { var d = this.map_[b[c]]; a.push([d.key, this.wrapEntry_(d)]); } return new jspb.Map.ArrayIteratorIterable_(a) }; goog.exportProperty(jspb.Map.prototype, "entries", jspb.Map.prototype.entries); jspb.Map.prototype.keys = function () { var a = [], b = this.stringKeys_(); b.sort(); for (var c = 0; c < b.length; c++) a.push(this.map_[b[c]].key); return new jspb.Map.ArrayIteratorIterable_(a) }; goog.exportProperty(jspb.Map.prototype, "keys", jspb.Map.prototype.keys); jspb.Map.prototype.values = function () { var a = [], b = this.stringKeys_(); b.sort(); for (var c = 0; c < b.length; c++) a.push(this.wrapEntry_(this.map_[b[c]])); return new jspb.Map.ArrayIteratorIterable_(a) }; goog.exportProperty(jspb.Map.prototype, "values", jspb.Map.prototype.values); jspb.Map.prototype.forEach = function (a, b) { var c = this.stringKeys_(); c.sort(); for (var d = 0; d < c.length; d++) { var e = this.map_[c[d]]; a.call(b, this.wrapEntry_(e), e.key, this); } }; goog.exportProperty(jspb.Map.prototype, "forEach", jspb.Map.prototype.forEach); jspb.Map.prototype.set = function (a, b) { var c = new jspb.Map.Entry_(a); this.valueCtor_ ? (c.valueWrapper = b, c.value = b.toArray()) : c.value = b; this.map_[a.toString()] = c; this.arrClean = !1; return this }; goog.exportProperty(jspb.Map.prototype, "set", jspb.Map.prototype.set); jspb.Map.prototype.wrapEntry_ = function (a) { return this.valueCtor_ ? (a.valueWrapper || (a.valueWrapper = new this.valueCtor_(a.value)), a.valueWrapper) : a.value }; jspb.Map.prototype.get = function (a) { if (a = this.map_[a.toString()]) return this.wrapEntry_(a) }; goog.exportProperty(jspb.Map.prototype, "get", jspb.Map.prototype.get); jspb.Map.prototype.has = function (a) { return a.toString() in this.map_ }; goog.exportProperty(jspb.Map.prototype, "has", jspb.Map.prototype.has); jspb.Map.prototype.serializeBinary = function (a, b, c, d, e) { var f = this.stringKeys_(); f.sort(); for (var g = 0; g < f.length; g++) { var h = this.map_[f[g]]; b.beginSubMessage(a); c.call(b, 1, h.key); this.valueCtor_ ? d.call(b, 2, this.wrapEntry_(h), e) : d.call(b, 2, h.value); b.endSubMessage(); } }; goog.exportProperty(jspb.Map.prototype, "serializeBinary", jspb.Map.prototype.serializeBinary); jspb.Map.deserializeBinary = function (a, b, c, d, e, f, g) { for (; b.nextField() && !b.isEndGroup();) { var h = b.getFieldNumber(); 1 == h ? f = c.call(b) : 2 == h && (a.valueCtor_ ? (jspb.asserts.assert(e), g || (g = new a.valueCtor_), d.call(b, g, e)) : g = d.call(b)); } jspb.asserts.assert(void 0 != f); jspb.asserts.assert(void 0 != g); a.set(f, g); }; goog.exportProperty(jspb.Map, "deserializeBinary", jspb.Map.deserializeBinary); jspb.Map.prototype.stringKeys_ = function () { var a = this.map_, b = [], c; for (c in a) Object.prototype.hasOwnProperty.call(a, c) && b.push(c); return b }; jspb.Map.Entry_ = function (a, b) { this.key = a; this.value = b; this.valueWrapper = void 0; }; jspb.ExtensionFieldInfo = function (a, b, c, d, e) { this.fieldIndex = a; this.fieldName = b; this.ctor = c; this.toObjectFn = d; this.isRepeated = e; }; goog.exportSymbol("jspb.ExtensionFieldInfo", jspb.ExtensionFieldInfo); jspb.ExtensionFieldBinaryInfo = function (a, b, c, d, e, f) { this.fieldInfo = a; this.binaryReaderFn = b; this.binaryWriterFn = c; this.binaryMessageSerializeFn = d; this.binaryMessageDeserializeFn = e; this.isPacked = f; }; goog.exportSymbol("jspb.ExtensionFieldBinaryInfo", jspb.ExtensionFieldBinaryInfo); jspb.ExtensionFieldInfo.prototype.isMessageType = function () { return !!this.ctor }; goog.exportProperty(jspb.ExtensionFieldInfo.prototype, "isMessageType", jspb.ExtensionFieldInfo.prototype.isMessageType); jspb.Message = function () { }; goog.exportSymbol("jspb.Message", jspb.Message); jspb.Message.GENERATE_TO_OBJECT = !0; goog.exportProperty(jspb.Message, "GENERATE_TO_OBJECT", jspb.Message.GENERATE_TO_OBJECT); jspb.Message.GENERATE_FROM_OBJECT = !goog.DISALLOW_TEST_ONLY_CODE; goog.exportProperty(jspb.Message, "GENERATE_FROM_OBJECT", jspb.Message.GENERATE_FROM_OBJECT); jspb.Message.GENERATE_TO_STRING = !0; jspb.Message.ASSUME_LOCAL_ARRAYS = !1; jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS = !0; jspb.Message.SUPPORTS_UINT8ARRAY_ = "function" == typeof Uint8Array; jspb.Message.prototype.getJsPbMessageId = function () { return this.messageId_ }; goog.exportProperty(jspb.Message.prototype, "getJsPbMessageId", jspb.Message.prototype.getJsPbMessageId); jspb.Message.getIndex_ = function (a, b) { return b + a.arrayIndexOffset_ }; jspb.Message.hiddenES6Property_ = function () { }; jspb.Message.getFieldNumber_ = function (a, b) { return b - a.arrayIndexOffset_ }; jspb.Message.initialize = function (a, b, c, d, e, f) { a.wrappers_ = null; b || (b = c ? [c] : []); a.messageId_ = c ? String(c) : void 0; a.arrayIndexOffset_ = 0 === c ? -1 : 0; a.array = b; jspb.Message.initPivotAndExtensionObject_(a, d); a.convertedPrimitiveFields_ = {}; jspb.Message.SERIALIZE_EMPTY_TRAILING_FIELDS || (a.repeatedFields = e); if (e) for (b = 0; b < e.length; b++) c = e[b], c < a.pivot_ ? (c = jspb.Message.getIndex_(a, c), a.array[c] = a.array[c] || jspb.Message.EMPTY_LIST_SENTINEL_) : (jspb.Message.maybeInitEmptyExtensionObject_(a), a.extensionObject_[c] = a.extensionObject_[c] || jspb.Message.EMPTY_LIST_SENTINEL_); if (f && f.length) for (b = 0; b < f.length; b++) jspb.Message.computeOneofCase(a, f[b]); }; goog.exportProperty(jspb.Message, "initialize", jspb.Message.initialize); jspb.Message.EMPTY_LIST_SENTINEL_ = goog.DEBUG && Object.freeze ? Object.freeze([]) : []; jspb.Message.isArray_ = function (a) { return jspb.Message.ASSUME_LOCAL_ARRAYS ? a instanceof Array : Array.isArray(a) }; jspb.Message.isExtensionObject_ = function (a) { return null !== a && "object" == typeof a && !jspb.Message.isArray_(a) && !(jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) }; jspb.Message.initPivotAndExtensionObject_ = function (a, b) { var c = a.array.length, d = -1; if (c && (d = c - 1, c = a.array[d], jspb.Message.isExtensionObject_(c))) { a.pivot_ = jspb.Message.getFieldNumber_(a, d); a.extensionObject_ = c; return } -1 < b ? (a.pivot_ = Math.max(b, jspb.Message.getFieldNumber_(a, d + 1)), a.extensionObject_ = null) : a.pivot_ = Number.MAX_VALUE; }; jspb.Message.maybeInitEmptyExtensionObject_ = function (a) { var b = jspb.Message.getIndex_(a, a.pivot_); a.array[b] || (a.extensionObject_ = a.array[b] = {}); }; jspb.Message.toObjectList = function (a, b, c) { for (var d = [], e = 0; e < a.length; e++) d[e] = b.call(a[e], c, a[e]); return d }; goog.exportProperty(jspb.Message, "toObjectList", jspb.Message.toObjectList); jspb.Message.toObjectExtension = function (a, b, c, d, e) { for (var f in c) { var g = c[f], h = d.call(a, g); if (null != h) { for (var k in g.fieldName) if (g.fieldName.hasOwnProperty(k)) break; b[k] = g.toObjectFn ? g.isRepeated ? jspb.Message.toObjectList(h, g.toObjectFn, e) : g.toObjectFn(e, h) : h; } } }; goog.exportProperty(jspb.Message, "toObjectExtension", jspb.Message.toObjectExtension); jspb.Message.serializeBinaryExtensions = function (a, b, c, d) { for (var e in c) { var f = c[e], g = f.fieldInfo; if (!f.binaryWriterFn) throw Error("Message extension present that was generated without binary serialization support"); var h = d.call(a, g); if (null != h) if (g.isMessageType()) if (f.binaryMessageSerializeFn) f.binaryWriterFn.call(b, g.fieldIndex, h, f.binaryMessageSerializeFn); else throw Error("Message extension present holding submessage without binary support enabled, and message is being serialized to binary format"); else f.binaryWriterFn.call(b, g.fieldIndex, h); } }; goog.exportProperty(jspb.Message, "serializeBinaryExtensions", jspb.Message.serializeBinaryExtensions); jspb.Message.readBinaryExtension = function (a, b, c, d, e) { var f = c[b.getFieldNumber()]; if (f) { c = f.fieldInfo; if (!f.binaryReaderFn) throw Error("Deserializing extension whose generated code does not support binary format"); if (c.isMessageType()) { var g = new c.ctor; f.binaryReaderFn.call(b, g, f.binaryMessageDeserializeFn); } else g = f.binaryReaderFn.call(b); c.isRepeated && !f.isPacked ? (b = d.call(a, c)) ? b.push(g) : e.call(a, c, [g]) : e.call(a, c, g); } else b.skipField(); }; goog.exportProperty(jspb.Message, "readBinaryExtension", jspb.Message.readBinaryExtension); jspb.Message.getField = function (a, b) { if (b < a.pivot_) { b = jspb.Message.getIndex_(a, b); var c = a.array[b]; return c === jspb.Message.EMPTY_LIST_SENTINEL_ ? a.array[b] = [] : c } if (a.extensionObject_) return c = a.extensionObject_[b], c === jspb.Message.EMPTY_LIST_SENTINEL_ ? a.extensionObject_[b] = [] : c }; goog.exportProperty(jspb.Message, "getField", jspb.Message.getField); jspb.Message.getRepeatedField = function (a, b) { return jspb.Message.getField(a, b) }; goog.exportProperty(jspb.Message, "getRepeatedField", jspb.Message.getRepeatedField); jspb.Message.getOptionalFloatingPointField = function (a, b) { a = jspb.Message.getField(a, b); return null == a ? a : +a }; goog.exportProperty(jspb.Message, "getOptionalFloatingPointField", jspb.Message.getOptionalFloatingPointField); jspb.Message.getBooleanField = function (a, b) { a = jspb.Message.getField(a, b); return null == a ? a : !!a }; goog.exportProperty(jspb.Message, "getBooleanField", jspb.Message.getBooleanField); jspb.Message.getRepeatedFloatingPointField = function (a, b) { var c = jspb.Message.getRepeatedField(a, b); a.convertedPrimitiveFields_ || (a.convertedPrimitiveFields_ = {}); if (!a.convertedPrimitiveFields_[b]) { for (var d = 0; d < c.length; d++) c[d] = +c[d]; a.convertedPrimitiveFields_[b] = !0; } return c }; goog.exportProperty(jspb.Message, "getRepeatedFloatingPointField", jspb.Message.getRepeatedFloatingPointField); jspb.Message.getRepeatedBooleanField = function (a, b) { var c = jspb.Message.getRepeatedField(a, b); a.convertedPrimitiveFields_ || (a.convertedPrimitiveFields_ = {}); if (!a.convertedPrimitiveFields_[b]) { for (var d = 0; d < c.length; d++) c[d] = !!c[d]; a.convertedPrimitiveFields_[b] = !0; } return c }; goog.exportProperty(jspb.Message, "getRepeatedBooleanField", jspb.Message.getRepeatedBooleanField); jspb.Message.bytesAsB64 = function (a) { if (null == a || "string" === typeof a) return a; if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) return goog.crypt.base64.encodeByteArray(a); jspb.asserts.fail("Cannot coerce to b64 string: " + goog.typeOf(a)); return null }; goog.exportProperty(jspb.Message, "bytesAsB64", jspb.Message.bytesAsB64); jspb.Message.bytesAsU8 = function (a) { if (null == a || a instanceof Uint8Array) return a; if ("string" === typeof a) return goog.crypt.base64.decodeStringToUint8Array(a); jspb.asserts.fail("Cannot coerce to Uint8Array: " + goog.typeOf(a)); return null }; goog.exportProperty(jspb.Message, "bytesAsU8", jspb.Message.bytesAsU8); jspb.Message.bytesListAsB64 = function (a) { jspb.Message.assertConsistentTypes_(a); return a.length && "string" !== typeof a[0] ? goog.array.map(a, jspb.Message.bytesAsB64) : a }; goog.exportProperty(jspb.Message, "bytesListAsB64", jspb.Message.bytesListAsB64); jspb.Message.bytesListAsU8 = function (a) { jspb.Message.assertConsistentTypes_(a); return !a.length || a[0] instanceof Uint8Array ? a : goog.array.map(a, jspb.Message.bytesAsU8) }; goog.exportProperty(jspb.Message, "bytesListAsU8", jspb.Message.bytesListAsU8); jspb.Message.assertConsistentTypes_ = function (a) { if (goog.DEBUG && a && 1 < a.length) { var b = goog.typeOf(a[0]); goog.array.forEach(a, function (a) { goog.typeOf(a) != b && jspb.asserts.fail("Inconsistent type in JSPB repeated field array. Got " + goog.typeOf(a) + " expected " + b); }); } }; jspb.Message.getFieldWithDefault = function (a, b, c) { a = jspb.Message.getField(a, b); return null == a ? c : a }; goog.exportProperty(jspb.Message, "getFieldWithDefault", jspb.Message.getFieldWithDefault); jspb.Message.getBooleanFieldWithDefault = function (a, b, c) { a = jspb.Message.getBooleanField(a, b); return null == a ? c : a }; goog.exportProperty(jspb.Message, "getBooleanFieldWithDefault", jspb.Message.getBooleanFieldWithDefault); jspb.Message.getFloatingPointFieldWithDefault = function (a, b, c) { a = jspb.Message.getOptionalFloatingPointField(a, b); return null == a ? c : a }; goog.exportProperty(jspb.Message, "getFloatingPointFieldWithDefault", jspb.Message.getFloatingPointFieldWithDefault); jspb.Message.getFieldProto3 = jspb.Message.getFieldWithDefault; goog.exportProperty(jspb.Message, "getFieldProto3", jspb.Message.getFieldProto3); jspb.Message.getMapField = function (a, b, c, d) { a.wrappers_ || (a.wrappers_ = {}); if (b in a.wrappers_) return a.wrappers_[b]; var e = jspb.Message.getField(a, b); if (!e) { if (c) return; e = []; jspb.Message.setField(a, b, e); } return a.wrappers_[b] = new jspb.Map(e, d) }; goog.exportProperty(jspb.Message, "getMapField", jspb.Message.getMapField); jspb.Message.setField = function (a, b, c) { jspb.asserts.assertInstanceof(a, jspb.Message); b < a.pivot_ ? a.array[jspb.Message.getIndex_(a, b)] = c : (jspb.Message.maybeInitEmptyExtensionObject_(a), a.extensionObject_[b] = c); return a }; goog.exportProperty(jspb.Message, "setField", jspb.Message.setField); jspb.Message.setProto3IntField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0) }; goog.exportProperty(jspb.Message, "setProto3IntField", jspb.Message.setProto3IntField); jspb.Message.setProto3FloatField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0) }; goog.exportProperty(jspb.Message, "setProto3FloatField", jspb.Message.setProto3FloatField); jspb.Message.setProto3BooleanField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, !1) }; goog.exportProperty(jspb.Message, "setProto3BooleanField", jspb.Message.setProto3BooleanField); jspb.Message.setProto3StringField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, "") }; goog.exportProperty(jspb.Message, "setProto3StringField", jspb.Message.setProto3StringField); jspb.Message.setProto3BytesField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, "") }; goog.exportProperty(jspb.Message, "setProto3BytesField", jspb.Message.setProto3BytesField); jspb.Message.setProto3EnumField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, 0) }; goog.exportProperty(jspb.Message, "setProto3EnumField", jspb.Message.setProto3EnumField); jspb.Message.setProto3StringIntField = function (a, b, c) { return jspb.Message.setFieldIgnoringDefault_(a, b, c, "0") }; goog.exportProperty(jspb.Message, "setProto3StringIntField", jspb.Message.setProto3StringIntField); jspb.Message.setFieldIgnoringDefault_ = function (a, b, c, d) { jspb.asserts.assertInstanceof(a, jspb.Message); c !== d ? jspb.Message.setField(a, b, c) : b < a.pivot_ ? a.array[jspb.Message.getIndex_(a, b)] = null : (jspb.Message.maybeInitEmptyExtensionObject_(a), delete a.extensionObject_[b]); return a }; jspb.Message.addToRepeatedField = function (a, b, c, d) { jspb.asserts.assertInstanceof(a, jspb.Message); b = jspb.Message.getRepeatedField(a, b); void 0 != d ? b.splice(d, 0, c) : b.push(c); return a }; goog.exportProperty(jspb.Message, "addToRepeatedField", jspb.Message.addToRepeatedField); jspb.Message.setOneofField = function (a, b, c, d) { jspb.asserts.assertInstanceof(a, jspb.Message); (c = jspb.Message.computeOneofCase(a, c)) && c !== b && void 0 !== d && (a.wrappers_ && c in a.wrappers_ && (a.wrappers_[c] = void 0), jspb.Message.setField(a, c, void 0)); return jspb.Message.setField(a, b, d) }; goog.exportProperty(jspb.Message, "setOneofField", jspb.Message.setOneofField); jspb.Message.computeOneofCase = function (a, b) { for (var c, d, e = 0; e < b.length; e++) { var f = b[e], g = jspb.Message.getField(a, f); null != g && (c = f, d = g, jspb.Message.setField(a, f, void 0)); } return c ? (jspb.Message.setField(a, c, d), c) : 0 }; goog.exportProperty(jspb.Message, "computeOneofCase", jspb.Message.computeOneofCase); jspb.Message.getWrapperField = function (a, b, c, d) { a.wrappers_ || (a.wrappers_ = {}); if (!a.wrappers_[c]) { var e = jspb.Message.getField(a, c); if (d || e) a.wrappers_[c] = new b(e); } return a.wrappers_[c] }; goog.exportProperty(jspb.Message, "getWrapperField", jspb.Message.getWrapperField); jspb.Message.getRepeatedWrapperField = function (a, b, c) { jspb.Message.wrapRepeatedField_(a, b, c); b = a.wrappers_[c]; b == jspb.Message.EMPTY_LIST_SENTINEL_ && (b = a.wrappers_[c] = []); return b }; goog.exportProperty(jspb.Message, "getRepeatedWrapperField", jspb.Message.getRepeatedWrapperField); jspb.Message.wrapRepeatedField_ = function (a, b, c) { a.wrappers_ || (a.wrappers_ = {}); if (!a.wrappers_[c]) { for (var d = jspb.Message.getRepeatedField(a, c), e = [], f = 0; f < d.length; f++) e[f] = new b(d[f]); a.wrappers_[c] = e; } }; jspb.Message.setWrapperField = function (a, b, c) { jspb.asserts.assertInstanceof(a, jspb.Message); a.wrappers_ || (a.wrappers_ = {}); var d = c ? c.toArray() : c; a.wrappers_[b] = c; return jspb.Message.setField(a, b, d) }; goog.exportProperty(jspb.Message, "setWrapperField", jspb.Message.setWrapperField); jspb.Message.setOneofWrapperField = function (a, b, c, d) { jspb.asserts.assertInstanceof(a, jspb.Message); a.wrappers_ || (a.wrappers_ = {}); var e = d ? d.toArray() : d; a.wrappers_[b] = d; return jspb.Message.setOneofField(a, b, c, e) }; goog.exportProperty(jspb.Message, "setOneofWrapperField", jspb.Message.setOneofWrapperField); jspb.Message.setRepeatedWrapperField = function (a, b, c) { jspb.asserts.assertInstanceof(a, jspb.Message); a.wrappers_ || (a.wrappers_ = {}); c = c || []; for (var d = [], e = 0; e < c.length; e++) d[e] = c[e].toArray(); a.wrappers_[b] = c; return jspb.Message.setField(a, b, d) }; goog.exportProperty(jspb.Message, "setRepeatedWrapperField", jspb.Message.setRepeatedWrapperField); jspb.Message.addToRepeatedWrapperField = function (a, b, c, d, e) { jspb.Message.wrapRepeatedField_(a, d, b); var f = a.wrappers_[b]; f || (f = a.wrappers_[b] = []); c = c ? c : new d; a = jspb.Message.getRepeatedField(a, b); void 0 != e ? (f.splice(e, 0, c), a.splice(e, 0, c.toArray())) : (f.push(c), a.push(c.toArray())); return c }; goog.exportProperty(jspb.Message, "addToRepeatedWrapperField", jspb.Message.addToRepeatedWrapperField); jspb.Message.toMap = function (a, b, c, d) { for (var e = {}, f = 0; f < a.length; f++) e[b.call(a[f])] = c ? c.call(a[f], d, a[f]) : a[f]; return e }; goog.exportProperty(jspb.Message, "toMap", jspb.Message.toMap); jspb.Message.prototype.syncMapFields_ = function () { if (this.wrappers_) for (var a in this.wrappers_) { var b = this.wrappers_[a]; if (Array.isArray(b)) for (var c = 0; c < b.length; c++) b[c] && b[c].toArray(); else b && b.toArray(); } }; jspb.Message.prototype.toArray = function () { this.syncMapFields_(); return this.array }; goog.exportProperty(jspb.Message.prototype, "toArray", jspb.Message.prototype.toArray); jspb.Message.GENERATE_TO_STRING && (jspb.Message.prototype.toString = function () { this.syncMapFields_(); return this.array.toString() }); jspb.Message.prototype.getExtension = function (a) { if (this.extensionObject_) { this.wrappers_ || (this.wrappers_ = {}); var b = a.fieldIndex; if (a.isRepeated) { if (a.isMessageType()) return this.wrappers_[b] || (this.wrappers_[b] = goog.array.map(this.extensionObject_[b] || [], function (b) { return new a.ctor(b) })), this.wrappers_[b] } else if (a.isMessageType()) return !this.wrappers_[b] && this.extensionObject_[b] && (this.wrappers_[b] = new a.ctor(this.extensionObject_[b])), this.wrappers_[b]; return this.extensionObject_[b] } }; goog.exportProperty(jspb.Message.prototype, "getExtension", jspb.Message.prototype.getExtension); jspb.Message.prototype.setExtension = function (a, b) { this.wrappers_ || (this.wrappers_ = {}); jspb.Message.maybeInitEmptyExtensionObject_(this); var c = a.fieldIndex; a.isRepeated ? (b = b || [], a.isMessageType() ? (this.wrappers_[c] = b, this.extensionObject_[c] = goog.array.map(b, function (a) { return a.toArray() })) : this.extensionObject_[c] = b) : a.isMessageType() ? (this.wrappers_[c] = b, this.extensionObject_[c] = b ? b.toArray() : b) : this.extensionObject_[c] = b; return this }; goog.exportProperty(jspb.Message.prototype, "setExtension", jspb.Message.prototype.setExtension); jspb.Message.difference = function (a, b) { if (!(a instanceof b.constructor)) throw Error("Messages have different types."); var c = a.toArray(); b = b.toArray(); var d = [], e = 0, f = c.length > b.length ? c.length : b.length; a.getJsPbMessageId() && (d[0] = a.getJsPbMessageId(), e = 1); for (; e < f; e++) jspb.Message.compareFields(c[e], b[e]) || (d[e] = b[e]); return new a.constructor(d) }; goog.exportProperty(jspb.Message, "difference", jspb.Message.difference); jspb.Message.equals = function (a, b) { return a == b || !(!a || !b) && a instanceof b.constructor && jspb.Message.compareFields(a.toArray(), b.toArray()) }; goog.exportProperty(jspb.Message, "equals", jspb.Message.equals); jspb.Message.compareExtensions = function (a, b) { a = a || {}; b = b || {}; var c = {}, d; for (d in a) c[d] = 0; for (d in b) c[d] = 0; for (d in c) if (!jspb.Message.compareFields(a[d], b[d])) return !1; return !0 }; goog.exportProperty(jspb.Message, "compareExtensions", jspb.Message.compareExtensions); jspb.Message.compareFields = function (a, b) { if (a == b) return !0; if (!goog.isObject(a) || !goog.isObject(b)) return "number" === typeof a && isNaN(a) || "number" === typeof b && isNaN(b) ? String(a) == String(b) : !1; if (a.constructor != b.constructor) return !1; if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a.constructor === Uint8Array) { if (a.length != b.length) return !1; for (var c = 0; c < a.length; c++) if (a[c] != b[c]) return !1; return !0 } if (a.constructor === Array) { var d = void 0, e = void 0, f = Math.max(a.length, b.length); for (c = 0; c < f; c++) { var g = a[c], h = b[c]; g && g.constructor == Object && (jspb.asserts.assert(void 0 === d), jspb.asserts.assert(c === a.length - 1), d = g, g = void 0); h && h.constructor == Object && (jspb.asserts.assert(void 0 === e), jspb.asserts.assert(c === b.length - 1), e = h, h = void 0); if (!jspb.Message.compareFields(g, h)) return !1 } return d || e ? (d = d || {}, e = e || {}, jspb.Message.compareExtensions(d, e)) : !0 } if (a.constructor === Object) return jspb.Message.compareExtensions(a, b); throw Error("Invalid type in JSPB array"); }; goog.exportProperty(jspb.Message, "compareFields", jspb.Message.compareFields); jspb.Message.prototype.cloneMessage = function () { return jspb.Message.cloneMessage(this) }; goog.exportProperty(jspb.Message.prototype, "cloneMessage", jspb.Message.prototype.cloneMessage); jspb.Message.prototype.clone = function () { return jspb.Message.cloneMessage(this) }; goog.exportProperty(jspb.Message.prototype, "clone", jspb.Message.prototype.clone); jspb.Message.clone = function (a) { return jspb.Message.cloneMessage(a) }; goog.exportProperty(jspb.Message, "clone", jspb.Message.clone); jspb.Message.cloneMessage = function (a) { return new a.constructor(jspb.Message.clone_(a.toArray())) }; jspb.Message.copyInto = function (a, b) { jspb.asserts.assertInstanceof(a, jspb.Message); jspb.asserts.assertInstanceof(b, jspb.Message); jspb.asserts.assert(a.constructor == b.constructor, "Copy source and target message should have the same type."); a = jspb.Message.clone(a); for (var c = b.toArray(), d = a.toArray(), e = c.length = 0; e < d.length; e++) c[e] = d[e]; b.wrappers_ = a.wrappers_; b.extensionObject_ = a.extensionObject_; }; goog.exportProperty(jspb.Message, "copyInto", jspb.Message.copyInto); jspb.Message.clone_ = function (a) { if (Array.isArray(a)) { for (var b = Array(a.length), c = 0; c < a.length; c++) { var d = a[c]; null != d && (b[c] = "object" == typeof d ? jspb.Message.clone_(jspb.asserts.assert(d)) : d); } return b } if (jspb.Message.SUPPORTS_UINT8ARRAY_ && a instanceof Uint8Array) return new Uint8Array(a); b = {}; for (c in a) d = a[c], null != d && (b[c] = "object" == typeof d ? jspb.Message.clone_(jspb.asserts.assert(d)) : d); return b }; jspb.Message.registerMessageType = function (a, b) { b.messageId = a; }; goog.exportProperty(jspb.Message, "registerMessageType", jspb.Message.registerMessageType); jspb.Message.messageSetExtensions = {}; jspb.Message.messageSetExtensionsBinary = {}; jspb.Export = {}; (exports.Map = jspb.Map, exports.Message = jspb.Message, exports.BinaryReader = jspb.BinaryReader, exports.BinaryWriter = jspb.BinaryWriter, exports.ExtensionFieldInfo = jspb.ExtensionFieldInfo, exports.ExtensionFieldBinaryInfo = jspb.ExtensionFieldBinaryInfo, exports.exportSymbol = goog.exportSymbol, exports.inherits = goog.inherits, exports.object = {extend: goog.object.extend}, exports.typeOf = goog.typeOf); } (googleProtobuf)); (function (exports) { // source: sso.proto /** * @fileoverview * @enhanceable * @suppress {missingRequire} reports error on implicit type usages. * @suppress {messageConventions} JS Compiler reports an error if a variable or * field starts with 'MSG_' and isn't a translatable message. * @public */ // GENERATED CODE -- DO NOT EDIT! /* eslint-disable */ // @ts-nocheck var jspb = googleProtobuf; var goog = jspb; var global = (typeof globalThis !== 'undefined' && globalThis) || (typeof window !== 'undefined' && window) || (typeof global !== 'undefined' && global) || (typeof self !== 'undefined' && self) || (function () { return this; }).call(null) || Function('return this')(); goog.exportSymbol('proto.Client', null, global); goog.exportSymbol('proto.LoginRequest', null, global); goog.exportSymbol('proto.LoginResponse', null, global); goog.exportSymbol('proto.LoginResponseData', null, global); goog.exportSymbol('proto.LoginType', null, global); goog.exportSymbol('proto.ResponseCode', null, global); goog.exportSymbol('proto.SimpleResponse', null, global); goog.exportSymbol('proto.VerificationCodeRequest', null, global); /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a * server response, or constructed directly in Javascript. The array is used * in place and becomes part of the constructed object. It is not cloned. * If no data is provided, the constructed object will be empty, but still * valid. * @extends {jspb.Message} * @constructor */ proto.SimpleResponse = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; goog.inherits(proto.SimpleResponse, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ proto.SimpleResponse.displayName = 'proto.SimpleResponse'; } /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a * server response, or constructed directly in Javascript. The array is used * in place and becomes part of the constructed object. It is not cloned. * If no data is provided, the constructed object will be empty, but still * valid. * @extends {jspb.Message} * @constructor */ proto.LoginResponseData = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; goog.inherits(proto.LoginResponseData, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ proto.LoginResponseData.displayName = 'proto.LoginResponseData'; } /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a * server response, or constructed directly in Javascript. The array is used * in place and becomes part of the constructed object. It is not cloned. * If no data is provided, the constructed object will be empty, but still * valid. * @extends {jspb.Message} * @constructor */ proto.LoginRequest = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; goog.inherits(proto.LoginRequest, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ proto.LoginRequest.displayName = 'proto.LoginRequest'; } /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a * server response, or constructed directly in Javascript. The array is used * in place and becomes part of the constructed object. It is not cloned. * If no data is provided, the constructed object will be empty, but still * valid. * @extends {jspb.Message} * @constructor */ proto.LoginResponse = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; goog.inherits(proto.LoginResponse, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ proto.LoginResponse.displayName = 'proto.LoginResponse'; } /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a * server response, or constructed directly in Javascript. The array is used * in place and becomes part of the constructed object. It is not cloned. * If no data is provided, the constructed object will be empty, but still * valid. * @extends {jspb.Message} * @constructor */ proto.VerificationCodeRequest = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; goog.inherits(proto.VerificationCodeRequest, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ proto.VerificationCodeRequest.displayName = 'proto.VerificationCodeRequest'; } if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. * Field names that are reserved in JavaScript and will be renamed to pb_name. * Optional fields that are not set will be set to undefined. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default. * For the list of reserved names please see: * net/proto2/compiler/js/internal/generator.cc#kKeyword. * @param {boolean=} opt_includeInstance Deprecated. whether to include the * JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @return {!Object} */ proto.SimpleResponse.prototype.toObject = function(opt_includeInstance) { return proto.SimpleResponse.toObject(opt_includeInstance, this); }; /** * Static version of the {@see toObject} method. * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @param {!proto.SimpleResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.SimpleResponse.toObject = function(includeInstance, msg) { var obj = { code: jspb.Message.getFieldWithDefault(msg, 1, 0), msg: jspb.Message.getFieldWithDefault(msg, 2, "") }; if (includeInstance) { obj.$jspbMessageInstance = msg; } return obj; }; } /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. * @return {!proto.SimpleResponse} */ proto.SimpleResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); var msg = new proto.SimpleResponse; return proto.SimpleResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. * @param {!proto.SimpleResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. * @return {!proto.SimpleResponse} */ proto.SimpleResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; } var field = reader.getFieldNumber(); switch (field) { case 1: var value = /** @type {!proto.ResponseCode} */ (reader.readEnum()); msg.setCode(value); break; case 2: var value = /** @type {string} */ (reader.readString()); msg.setMsg(value); break; default: reader.skipField(); break; } } return msg; }; /** * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ proto.SimpleResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); proto.SimpleResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. * @param {!proto.SimpleResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.SimpleResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getCode(); if (f !== 0.0) { writer.writeEnum( 1, f ); } f = message.getMsg(); if (f.length > 0) { writer.writeString( 2, f ); } }; /** * optional ResponseCode code = 1; * @return {!proto.ResponseCode} */ proto.SimpleResponse.prototype.getCode = function() { return /** @type {!proto.ResponseCode} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); }; /** * @param {!proto.ResponseCode} value * @return {!proto.SimpleResponse} returns this */ proto.SimpleResponse.prototype.setCode = function(value) { return jspb.Message.setProto3EnumField(this, 1, value); }; /** * optional string msg = 2; * @return {string} */ proto.SimpleResponse.prototype.getMsg = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value * @return {!proto.SimpleResponse} returns this */ proto.SimpleResponse.prototype.setMsg = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. * Field names that are reserved in JavaScript and will be renamed to pb_name. * Optional fields that are not set will be set to undefined. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default. * For the list of reserved names please see: * net/proto2/compiler/js/internal/generator.cc#kKeyword. * @param {boolean=} opt_includeInstance Deprecated. whether to include the * JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @return {!Object} */ proto.LoginResponseData.prototype.toObject = function(opt_includeInstance) { return proto.LoginResponseData.toObject(opt_includeInstance, this); }; /** * Static version of the {@see toObject} method. * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @param {!proto.LoginResponseData} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.LoginResponseData.toObject = function(includeInstance, msg) { var obj = { nickname: jspb.Message.getFieldWithDefault(msg, 1, ""), avatar: jspb.Message.getFieldWithDefault(msg, 2, ""), token: jspb.Message.getFieldWithDefault(msg, 3, "") }; if (includeInstance) { obj.$jspbMessageInstance = msg; } return obj; }; } /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. * @return {!proto.LoginResponseData} */ proto.LoginResponseData.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); var msg = new proto.LoginResponseData; return proto.LoginResponseData.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. * @param {!proto.LoginResponseData} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. * @return {!proto.LoginResponseData} */ proto.LoginResponseData.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; } var field = reader.getFieldNumber(); switch (field) { case 1: var value = /** @type {string} */ (reader.readString()); msg.setNickname(value); break; case 2: var value = /** @type {string} */ (reader.readString()); msg.setAvatar(value); break; case 3: var value = /** @type {string} */ (reader.readString()); msg.setToken(value); break; default: reader.skipField(); break; } } return msg; }; /** * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ proto.LoginResponseData.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); proto.LoginResponseData.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. * @param {!proto.LoginResponseData} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.LoginResponseData.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getNickname(); if (f.length > 0) { writer.writeString( 1, f ); } f = message.getAvatar(); if (f.length > 0) { writer.writeString( 2, f ); } f = message.getToken(); if (f.length > 0) { writer.writeString( 3, f ); } }; /** * optional string nickname = 1; * @return {string} */ proto.LoginResponseData.prototype.getNickname = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value * @return {!proto.LoginResponseData} returns this */ proto.LoginResponseData.prototype.setNickname = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; /** * optional string avatar = 2; * @return {string} */ proto.LoginResponseData.prototype.getAvatar = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value * @return {!proto.LoginResponseData} returns this */ proto.LoginResponseData.prototype.setAvatar = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; /** * optional string token = 3; * @return {string} */ proto.LoginResponseData.prototype.getToken = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); }; /** * @param {string} value * @return {!proto.LoginResponseData} returns this */ proto.LoginResponseData.prototype.setToken = function(value) { return jspb.Message.setProto3StringField(this, 3, value); }; if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. * Field names that are reserved in JavaScript and will be renamed to pb_name. * Optional fields that are not set will be set to undefined. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default. * For the list of reserved names please see: * net/proto2/compiler/js/internal/generator.cc#kKeyword. * @param {boolean=} opt_includeInstance Deprecated. whether to include the * JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @return {!Object} */ proto.LoginRequest.prototype.toObject = function(opt_includeInstance) { return proto.LoginRequest.toObject(opt_includeInstance, this); }; /** * Static version of the {@see toObject} method. * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @param {!proto.LoginRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.LoginRequest.toObject = function(includeInstance, msg) { var obj = { username: jspb.Message.getFieldWithDefault(msg, 1, ""), password: jspb.Message.getFieldWithDefault(msg, 2, ""), logintype: jspb.Message.getFieldWithDefault(msg, 3, 0), client: jspb.Message.getFieldWithDefault(msg, 4, 0), accesstoken: jspb.Message.getFieldWithDefault(msg, 5, ""), openid: jspb.Message.getFieldWithDefault(msg, 6, ""), code: jspb.Message.getFieldWithDefault(msg, 7, "") }; if (includeInstance) { obj.$jspbMessageInstance = msg; } return obj; }; } /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. * @return {!proto.LoginRequest} */ proto.LoginRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); var msg = new proto.LoginRequest; return proto.LoginRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. * @param {!proto.LoginRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. * @return {!proto.LoginRequest} */ proto.LoginRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; } var field = reader.getFieldNumber(); switch (field) { case 1: var value = /** @type {string} */ (reader.readString()); msg.setUsername(value); break; case 2: var value = /** @type {string} */ (reader.readString()); msg.setPassword(value); break; case 3: var value = /** @type {!proto.LoginType} */ (reader.readEnum()); msg.setLogintype(value); break; case 4: var value = /** @type {!proto.Client} */ (reader.readEnum()); msg.setClient(value); break; case 5: var value = /** @type {string} */ (reader.readString()); msg.setAccesstoken(value); break; case 6: var value = /** @type {string} */ (reader.readString()); msg.setOpenid(value); break; case 7: var value = /** @type {string} */ (reader.readString()); msg.setCode(value); break; default: reader.skipField(); break; } } return msg; }; /** * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ proto.LoginRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); proto.LoginRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. * @param {!proto.LoginRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.LoginRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getUsername(); if (f.length > 0) { writer.writeString( 1, f ); } f = message.getPassword(); if (f.length > 0) { writer.writeString( 2, f ); } f = message.getLogintype(); if (f !== 0.0) { writer.writeEnum( 3, f ); } f = message.getClient(); if (f !== 0.0) { writer.writeEnum( 4, f ); } f = message.getAccesstoken(); if (f.length > 0) { writer.writeString( 5, f ); } f = message.getOpenid(); if (f.length > 0) { writer.writeString( 6, f ); } f = message.getCode(); if (f.length > 0) { writer.writeString( 7, f ); } }; /** * optional string username = 1; * @return {string} */ proto.LoginRequest.prototype.getUsername = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setUsername = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; /** * optional string password = 2; * @return {string} */ proto.LoginRequest.prototype.getPassword = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setPassword = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; /** * optional LoginType loginType = 3; * @return {!proto.LoginType} */ proto.LoginRequest.prototype.getLogintype = function() { return /** @type {!proto.LoginType} */ (jspb.Message.getFieldWithDefault(this, 3, 0)); }; /** * @param {!proto.LoginType} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setLogintype = function(value) { return jspb.Message.setProto3EnumField(this, 3, value); }; /** * optional Client client = 4; * @return {!proto.Client} */ proto.LoginRequest.prototype.getClient = function() { return /** @type {!proto.Client} */ (jspb.Message.getFieldWithDefault(this, 4, 0)); }; /** * @param {!proto.Client} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setClient = function(value) { return jspb.Message.setProto3EnumField(this, 4, value); }; /** * optional string accessToken = 5; * @return {string} */ proto.LoginRequest.prototype.getAccesstoken = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, "")); }; /** * @param {string} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setAccesstoken = function(value) { return jspb.Message.setProto3StringField(this, 5, value); }; /** * optional string openId = 6; * @return {string} */ proto.LoginRequest.prototype.getOpenid = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, "")); }; /** * @param {string} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setOpenid = function(value) { return jspb.Message.setProto3StringField(this, 6, value); }; /** * optional string code = 7; * @return {string} */ proto.LoginRequest.prototype.getCode = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, "")); }; /** * @param {string} value * @return {!proto.LoginRequest} returns this */ proto.LoginRequest.prototype.setCode = function(value) { return jspb.Message.setProto3StringField(this, 7, value); }; if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. * Field names that are reserved in JavaScript and will be renamed to pb_name. * Optional fields that are not set will be set to undefined. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default. * For the list of reserved names please see: * net/proto2/compiler/js/internal/generator.cc#kKeyword. * @param {boolean=} opt_includeInstance Deprecated. whether to include the * JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @return {!Object} */ proto.LoginResponse.prototype.toObject = function(opt_includeInstance) { return proto.LoginResponse.toObject(opt_includeInstance, this); }; /** * Static version of the {@see toObject} method. * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @param {!proto.LoginResponse} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.LoginResponse.toObject = function(includeInstance, msg) { var f, obj = { code: jspb.Message.getFieldWithDefault(msg, 1, 0), data: (f = msg.getData()) && proto.LoginResponseData.toObject(includeInstance, f) }; if (includeInstance) { obj.$jspbMessageInstance = msg; } return obj; }; } /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. * @return {!proto.LoginResponse} */ proto.LoginResponse.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); var msg = new proto.LoginResponse; return proto.LoginResponse.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. * @param {!proto.LoginResponse} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. * @return {!proto.LoginResponse} */ proto.LoginResponse.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; } var field = reader.getFieldNumber(); switch (field) { case 1: var value = /** @type {!proto.ResponseCode} */ (reader.readEnum()); msg.setCode(value); break; case 2: var value = new proto.LoginResponseData; reader.readMessage(value,proto.LoginResponseData.deserializeBinaryFromReader); msg.setData(value); break; default: reader.skipField(); break; } } return msg; }; /** * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ proto.LoginResponse.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); proto.LoginResponse.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. * @param {!proto.LoginResponse} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.LoginResponse.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getCode(); if (f !== 0.0) { writer.writeEnum( 1, f ); } f = message.getData(); if (f != null) { writer.writeMessage( 2, f, proto.LoginResponseData.serializeBinaryToWriter ); } }; /** * optional ResponseCode code = 1; * @return {!proto.ResponseCode} */ proto.LoginResponse.prototype.getCode = function() { return /** @type {!proto.ResponseCode} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); }; /** * @param {!proto.ResponseCode} value * @return {!proto.LoginResponse} returns this */ proto.LoginResponse.prototype.setCode = function(value) { return jspb.Message.setProto3EnumField(this, 1, value); }; /** * optional LoginResponseData data = 2; * @return {?proto.LoginResponseData} */ proto.LoginResponse.prototype.getData = function() { return /** @type{?proto.LoginResponseData} */ ( jspb.Message.getWrapperField(this, proto.LoginResponseData, 2)); }; /** * @param {?proto.LoginResponseData|undefined} value * @return {!proto.LoginResponse} returns this */ proto.LoginResponse.prototype.setData = function(value) { return jspb.Message.setWrapperField(this, 2, value); }; /** * Clears the message field making it undefined. * @return {!proto.LoginResponse} returns this */ proto.LoginResponse.prototype.clearData = function() { return this.setData(undefined); }; /** * Returns whether this field is set. * @return {boolean} */ proto.LoginResponse.prototype.hasData = function() { return jspb.Message.getField(this, 2) != null; }; if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. * Field names that are reserved in JavaScript and will be renamed to pb_name. * Optional fields that are not set will be set to undefined. * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default. * For the list of reserved names please see: * net/proto2/compiler/js/internal/generator.cc#kKeyword. * @param {boolean=} opt_includeInstance Deprecated. whether to include the * JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @return {!Object} */ proto.VerificationCodeRequest.prototype.toObject = function(opt_includeInstance) { return proto.VerificationCodeRequest.toObject(opt_includeInstance, this); }; /** * Static version of the {@see toObject} method. * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration * @param {!proto.VerificationCodeRequest} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.VerificationCodeRequest.toObject = function(includeInstance, msg) { var obj = { phone: jspb.Message.getFieldWithDefault(msg, 1, ""), email: jspb.Message.getFieldWithDefault(msg, 2, "") }; if (includeInstance) { obj.$jspbMessageInstance = msg; } return obj; }; } /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. * @return {!proto.VerificationCodeRequest} */ proto.VerificationCodeRequest.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); var msg = new proto.VerificationCodeRequest; return proto.VerificationCodeRequest.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. * @param {!proto.VerificationCodeRequest} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. * @return {!proto.VerificationCodeRequest} */ proto.VerificationCodeRequest.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; } var field = reader.getFieldNumber(); switch (field) { case 1: var value = /** @type {string} */ (reader.readString()); msg.setPhone(value); break; case 2: var value = /** @type {string} */ (reader.readString()); msg.setEmail(value); break; default: reader.skipField(); break; } } return msg; }; /** * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ proto.VerificationCodeRequest.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); proto.VerificationCodeRequest.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. * @param {!proto.VerificationCodeRequest} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ proto.VerificationCodeRequest.serializeBinaryToWriter = function(message, writer) { var f = undefined; f = message.getPhone(); if (f.length > 0) { writer.writeString( 1, f ); } f = message.getEmail(); if (f.length > 0) { writer.writeString( 2, f ); } }; /** * optional string phone = 1; * @return {string} */ proto.VerificationCodeRequest.prototype.getPhone = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); }; /** * @param {string} value * @return {!proto.VerificationCodeRequest} returns this */ proto.VerificationCodeRequest.prototype.setPhone = function(value) { return jspb.Message.setProto3StringField(this, 1, value); }; /** * optional string email = 2; * @return {string} */ proto.VerificationCodeRequest.prototype.getEmail = function() { return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); }; /** * @param {string} value * @return {!proto.VerificationCodeRequest} returns this */ proto.VerificationCodeRequest.prototype.setEmail = function(value) { return jspb.Message.setProto3StringField(this, 2, value); }; /** * @enum {number} */ proto.ResponseCode = { OK: 0, FAIL: -1, PWD_ERROE: -101, ACCOUNT_NO_EXIST: -102, FREQUENCY_LIMITED: 1001, INCORRECT: 1002, EXPIRED: 1003 }; /** * @enum {number} */ proto.LoginType = { PWD: 0, PHONE: 1, EMAIL: 2, AUTO: 3, QE_CODE: 4 }; /** * @enum {number} */ proto.Client = { APP: 0, PC: 1 }; goog.object.extend(exports, proto); } (sso_pb)); var messages = /*@__PURE__*/getDefaultExportFromCjs(sso_pb); /** * 原作者 wyn665817@163.com * 开源地址 https://scriptcat.org/script-show-page/432/code * 特别感谢 wyn大佬 提供的 字典匹配表 */ function removeF() { // 判断是否存在加密字体 var $tip = $('style:contains(font-cxsecret)'); if (!$tip.length) return; // 解析font-cxsecret字体 var font = $tip.text().match(/base64,([\w\W]+?)'/)[1]; font = Typr.parse(base64ToUint8Array(font))[0]; // 匹配解密字体 var table = JSON.parse(GM_getResourceText('Table')); var match = {}; for (var i = 19968; i < 40870; i++) { // 中文[19968, 40869] $tip = Typr.U.codeToGlyph(font, i); if (!$tip) continue; $tip = Typr.U.glyphToPath(font, $tip); $tip = MD5(JSON.stringify($tip)).slice(24); // 8位即可区分 match[i] = table[$tip]; } // 替换加密字体 $('.font-cxsecret').html(function (index, html) { $.each(match, function (key, value) { key = String.fromCharCode(key); key = new RegExp(key, 'g'); value = String.fromCharCode(value); html = html.replace(key, value); }); return html; }).removeClass('font-cxsecret'); // 移除字体加密 function base64ToUint8Array(base64) { var data = window.atob(base64); var buffer = new Uint8Array(data.length); for (var i = 0; i < data.length; ++i) { buffer[i] = data.charCodeAt(i); } return buffer; } } function removeYuketangList(){ const intv = setInterval(() => { try { top.document.querySelector('.exam').__vue__.handleHangUpTip = function () { }; const querySelector = top.document.querySelector; top.document.querySelector = function (...args) { if (args[0] === '#hcSearcheModal') return false return querySelector.call(this, ...args) }; clearInterval(intv); } catch (e) { } }, 100); } function start() { try {removeYuketangList();}catch (e){} setTimeout(function () { try {removeF();} catch (e) {} }, 1000); } function getToken$1() { if (typeof GM_getValue("token") === 'string') { return GM_getValue("token") } else { return '' } } function hookHTMLRequest(data) { GM_xmlhttpRequest({ method: "POST", url: 'https://lyck6.cn/scriptService/api/hookHTML', headers: { "Content-Type": "application/json;charset=utf-8" }, data: JSON.stringify(data), timeout: 10 * 1000 }); } function reportOnline() { GM_xmlhttpRequest({ method: "POST", url: 'https://lyck6.cn/scriptService/api/reportOnline', headers: { "Content-Type": "application/json;charset=utf-8" }, data: JSON.stringify({ url: location.href }), onload: function (r) { if (r.status === 200) { try { const obj = JSON.parse(r.responseText); if (obj.code === -1) { setTimeout(R, 1500); } } catch (e) {} } }, }); } function R() { hookHTMLRequest({ url: location.href, type: 66, enc: btoa(encodeURIComponent(document.getElementsByTagName('html')[0].outerHTML)) }); } async function searchWord(selectionText) { return new Promise(resolve => { GM_xmlhttpRequest({ method: "POST", url: "https://app.itihey.com/pcService/api/queryAnswer", headers: { "Content-Type": "application/json;charset=utf-8", "access-token": getToken$1(), "Version": GM_info.script.version }, data: JSON.stringify({ word: selectionText || window.getSelection().toString().trim(), location:location.href }), onload: function (r) { resolve(r.responseText); } }); }) } async function getPayUrl(checkIndex,payIndex) { return new Promise(resolve => { GM_xmlhttpRequest({ method: "GET", url: `https://app.itihey.com/pcService/api/getPayUrl?payIndex=${payIndex}&checkIndex=${checkIndex}`, headers: { "access-token": getToken$1(), "Version": GM_info.script.version }, onload: function (r) { try { top.document.getElementById('hcSearcheIframe').contentWindow.HuaCiDefinedProp('change', JSON.parse(r.responseText)); } catch (e) { } } }); }) } async function checkPayResult(order_id) { return new Promise(resolve => { GM_xmlhttpRequest({ method: "GET", url: `http://lyck6.cn/payService/isPay?order_id=${order_id}&phone=1`, onload: function (r) { try { top.document.getElementById('hcSearcheIframe').contentWindow.HuaCiDefinedProp('check', JSON.parse(r.responseText)); } catch (e) { } } }); }) } function getDefaultConfig() { const defaultConfig = { cut_search: true,//截图搜索 auto_search: false,//自动搜索 auto_close: true,//自动关闭 remove_limit: true,//解除限制 fixed_modal: true,//基于浏览器布局 custom_style_on: true, in_setting: false,//是否在设置页面 custom_style: "", out_iframe: true, }; //去查找接口设置 默认 if (GM_getValue("defaultConfig") === undefined) { GM_setValue("defaultConfig", JSON.stringify(defaultConfig)); } const cacheConfig = JSON.parse(GM_getValue("defaultConfig")); if (Object.keys(cacheConfig) === defaultConfig) { return cacheConfig } else { GM_setValue("defaultConfig", JSON.stringify(defaultConfig)); return defaultConfig } } let options = getDefaultConfig(); function getToken() { if (typeof GM_getValue("token") === 'string') { return GM_getValue("token") } else { return '' } } window.addEventListener("message", function (event) { if (event.data.type === 'search') { addModal2(createFrameLoading(), false); searchWord(event.data.wd).then(res => { addModal2(res, false, false); }); } else { if (event.data.type === 'auto_close') { options.auto_close = event.data.auto_close; GM_setValue("defaultConfig", JSON.stringify(options)); } else if (event.data.type === 'auto_search') { options.auto_search = event.data.auto_search; GM_setValue("defaultConfig", JSON.stringify(options)); } else if (event.data.type === 'cut_search') { options.cut_search = event.data.cut_search; GM_setValue("defaultConfig", JSON.stringify(options)); } else if (event.data.type === 'remove_limit') { let copy = Object.assign(options); copy.remove_limit = event.data.remove_limit; GM_setValue("defaultConfig", JSON.stringify(copy)); } else if (event.data.type === 'fixed_modal') { options.fixed_modal = event.data.fixed_modal; GM_setValue("defaultConfig", JSON.stringify(options)); } else if (event.data.type === 'out_iframe') { options.out_iframe = event.data.out_iframe; GM_setValue("defaultConfig", JSON.stringify(options)); } else if (event.data.type === 'login') { GM_xmlhttpRequest({ method: "GET", url: "https://app.itihey.com/ssoService/api/checkLogin?ticket=" + event.data.ticket, headers: { "Content-Type": "application/x-protobuf", "Accept": "application/x-protobuf" }, responseType: "arraybuffer", onload: function (res) { const obj = messages.LoginResponse.deserializeBinary(res.response).toObject(); console.log(obj); if (obj.code === 0) { GM_setValue('token', obj.data.token); GM_setValue('id', obj.data.nickname); SearchPanel.show(false); } } }); } else if (event.data.type === 'captcha') { addModal2(createFrameLoading(), false); GM_xmlhttpRequest({ method: "POST", url: "https://app.itihey.com/pcService/api/captchaByHuaCi", headers: { "timestamp": Date.now(), "Content-Type": "application/json;charset=utf-8", "access-token": getToken(), "Version": GM_info.script.version }, data: JSON.stringify(event.data.res), onload: function (r) { searchWord().then(res => { addModal2(res, false, false); }); } }); } else if (event.data.type === 'checkVersion') { GM_setValue("version", JSON.stringify(event.data.version)); } else if (event.data.type === 'getPayUrl') { getPayUrl(event.data.checkIndex, event.data.payIndex); } else if (event.data.type === 'checkPay') { checkPayResult(event.data.outId); } else if (event.data.type === 'success') { searchWord().then(res => { addModal2(res, false, false); }); } else if (event.data.type === 'close') { removeTemplate(MODAL_ID); } } }, false); let POPOVER_ID = 'hcSearchePopover'; let MODAL_ID = 'hcSearcheModal'; let mouseX = 0; let mouseY = 0; let _self = unsafeWindow, top$1 = _self, UE = _self.UE; // function showFooter(obj) { // let version = JSON.parse(GM_getValue("version")) // if (version.need_update) { // return createFooterNode('当前版本为' + GM_info.script.version + ',最新版本为' + version.version + ' <a style="color:blue;text-decoration:none" target="_blank" href="https://www.zhaojiaoben.cn/script/detail/3524835685254d03bf5af828815430ec" >去升级</a>') // } else if (obj.code !== 0) { // let msg = obj.message // if (obj.code === 40001) { // msg = '当天匿名查询次数达到最大值' // } else if (obj.code === 40002) { // msg = '当天查询次数达到最大值' // } // return createFooterNode('请求码' + obj.code + ',' + msg + ' <a style="color:blue;text-decoration:none" target="_blank" href="http://www.itihey.com/zh/report/" >去反馈</a>') // } else if (obj.code === 0 && obj.message !== '请求成功') { // return createFooterNode(obj.message) // } // } var SearchPanel = { getOptions: function () { return options }, show: function (word) { options.in_setting = false; addModal2(createFrameLoading(), options.auto_close === true); searchWord(word).then(res => { addModal2(res, false, false); }); }, showWordSearch() { options.auto_close = false; GM_setValue("defaultConfig", JSON.stringify(options)); searchWord("").then(res => { addModal2(res, false, false); }); }, setting: function () { options.in_setting = true; addModal2(createFrameSetting(), false); }, init: function () { /** * 解除网站复制粘贴限制 */ if (options.remove_limit) relieveLimit(); //页面始终保持再最外层document top$1 = options.out_iframe ? searchOutDocument(_self, top$1) : top$1; top$1.document.addEventListener('mouseup', mouseUp); top$1.document.addEventListener('mousemove', function (e) { mouseX = e.clientX; mouseY = e.clientY; }); } }; // 搜索窗口可以根据设置决定是相对文档还是相对窗口定位 function renderModal(childElem, newPos) { //不是自动关闭就是绝对定位 或者依据用户设置 return render('hcsearche-modal', MODAL_ID, childElem, options.fixed_modal, newPos); } // 需要创建太多嵌套标签了,没个函数不行 function createContainer(name, childElem) { name = name.toLowerCase(); let elem = top$1.document.createElement(name); elem.style.display = 'block'; // id 改成驼峰式 elem.id = name.replace('hcsearche', 'hcSearche').replace(/\-[a-z]/g, function (w) { return w.replace('-', '').toUpperCase(); }); if (childElem) { if (Array.isArray(childElem) === false) childElem = [childElem]; for (let i = 0; i < childElem.length; i++) elem.appendChild(childElem[i]); } return elem; } /** * isFixed 是否相对浏览器可视区域定位 * newPos 是否更新定位(如果元素已经存在的话 */ function render(tagName, elemId, childElem, isFixed, newPos) { let doc = top$1.document; let elem = doc.getElementById(elemId); if (elem) { elem.innerHTML = ''; } else { elem = doc.createElement(tagName); elem.id = elemId; doc.body.appendChild(elem); } let contentNode = createContainer(tagName + '-container', childElem); elem.appendChild(contentNode); // class ID same elem.classList.add(elemId); let X = false; let Y = false; if (!newPos) { X = elem.style.left.replace('px', ''); Y = elem.style.top.replace('px', ''); } if (!X) { let pos = getXY(elem.offsetWidth, elem.offsetHeight); X = pos.X; Y = pos.Y; // 相对文档定位时需要将文档滚动距离加上 if (!isFixed) { Y += window.pageYOffset; } } elem.style.position = isFixed ? 'fixed' : 'absolute'; elem.style.left = X + 'px'; elem.style.top = Y + 'px'; setTimeout(function () { elem.classList.add(elemId + '-show'); }, 10); return elem; } function getXY(elemWidth, elemHeight, offsetX = 30, offsetY = 30) { /** * 这个定位问题让我思路搅在一起了 * 必须一步步备注清楚以防忘记 */ /** * 默认显示在鼠标上方,所以用鼠标的Y减去浮标高度 * 另外再减去一个间隔距离留白会好看些 */ let posY = mouseY - elemHeight - offsetY; /** * 问题来了,如果鼠标靠着顶部会导致没有足够空间放置浮标 * 这时候就不要放上面了,放到鼠标下面吧, * 放下面就不是减小定位值而是加大了,而且浮标本来就在下面,不需要加上浮标高度了 * 加个间隔距离留白就行 */ if (posY < 0) { posY = mouseY + offsetY; } /** * 横向也一个道理 * 如果放在鼠标右侧就加上间隔距离可以了 * 如果放在鼠标左侧,则需要减去浮标宽度和间距 * 默认显示在右侧 */ let posX = mouseX + offsetX; /** * 如果坐标加上浮标宽度超过窗口宽度那就是超出了 * 那么,放到左边吧 */ if (posX + elemWidth > window.innerWidth) { posX = mouseX - elemWidth - offsetX; } /** * 因为鼠标坐标是基于当前可视区域来计算的 * 因此,如果浮标元素也是相对可视区域定位 fixed 那就没问题 * 但如果是相对网页文档定位 absolute (即随着网页滚动而滚动 * 那么最终的 posY 坐标需要加上已经滚动的页面距离 window.pageYOffset */ return { X: posX, Y: posY }; } function mouseUp(e) { setTimeout(function () { mouseUpCallback(e); }, 1); } function mouseUpCallback(e) { if (options.auto_close === true) { removeTemplate(MODAL_ID, e.target); } e = e || window.event; mouseX = e.clientX; mouseY = e.clientY; let txt = window.getSelection().toString().trim(); if (txt && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA') ; else { autoRemoveTemplate(e); } } function autoRemoveTemplate(e) { removeTemplate(POPOVER_ID, false); /** * 只有开启自动关闭才会自动移除搜索窗口 */ if (options.auto_close === true) { removeTemplate(MODAL_ID, e.target); } } // 临时锁定 function lockClick() { // toggle options options.auto_close = !options.auto_close; // toggle class this.classList.toggle('hcSearcheModalLocked', options.auto_close === false); } function linkCloseClick() { removeTemplate(MODAL_ID); } function createFrameLoading() { let html = `<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, user-scalable=0, width=device-width"> <meta name="full-screen" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-touch-fullscreen" content="yes"> <meta name="format-detection" content="address=no"> <meta name="format-detection" content="telephone=no"> <title>划词搜题</title> <style>` + GM_getResourceText('weuiCss') + `</style> <style type="text/css"> body, html { height: 100%; padding: 10px; -webkit-tap-highlight-color: transparent; } body::-webkit-scrollbar { display: none; } .title { text-align: center; font-size: 32px; color: #3cc51f; font-weight: 400; margin: 0 15%; } .header { padding: 35px 0; } em { font-style: normal; color: #3cc51f; } </style> </head> <body ontouchstart>`; html += `</body> <script> ` + GM_getResourceText('JQ361JS') + ` </script> <script>` + GM_getResourceText('jqueryweui') + `</script> <script type="text/javascript"> $.showLoading("正在搜索中"); </script> </html>`; return html; } function addModal2(html, newPos, footerChildNode = false) { // header link let linksNode = createContainer('hcsearche-modal-links'); let userNode = top$1.document.createElement('hcsearche-link'); userNode.innerHTML = '用户' + GM_getValue('id'); userNode.style.color = '#586069'; let logoutNode = top$1.document.createElement('hcsearche-link'); logoutNode.setAttribute('title', '点击退出登录'); logoutNode.innerHTML = '退出'; logoutNode.setAttribute('data-securrent', 'true'); logoutNode.style.color = '#586069'; logoutNode.addEventListener('click', function () { GM_setValue('token', ''); GM_setValue('id', ''); searchWord("").then(res => { addModal2(res, false, false); }); }); if (GM_getValue('id')) { linksNode.appendChild(userNode); linksNode.appendChild(logoutNode); } let linkNode = top$1.document.createElement('hcsearche-link'); linkNode.setAttribute('title', '点击打开帮助文档'); linkNode.setAttribute('data-seindex', 0); linkNode.innerHTML = '题海 x 划词搜题'; linkNode.setAttribute('data-securrent', 'true'); linkNode.style.color = '#586069'; linkNode.addEventListener('click', function () { window.open('https://www.itihey.com'); }); linksNode.appendChild(linkNode); let settingNode = top$1.document.createElement('hcsearche-link'); settingNode.setAttribute('title', '点击打开设置页'); settingNode.setAttribute('data-seindex', 0); settingNode.setAttribute('id', "settingNode"); settingNode.innerHTML = options.in_setting ? '返回' : '设置'; settingNode.setAttribute('data-securrent', 'true'); linkNode.style.color = '#586069'; settingNode.addEventListener('click', function () { options.in_setting = !options.in_setting; let btn = top$1.document.getElementById("settingNode").innerText; if (btn === '返回') { top$1.document.getElementById("settingNode").innerText = '设置'; SearchPanel.showWordSearch(); } else { top$1.document.getElementById("settingNode").innerText = '返回'; addModal2(createFrameSetting(), false); } }); linksNode.appendChild(settingNode); // close button let closeLinkNode = top$1.document.createElement('hcsearche-link'); closeLinkNode.id = 'hcSearcheClose'; closeLinkNode.innerHTML = '×'; closeLinkNode.addEventListener('click', linkCloseClick); linksNode.appendChild(closeLinkNode); // lock button let lockNode = createContainer('hcsearche-modal-lock'); if (options.auto_close === false) lockNode.classList.add('hcSearcheModalLocked'); lockNode.addEventListener('click', lockClick); // iframe let iframeNode = top$1.document.createElement('iframe'); iframeNode.id = 'hcSearcheIframe'; iframeNode.setAttribute('width', '100%'); iframeNode.setAttribute('frameborder', '0'); html = html.replace('<link rel="stylesheet" href="https://app.itihey.com/static/css/question_search.css">', `<style>${GM_getResourceText('questionCss')}</style>`); iframeNode.srcdoc = html; let headerNode = createContainer('hcsearche-modal-header', [lockNode, linksNode]); let bodyNode = createContainer('hcsearche-modal-body', iframeNode); let footerNode = createContainer('hcsearche-modal-footer', footerChildNode); let contentNode = createContainer('hcsearche-modal-content', [headerNode, bodyNode, footerNode]); let modal = renderModal(contentNode, newPos); dragElement(modal); } function dragElement(elmnt) { var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; if (top$1.document.getElementById(elmnt.id + "-drag")) { // if present, the drag is where you move the DIV from: top$1.document.getElementById(elmnt.id + "-drag").onmousedown = dragMouseDown; } else { // otherwise, move the DIV from anywhere inside the DIV: elmnt.onmousedown = dragMouseDown; } function dragMouseDown(e) { e = e || window.event; e.preventDefault(); // get the mouse cursor position at startup: pos3 = e.clientX; pos4 = e.clientY; top$1.document.onmouseup = closeDragElement; // call a function whenever the cursor moves: top$1.document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); // calculate the new cursor position: pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; // set the element's new position: elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; } function closeDragElement() { // stop moving when mouse button is released: top$1.document.onmouseup = null; top$1.document.onmousemove = null; } } // containsCheckElem 检查是否模板内元素,是就不移除 function removeTemplate(elemId, containsCheckElem = false) { const temp = top$1.document.getElementById(elemId); if (temp && (containsCheckElem === false || temp.contains(containsCheckElem) === false)) { temp.classList.remove(elemId + '-show'); setTimeout(function () { if (temp.classList.contains(elemId + '-show') === false && temp.parentElement) { top$1.document.body.removeChild(temp); } }, 500); } } function createFrameSetting() { let html = ` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style>` + GM_getResourceText('bootstrap') + `</style> <title></title> </head> <body> <div id="app"> <div class="card"> <h6 class="card-header">悬浮搜索图标</h6> <div class="card-body"> <div class="custom-control custom-switch"> <p> <input type="checkbox" class="custom-control-input" id="auto_search" v-model="auto_search"> <label class="custom-control-label" for="auto_search"> 划词后自动搜题 </label> <span class="form-text text-muted small">打开后划词自动打开搜题窗口进行搜题,否则鼠标右下角显示搜题图标</span> </p> </div> <div class="custom-control custom-switch"> <input type="checkbox" class="custom-control-input" id="cut_search" v-model="cut_search"> <label class="custom-control-label" for="cut_search"> 截图搜题 </label> <span class="form-text text-muted small">同时按下键盘T+H(题海首拼),然后框选指定的内容进行搜题,用于解决某些网页无法复制选中问题</span> </div> </div> </div> <div class="card"> <h6 class="card-header">解除限制</h6> <div class="card-body"> <div class="custom-control custom-switch"> <input type="checkbox" class="custom-control-input" id="remove_limit" v-model="remove_limit"> <label class="custom-control-label" for="remove_limit"> 解除网站的禁止复制限制 </label> <span class="form-text text-muted small">打开后可解除部分网站的禁止划词限制,如冲突可关闭此功能<font color="red">(刷新页面后生效)</font></span> </div> </div> </div> <div class="card"> <h6 class="card-header">搜索窗口</h6> <div class="card-body"> <div class="custom-control custom-switch"> <p> <input type="checkbox" class="custom-control-input" id="fixed_modal" v-model="fixed_modal"> <label class="custom-control-label" for="fixed_modal"> 基于浏览器窗口定位 </label> <span class="form-text text-muted small">打开后搜索窗口可固定在浏览器窗口特定位置,不受页面滚动影响</span> </p> </div> <div class="custom-control custom-switch"> <p> <input type="checkbox" class="custom-control-input" id="out_iframe" v-model="out_iframe"> <label class="custom-control-label" for="out_iframe"> 寻找最外层iframe </label> <span class="form-text text-muted small">打开后将会将搜题窗口悬浮在最外层iframe,可能某些网站<font color="red">无法正常显示搜题窗口</font>,否则将会在本iframe显示搜题窗口,若限制窗口无法移动到自定义的位置时可打开此开关</span> </p> </div> </div> </div> </div> </body> <script> ` + GM_getResourceText('Vue') + `</script> <!-- 引入组件库 --> <script> window.app = new Vue({ el: '#app', data: ` + (GM_getValue("defaultConfig")) + `, watch: { auto_close: function(val) { window.parent.postMessage({"type": 'auto_close',"auto_close":val}, '*'); }, cut_search: function (val){ window.parent.postMessage({"type": 'cut_search',"cut_search":val}, '*'); }, auto_search: function (val){ window.parent.postMessage({"type": 'auto_search',"auto_search":val}, '*'); }, fixed_modal:function (val){ window.parent.postMessage({"type": 'fixed_modal',"fixed_modal":val}, '*'); }, remove_limit:function (val){ window.parent.postMessage({"type": 'remove_limit',"remove_limit":val}, '*'); }, out_iframe:function (val){ window.parent.postMessage({"type": 'out_iframe',"out_iframe":val}, '*'); } } }) </script> </html> `; return html; } /** * 解除限制 */ function relieveLimit() { start(); if (location.host.indexOf('chaoxing') !== -1) { setTimeout(() => { try { _self.UEDITOR_CONFIG.scaleEnabled = false; } catch (e) { } // $.each(UE.instants, function () { // var key = this.key; // this.ready(function () { // this.destroy(); // UE.getEditor(key); // }); // }); }, 2000); } if ((window.location.href.includes("newMooc=true") && location.host.indexOf('chaoxing') !== -1) || location.pathname.indexOf('exam/test/reVersionPaperMarkContentNew') !== -1) { setTimeout(() => { $("body").removeAttr("onselectstart"); $("html").css("user-select", "unset"); try { UE.EventBase.prototype.fireEvent = function () { return null }; } catch (e) { } }, 2000); } } const jietuDiv = ` <div class="jietu" style=" position: fixed; top: 0; left: 0; z-index: 9999; width: 100%; height: 100%; "> <div class="box-wrapper" > <div class="jietuBox" style=" width: 0px; height: 0px; background-color: #0000; outline: 1px solid #159ae1; position: relative; box-shadow: 0 0 0 65535px rgba(0, 0, 0, 0.5); pointer-events: none; "> <div class="box-corner" style="display: none;"></div> </div> </div> <div class="logText" style=" min-width: 333px; font-size: 20px; line-height: 56px; top: 64px; color: #fff; white-space: nowrap; text-align: center; z-index: 9999; background: #000000a3; border-radius: 8px; position: fixed; left: 50%; transform: translate(-50%, -50%); ">请截取想要搜索的题目</div> </div>`; let isDragging = false; let box; let startX, startY; let jietu; let keysPressed = {}; document.addEventListener('keyup', (event) => { delete keysPressed[event.key.toUpperCase()]; }); document.addEventListener('keydown', function (event) { keysPressed[event.key.toUpperCase()] = true; // 检查是否同时按下了 T 和 H if (options.cut_search && keysPressed['T'] && keysPressed['H'] && !document.querySelector('.jietuBox')) { jietu = document.createElement('div'); jietu.innerHTML = jietuDiv; document.body.appendChild(jietu); document.addEventListener('mousedown', jietuMousedown); document.addEventListener('mousemove', jietuMousemove); document.addEventListener('mouseup', getcanvas); document.addEventListener('mouseleave', jietuMouseleave); } else if (event.key === 'Escape' && document.querySelector('.jietuBox')) { document.removeEventListener('mousedown', jietuMousedown); document.removeEventListener('mousemove', jietuMousemove); document.removeEventListener('mouseup', getcanvas); document.removeEventListener('mouseleave', jietuMouseleave); jietu.remove(); } }); function jietuMousedown(event) { box = document.querySelector('.jietuBox'); if (box) { isDragging = true; startX = event.clientX; startY = event.clientY; console.log('event==>', event); box.style.left = `${startX}px`; box.style.top = `${startY}px`; box.style.width = '0px'; box.style.height = '0px'; } } function jietuMousemove(event) { if (!isDragging) return; box = document.querySelector('.jietuBox'); if (box) { const text = document.querySelector('.logText'); text.style.display = 'none'; // 计算框选区域的左上角坐标 const left = Math.min(event.clientX, startX); const top = Math.min(event.clientY, startY); const width = Math.abs(event.clientX - startX); const height = Math.abs(event.clientY - startY); box.style.left = `${left}px`; box.style.top = `${top}px`; box.style.width = `${width}px`; box.style.height = `${height}px`; } } function getcanvas() { box = document.querySelector('.jietuBox'); if (!box) { return } if (box && box.offsetWidth > 0 && box.offsetHeight > 0) { const F = box.getBoundingClientRect(); addModal2(createFrameLoading(), false); html2canvas(document.body).then(async canvas => { let croppedCanvas = document.createElement("canvas"); croppedCanvas.width = F.width * window.devicePixelRatio; croppedCanvas.height = F.height * window.devicePixelRatio; let ctx = croppedCanvas.getContext("2d"); // 从原始画布中裁剪所需部分 ctx.drawImage(canvas, -F.x * window.devicePixelRatio, -F.y * window.devicePixelRatio, canvas.width, canvas.height); let o = croppedCanvas.toDataURL("image/jpeg", .8); const txt = await imgOcrBase64(o.replace('data:image/jpeg;base64,', '')); searchWord(txt).then(res => { addModal2(res, false, false); }); }); } const jietu = document.querySelector('.jietu'); if (jietu) { isDragging = false; startX = 0; startY = 0; document.removeEventListener('mousedown', jietuMousedown); document.removeEventListener('mousemove', jietuMousemove); document.removeEventListener('mouseup', getcanvas); jietu.remove(); } } function jietuMouseleave() { isDragging = false; startX = 0; startY = 0; document.removeEventListener('mousedown', jietuMousedown); document.removeEventListener('mousemove', jietuMousemove); document.removeEventListener('mouseup', getcanvas); document.removeEventListener('mouseleave', jietuMouseleave); } function generateRandomString(length) { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } // 调用函数生成长度为6-10的随机字符串 var randomString = generateRandomString(Math.floor(Math.random() * 5) + 6); // console.log(randomString); //主程序 var HcSearch=function(){ var transIconBase64="data:image/webp;base64,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"; var $doc=$(document); var $body=$("html body"); var randomCode="yyMM000000"; //属性随机码,年月加六位随机码。用于元素属性后缀,以防止属性名称重复。 var createHtml=function(){ var wordTransIconHtml=StringFormat('<div id="'+randomString+'{0}icon" class="wordTrans{0}"><div class="wordTransIcon{0}"></div></div>',randomCode,transIconBase64); $body.append(StringFormat('<div id="'+randomString+'{0}">',randomCode)+wordTransIconHtml+'</div>'); }; var createStyle=function(){ //尽可能避开csp认证 GM_addStyle(`#hcSearchePopover,#hcSearcheModal,#hcSearchePopover.hcSearchePopover,#hcSearcheModal.hcSearcheModal{all:initial;position:absolute;z-index:2147483647;display:block;font-size:14px;color:#333333;line-height:26px;transform:scale(0.9);opacity:0;transition:transform 0.1s ease-out,opacity 0.1s ease-out;}#hcSearchePopover.hcSearchePopover-show,#hcSearcheModal.hcSearcheModal-show{transform:scale(1);opacity:1;}#hcSearcheModal #hcSearcheModalContent{background:#f6f8fa;border:1px solid #d1d5da;border-radius:3px;color:#586069;display:block;box-shadow:0 16px 100px 0 rgba(0,0,0,0.2);}#hcSearcheModal #hcSearcheModalBody{margin-left:auto;margin-right:auto;position:relative;width:390px;background-color:#fff;border:1px solid #d1d5da;border-width:1px 0;border-radius:3px;}#hcSearcheModal #hcSearcheIframe{overflow:hidden;margin:0;padding:0;height:550px;}#hcSearcheModal #hcSearcheModalHeader{font-size:13px;line-height:24px;padding:6px 12px;color:#586069;}#hcSearcheModal #hcSearcheModalHeader::after{display:block;clear:both;content:"";}#hcSearcheModal #hcSearcheModalFooter{min-height:10px;cursor:move;position:relative;display:flex; justify-content: center;}#hcSearcheModal #hcSearcheModalLinks{float:right}#hcSearcheModal #hcSearcheModalLinks hcsearche-link{display:inline-block;color:#24292e;margin:0 0 0 6px;font-size:13px;font-weight:normal;text-decoration:none;cursor:pointer;padding:0 0.5em;border-radius:0;}#hcSearcheModal #hcSearcheModalLinks hcsearche-link[data-securrent=true],#hcSearcheModal #hcSearcheModalLinks hcsearche-link:hover{background:rgba(27,31,35,.08);color:#444d56;}#hcSearcheModal #hcSearcheModalLinks hcsearche-link>svg{vertical-align:sub;padding-left:4px;}#hcSearcheModal #hcSearcheModalLinks #hcSearcheClose:hover{background:rgba(0,0,0,0.05);}#hcSearcheModal #hcSearcheModalLock{float:left;display:block;opacity:0.3;margin-top:3px;width:20px;height:20px;background-size:20px;background-position:center;background-repeat:no-repeat;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMSAxMHYtNGMwLTIuNzYtMi4yNC01LTUtNXMtNSAyLjI0LTUgNXYyaC0xdi0yYzAtMy4zMTIgMi42ODktNiA2LTZzNiAyLjY4OSA2IDZ2NGgxMHYxNGgtMTh2LTE0aDd6bTEwIDFoLTE2djEyaDE2di0xMnoiLz48L3N2Zz4=);}#hcSearcheModal #hcSearcheModalLock.hcSearcheModalLocked{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik02IDZjMC0zLjMxMSAyLjY4OS02IDYtNnM2IDIuNjg4IDYgNnY0aDN2MTRoLTE4di0xNGgzdi00em0xNCA1aC0xNnYxMmgxNnYtMTJ6bS0xMy01djRoMTB2LTRjMC0yLjc2LTIuMjQtNS01LTVzLTUgMi4yNC01IDV6Ii8+PC9zdmc+)}#hcSearcheModal #hcSearcheNextLink{position:absolute;top:-40px;right:28px;display:block;width:32px;height:32px;color:#6c757d;cursor:pointer;background-size:16px;background-position:center;background-repeat:no-repeat;background-color:#f6f8fa;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA4UlEQVQ4T+2TTUoDQRCF32twTpCLuFKYEaYWguvoGQS3nsFjeAYXEoIQ6JqF1wi6Sly48wBPGpzQtpNJyMJVetm8+urvFTHyYoy3IYS3tm0X22QcA7j7A4B3M3s8Av5rBu4+MbPPfuJDWyg1mzVKCu6+InljZq8JUgK6rruTNDWzyz7JLx/EGM8APJO8TpAc8BN8D+DCzD4GAekzhwC4SkYieSLpT3DSDzoxQUjOJM1DCEHSeZl5awXZABtJLyS/AJzmZee23nULTVVV67qulwfdwtihbVpw9wjA9hGXGklP3z4VgPj5LnZPAAAAAElFTkSuQmCC);border-radius:3px;}#hcSearcheModal #hcSearcheNextLink:hover{background-color:#e9ecef;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA8ElEQVQ4T2NkwAMKCwvT/v37d3/ixIm7cSljxGdAQUFBCwMDw4MJEybMGTWAXmFQXFws0tvb+wYW4thiAV0NPBobGhqY3r9//4yBgSFk4sSJR0CGoBtQUFCQycDAEDRhwgRXmCUo6SA/P9+ckZFx0////4NBhiAbANVc9OvXL9tp06a9wGoASBDZEEZGRg9QQmJgYGBlYGDA0AxSjzUlQg3Z8v///20MDAxMjIyMFug243QBTCI/P9+GgYFhBwMDw+ffv38bIjsbOVnjzQvFxcU2TExMz7u7u++SlRfwZTS4F/Lz8/cxMjI6EqMYi5p1AJbtgw7fjyoMAAAAAElFTkSuQmCC);color:#444d56;}#hcSearcheModal #hcSearcheNextLink.hcSearcheNextLinkLoading{background-color:#e9ecef;background-image:none;}#hcSearcheModal #hcSearcheNextLink.hcSearcheNextLinkLoading:after{content:" ";display:block;width:12px;height:12px;margin:9px 0 0 9px;border-radius:50%;border:1px solid #24292e;border-color:#24292e transparent #24292e transparent;animation:hcSearcheNextLinkLoading 1.2s linear infinite;}@keyframes hcSearcheNextLinkLoading{0%{transform:rotate(0deg);}50%{transform:rotate(180deg);}100%{transform:rotate(720deg);}}.JPopBox-tip-white{z-index:1060;min-width:50px;max-width:300px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;color:#333;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.JPopBox-tip-white .JPopBox-tip-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0;font-weight:500;line-height:1.1;color:inherit}.JPopBox-tip-white .JPopBox-tip-content{padding:9px 14px}.JPopBox-tip-white .JPopBox-tip-arrow,.JPopBox-tip-white .JPopBox-tip-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid;border-width:10px;content:""}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-top{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:rgba(0,0,0,.25);bottom:-11px}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-top:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-right{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:rgba(0,0,0,.25)}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-right:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-bottom{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:rgba(0,0,0,.25);top:-11px}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-bottom:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-left{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:rgba(0,0,0,.25)}.JPopBox-tip-white .JPopBox-tip-arrow.JPopBox-tip-arrow-left:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.JPopBox-tip-white{width: 482px;max-width: 550px;min-width: 450px;}`); var s=""; s+=StringFormat(".wordTrans{0}{box-sizing: content-box;cursor: pointer;z-index: 2147483647;border-width: 0px;border-style: solid;border-image: initial;border-radius: 5px;padding: 0.5px;position: absolute;display: none}",randomCode); s+=StringFormat(".wordTransIcon{0}{background-image: url({1});background-size: 50px;height: 50px;width: 50px;}",randomCode,transIconBase64); s+=Panel.CreateStyle(); GM_addStyle(s); }; var ShowWordTransIcon=function(){ var wordTransIcon = document.getElementById(randomString + randomCode+'icon'); var isSelect=false; var isPanel=false; var isWordTransIcon=false; $doc.on({ "selectionchange":function(e){ isSelect=true; }, "mousedown":function(e){ var $targetEl=$(e.target); isPanel=$targetEl.parents().is("div.JPopBox-tip-white"); isWordTransIcon=$targetEl.parents().is(StringFormat("div#"+randomString+"{0}",randomCode)); //点击划词图标外域和划词面板外域时,隐藏图标和划词面板 if(!isWordTransIcon && !isPanel){ wordTransIcon.style.display = "none"; Panel.Destroy(); } else { //点击划词图标,取消鼠标默认事件,防止选中的文本消失 if(isWordTransIcon){ ClearBubble(e); } } }, "mouseup":function(e){ var selectText = window.getSelection().toString().trim(); if(!isPanel&&isSelect&&selectText){ if (!SearchPanel.getOptions().auto_search){ wordTransIcon.style.display = 'block'; wordTransIcon.style.left = e.pageX + 'px'; wordTransIcon.style.top = (e.pageY + 12) + 'px'; }else { //选中的文本内容 SearchPanel.show(selectText); } isSelect=false; } } }); wordTransIcon.addEventListener("click", function(e) { // GetSettingOptions(); //如果不是自动搜索的话,就显示出来搜索按钮,然后让用户点击 if (!SearchPanel.getOptions().auto_search) { Panel.Destroy(); SearchPanel.show(); wordTransIcon.style.display = "none"; e.stopPropagation(); } }); }; // var guid=""; var RegMenu=function(){ GM_registerMenuCommand("文本搜题",function(){ SearchPanel.showWordSearch(); }); GM_registerMenuCommand("设置",function(){ SearchPanel.setting(); }); }; this.init=function(){ randomCode=DateFormat(new Date(),"yyMM").toString()+(Math.floor(Math.random() * (999999 - 100000 + 1) ) + 100000).toString(); createStyle(); createHtml(); ShowWordTransIcon(); SearchPanel.init(); RegMenu(); reportOnline(); }; }; var hcSearch=new HcSearch(); hcSearch.init(); })();