var COMPILED = false; var goog = goog || {}; goog.global = this; goog.global.CLOSURE_DEFINES; goog.exportPath_ = function(name, opt_object, opt_objectToExportTo) { var parts = name.split("."); var cur = opt_objectToExportTo || goog.global; if(!(parts[0] in cur) && cur.execScript) { cur.execScript("var " + parts[0]) } for(var part;parts.length && (part = parts.shift());) { if(!parts.length && opt_object !== undefined) { cur[part] = opt_object }else { if(cur[part]) { cur = cur[part] }else { cur = cur[part] = {} } } } }; goog.define = function(name, defaultValue) { var value = defaultValue; if(!COMPILED) { if(goog.global.CLOSURE_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES, name)) { value = goog.global.CLOSURE_DEFINES[name] } } goog.exportPath_(name, value) }; goog.DEBUG = true; goog.define("goog.LOCALE", "en"); goog.define("goog.TRUSTED_SITE", true); goog.provide = function(name) { if(!COMPILED) { if(goog.isProvided_(name)) { throw Error('Namespace "' + name + '" already declared.'); } delete goog.implicitNamespaces_[name]; var namespace = name; while(namespace = namespace.substring(0, namespace.lastIndexOf("."))) { if(goog.getObjectByName(namespace)) { break } goog.implicitNamespaces_[namespace] = true } } goog.exportPath_(name) }; goog.setTestOnly = function(opt_message) { if(COMPILED && !goog.DEBUG) { opt_message = opt_message || ""; throw Error("Importing test-only code into non-debug environment" + opt_message ? ": " + opt_message : "."); } }; if(!COMPILED) { goog.isProvided_ = function(name) { return!goog.implicitNamespaces_[name] && !!goog.getObjectByName(name) }; goog.implicitNamespaces_ = {} } goog.getObjectByName = function(name, opt_obj) { var parts = name.split("."); var cur = opt_obj || goog.global; for(var part;part = parts.shift();) { if(goog.isDefAndNotNull(cur[part])) { cur = cur[part] }else { return null } } return cur }; goog.globalize = function(obj, opt_global) { var global = opt_global || goog.global; for(var x in obj) { global[x] = obj[x] } }; goog.addDependency = function(relPath, provides, requires) { if(goog.DEPENDENCIES_ENABLED) { var provide, require; var path = relPath.replace(/\\/g, "/"); var deps = goog.dependencies_; for(var i = 0;provide = provides[i];i++) { deps.nameToPath[provide] = path; if(!(path in deps.pathToNames)) { deps.pathToNames[path] = {} } deps.pathToNames[path][provide] = true } for(var j = 0;require = requires[j];j++) { if(!(path in deps.requires)) { deps.requires[path] = {} } deps.requires[path][require] = true } } }; goog.define("goog.ENABLE_DEBUG_LOADER", true); goog.require = function(name) { if(!COMPILED) { if(goog.isProvided_(name)) { return } if(goog.ENABLE_DEBUG_LOADER) { var path = goog.getPathFromDeps_(name); if(path) { goog.included_[path] = true; goog.writeScripts_(); return } } var errorMessage = "goog.require could not find: " + name; if(goog.global.console) { goog.global.console["error"](errorMessage) } throw Error(errorMessage); } }; goog.basePath = ""; goog.global.CLOSURE_BASE_PATH; goog.global.CLOSURE_NO_DEPS; goog.global.CLOSURE_IMPORT_SCRIPT; goog.nullFunction = function() { }; goog.identityFunction = function(opt_returnValue, var_args) { return opt_returnValue }; goog.abstractMethod = function() { throw Error("unimplemented abstract method"); }; goog.addSingletonGetter = function(ctor) { ctor.getInstance = function() { if(ctor.instance_) { return ctor.instance_ } if(goog.DEBUG) { goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor } return ctor.instance_ = new ctor } }; goog.instantiatedSingletons_ = []; goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; if(goog.DEPENDENCIES_ENABLED) { goog.included_ = {}; goog.dependencies_ = {pathToNames:{}, nameToPath:{}, requires:{}, visited:{}, written:{}}; goog.inHtmlDocument_ = function() { var doc = goog.global.document; return typeof doc != "undefined" && "write" in doc }; goog.findBasePath_ = function() { if(goog.global.CLOSURE_BASE_PATH) { goog.basePath = goog.global.CLOSURE_BASE_PATH; return }else { if(!goog.inHtmlDocument_()) { return } } var doc = goog.global.document; var scripts = doc.getElementsByTagName("script"); for(var i = scripts.length - 1;i >= 0;--i) { var src = scripts[i].src; var qmark = src.lastIndexOf("?"); var l = qmark == -1 ? src.length : qmark; if(src.substr(l - 7, 7) == "base.js") { goog.basePath = src.substr(0, l - 7); return } } }; goog.importScript_ = function(src) { var importScript = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_; if(!goog.dependencies_.written[src] && importScript(src)) { goog.dependencies_.written[src] = true } }; goog.writeScriptTag_ = function(src) { if(goog.inHtmlDocument_()) { var doc = goog.global.document; if(doc.readyState == "complete") { var isDeps = /\bdeps.js$/.test(src); if(isDeps) { return false }else { throw Error('Cannot write "' + src + '" after document load'); } } doc.write('\x3cscript type\x3d"text/javascript" src\x3d"' + src + '"\x3e\x3c/' + "script\x3e"); return true }else { return false } }; goog.writeScripts_ = function() { var scripts = []; var seenScript = {}; var deps = goog.dependencies_; function visitNode(path) { if(path in deps.written) { return } if(path in deps.visited) { if(!(path in seenScript)) { seenScript[path] = true; scripts.push(path) } return } deps.visited[path] = true; if(path in deps.requires) { for(var requireName in deps.requires[path]) { if(!goog.isProvided_(requireName)) { if(requireName in deps.nameToPath) { visitNode(deps.nameToPath[requireName]) }else { throw Error("Undefined nameToPath for " + requireName); } } } } if(!(path in seenScript)) { seenScript[path] = true; scripts.push(path) } } for(var path in goog.included_) { if(!deps.written[path]) { visitNode(path) } } for(var i = 0;i < scripts.length;i++) { if(scripts[i]) { goog.importScript_(goog.basePath + scripts[i]) }else { throw Error("Undefined script input"); } } }; goog.getPathFromDeps_ = function(rule) { if(rule in goog.dependencies_.nameToPath) { return goog.dependencies_.nameToPath[rule] }else { return null } }; goog.findBasePath_(); if(!goog.global.CLOSURE_NO_DEPS) { goog.importScript_(goog.basePath + "deps.js") } } goog.typeOf = function(value) { var s = typeof value; if(s == "object") { if(value) { if(value instanceof Array) { return"array" }else { if(value instanceof Object) { return s } } var className = Object.prototype.toString.call((value)); if(className == "[object Window]") { return"object" } if(className == "[object Array]" || typeof value.length == "number" && typeof value.splice != "undefined" && typeof value.propertyIsEnumerable != "undefined" && !value.propertyIsEnumerable("splice")) { return"array" } if(className == "[object Function]" || typeof value.call != "undefined" && typeof value.propertyIsEnumerable != "undefined" && !value.propertyIsEnumerable("call")) { return"function" } }else { return"null" } }else { if(s == "function" && typeof value.call == "undefined") { return"object" } } return s }; goog.isDef = function(val) { return val !== undefined }; goog.isNull = function(val) { return val === null }; goog.isDefAndNotNull = function(val) { return val != null }; goog.isArray = function(val) { return goog.typeOf(val) == "array" }; goog.isArrayLike = function(val) { var type = goog.typeOf(val); return type == "array" || type == "object" && typeof val.length == "number" }; goog.isDateLike = function(val) { return goog.isObject(val) && typeof val.getFullYear == "function" }; goog.isString = function(val) { return typeof val == "string" }; goog.isBoolean = function(val) { return typeof val == "boolean" }; goog.isNumber = function(val) { return typeof val == "number" }; goog.isFunction = function(val) { return goog.typeOf(val) == "function" }; goog.isObject = function(val) { var type = typeof val; return type == "object" && val != null || type == "function" }; goog.getUid = function(obj) { return obj[goog.UID_PROPERTY_] || (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_) }; goog.removeUid = function(obj) { if("removeAttribute" in obj) { obj.removeAttribute(goog.UID_PROPERTY_) } try { delete obj[goog.UID_PROPERTY_] }catch(ex) { } }; goog.UID_PROPERTY_ = "closure_uid_" + (Math.random() * 1E9 >>> 0); goog.uidCounter_ = 0; goog.getHashCode = goog.getUid; goog.removeHashCode = goog.removeUid; goog.cloneObject = function(obj) { var type = goog.typeOf(obj); if(type == "object" || type == "array") { if(obj.clone) { return obj.clone() } var clone = type == "array" ? [] : {}; for(var key in obj) { clone[key] = goog.cloneObject(obj[key]) } return clone } return obj }; goog.bindNative_ = function(fn, selfObj, var_args) { return(fn.call.apply(fn.bind, arguments)) }; goog.bindJs_ = function(fn, selfObj, var_args) { if(!fn) { throw new Error; } if(arguments.length > 2) { var boundArgs = Array.prototype.slice.call(arguments, 2); return function() { var newArgs = Array.prototype.slice.call(arguments); Array.prototype.unshift.apply(newArgs, boundArgs); return fn.apply(selfObj, newArgs) } }else { return function() { return fn.apply(selfObj, arguments) } } }; goog.bind = function(fn, selfObj, var_args) { if(Function.prototype.bind && Function.prototype.bind.toString().indexOf("native code") != -1) { goog.bind = goog.bindNative_ }else { goog.bind = goog.bindJs_ } return goog.bind.apply(null, arguments) }; goog.partial = function(fn, var_args) { var args = Array.prototype.slice.call(arguments, 1); return function() { var newArgs = Array.prototype.slice.call(arguments); newArgs.unshift.apply(newArgs, args); return fn.apply(this, newArgs) } }; goog.mixin = function(target, source) { for(var x in source) { target[x] = source[x] } }; goog.now = goog.TRUSTED_SITE && Date.now || function() { return+new Date }; goog.globalEval = function(script) { if(goog.global.execScript) { goog.global.execScript(script, "JavaScript") }else { if(goog.global.eval) { if(goog.evalWorksForGlobals_ == null) { goog.global.eval("var _et_ \x3d 1;"); if(typeof goog.global["_et_"] != "undefined") { delete goog.global["_et_"]; goog.evalWorksForGlobals_ = true }else { goog.evalWorksForGlobals_ = false } } if(goog.evalWorksForGlobals_) { goog.global.eval(script) }else { var doc = goog.global.document; var scriptElt = doc.createElement("script"); scriptElt.type = "text/javascript"; scriptElt.defer = false; scriptElt.appendChild(doc.createTextNode(script)); doc.body.appendChild(scriptElt); doc.body.removeChild(scriptElt) } }else { throw Error("goog.globalEval not available"); } } }; goog.evalWorksForGlobals_ = null; goog.cssNameMapping_; goog.cssNameMappingStyle_; goog.getCssName = function(className, opt_modifier) { var getMapping = function(cssName) { return goog.cssNameMapping_[cssName] || cssName }; var renameByParts = function(cssName) { var parts = cssName.split("-"); var mapped = []; for(var i = 0;i < parts.length;i++) { mapped.push(getMapping(parts[i])) } return mapped.join("-") }; var rename; if(goog.cssNameMapping_) { rename = goog.cssNameMappingStyle_ == "BY_WHOLE" ? getMapping : renameByParts }else { rename = function(a) { return a } } if(opt_modifier) { return className + "-" + rename(opt_modifier) }else { return rename(className) } }; goog.setCssNameMapping = function(mapping, opt_style) { goog.cssNameMapping_ = mapping; goog.cssNameMappingStyle_ = opt_style }; goog.global.CLOSURE_CSS_NAME_MAPPING; if(!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) { goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING } goog.getMsg = function(str, opt_values) { var values = opt_values || {}; for(var key in values) { var value = ("" + values[key]).replace(/\$/g, "$$$$"); str = str.replace(new RegExp("\\{\\$" + key + "\\}", "gi"), value) } return str }; goog.getMsgWithFallback = function(a, b) { return a }; goog.exportSymbol = function(publicPath, object, opt_objectToExportTo) { goog.exportPath_(publicPath, object, opt_objectToExportTo) }; goog.exportProperty = function(object, publicName, symbol) { object[publicName] = symbol }; goog.inherits = function(childCtor, parentCtor) { function tempCtor() { } tempCtor.prototype = parentCtor.prototype; childCtor.superClass_ = parentCtor.prototype; childCtor.prototype = new tempCtor; childCtor.prototype.constructor = childCtor }; goog.base = function(me, opt_methodName, var_args) { var caller = arguments.callee.caller; if(goog.DEBUG) { if(!caller) { throw Error("arguments.caller not defined. goog.base() expects not " + "to be running in strict mode. See " + "http://www.ecma-international.org/ecma-262/5.1/#sec-C"); } } if(caller.superClass_) { return caller.superClass_.constructor.apply(me, Array.prototype.slice.call(arguments, 1)) } var args = Array.prototype.slice.call(arguments, 2); var foundCaller = false; for(var ctor = me.constructor;ctor;ctor = ctor.superClass_ && ctor.superClass_.constructor) { if(ctor.prototype[opt_methodName] === caller) { foundCaller = true }else { if(foundCaller) { return ctor.prototype[opt_methodName].apply(me, args) } } } if(me[opt_methodName] === caller) { return me.constructor.prototype[opt_methodName].apply(me, args) }else { throw Error("goog.base called from a method of one name " + "to a method of a different name"); } }; goog.scope = function(fn) { fn.call(goog.global) }; goog.addDependency("../build/src/internal/src/requireall.js", [], ["ol", "ol.Attribution", "ol.BrowserFeature", "ol.Collection", "ol.CollectionEvent", "ol.CollectionEventType", "ol.Color", "ol.Constraints", "ol.Coordinate", "ol.CoordinateArray", "ol.CoordinateFormatType", "ol.DeviceOrientation", "ol.DeviceOrientation.SUPPORTED", "ol.DeviceOrientationProperty", "ol.Ellipsoid", "ol.Extent", "ol.Feature", "ol.FrameState", "ol.Geolocation", "ol.Geolocation.SUPPORTED", "ol.GeolocationProperty", "ol.IView", "ol.IView2D", "ol.IView3D", "ol.Image", "ol.ImageState", "ol.ImageTile", "ol.ImageUrlFunction", "ol.ImageUrlFunctionType", "ol.Kinetic", "ol.Map", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserEventHandler", "ol.MapEvent", "ol.MapEventType", "ol.MapProperty", "ol.Object", "ol.ObjectEventType", "ol.Overlay", "ol.OverlayPositioning", "ol.OverlayProperty", "ol.Pixel", "ol.PostRenderFunction", "ol.PreRenderFunction", "ol.Projection", "ol.ProjectionLike", "ol.ProjectionUnits", "ol.RendererHint", "ol.RendererHints", "ol.ResolutionConstraint", "ol.ResolutionConstraintType", "ol.RotationConstraint", "ol.RotationConstraintType", "ol.Size", "ol.Sphere", "ol.Tile", "ol.TileCache", "ol.TileCoord", "ol.TilePriorityFunction", "ol.TileQueue", "ol.TileRange", "ol.TileState", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.TransformFunction", "ol.View", "ol.View2D", "ol.View2DProperty", "ol.View2DState", "ol.ViewHint", "ol.animation", "ol.array", "ol.canvas", "ol.canvas.SUPPORTED", "ol.control", "ol.control.Attribution", "ol.control.Control", "ol.control.DragBox", "ol.control.FullScreen", "ol.control.Logo", "ol.control.MousePosition", "ol.control.ScaleLine", "ol.control.ScaleLineProperty", "ol.control.ScaleLineUnits", "ol.control.Zoom", "ol.control.ZoomSlider", "ol.control.ZoomToExtent", "ol.coordinate", "ol.css", "ol.dom", "ol.dom.BrowserFeature", "ol.dom.Input", "ol.dom.InputProperty", "ol.easing", "ol.ellipsoid.BESSEL1841", "ol.ellipsoid.WGS84", "ol.expr", "ol.expr.Call", "ol.expr.Char", "ol.expr.Comparison", "ol.expr.ComparisonOp", "ol.expr.Expression", "ol.expr.Identifier", "ol.expr.Lexer", "ol.expr.Literal", "ol.expr.Logical", "ol.expr.LogicalOp", "ol.expr.Math", "ol.expr.MathOp", "ol.expr.Member", "ol.expr.Not", "ol.expr.Parser", "ol.expr.Token", "ol.expr.TokenType", "ol.expr.UnexpectedToken", "ol.expr.functions", "ol.extent", "ol.geom", "ol.geom.AbstractCollection", "ol.geom.Geometry", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.LinearRing", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.geom.SharedVertices", "ol.geom2", "ol.geom2.LineString", "ol.geom2.LineStringCollection", "ol.geom2.Point", "ol.geom2.PointCollection", "ol.interaction", "ol.interaction.ConditionType", "ol.interaction.DoubleClickZoom", "ol.interaction.Drag", "ol.interaction.DragPan", "ol.interaction.DragRotate", "ol.interaction.DragRotateAndZoom", "ol.interaction.DragZoom", "ol.interaction.Interaction", "ol.interaction.KeyboardPan", "ol.interaction.KeyboardZoom", "ol.interaction.Modify", "ol.interaction.MouseWheelZoom", "ol.interaction.Select", "ol.interaction.Touch", "ol.interaction.TouchPan", "ol.interaction.TouchRotate", "ol.interaction.TouchZoom", "ol.interaction.condition", "ol.layer.Base", "ol.layer.Group", "ol.layer.Image", "ol.layer.Layer", "ol.layer.LayerProperty", "ol.layer.LayerState", "ol.layer.Tile", "ol.layer.Vector", "ol.layer.Vector2", "ol.layer.VectorLayerEventType", "ol.layer.VectorLayerRenderIntent", "ol.math", "ol.parser.AsyncObjectFeatureParser", "ol.parser.AsyncStringFeatureParser", "ol.parser.DomFeatureParser", "ol.parser.GPX", "ol.parser.GeoJSON", "ol.parser.KML", "ol.parser.ObjectFeatureParser", "ol.parser.Parser", "ol.parser.ReadFeaturesOptions", "ol.parser.ReadFeaturesResult", "ol.parser.StringFeatureParser", "ol.parser.TopoJSON", "ol.parser.WKT", "ol.parser.XML", "ol.parser.ogc.ExceptionReport", "ol.parser.ogc.Filter", "ol.parser.ogc.Filter_v1", "ol.parser.ogc.Filter_v1_0_0", "ol.parser.ogc.Filter_v1_1_0", "ol.parser.ogc.GML", "ol.parser.ogc.GML_v2", "ol.parser.ogc.GML_v3", "ol.parser.ogc.OWSCommon_v1", "ol.parser.ogc.OWSCommon_v1_1_0", "ol.parser.ogc.Versioned", "ol.parser.ogc.WMSCapabilities", "ol.parser.ogc.WMSCapabilities_v1", "ol.parser.ogc.WMSCapabilities_v1_0_0", "ol.parser.ogc.WMSCapabilities_v1_1", "ol.parser.ogc.WMSCapabilities_v1_1_0", "ol.parser.ogc.WMSCapabilities_v1_1_1", "ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC", "ol.parser.ogc.WMSCapabilities_v1_3_0", "ol.parser.ogc.WMTSCapabilities", "ol.parser.ogc.WMTSCapabilities_v1_0_0", "ol.parser.polyline", "ol.proj", "ol.proj.CH", "ol.proj.EPSG2056", "ol.proj.EPSG21781", "ol.proj.EPSG3857", "ol.proj.EPSG4326", "ol.proj.common", "ol.renderer.Layer", "ol.renderer.Map", "ol.renderer.canvas.ImageLayer", "ol.renderer.canvas.Layer", "ol.renderer.canvas.Map", "ol.renderer.canvas.SUPPORTED", "ol.renderer.canvas.TileLayer", "ol.renderer.canvas.VectorLayer", "ol.renderer.canvas.VectorRenderer", "ol.renderer.dom.ImageLayer", "ol.renderer.dom.Layer", "ol.renderer.dom.Map", "ol.renderer.dom.SUPPORTED", "ol.renderer.dom.TileLayer", "ol.renderer.webgl.ImageLayer", "ol.renderer.webgl.Layer", "ol.renderer.webgl.Map", "ol.renderer.webgl.SUPPORTED", "ol.renderer.webgl.TileLayer", "ol.renderer.webgl.VectorLayer2", "ol.renderer.webgl.map.shader.Color", "ol.renderer.webgl.map.shader.Default", "ol.renderer.webgl.tilelayer.shader", "ol.renderer.webgl.vectorlayer2.shader.LineStringCollection", "ol.renderer.webgl.vectorlayer2.shader.PointCollection", "ol.size", "ol.source.BingMaps", "ol.source.FeatureInfoSource", "ol.source.Image", "ol.source.ImageStatic", "ol.source.ImageWMS", "ol.source.MapQuestOSM", "ol.source.MapQuestOpenAerial", "ol.source.OSM", "ol.source.Source", "ol.source.Stamen", "ol.source.Tile", "ol.source.TileDebug", "ol.source.TileImage", "ol.source.TileJSON", "ol.source.TileOptions", "ol.source.TileWMS", "ol.source.Vector", "ol.source.Vector2", "ol.source.WMSGetFeatureInfoMethod", "ol.source.WMTS", "ol.source.WMTSRequestEncoding", "ol.source.XYZ", "ol.source.wms", "ol.sphere.NORMAL", "ol.sphere.WGS84", "ol.structs.Buffer", "ol.structs.IntegerSet", "ol.structs.LRUCache", "ol.structs.PriorityQueue", "ol.structs.RTree", "ol.style", "ol.style.Fill", "ol.style.Icon", "ol.style.IconLiteral", "ol.style.LineLiteral", "ol.style.Literal", "ol.style.Point", "ol.style.PointLiteral", "ol.style.PolygonLiteral", "ol.style.Rule", "ol.style.Shape", "ol.style.ShapeLiteral", "ol.style.ShapeType", "ol.style.Stroke", "ol.style.StrokeDefaults", "ol.style.Style", "ol.style.Symbolizer", "ol.style.Text", "ol.style.TextLiteral", "ol.tilegrid.TileGrid", "ol.tilegrid.WMTS", "ol.tilegrid.XYZ", "ol.tilejson", "ol.vec.Mat4", "ol.webgl", "ol.webgl.SUPPORTED", "ol.webgl.WebGLContextEventType", "ol.webgl.shader"]); goog.addDependency("../build/src/internal/src/types.js", ["ol.AttributionOptions", "ol.DeviceOrientationOptions", "ol.GeolocationOptions", "ol.GetFeatureInfoOptions", "ol.GetFeaturesOptions", "ol.MapOptions", "ol.OverlayOptions", "ol.Proj4jsProjectionOptions", "ol.ProjectionOptions", "ol.View2DOptions", "ol.animation.BounceOptions", "ol.animation.PanOptions", "ol.animation.RotateOptions", "ol.animation.ZoomOptions", "ol.control.AttributionOptions", "ol.control.ControlOptions", "ol.control.DefaultsOptions", "ol.control.FullScreenOptions", "ol.control.LogoOptions", "ol.control.MousePositionOptions", "ol.control.ScaleLineOptions", "ol.control.ZoomOptions", "ol.control.ZoomSliderOptions", "ol.control.ZoomToExtentOptions", "ol.interaction.DefaultsOptions", "ol.interaction.DoubleClickZoomOptions", "ol.interaction.DragPanOptions", "ol.interaction.DragRotateAndZoomOptions", "ol.interaction.DragRotateOptions", "ol.interaction.DragZoomOptions", "ol.interaction.KeyboardPanOptions", "ol.interaction.KeyboardZoomOptions", "ol.interaction.ModifyOptions", "ol.interaction.SelectOptions", "ol.interaction.TouchPanOptions", "ol.interaction.TouchRotateOptions", "ol.layer.BaseOptions", "ol.layer.GroupOptions", "ol.layer.LayerOptions", "ol.layer.TileOptions", "ol.layer.VectorLayerOptions", "ol.parser.GMLOptions", "ol.parser.GMLReadOptions", "ol.parser.GMLWriteOptions", "ol.parser.GPXOptions", "ol.parser.GPXWriteOptions", "ol.parser.KMLOptions", "ol.source.BingMapsOptions", "ol.source.ImageStaticOptions", "ol.source.ImageWMSOptions", "ol.source.OSMOptions", "ol.source.SourceOptions", "ol.source.StamenOptions", "ol.source.TileDebugOptions", "ol.source.TileJSONOptions", "ol.source.TileWMSOptions", "ol.source.Vector2Options", "ol.source.VectorOptions", "ol.source.WMSGetFeatureInfoOptions", "ol.source.WMTSOptions", "ol.source.XYZOptions", "ol.style.FillOptions", "ol.style.IconOptions", "ol.style.RuleOptions", "ol.style.ShapeOptions", "ol.style.StrokeOptions", "ol.style.StyleOptions", "ol.style.TextOptions", "ol.tilegrid.TileGridOptions", "ol.tilegrid.WMTSOptions", "ol.tilegrid.XYZOptions"], []); goog.addDependency("../src/ol/animation.js", ["ol.animation"], ["ol.PreRenderFunction", "ol.ViewHint", "ol.easing"]); goog.addDependency("../src/ol/array.js", ["ol.array"], ["goog.array", "goog.asserts"]); goog.addDependency("../src/ol/attribution.js", ["ol.Attribution"], ["ol.TileRange"]); goog.addDependency("../src/ol/browserfeature.js", ["ol.BrowserFeature"], []); goog.addDependency("../src/ol/canvas/canvas.js", ["ol.canvas", "ol.canvas.SUPPORTED"], ["goog.dom", "goog.dom.TagName"]); goog.addDependency("../src/ol/collection.js", ["ol.Collection", "ol.CollectionEvent", "ol.CollectionEventType"], ["goog.array", "goog.events.Event", "ol.Object"]); goog.addDependency("../src/ol/color.js", ["ol.Color"], ["goog.color", "goog.math"]); goog.addDependency("../src/ol/constraints.js", ["ol.Constraints"], ["ol.ResolutionConstraintType", "ol.RotationConstraintType"]); goog.addDependency("../src/ol/control/attributioncontrol.js", ["ol.control.Attribution"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.object", "goog.style", "ol.Attribution", "ol.FrameState", "ol.control.Control", "ol.css"]); goog.addDependency("../src/ol/control/control.js", ["ol.control.Control"], ["goog.array", "goog.dom", "goog.events", "ol.MapEventType", "ol.Object"]); goog.addDependency("../src/ol/control/controldefaults.js", ["ol.control"], ["ol.Collection", "ol.control.Attribution", "ol.control.Logo", "ol.control.Zoom"]); goog.addDependency("../src/ol/control/dragboxcontrol.js", ["ol.control.DragBox"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.math.Size", "goog.style", "ol.Coordinate", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.Pixel", "ol.control.Control"]); goog.addDependency("../src/ol/control/fullscreencontrol.js", ["ol.control.FullScreen"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.dom.fullscreen", "goog.dom.fullscreen.EventType", "goog.events", "goog.events.EventType", "ol.control.Control", "ol.css"]); goog.addDependency("../src/ol/control/logocontrol.js", ["ol.control.Logo"], ["goog.dom", "goog.dom.TagName", "goog.object", "goog.style", "ol.FrameState", "ol.control.Control", "ol.css"]); goog.addDependency("../src/ol/control/mousepositioncontrol.js", ["ol.control.MousePosition"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.style", "ol.CoordinateFormatType", "ol.Object", "ol.Pixel", "ol.Projection", "ol.TransformFunction", "ol.control.Control", "ol.proj"]); goog.addDependency("../src/ol/control/scalelinecontrol.js", ["ol.control.ScaleLine", "ol.control.ScaleLineProperty", "ol.control.ScaleLineUnits"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.math", "goog.style", "ol.Object", "ol.ProjectionUnits", "ol.TransformFunction", "ol.View2DState", "ol.control.Control", "ol.css", "ol.proj", "ol.sphere.NORMAL"]); goog.addDependency("../src/ol/control/zoomcontrol.js", ["ol.control.Zoom"], ["goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "ol.animation", "ol.control.Control", "ol.css", "ol.easing"]); goog.addDependency("../src/ol/control/zoomslidercontrol.js", ["ol.control.ZoomSlider"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.fx.Dragger", "goog.fx.Dragger.EventType", "goog.math", "goog.math.Rect", "goog.style", "ol.animation", "ol.control.Control", "ol.css", "ol.easing"]); goog.addDependency("../src/ol/control/zoomtoextentcontrol.js", ["ol.control.ZoomToExtent"], ["goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "ol.control.Control", "ol.css"]); goog.addDependency("../src/ol/coordinate.js", ["ol.Coordinate", "ol.CoordinateArray", "ol.CoordinateFormatType", "ol.coordinate"], ["goog.math"]); goog.addDependency("../src/ol/css.js", ["ol.css"], []); goog.addDependency("../src/ol/deviceorientation.js", ["ol.DeviceOrientation", "ol.DeviceOrientation.SUPPORTED", "ol.DeviceOrientationProperty"], ["goog.events", "goog.math", "ol.Object"]); goog.addDependency("../src/ol/dom/dom.js", ["ol.dom", "ol.dom.BrowserFeature"], ["goog.asserts", "goog.vec.Mat4"]); goog.addDependency("../src/ol/dom/input.js", ["ol.dom.Input", "ol.dom.InputProperty"], ["goog.events", "goog.events.EventType", "ol.Object"]); goog.addDependency("../src/ol/easing.js", ["ol.easing"], ["goog.fx.easing"]); goog.addDependency("../src/ol/ellipsoid/bessel1841ellipsoid.js", ["ol.ellipsoid.BESSEL1841"], ["ol.Ellipsoid"]); goog.addDependency("../src/ol/ellipsoid/ellipsoid.js", ["ol.Ellipsoid"], ["goog.math", "ol.Coordinate"]); goog.addDependency("../src/ol/ellipsoid/wgs84ellipsoid.js", ["ol.ellipsoid.WGS84"], ["ol.Ellipsoid"]); goog.addDependency("../src/ol/expr/expression.js", ["ol.expr", "ol.expr.functions"], ["ol.Extent", "ol.Feature", "ol.expr.Call", "ol.expr.Expression", "ol.expr.Identifier", "ol.expr.Parser", "ol.extent", "ol.geom.GeometryType"]); goog.addDependency("../src/ol/expr/expressions.js", ["ol.expr.Call", "ol.expr.Comparison", "ol.expr.ComparisonOp", "ol.expr.Expression", "ol.expr.Identifier", "ol.expr.Literal", "ol.expr.Logical", "ol.expr.LogicalOp", "ol.expr.Math", "ol.expr.MathOp", "ol.expr.Member", "ol.expr.Not"], []); goog.addDependency("../src/ol/expr/lexer.js", ["ol.expr.Char", "ol.expr.Lexer", "ol.expr.Token", "ol.expr.TokenType", "ol.expr.UnexpectedToken"], ["goog.asserts", "goog.debug.Error"]); goog.addDependency("../src/ol/expr/parser.js", ["ol.expr.Parser"], ["goog.asserts", "ol.expr.Call", "ol.expr.Comparison", "ol.expr.ComparisonOp", "ol.expr.Expression", "ol.expr.Identifier", "ol.expr.Lexer", "ol.expr.Literal", "ol.expr.Logical", "ol.expr.LogicalOp", "ol.expr.Math", "ol.expr.MathOp", "ol.expr.Member", "ol.expr.Not", "ol.expr.Token", "ol.expr.TokenType", "ol.expr.UnexpectedToken"]); goog.addDependency("../src/ol/extent.js", ["ol.Extent", "ol.extent"], ["goog.asserts", "ol.Coordinate", "ol.Size", "ol.TransformFunction"]); goog.addDependency("../src/ol/feature.js", ["ol.Feature"], ["ol.Object", "ol.geom.Geometry", "ol.layer.VectorLayerRenderIntent"]); goog.addDependency("../src/ol/framestate.js", ["ol.FrameState", "ol.PostRenderFunction", "ol.PreRenderFunction"], ["goog.vec.Mat4", "ol.Attribution", "ol.Extent", "ol.Size", "ol.TileQueue", "ol.TileRange", "ol.View2DState", "ol.layer.Layer", "ol.layer.LayerState"]); goog.addDependency("../src/ol/geolocation.js", ["ol.Geolocation", "ol.Geolocation.SUPPORTED", "ol.GeolocationProperty"], ["goog.events", "goog.events.EventType", "goog.math", "ol.Coordinate", "ol.Object", "ol.Projection", "ol.proj"]); goog.addDependency("../src/ol/geom/abstractcollection.js", ["ol.geom.AbstractCollection"], ["ol.geom.Geometry"]); goog.addDependency("../src/ol/geom/base.js", ["ol.geom"], ["ol.coordinate"]); goog.addDependency("../src/ol/geom/geometry.js", ["ol.geom.Geometry", "ol.geom.GeometryType"], ["ol.Extent", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/geometrycollection.js", ["ol.geom.GeometryCollection"], ["goog.asserts", "ol.geom.AbstractCollection", "ol.geom.Geometry", "ol.geom.GeometryType"]); goog.addDependency("../src/ol/geom/linearring.js", ["ol.geom.LinearRing"], ["ol.CoordinateArray", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/linestring.js", ["ol.geom.LineString"], ["goog.asserts", "ol.CoordinateArray", "ol.geom", "ol.geom.Geometry", "ol.geom.GeometryType", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/multilinestring.js", ["ol.geom.MultiLineString"], ["goog.asserts", "ol.CoordinateArray", "ol.geom.AbstractCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/multipoint.js", ["ol.geom.MultiPoint"], ["goog.asserts", "ol.CoordinateArray", "ol.geom.AbstractCollection", "ol.geom.GeometryType", "ol.geom.Point", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/multipolygon.js", ["ol.geom.MultiPolygon"], ["goog.asserts", "ol.CoordinateArray", "ol.geom.AbstractCollection", "ol.geom.GeometryType", "ol.geom.Polygon", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/point.js", ["ol.geom.Point"], ["goog.asserts", "ol.Coordinate", "ol.geom.Geometry", "ol.geom.GeometryType", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/polygon.js", ["ol.geom.Polygon"], ["goog.asserts", "ol.CoordinateArray", "ol.extent", "ol.geom.Geometry", "ol.geom.GeometryType", "ol.geom.LinearRing", "ol.geom.SharedVertices"]); goog.addDependency("../src/ol/geom/sharedvertices.js", ["ol.geom.SharedVertices"], ["goog.asserts", "ol.Coordinate", "ol.CoordinateArray"]); goog.addDependency("../src/ol/geom2/geom2.js", ["ol.geom2"], ["goog.asserts", "ol.Extent"]); goog.addDependency("../src/ol/geom2/linestringcollection.js", ["ol.geom2.LineString", "ol.geom2.LineStringCollection"], ["goog.array", "goog.asserts", "goog.object", "ol.geom2", "ol.structs.Buffer"]); goog.addDependency("../src/ol/geom2/pointcollection.js", ["ol.geom2.Point", "ol.geom2.PointCollection"], ["goog.asserts", "ol.Extent", "ol.geom2", "ol.structs.Buffer"]); goog.addDependency("../src/ol/image.js", ["ol.Image", "ol.ImageState"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.object", "ol.Attribution", "ol.Extent"]); goog.addDependency("../src/ol/imagetile.js", ["ol.ImageTile"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.Tile", "ol.TileCoord", "ol.TileState"]); goog.addDependency("../src/ol/imageurlfunction.js", ["ol.ImageUrlFunction", "ol.ImageUrlFunctionType"], ["ol.Size"]); goog.addDependency("../src/ol/interaction/condition.js", ["ol.interaction.ConditionType", "ol.interaction.condition"], ["goog.dom.TagName", "goog.events.EventType", "goog.functions"]); goog.addDependency("../src/ol/interaction/doubleclickzoominteraction.js", ["ol.interaction.DoubleClickZoom"], ["goog.asserts", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/draginteraction.js", ["ol.interaction.Drag"], ["goog.asserts", "goog.events.BrowserEvent", "goog.functions", "ol.Coordinate", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.ViewHint", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/dragpaninteraction.js", ["ol.interaction.DragPan"], ["goog.asserts", "ol.Kinetic", "ol.PreRenderFunction", "ol.View2D", "ol.coordinate", "ol.interaction.ConditionType", "ol.interaction.Drag", "ol.interaction.condition"]); goog.addDependency("../src/ol/interaction/dragrotateandzoominteraction.js", ["ol.interaction.DragRotateAndZoom"], ["goog.asserts", "goog.math.Vec2", "ol.interaction.ConditionType", "ol.interaction.Drag", "ol.interaction.Interaction", "ol.interaction.condition"]); goog.addDependency("../src/ol/interaction/dragrotateinteraction.js", ["ol.interaction.DragRotate"], ["goog.asserts", "ol.interaction.ConditionType", "ol.interaction.Drag", "ol.interaction.Interaction", "ol.interaction.condition"]); goog.addDependency("../src/ol/interaction/dragzoominteraction.js", ["ol.interaction.DragZoom"], ["goog.asserts", "ol.Size", "ol.View2D", "ol.control.DragBox", "ol.extent", "ol.interaction.ConditionType", "ol.interaction.Drag", "ol.interaction.condition"]); goog.addDependency("../src/ol/interaction/interaction.js", ["ol.interaction.Interaction"], ["ol.MapBrowserEvent", "ol.animation", "ol.easing"]); goog.addDependency("../src/ol/interaction/interactiondefaults.js", ["ol.interaction"], ["ol.Collection", "ol.Kinetic", "ol.interaction.DoubleClickZoom", "ol.interaction.DragPan", "ol.interaction.DragRotate", "ol.interaction.DragZoom", "ol.interaction.KeyboardPan", "ol.interaction.KeyboardZoom", "ol.interaction.MouseWheelZoom", "ol.interaction.TouchPan", "ol.interaction.TouchRotate", "ol.interaction.TouchZoom"]); goog.addDependency("../src/ol/interaction/keyboardpaninteraction.js", ["ol.interaction.KeyboardPan"], ["goog.asserts", "goog.events.KeyCodes", "goog.events.KeyHandler.EventType", "goog.functions", "ol.View2D", "ol.coordinate", "ol.interaction.ConditionType", "ol.interaction.Interaction", "ol.interaction.condition"]); goog.addDependency("../src/ol/interaction/keyboardzoominteraction.js", ["ol.interaction.KeyboardZoom"], ["goog.asserts", "goog.events.KeyHandler.EventType", "goog.functions", "ol.interaction.ConditionType", "ol.interaction.Interaction", "ol.interaction.condition"]); goog.addDependency("../src/ol/interaction/modifyinteraction.js", ["ol.interaction.Modify"], ["goog.array", "goog.events", "goog.object", "ol.Feature", "ol.MapBrowserEvent.EventType", "ol.ViewHint", "ol.coordinate", "ol.extent", "ol.geom.AbstractCollection", "ol.geom.LineString", "ol.geom.LinearRing", "ol.geom.Point", "ol.geom.Polygon", "ol.interaction.Drag", "ol.layer.Vector", "ol.layer.VectorLayerEventType", "ol.layer.VectorLayerRenderIntent", "ol.structs.RTree"]); goog.addDependency("../src/ol/interaction/mousewheelzoominteraction.js", ["ol.interaction.MouseWheelZoom"], ["goog.asserts", "goog.events.MouseWheelEvent", "goog.events.MouseWheelHandler.EventType", "goog.math", "ol.Coordinate", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/selectinteraction.js", ["ol.interaction.Select"], ["goog.array", "goog.object", "ol.Feature", "ol.interaction.ConditionType", "ol.interaction.Interaction", "ol.interaction.condition", "ol.layer.Vector", "ol.layer.VectorLayerRenderIntent", "ol.source.Vector"]); goog.addDependency("../src/ol/interaction/touchinteraction.js", ["ol.interaction.Touch"], ["goog.asserts", "goog.functions", "goog.object", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.Pixel", "ol.ViewHint", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/touchpaninteraction.js", ["ol.interaction.TouchPan"], ["goog.asserts", "ol.Kinetic", "ol.Pixel", "ol.PreRenderFunction", "ol.coordinate", "ol.interaction.Touch"]); goog.addDependency("../src/ol/interaction/touchrotateinteraction.js", ["ol.interaction.TouchRotate"], ["goog.asserts", "goog.style", "ol.Coordinate", "ol.interaction.Interaction", "ol.interaction.Touch"]); goog.addDependency("../src/ol/interaction/touchzoominteraction.js", ["ol.interaction.TouchZoom"], ["goog.asserts", "goog.style", "ol.Coordinate", "ol.interaction.Interaction", "ol.interaction.Touch"]); goog.addDependency("../src/ol/iview.js", ["ol.IView"], ["ol.IView2D", "ol.IView3D"]); goog.addDependency("../src/ol/iview2d.js", ["ol.IView2D", "ol.View2DState"], ["ol.Coordinate", "ol.Projection"]); goog.addDependency("../src/ol/iview3d.js", ["ol.IView3D"], []); goog.addDependency("../src/ol/kinetic.js", ["ol.Kinetic"], ["ol.Coordinate", "ol.PreRenderFunction", "ol.animation"]); goog.addDependency("../src/ol/layer/imagelayer.js", ["ol.layer.Image"], ["ol.layer.Layer", "ol.source.Image"]); goog.addDependency("../src/ol/layer/layer.js", ["ol.layer.Layer"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.layer.Base", "ol.source.Source"]); goog.addDependency("../src/ol/layer/layerbase.js", ["ol.layer.Base", "ol.layer.LayerProperty", "ol.layer.LayerState"], ["goog.events", "goog.events.EventType", "goog.math", "goog.object", "ol.Object"]); goog.addDependency("../src/ol/layer/layergroup.js", ["ol.layer.Group"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.math", "goog.object", "ol.Collection", "ol.CollectionEvent", "ol.CollectionEventType", "ol.Object", "ol.layer.Base"]); goog.addDependency("../src/ol/layer/tilelayer.js", ["ol.layer.Tile"], ["ol.layer.Layer", "ol.source.Tile"]); goog.addDependency("../src/ol/layer/vectorlayer.js", ["ol.layer.Vector", "ol.layer.VectorLayerEventType"], ["goog.array", "goog.asserts", "goog.events.EventType", "goog.object", "ol.Feature", "ol.expr", "ol.expr.Literal", "ol.expr.Logical", "ol.expr.LogicalOp", "ol.expr.functions", "ol.extent", "ol.geom.GeometryType", "ol.geom.SharedVertices", "ol.layer.Layer", "ol.proj", "ol.source.Vector", "ol.structs.RTree", "ol.style", "ol.style.Style", "ol.style.TextLiteral"]); goog.addDependency("../src/ol/layer/vectorlayer2.js", ["ol.layer.Vector2"], ["ol.layer.Layer", "ol.source.Vector2"]); goog.addDependency("../src/ol/layer/vectorlayerrenderintent.js", ["ol.layer.VectorLayerRenderIntent"], []); goog.addDependency("../src/ol/map.js", ["ol.Map", "ol.MapProperty", "ol.RendererHint", "ol.RendererHints"], ["goog.Uri.QueryData", "goog.array", "goog.asserts", "goog.async.AnimationDelay", "goog.async.Delay", "goog.debug.Console", "goog.dispose", "goog.dom", "goog.dom.TagName", "goog.dom.ViewportSizeMonitor", "goog.events", "goog.events.BrowserEvent", "goog.events.Event", "goog.events.EventType", "goog.events.KeyHandler", "goog.events.KeyHandler.EventType", "goog.events.MouseWheelHandler", "goog.events.MouseWheelHandler.EventType", "goog.log", "goog.log.Level", "goog.object", "goog.style", "goog.vec.Mat4", "ol.BrowserFeature", "ol.Collection", "ol.FrameState", "ol.IView", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserEventHandler", "ol.MapEvent", "ol.MapEventType", "ol.Object", "ol.ObjectEventType", "ol.Pixel", "ol.PostRenderFunction", "ol.PreRenderFunction", "ol.Size", "ol.Tile", "ol.TileQueue", "ol.View", "ol.View2D", "ol.ViewHint", "ol.control", "ol.extent", "ol.interaction", "ol.layer.Base", "ol.layer.Group", "ol.proj", "ol.proj.common", "ol.renderer.Map", "ol.renderer.canvas.Map", "ol.renderer.canvas.SUPPORTED", "ol.renderer.dom.Map", "ol.renderer.dom.SUPPORTED", "ol.renderer.webgl.Map", "ol.renderer.webgl.SUPPORTED", "ol.structs.PriorityQueue", "ol.vec.Mat4"]); goog.addDependency("../src/ol/mapbrowserevent.js", ["ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserEventHandler"], ["goog.array", "goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.events.EventType", "goog.style", "ol.BrowserFeature", "ol.Coordinate", "ol.FrameState", "ol.MapEvent", "ol.Pixel"]); goog.addDependency("../src/ol/mapevent.js", ["ol.MapEvent", "ol.MapEventType"], ["goog.events.Event", "ol.FrameState"]); goog.addDependency("../src/ol/math.js", ["ol.math"], ["goog.asserts"]); goog.addDependency("../src/ol/object.js", ["ol.Object", "ol.ObjectEventType"], ["goog.array", "goog.events", "goog.events.EventTarget", "goog.object"]); goog.addDependency("../src/ol/ol.js", ["ol"], []); goog.addDependency("../src/ol/overlay.js", ["ol.Overlay", "ol.OverlayPositioning", "ol.OverlayProperty"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.style", "ol.Coordinate", "ol.Map", "ol.MapEventType", "ol.Object"]); goog.addDependency("../src/ol/parser/featureparser.js", ["ol.parser.AsyncObjectFeatureParser", "ol.parser.AsyncStringFeatureParser", "ol.parser.DomFeatureParser", "ol.parser.ObjectFeatureParser", "ol.parser.ReadFeaturesOptions", "ol.parser.ReadFeaturesResult", "ol.parser.StringFeatureParser"], ["ol.Feature"]); goog.addDependency("../src/ol/parser/geojson.js", ["ol.parser.GeoJSON"], ["goog.asserts", "goog.object", "ol.Feature", "ol.geom.Geometry", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.geom.SharedVertices", "ol.parser.Parser", "ol.parser.ReadFeaturesOptions", "ol.parser.ReadFeaturesResult", "ol.parser.StringFeatureParser"]); goog.addDependency("../src/ol/parser/gpx.js", ["ol.parser.GPX"], ["goog.dom.xml", "ol.Feature", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.Point", "ol.geom.Polygon", "ol.parser.DomFeatureParser", "ol.parser.ObjectFeatureParser", "ol.parser.ReadFeaturesOptions", "ol.parser.StringFeatureParser", "ol.parser.XML"]); goog.addDependency("../src/ol/parser/kml.js", ["ol.parser.KML"], ["goog.array", "goog.async.Deferred", "goog.async.DeferredList", "goog.date", "goog.dispose", "goog.dom.xml", "goog.events", "goog.net.EventType", "goog.net.XhrIo", "goog.object", "goog.string", "ol.Feature", "ol.geom.AbstractCollection", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.geom.SharedVertices", "ol.parser.AsyncObjectFeatureParser", "ol.parser.AsyncStringFeatureParser", "ol.parser.DomFeatureParser", "ol.parser.ReadFeaturesOptions", "ol.parser.StringFeatureParser", "ol.parser.XML", "ol.style.Fill", "ol.style.Icon", "ol.style.Stroke"]); goog.addDependency("../src/ol/parser/ogc/exceptionreport.js", ["ol.parser.ogc.ExceptionReport"], ["goog.dom.xml", "ol.parser.XML"]); goog.addDependency("../src/ol/parser/ogc/filter.js", ["ol.parser.ogc.Filter"], ["ol.parser.ogc.Filter_v1_0_0", "ol.parser.ogc.Filter_v1_1_0", "ol.parser.ogc.Versioned"]); goog.addDependency("../src/ol/parser/ogc/filter_v1.js", ["ol.parser.ogc.Filter_v1"], ["goog.array", "goog.asserts", "goog.dom.xml", "goog.object", "goog.string", "ol.expr", "ol.expr.Call", "ol.expr.Comparison", "ol.expr.ComparisonOp", "ol.expr.Identifier", "ol.expr.Literal", "ol.expr.Logical", "ol.expr.LogicalOp", "ol.expr.Not", "ol.expr.functions", "ol.parser.XML"]); goog.addDependency("../src/ol/parser/ogc/filter_v1_0_0.js", ["ol.parser.ogc.Filter_v1_0_0"], ["goog.asserts", "goog.object", "ol.expr", "ol.expr.Call", "ol.expr.Comparison", "ol.expr.ComparisonOp", "ol.expr.Identifier", "ol.expr.Literal", "ol.expr.functions", "ol.geom.Geometry", "ol.parser.ogc.Filter_v1", "ol.parser.ogc.GML_v2"]); goog.addDependency("../src/ol/parser/ogc/filter_v1_1_0.js", ["ol.parser.ogc.Filter_v1_1_0"], ["goog.asserts", "goog.object", "ol.expr", "ol.expr.Call", "ol.expr.Comparison", "ol.expr.ComparisonOp", "ol.expr.Identifier", "ol.expr.Literal", "ol.expr.functions", "ol.geom.Geometry", "ol.parser.ogc.Filter_v1", "ol.parser.ogc.GML_v3"]); goog.addDependency("../src/ol/parser/ogc/gml.js", ["ol.parser.ogc.GML"], ["goog.array", "goog.asserts", "goog.dom.xml", "ol.Feature", "ol.geom.Geometry", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.LinearRing", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.parser.StringFeatureParser", "ol.parser.XML", "ol.proj"]); goog.addDependency("../src/ol/parser/ogc/gml_v2.js", ["ol.parser.ogc.GML_v2"], ["goog.array", "goog.object", "ol.parser.ogc.GML"]); goog.addDependency("../src/ol/parser/ogc/gml_v3.js", ["ol.parser.ogc.GML_v3"], ["goog.array", "goog.functions", "goog.object", "ol.geom.GeometryType", "ol.parser.ogc.GML"]); goog.addDependency("../src/ol/parser/ogc/owscommon_v1.js", ["ol.parser.ogc.OWSCommon_v1"], ["ol.parser.XML"]); goog.addDependency("../src/ol/parser/ogc/owscommon_v1_1_0.js", ["ol.parser.ogc.OWSCommon_v1_1_0"], ["goog.object", "ol.parser.ogc.OWSCommon_v1"]); goog.addDependency("../src/ol/parser/ogc/versioned.js", ["ol.parser.ogc.Versioned"], ["goog.dom.xml", "ol.parser.ogc.ExceptionReport"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities.js", ["ol.parser.ogc.WMSCapabilities"], ["ol.parser.ogc.Versioned", "ol.parser.ogc.WMSCapabilities_v1_0_0", "ol.parser.ogc.WMSCapabilities_v1_1_0", "ol.parser.ogc.WMSCapabilities_v1_1_1", "ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC", "ol.parser.ogc.WMSCapabilities_v1_3_0"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1.js", ["ol.parser.ogc.WMSCapabilities_v1"], ["goog.dom.xml", "goog.object", "ol.parser.XML"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1_0_0.js", ["ol.parser.ogc.WMSCapabilities_v1_0_0"], ["goog.object", "goog.string", "ol.parser.ogc.WMSCapabilities_v1_1_0"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1_1.js", ["ol.parser.ogc.WMSCapabilities_v1_1"], ["goog.object", "ol.parser.ogc.WMSCapabilities_v1"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1_1_0.js", ["ol.parser.ogc.WMSCapabilities_v1_1_0"], ["goog.object", "ol.parser.ogc.WMSCapabilities_v1_1"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1_1_1.js", ["ol.parser.ogc.WMSCapabilities_v1_1_1"], ["goog.object", "ol.parser.ogc.WMSCapabilities_v1_1"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1_1_1_WMSC.js", ["ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC"], ["goog.object", "ol.parser.ogc.WMSCapabilities_v1_1_1"]); goog.addDependency("../src/ol/parser/ogc/wmscapabilities_v1_3_0.js", ["ol.parser.ogc.WMSCapabilities_v1_3_0"], ["goog.object", "ol.parser.ogc.WMSCapabilities_v1"]); goog.addDependency("../src/ol/parser/ogc/wmtscapabilities.js", ["ol.parser.ogc.WMTSCapabilities"], ["ol.parser.ogc.Versioned", "ol.parser.ogc.WMTSCapabilities_v1_0_0"]); goog.addDependency("../src/ol/parser/ogc/wmtscapabilities_v1_0_0.js", ["ol.parser.ogc.WMTSCapabilities_v1_0_0"], ["goog.dom.xml", "ol.coordinate", "ol.parser.XML", "ol.parser.ogc.OWSCommon_v1_1_0", "ol.proj"]); goog.addDependency("../src/ol/parser/parser.js", ["ol.parser.Parser"], []); goog.addDependency("../src/ol/parser/polyline.js", ["ol.parser.polyline"], []); goog.addDependency("../src/ol/parser/topojson.js", ["ol.parser.TopoJSON"], ["ol.Coordinate", "ol.CoordinateArray", "ol.Feature", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.parser.Parser", "ol.parser.ReadFeaturesOptions", "ol.parser.StringFeatureParser"]); goog.addDependency("../src/ol/parser/wkt.js", ["ol.parser.WKT"], ["goog.array", "goog.string", "ol.geom.Geometry", "ol.geom.GeometryCollection", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.parser.Parser"]); goog.addDependency("../src/ol/parser/xml.js", ["ol.parser.XML"], ["goog.dom.xml", "ol.parser.Parser"]); goog.addDependency("../src/ol/pixel.js", ["ol.Pixel"], []); goog.addDependency("../src/ol/proj/chprojection.js", ["ol.proj.CH", "ol.proj.EPSG2056", "ol.proj.EPSG21781"], ["goog.asserts", "goog.math", "ol.Projection", "ol.ProjectionUnits", "ol.ellipsoid.BESSEL1841", "ol.proj", "ol.proj.EPSG4326"]); goog.addDependency("../src/ol/proj/common.js", ["ol.proj.common"], ["ol.proj", "ol.proj.EPSG3857", "ol.proj.EPSG4326"]); goog.addDependency("../src/ol/proj/epsg3857projection.js", ["ol.proj.EPSG3857"], ["goog.array", "goog.asserts", "ol.Projection", "ol.ProjectionUnits", "ol.math", "ol.proj"]); goog.addDependency("../src/ol/proj/epsg4326projection.js", ["ol.proj.EPSG4326"], ["ol.Projection", "ol.ProjectionUnits", "ol.proj"]); goog.addDependency("../src/ol/proj/proj.js", ["ol.Projection", "ol.ProjectionLike", "ol.ProjectionUnits", "ol.proj"], ["goog.array", "goog.asserts", "goog.object", "ol.Extent", "ol.TransformFunction", "ol.sphere.NORMAL"]); goog.addDependency("../src/ol/renderer/canvas/canvasimagelayerrenderer.js", ["ol.renderer.canvas.ImageLayer"], ["goog.events", "goog.events.EventType", "goog.vec.Mat4", "ol.Image", "ol.ImageState", "ol.ViewHint", "ol.layer.Image", "ol.renderer.Map", "ol.renderer.canvas.Layer"]); goog.addDependency("../src/ol/renderer/canvas/canvaslayerrenderer.js", ["ol.renderer.canvas.Layer"], ["ol.layer.Layer", "ol.renderer.Layer"]); goog.addDependency("../src/ol/renderer/canvas/canvasmaprenderer.js", ["ol.renderer.canvas.Map"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.style", "goog.vec.Mat4", "ol.Size", "ol.css", "ol.layer.Image", "ol.layer.Tile", "ol.layer.Vector", "ol.renderer.Map", "ol.renderer.canvas.ImageLayer", "ol.renderer.canvas.TileLayer", "ol.renderer.canvas.VectorLayer", "ol.size"]); goog.addDependency("../src/ol/renderer/canvas/canvasrenderer.js", ["ol.renderer.canvas.SUPPORTED"], ["ol.canvas.SUPPORTED"]); goog.addDependency("../src/ol/renderer/canvas/canvastilelayerrenderer.js", ["ol.renderer.canvas.TileLayer"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.object", "goog.vec.Mat4", "ol.Size", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.TileState", "ol.extent", "ol.layer.Tile", "ol.renderer.Map", "ol.renderer.canvas.Layer"]); goog.addDependency("../src/ol/renderer/canvas/canvasvectorlayerrenderer.js", ["ol.renderer.canvas.VectorLayer"], ["goog.dom", "goog.dom.TagName", "goog.events", "goog.object", "goog.vec.Mat4", "ol.Pixel", "ol.TileCache", "ol.TileCoord", "ol.TileRange", "ol.ViewHint", "ol.extent", "ol.geom.GeometryType", "ol.layer.Vector", "ol.layer.VectorLayerEventType", "ol.renderer.canvas.Layer", "ol.renderer.canvas.VectorRenderer", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/renderer/canvas/canvasvectorrenderer.js", ["ol.renderer.canvas.VectorRenderer"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "ol.Feature", "ol.geom.AbstractCollection", "ol.geom.Geometry", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.layer.VectorLayerRenderIntent", "ol.style.IconLiteral", "ol.style.LineLiteral", "ol.style.Literal", "ol.style.PointLiteral", "ol.style.PolygonLiteral", "ol.style.ShapeLiteral", "ol.style.ShapeType", "ol.style.TextLiteral"]); goog.addDependency("../src/ol/renderer/dom/domimagelayerrenderer.js", ["ol.renderer.dom.ImageLayer"], ["goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "ol.Image", "ol.ImageState", "ol.ViewHint", "ol.dom", "ol.layer.Image", "ol.renderer.dom.Layer"]); goog.addDependency("../src/ol/renderer/dom/domlayerrenderer.js", ["ol.renderer.dom.Layer"], ["goog.dom", "ol.layer.Layer", "ol.renderer.Layer"]); goog.addDependency("../src/ol/renderer/dom/dommaprenderer.js", ["ol.renderer.dom.Map"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.style", "ol.css", "ol.layer.Image", "ol.layer.Tile", "ol.renderer.Map", "ol.renderer.dom.ImageLayer", "ol.renderer.dom.TileLayer"]); goog.addDependency("../src/ol/renderer/dom/domrenderer.js", ["ol.renderer.dom.SUPPORTED"], []); goog.addDependency("../src/ol/renderer/dom/domtilelayerrenderer.js", ["ol.renderer.dom.TileLayer"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.object", "goog.style", "goog.vec.Mat4", "ol.Coordinate", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.TileState", "ol.ViewHint", "ol.dom", "ol.extent", "ol.layer.Tile", "ol.renderer.dom.Layer", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/renderer/layerrenderer.js", ["ol.renderer.Layer"], ["goog.Disposable", "ol.FrameState", "ol.Image", "ol.ImageState", "ol.Tile", "ol.TileRange", "ol.TileState", "ol.layer.Layer", "ol.layer.LayerState", "ol.source.Source", "ol.source.Tile"]); goog.addDependency("../src/ol/renderer/maprenderer.js", ["ol.renderer.Map"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.dispose", "goog.functions", "goog.object", "goog.vec.Mat4", "ol.FrameState", "ol.layer.Layer", "ol.renderer.Layer"]); goog.addDependency("../src/ol/renderer/webgl/webglimagelayerrenderer.js", ["ol.renderer.webgl.ImageLayer"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "goog.webgl", "ol.Coordinate", "ol.Extent", "ol.Image", "ol.ImageState", "ol.ViewHint", "ol.layer.Image", "ol.renderer.webgl.Layer"]); goog.addDependency("../src/ol/renderer/webgl/webgllayerrenderer.js", ["ol.renderer.webgl.Layer"], ["goog.vec.Mat4", "goog.webgl", "ol.FrameState", "ol.layer.Layer", "ol.renderer.Layer", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/webgl/webglmapcolorshader.js", ["ol.renderer.webgl.map.shader.Color"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglmapdefaultshader.js", ["ol.renderer.webgl.map.shader.Default"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglmaprenderer.js", ["ol.renderer.webgl.Map"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.Event", "goog.log", "goog.log.Logger", "goog.object", "goog.style", "goog.webgl", "ol.FrameState", "ol.Size", "ol.Tile", "ol.css", "ol.layer.Image", "ol.layer.Tile", "ol.layer.Vector2", "ol.renderer.Map", "ol.renderer.webgl.ImageLayer", "ol.renderer.webgl.TileLayer", "ol.renderer.webgl.VectorLayer2", "ol.renderer.webgl.map.shader.Color", "ol.renderer.webgl.map.shader.Default", "ol.size", "ol.structs.Buffer", "ol.structs.IntegerSet", "ol.structs.LRUCache", "ol.structs.PriorityQueue", "ol.webgl", "ol.webgl.WebGLContextEventType", "ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglrenderer.js", ["ol.renderer.webgl.SUPPORTED"], ["ol.webgl.SUPPORTED"]); goog.addDependency("../src/ol/renderer/webgl/webgltilelayerrenderer.js", ["ol.renderer.webgl.TileLayer"], ["goog.array", "goog.object", "goog.vec.Mat4", "goog.vec.Vec4", "goog.webgl", "ol.Tile", "ol.TileRange", "ol.TileState", "ol.extent", "ol.layer.Tile", "ol.math", "ol.renderer.webgl.Layer", "ol.renderer.webgl.tilelayer.shader", "ol.structs.Buffer"]); goog.addDependency("../src/ol/renderer/webgl/webgltilelayershader.js", ["ol.renderer.webgl.tilelayer.shader"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglvectorlayer2linestringcollectionshader.js", ["ol.renderer.webgl.vectorlayer2.shader.LineStringCollection"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglvectorlayer2pointcollectionshader.js", ["ol.renderer.webgl.vectorlayer2.shader.PointCollection"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglvectorlayer2renderer.js", ["ol.renderer.webgl.VectorLayer2"], ["goog.vec.Mat4", "goog.webgl", "ol.math", "ol.renderer.webgl.Layer", "ol.renderer.webgl.vectorlayer2.shader.LineStringCollection", "ol.renderer.webgl.vectorlayer2.shader.PointCollection"]); goog.addDependency("../src/ol/resolutionconstraint.js", ["ol.ResolutionConstraint", "ol.ResolutionConstraintType"], ["goog.math", "ol.array"]); goog.addDependency("../src/ol/rotationconstraint.js", ["ol.RotationConstraint", "ol.RotationConstraintType"], []); goog.addDependency("../src/ol/size.js", ["ol.Size", "ol.size"], []); goog.addDependency("../src/ol/source/bingmapssource.js", ["ol.source.BingMaps"], ["goog.Uri", "goog.array", "goog.asserts", "goog.net.Jsonp", "ol.Attribution", "ol.TileRange", "ol.TileUrlFunction", "ol.extent", "ol.proj", "ol.source.TileImage", "ol.tilegrid.XYZ"]); goog.addDependency("../src/ol/source/debugtilesource.js", ["ol.source.TileDebug"], ["goog.dom", "goog.dom.TagName", "ol.Size", "ol.Tile", "ol.TileCache", "ol.TileCoord", "ol.TileState", "ol.source.Tile", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/source/featureinfosource.js", ["ol.source.FeatureInfoSource"], []); goog.addDependency("../src/ol/source/imagesource.js", ["ol.source.Image"], ["goog.array", "goog.asserts", "ol.Attribution", "ol.Extent", "ol.Image", "ol.ImageUrlFunction", "ol.ImageUrlFunctionType", "ol.Projection", "ol.Size", "ol.array", "ol.source.Source"]); goog.addDependency("../src/ol/source/imagestaticsource.js", ["ol.source.ImageStatic"], ["ol.Image", "ol.ImageUrlFunctionType", "ol.extent", "ol.proj", "ol.source.Image"]); goog.addDependency("../src/ol/source/imagewmssource.js", ["ol.source.ImageWMS"], ["goog.asserts", "goog.object", "ol.Image", "ol.ImageUrlFunction", "ol.extent", "ol.source.FeatureInfoSource", "ol.source.Image", "ol.source.wms"]); goog.addDependency("../src/ol/source/mapquestsource.js", ["ol.source.MapQuestOSM", "ol.source.MapQuestOpenAerial"], ["ol.Attribution", "ol.source.OSM", "ol.source.XYZ"]); goog.addDependency("../src/ol/source/osmsource.js", ["ol.source.OSM"], ["ol.Attribution", "ol.source.XYZ"]); goog.addDependency("../src/ol/source/source.js", ["ol.source.Source"], ["goog.events.EventTarget", "goog.events.EventType", "goog.functions", "ol.Attribution", "ol.Extent", "ol.proj"]); goog.addDependency("../src/ol/source/stamensource.js", ["ol.source.Stamen"], ["goog.asserts", "ol.Attribution", "ol.source.OSM", "ol.source.XYZ"]); goog.addDependency("../src/ol/source/tileimagesource.js", ["ol.source.TileImage"], ["goog.asserts", "ol.Attribution", "ol.Extent", "ol.ImageTile", "ol.Projection", "ol.Tile", "ol.TileCache", "ol.TileCoord", "ol.TileState", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.source.Tile", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/source/tilejsonsource.js", ["ol.source.TileJSON", "ol.tilejson"], ["goog.asserts", "goog.net.jsloader", "ol.Attribution", "ol.TileRange", "ol.TileUrlFunction", "ol.extent", "ol.proj", "ol.source.TileImage", "ol.tilegrid.XYZ"]); goog.addDependency("../src/ol/source/tilesource.js", ["ol.source.Tile", "ol.source.TileOptions"], ["goog.functions", "ol.Attribution", "ol.Extent", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.source.Source", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/source/tilewmssource.js", ["ol.source.TileWMS"], ["goog.array", "goog.asserts", "goog.math", "goog.object", "ol.TileCoord", "ol.TileUrlFunction", "ol.extent", "ol.source.FeatureInfoSource", "ol.source.TileImage", "ol.source.wms"]); goog.addDependency("../src/ol/source/vectorsource.js", ["ol.source.Vector"], ["goog.asserts", "goog.net.XhrIo", "ol.source.Source"]); goog.addDependency("../src/ol/source/vectorsource2.js", ["ol.source.Vector2"], ["ol.geom2.LineStringCollection", "ol.geom2.PointCollection", "ol.source.Source"]); goog.addDependency("../src/ol/source/wmssource.js", ["ol.source.WMSGetFeatureInfoMethod", "ol.source.wms"], ["goog.net.XhrIo", "goog.object", "goog.uri.utils"]); goog.addDependency("../src/ol/source/wmtssource.js", ["ol.source.WMTS", "ol.source.WMTSRequestEncoding"], ["goog.array", "goog.asserts", "goog.math", "goog.object", "goog.uri.utils", "ol.TileCoord", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.extent", "ol.proj", "ol.source.TileImage", "ol.tilegrid.WMTS"]); goog.addDependency("../src/ol/source/xyzsource.js", ["ol.source.XYZ"], ["ol.Attribution", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.proj", "ol.source.TileImage", "ol.tilegrid.XYZ"]); goog.addDependency("../src/ol/sphere/normal.js", ["ol.sphere.NORMAL"], ["ol.Sphere"]); goog.addDependency("../src/ol/sphere/sphere.js", ["ol.Sphere"], ["goog.math"]); goog.addDependency("../src/ol/sphere/wgs84sphere.js", ["ol.sphere.WGS84"], ["ol.Sphere"]); goog.addDependency("../src/ol/structs/buffer.js", ["ol.structs.Buffer"], ["goog.array", "goog.asserts", "goog.webgl", "ol.structs.IntegerSet"]); goog.addDependency("../src/ol/structs/integerset.js", ["ol.structs.IntegerSet"], ["goog.asserts"]); goog.addDependency("../src/ol/structs/lrucache.js", ["ol.structs.LRUCache"], ["goog.asserts", "goog.object"]); goog.addDependency("../src/ol/structs/priorityqueue.js", ["ol.structs.PriorityQueue"], ["goog.asserts", "goog.object"]); goog.addDependency("../src/ol/structs/rtree.js", ["ol.structs.RTree"], ["goog.array", "ol.extent"]); goog.addDependency("../src/ol/style/fillsymbolizer.js", ["ol.style.Fill"], ["goog.asserts", "ol.Feature", "ol.expr", "ol.expr.Expression", "ol.expr.Literal", "ol.geom.GeometryType", "ol.style.PolygonLiteral", "ol.style.Symbolizer"]); goog.addDependency("../src/ol/style/iconliteral.js", ["ol.style.IconLiteral"], ["ol.style.PointLiteral"]); goog.addDependency("../src/ol/style/iconsymbolizer.js", ["ol.style.Icon"], ["goog.asserts", "ol.Feature", "ol.expr", "ol.expr.Expression", "ol.expr.Literal", "ol.geom.GeometryType", "ol.style.IconLiteral", "ol.style.Point"]); goog.addDependency("../src/ol/style/lineliteral.js", ["ol.style.LineLiteral"], ["goog.asserts", "ol.style.Literal"]); goog.addDependency("../src/ol/style/literal.js", ["ol.style.Literal"], []); goog.addDependency("../src/ol/style/pointliteral.js", ["ol.style.PointLiteral"], ["ol.style.Literal"]); goog.addDependency("../src/ol/style/pointsymbolizer.js", ["ol.style.Point"], ["ol.style.Symbolizer"]); goog.addDependency("../src/ol/style/polygonliteral.js", ["ol.style.PolygonLiteral"], ["goog.asserts", "ol.style.Literal"]); goog.addDependency("../src/ol/style/rule.js", ["ol.style.Rule"], ["goog.asserts", "ol.Feature", "ol.expr", "ol.expr.Expression", "ol.style.Symbolizer"]); goog.addDependency("../src/ol/style/shapeliteral.js", ["ol.style.ShapeLiteral", "ol.style.ShapeType"], ["goog.asserts", "ol.style.PointLiteral"]); goog.addDependency("../src/ol/style/shapesymbolizer.js", ["ol.style.Shape"], ["goog.asserts", "ol.Feature", "ol.expr", "ol.expr.Expression", "ol.expr.Literal", "ol.geom.GeometryType", "ol.style.Fill", "ol.style.Point", "ol.style.ShapeLiteral", "ol.style.ShapeType", "ol.style.Stroke"]); goog.addDependency("../src/ol/style/strokesymbolizer.js", ["ol.style.Stroke", "ol.style.StrokeDefaults"], ["goog.asserts", "ol.Feature", "ol.expr", "ol.expr.Expression", "ol.expr.Literal", "ol.geom.GeometryType", "ol.style.LineLiteral", "ol.style.PolygonLiteral", "ol.style.Symbolizer"]); goog.addDependency("../src/ol/style/style.js", ["ol.style", "ol.style.Style"], ["goog.object", "ol.Feature", "ol.expr.Call", "ol.expr.Identifier", "ol.expr.Literal", "ol.expr.functions", "ol.geom.GeometryType", "ol.style.Fill", "ol.style.Literal", "ol.style.PolygonLiteral", "ol.style.Rule", "ol.style.Shape", "ol.style.Stroke", "ol.style.Symbolizer"]); goog.addDependency("../src/ol/style/symbolizer.js", ["ol.style.Symbolizer"], ["ol.Feature", "ol.style.Literal"]); goog.addDependency("../src/ol/style/textliteral.js", ["ol.style.TextLiteral"], ["goog.asserts", "ol.style.Literal"]); goog.addDependency("../src/ol/style/textsymbolizer.js", ["ol.style.Text"], ["goog.asserts", "ol.Feature", "ol.expr", "ol.expr.Expression", "ol.expr.Literal", "ol.style.Symbolizer", "ol.style.TextLiteral"]); goog.addDependency("../src/ol/tile.js", ["ol.Tile", "ol.TileState"], ["goog.events", "goog.events.EventTarget", "goog.events.EventType", "ol.TileCoord"]); goog.addDependency("../src/ol/tilecache.js", ["ol.TileCache"], ["goog.asserts", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.structs.LRUCache"]); goog.addDependency("../src/ol/tilecoord.js", ["ol.TileCoord"], ["goog.array"]); goog.addDependency("../src/ol/tilegrid/tilegrid.js", ["ol.tilegrid.TileGrid"], ["goog.array", "goog.asserts", "ol.Coordinate", "ol.Projection", "ol.ProjectionUnits", "ol.Size", "ol.TileCoord", "ol.TileRange", "ol.array", "ol.extent"]); goog.addDependency("../src/ol/tilegrid/wmtstilegrid.js", ["ol.tilegrid.WMTS"], ["goog.array", "goog.asserts", "ol.proj", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/tilegrid/xyztilegrid.js", ["ol.tilegrid.XYZ"], ["goog.math", "ol.TileCoord", "ol.TileRange", "ol.proj", "ol.proj.EPSG3857", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/tilequeue.js", ["ol.TilePriorityFunction", "ol.TileQueue"], ["goog.events", "goog.events.EventType", "ol.Coordinate", "ol.Tile", "ol.structs.PriorityQueue"]); goog.addDependency("../src/ol/tilerange.js", ["ol.TileRange"], ["goog.asserts", "ol.Size", "ol.TileCoord"]); goog.addDependency("../src/ol/tileurlfunction.js", ["ol.TileUrlFunction", "ol.TileUrlFunctionType"], ["goog.array", "goog.math", "ol.TileCoord", "ol.extent"]); goog.addDependency("../src/ol/transformfunction.js", ["ol.TransformFunction"], []); goog.addDependency("../src/ol/vec/mat4.js", ["ol.vec.Mat4"], ["goog.vec.Mat4"]); goog.addDependency("../src/ol/view.js", ["ol.View", "ol.ViewHint"], ["goog.array", "goog.asserts", "ol.IView", "ol.Object"]); goog.addDependency("../src/ol/view2d.js", ["ol.View2D", "ol.View2DProperty"], ["goog.asserts", "ol.Constraints", "ol.IView2D", "ol.IView3D", "ol.Projection", "ol.ProjectionUnits", "ol.ResolutionConstraint", "ol.RotationConstraint", "ol.RotationConstraintType", "ol.Size", "ol.View", "ol.coordinate", "ol.extent", "ol.proj"]); goog.addDependency("../src/ol/webgl/shader.js", ["ol.webgl.shader"], ["goog.functions", "goog.webgl", "ol.webgl"]); goog.addDependency("../src/ol/webgl/webgl.js", ["ol.webgl", "ol.webgl.SUPPORTED", "ol.webgl.WebGLContextEventType"], ["goog.dom", "goog.dom.TagName"]); goog.addDependency("/closure/goog/a11y/aria/announcer.js", ["goog.a11y.aria.Announcer"], ["goog.Disposable", "goog.a11y.aria", "goog.a11y.aria.LivePriority", "goog.a11y.aria.State", "goog.dom", "goog.object"]); goog.addDependency("/closure/goog/a11y/aria/aria.js", ["goog.a11y.aria"], ["goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.a11y.aria.datatables", "goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.object", "goog.string"]); goog.addDependency("/closure/goog/a11y/aria/attributes.js", ["goog.a11y.aria.AutoCompleteValues", "goog.a11y.aria.CheckedValues", "goog.a11y.aria.DropEffectValues", "goog.a11y.aria.ExpandedValues", "goog.a11y.aria.GrabbedValues", "goog.a11y.aria.InvalidValues", "goog.a11y.aria.LivePriority", "goog.a11y.aria.OrientationValues", "goog.a11y.aria.PressedValues", "goog.a11y.aria.RelevantValues", "goog.a11y.aria.SelectedValues", "goog.a11y.aria.SortValues", "goog.a11y.aria.State"], []); goog.addDependency("/closure/goog/a11y/aria/datatables.js", ["goog.a11y.aria.datatables"], ["goog.a11y.aria.State", "goog.object"]); goog.addDependency("/closure/goog/a11y/aria/roles.js", ["goog.a11y.aria.Role"], []); goog.addDependency("/closure/goog/array/array.js", ["goog.array", "goog.array.ArrayLike"], ["goog.asserts"]); goog.addDependency("/closure/goog/asserts/asserts.js", ["goog.asserts", "goog.asserts.AssertionError"], ["goog.debug.Error", "goog.string"]); goog.addDependency("/closure/goog/async/animationdelay.js", ["goog.async.AnimationDelay"], ["goog.Disposable", "goog.events", "goog.functions"]); goog.addDependency("/closure/goog/async/conditionaldelay.js", ["goog.async.ConditionalDelay"], ["goog.Disposable", "goog.async.Delay"]); goog.addDependency("/closure/goog/async/delay.js", ["goog.Delay", "goog.async.Delay"], ["goog.Disposable", "goog.Timer"]); goog.addDependency("/closure/goog/async/nexttick.js", ["goog.async.nextTick"], ["goog.debug.entryPointRegistry", "goog.functions"]); goog.addDependency("/closure/goog/async/throttle.js", ["goog.Throttle", "goog.async.Throttle"], ["goog.Disposable", "goog.Timer"]); goog.addDependency("/closure/goog/base.js", [], []); goog.addDependency("/closure/goog/bootstrap/nodejs.js", [], []); goog.addDependency("/closure/goog/bootstrap/webworkers.js", [], []); goog.addDependency("/closure/goog/color/alpha.js", ["goog.color.alpha"], ["goog.color"]); goog.addDependency("/closure/goog/color/color.js", ["goog.color"], ["goog.color.names", "goog.math"]); goog.addDependency("/closure/goog/color/names.js", ["goog.color.names"], []); goog.addDependency("/closure/goog/crypt/aes.js", ["goog.crypt.Aes"], ["goog.asserts", "goog.crypt.BlockCipher"]); goog.addDependency("/closure/goog/crypt/arc4.js", ["goog.crypt.Arc4"], ["goog.asserts"]); goog.addDependency("/closure/goog/crypt/base64.js", ["goog.crypt.base64"], ["goog.crypt", "goog.userAgent"]); goog.addDependency("/closure/goog/crypt/basen.js", ["goog.crypt.baseN"], []); goog.addDependency("/closure/goog/crypt/blobhasher.js", ["goog.crypt.BlobHasher", "goog.crypt.BlobHasher.EventType"], ["goog.asserts", "goog.crypt", "goog.crypt.Hash", "goog.events.EventTarget", "goog.fs", "goog.log"]); goog.addDependency("/closure/goog/crypt/blockcipher.js", ["goog.crypt.BlockCipher"], []); goog.addDependency("/closure/goog/crypt/cbc.js", ["goog.crypt.Cbc"], ["goog.array", "goog.crypt"]); goog.addDependency("/closure/goog/crypt/cbc_test.js", ["goog.crypt.CbcTest"], ["goog.crypt", "goog.crypt.Aes", "goog.crypt.Cbc", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/crypt/crypt.js", ["goog.crypt"], ["goog.array"]); goog.addDependency("/closure/goog/crypt/hash.js", ["goog.crypt.Hash"], []); goog.addDependency("/closure/goog/crypt/hash32.js", ["goog.crypt.hash32"], ["goog.crypt"]); goog.addDependency("/closure/goog/crypt/hashtester.js", ["goog.crypt.hashTester"], ["goog.array", "goog.crypt", "goog.testing.PerformanceTable", "goog.testing.PseudoRandom", "goog.testing.asserts"]); goog.addDependency("/closure/goog/crypt/hmac.js", ["goog.crypt.Hmac"], ["goog.asserts", "goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/md5.js", ["goog.crypt.Md5"], ["goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/pbkdf2.js", ["goog.crypt.pbkdf2"], ["goog.asserts", "goog.crypt", "goog.crypt.Hmac", "goog.crypt.Sha1"]); goog.addDependency("/closure/goog/crypt/sha1.js", ["goog.crypt.Sha1"], ["goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/sha2.js", ["goog.crypt.Sha2"], ["goog.array", "goog.asserts", "goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/sha224.js", ["goog.crypt.Sha224"], ["goog.crypt.Sha2"]); goog.addDependency("/closure/goog/crypt/sha256.js", ["goog.crypt.Sha256"], ["goog.crypt.Sha2"]); goog.addDependency("/closure/goog/cssom/cssom.js", ["goog.cssom", "goog.cssom.CssRuleType"], ["goog.array", "goog.dom"]); goog.addDependency("/closure/goog/cssom/iframe/style.js", ["goog.cssom.iframe.style"], ["goog.cssom", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.string", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/datasource/datamanager.js", ["goog.ds.DataManager"], ["goog.ds.BasicNodeList", "goog.ds.DataNode", "goog.ds.Expr", "goog.string", "goog.structs", "goog.structs.Map"]); goog.addDependency("/closure/goog/datasource/datasource.js", ["goog.ds.BaseDataNode", "goog.ds.BasicNodeList", "goog.ds.DataNode", "goog.ds.DataNodeList", "goog.ds.EmptyNodeList", "goog.ds.LoadState", "goog.ds.SortedNodeList", "goog.ds.Util", "goog.ds.logger"], ["goog.array", "goog.log"]); goog.addDependency("/closure/goog/datasource/expr.js", ["goog.ds.Expr"], ["goog.ds.BasicNodeList", "goog.ds.EmptyNodeList", "goog.string"]); goog.addDependency("/closure/goog/datasource/fastdatanode.js", ["goog.ds.AbstractFastDataNode", "goog.ds.FastDataNode", "goog.ds.FastListNode", "goog.ds.PrimitiveFastDataNode"], ["goog.ds.DataManager", "goog.ds.EmptyNodeList", "goog.string"]); goog.addDependency("/closure/goog/datasource/jsdatasource.js", ["goog.ds.JsDataSource", "goog.ds.JsPropertyDataSource"], ["goog.ds.BaseDataNode", "goog.ds.BasicNodeList", "goog.ds.DataManager", "goog.ds.EmptyNodeList", "goog.ds.LoadState"]); goog.addDependency("/closure/goog/datasource/jsondatasource.js", ["goog.ds.JsonDataSource"], ["goog.Uri", "goog.dom", "goog.ds.DataManager", "goog.ds.JsDataSource", "goog.ds.LoadState", "goog.ds.logger"]); goog.addDependency("/closure/goog/datasource/jsxmlhttpdatasource.js", ["goog.ds.JsXmlHttpDataSource"], ["goog.Uri", "goog.ds.DataManager", "goog.ds.FastDataNode", "goog.ds.LoadState", "goog.ds.logger", "goog.events", "goog.log", "goog.net.EventType", "goog.net.XhrIo"]); goog.addDependency("/closure/goog/datasource/xmldatasource.js", ["goog.ds.XmlDataSource", "goog.ds.XmlHttpDataSource"], ["goog.Uri", "goog.dom.NodeType", "goog.dom.xml", "goog.ds.BasicNodeList", "goog.ds.DataManager", "goog.ds.LoadState", "goog.ds.logger", "goog.net.XhrIo", "goog.string"]); goog.addDependency("/closure/goog/date/date.js", ["goog.date", "goog.date.Date", "goog.date.DateTime", "goog.date.Interval", "goog.date.month", "goog.date.weekDay"], ["goog.asserts", "goog.date.DateLike", "goog.i18n.DateTimeSymbols", "goog.string"]); goog.addDependency("/closure/goog/date/datelike.js", ["goog.date.DateLike"], []); goog.addDependency("/closure/goog/date/daterange.js", ["goog.date.DateRange", "goog.date.DateRange.Iterator", "goog.date.DateRange.StandardDateRangeKeys"], ["goog.date.Date", "goog.date.Interval", "goog.iter.Iterator", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/date/relative.js", ["goog.date.relative"], ["goog.i18n.DateTimeFormat"]); goog.addDependency("/closure/goog/date/utcdatetime.js", ["goog.date.UtcDateTime"], ["goog.date", "goog.date.Date", "goog.date.DateTime", "goog.date.Interval"]); goog.addDependency("/closure/goog/db/cursor.js", ["goog.db.Cursor"], ["goog.async.Deferred", "goog.db.Error", "goog.debug", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/db/db.js", ["goog.db"], ["goog.async.Deferred", "goog.db.Error", "goog.db.IndexedDb", "goog.db.Transaction"]); goog.addDependency("/closure/goog/db/error.js", ["goog.db.Error", "goog.db.Error.ErrorCode", "goog.db.Error.ErrorName", "goog.db.Error.VersionChangeBlockedError"], ["goog.debug.Error"]); goog.addDependency("/closure/goog/db/index.js", ["goog.db.Index"], ["goog.async.Deferred", "goog.db.Cursor", "goog.db.Error", "goog.debug"]); goog.addDependency("/closure/goog/db/indexeddb.js", ["goog.db.IndexedDb"], ["goog.async.Deferred", "goog.db.Error", "goog.db.Error.VersionChangeBlockedError", "goog.db.ObjectStore", "goog.db.Transaction", "goog.db.Transaction.TransactionMode", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/db/keyrange.js", ["goog.db.KeyRange"], []); goog.addDependency("/closure/goog/db/objectstore.js", ["goog.db.ObjectStore"], ["goog.async.Deferred", "goog.db.Cursor", "goog.db.Error", "goog.db.Index", "goog.debug", "goog.events"]); goog.addDependency("/closure/goog/db/transaction.js", ["goog.db.Transaction", "goog.db.Transaction.TransactionMode"], ["goog.async.Deferred", "goog.db.Error", "goog.db.ObjectStore", "goog.events.EventHandler", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/debug/console.js", ["goog.debug.Console"], ["goog.debug.LogManager", "goog.debug.Logger.Level", "goog.debug.TextFormatter"]); goog.addDependency("/closure/goog/debug/debug.js", ["goog.debug"], ["goog.array", "goog.string", "goog.structs.Set", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/debugwindow.js", ["goog.debug.DebugWindow"], ["goog.debug.HtmlFormatter", "goog.debug.LogManager", "goog.debug.Logger", "goog.structs.CircularBuffer", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/devcss/devcss.js", ["goog.debug.DevCss", "goog.debug.DevCss.UserAgent"], ["goog.cssom", "goog.dom.classes", "goog.events", "goog.events.EventType", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/devcss/devcssrunner.js", ["goog.debug.devCssRunner"], ["goog.debug.DevCss"]); goog.addDependency("/closure/goog/debug/divconsole.js", ["goog.debug.DivConsole"], ["goog.debug.HtmlFormatter", "goog.debug.LogManager", "goog.style"]); goog.addDependency("/closure/goog/debug/entrypointregistry.js", ["goog.debug.EntryPointMonitor", "goog.debug.entryPointRegistry"], ["goog.asserts"]); goog.addDependency("/closure/goog/debug/error.js", ["goog.debug.Error"], []); goog.addDependency("/closure/goog/debug/errorhandler.js", ["goog.debug.ErrorHandler", "goog.debug.ErrorHandler.ProtectedFunctionError"], ["goog.asserts", "goog.debug", "goog.debug.EntryPointMonitor", "goog.debug.Trace"]); goog.addDependency("/closure/goog/debug/errorhandlerweakdep.js", ["goog.debug.errorHandlerWeakDep"], []); goog.addDependency("/closure/goog/debug/errorreporter.js", ["goog.debug.ErrorReporter", "goog.debug.ErrorReporter.ExceptionEvent"], ["goog.asserts", "goog.debug", "goog.debug.ErrorHandler", "goog.debug.entryPointRegistry", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.log", "goog.net.XhrIo", "goog.object", "goog.string", "goog.uri.utils", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/fancywindow.js", ["goog.debug.FancyWindow"], ["goog.debug.DebugWindow", "goog.debug.LogManager", "goog.debug.Logger", "goog.dom.DomHelper", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/formatter.js", ["goog.debug.Formatter", "goog.debug.HtmlFormatter", "goog.debug.TextFormatter"], ["goog.debug.RelativeTimeProvider", "goog.string"]); goog.addDependency("/closure/goog/debug/fpsdisplay.js", ["goog.debug.FpsDisplay"], ["goog.asserts", "goog.async.AnimationDelay", "goog.ui.Component"]); goog.addDependency("/closure/goog/debug/gcdiagnostics.js", ["goog.debug.GcDiagnostics"], ["goog.debug.Trace", "goog.log", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/logbuffer.js", ["goog.debug.LogBuffer"], ["goog.asserts", "goog.debug.LogRecord"]); goog.addDependency("/closure/goog/debug/logger.js", ["goog.debug.LogManager", "goog.debug.Logger", "goog.debug.Logger.Level"], ["goog.array", "goog.asserts", "goog.debug", "goog.debug.LogBuffer", "goog.debug.LogRecord"]); goog.addDependency("/closure/goog/debug/logrecord.js", ["goog.debug.LogRecord"], []); goog.addDependency("/closure/goog/debug/logrecordserializer.js", ["goog.debug.logRecordSerializer"], ["goog.debug.LogRecord", "goog.debug.Logger.Level", "goog.json", "goog.object"]); goog.addDependency("/closure/goog/debug/reflect.js", ["goog.debug.reflect"], []); goog.addDependency("/closure/goog/debug/relativetimeprovider.js", ["goog.debug.RelativeTimeProvider"], []); goog.addDependency("/closure/goog/debug/tracer.js", ["goog.debug.Trace"], ["goog.array", "goog.iter", "goog.log", "goog.structs.Map", "goog.structs.SimplePool"]); goog.addDependency("/closure/goog/demos/autocompleteremotedata.js", [], []); goog.addDependency("/closure/goog/demos/autocompleterichremotedata.js", [], []); goog.addDependency("/closure/goog/demos/editor/equationeditor.js", ["goog.demos.editor.EquationEditor"], ["goog.ui.equation.EquationEditorDialog"]); goog.addDependency("/closure/goog/demos/editor/helloworld.js", ["goog.demos.editor.HelloWorld"], ["goog.dom", "goog.dom.TagName", "goog.editor.Plugin"]); goog.addDependency("/closure/goog/demos/editor/helloworlddialog.js", ["goog.demos.editor.HelloWorldDialog", "goog.demos.editor.HelloWorldDialog.OkEvent"], ["goog.dom.TagName", "goog.events.Event", "goog.string", "goog.ui.editor.AbstractDialog"]); goog.addDependency("/closure/goog/demos/editor/helloworlddialogplugin.js", ["goog.demos.editor.HelloWorldDialogPlugin", "goog.demos.editor.HelloWorldDialogPlugin.Command"], ["goog.demos.editor.HelloWorldDialog", "goog.dom.TagName", "goog.editor.plugins.AbstractDialogPlugin", "goog.editor.range", "goog.functions", "goog.ui.editor.AbstractDialog"]); goog.addDependency("/closure/goog/demos/graphics/tigerdata.js", [], []); goog.addDependency("/closure/goog/demos/samplecomponent.js", ["goog.demos.SampleComponent"], ["goog.dom", "goog.dom.classes", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.ui.Component"]); goog.addDependency("/closure/goog/demos/tree/testdata.js", [], []); goog.addDependency("/closure/goog/demos/xpc/xpcdemo.js", [], ["goog.Uri", "goog.dom", "goog.events", "goog.events.EventType", "goog.json", "goog.log", "goog.net.xpc.CfgFields", "goog.net.xpc.CrossPageChannel"]); goog.addDependency("/closure/goog/disposable/disposable.js", ["goog.Disposable", "goog.dispose"], ["goog.disposable.IDisposable"]); goog.addDependency("/closure/goog/disposable/idisposable.js", ["goog.disposable.IDisposable"], []); goog.addDependency("/closure/goog/dom/a11y.js", ["goog.dom.a11y", "goog.dom.a11y.Announcer", "goog.dom.a11y.LivePriority", "goog.dom.a11y.Role", "goog.dom.a11y.State"], ["goog.a11y.aria", "goog.a11y.aria.Announcer", "goog.a11y.aria.LivePriority", "goog.a11y.aria.Role", "goog.a11y.aria.State"]); goog.addDependency("/closure/goog/dom/abstractmultirange.js", ["goog.dom.AbstractMultiRange"], ["goog.array", "goog.dom", "goog.dom.AbstractRange"]); goog.addDependency("/closure/goog/dom/abstractrange.js", ["goog.dom.AbstractRange", "goog.dom.RangeIterator", "goog.dom.RangeType"], ["goog.dom", "goog.dom.NodeType", "goog.dom.SavedCaretRange", "goog.dom.TagIterator", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/annotate.js", ["goog.dom.annotate"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.string"]); goog.addDependency("/closure/goog/dom/browserfeature.js", ["goog.dom.BrowserFeature"], ["goog.userAgent"]); goog.addDependency("/closure/goog/dom/browserrange/abstractrange.js", ["goog.dom.browserrange.AbstractRange"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.RangeEndpoint", "goog.dom.TagName", "goog.dom.TextRangeIterator", "goog.iter", "goog.math.Coordinate", "goog.string", "goog.string.StringBuffer", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/browserrange/browserrange.js", ["goog.dom.browserrange", "goog.dom.browserrange.Error"], ["goog.dom", "goog.dom.NodeType", "goog.dom.browserrange.GeckoRange", "goog.dom.browserrange.IeRange", "goog.dom.browserrange.OperaRange", "goog.dom.browserrange.W3cRange", "goog.dom.browserrange.WebKitRange", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/browserrange/geckorange.js", ["goog.dom.browserrange.GeckoRange"], ["goog.dom.browserrange.W3cRange"]); goog.addDependency("/closure/goog/dom/browserrange/ierange.js", ["goog.dom.browserrange.IeRange"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.RangeEndpoint", "goog.dom.TagName", "goog.dom.browserrange.AbstractRange", "goog.log", "goog.string"]); goog.addDependency("/closure/goog/dom/browserrange/operarange.js", ["goog.dom.browserrange.OperaRange"], ["goog.dom.browserrange.W3cRange"]); goog.addDependency("/closure/goog/dom/browserrange/w3crange.js", ["goog.dom.browserrange.W3cRange"], ["goog.dom", "goog.dom.NodeType", "goog.dom.RangeEndpoint", "goog.dom.browserrange.AbstractRange", "goog.string"]); goog.addDependency("/closure/goog/dom/browserrange/webkitrange.js", ["goog.dom.browserrange.WebKitRange"], ["goog.dom.RangeEndpoint", "goog.dom.browserrange.W3cRange", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/bufferedviewportsizemonitor.js", ["goog.dom.BufferedViewportSizeMonitor"], ["goog.asserts", "goog.async.Delay", "goog.events", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("/closure/goog/dom/bufferedviewportsizemonitor_test.js", ["goog.dom.BufferedViewportSizeMonitorTest"], ["goog.dom.BufferedViewportSizeMonitor", "goog.dom.ViewportSizeMonitor", "goog.events", "goog.events.EventType", "goog.math.Size", "goog.testing.MockClock", "goog.testing.events", "goog.testing.events.Event", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/dom/classes.js", ["goog.dom.classes"], ["goog.array"]); goog.addDependency("/closure/goog/dom/classes_test.js", ["goog.dom.classes_test"], ["goog.dom", "goog.dom.classes", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/dom/classlist.js", ["goog.dom.classlist"], ["goog.array", "goog.asserts"]); goog.addDependency("/closure/goog/dom/classlist_test.js", ["goog.dom.classlist_test"], ["goog.dom", "goog.dom.classlist", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/dom/controlrange.js", ["goog.dom.ControlRange", "goog.dom.ControlRangeIterator"], ["goog.array", "goog.dom", "goog.dom.AbstractMultiRange", "goog.dom.AbstractRange", "goog.dom.RangeIterator", "goog.dom.RangeType", "goog.dom.SavedRange", "goog.dom.TagWalkType", "goog.dom.TextRange", "goog.iter.StopIteration", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/dataset.js", ["goog.dom.dataset"], ["goog.string"]); goog.addDependency("/closure/goog/dom/dom.js", ["goog.dom", "goog.dom.Appendable", "goog.dom.DomHelper", "goog.dom.NodeType"], ["goog.array", "goog.dom.BrowserFeature", "goog.dom.TagName", "goog.dom.classes", "goog.math.Coordinate", "goog.math.Size", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/dom_test.js", ["goog.dom.dom_test"], ["goog.dom", "goog.dom.BrowserFeature", "goog.dom.DomHelper", "goog.dom.NodeType", "goog.dom.TagName", "goog.object", "goog.string.Unicode", "goog.testing.asserts", "goog.userAgent", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/dom/fontsizemonitor.js", ["goog.dom.FontSizeMonitor", "goog.dom.FontSizeMonitor.EventType"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/forms.js", ["goog.dom.forms"], ["goog.structs.Map"]); goog.addDependency("/closure/goog/dom/fullscreen.js", ["goog.dom.fullscreen", "goog.dom.fullscreen.EventType"], ["goog.dom", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/dom/iframe.js", ["goog.dom.iframe"], ["goog.dom", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/iter.js", ["goog.dom.iter.AncestorIterator", "goog.dom.iter.ChildIterator", "goog.dom.iter.SiblingIterator"], ["goog.iter.Iterator", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/multirange.js", ["goog.dom.MultiRange", "goog.dom.MultiRangeIterator"], ["goog.array", "goog.dom.AbstractMultiRange", "goog.dom.AbstractRange", "goog.dom.RangeIterator", "goog.dom.RangeType", "goog.dom.SavedRange", "goog.dom.TextRange", "goog.iter.StopIteration", "goog.log"]); goog.addDependency("/closure/goog/dom/nodeiterator.js", ["goog.dom.NodeIterator"], ["goog.dom.TagIterator"]); goog.addDependency("/closure/goog/dom/nodeoffset.js", ["goog.dom.NodeOffset"], ["goog.Disposable", "goog.dom.TagName"]); goog.addDependency("/closure/goog/dom/pattern/abstractpattern.js", ["goog.dom.pattern.AbstractPattern"], ["goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/allchildren.js", ["goog.dom.pattern.AllChildren"], ["goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/callback/callback.js", ["goog.dom.pattern.callback"], ["goog.dom", "goog.dom.TagWalkType", "goog.iter"]); goog.addDependency("/closure/goog/dom/pattern/callback/counter.js", ["goog.dom.pattern.callback.Counter"], []); goog.addDependency("/closure/goog/dom/pattern/callback/test.js", ["goog.dom.pattern.callback.Test"], ["goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/pattern/childmatches.js", ["goog.dom.pattern.ChildMatches"], ["goog.dom.pattern.AllChildren", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/endtag.js", ["goog.dom.pattern.EndTag"], ["goog.dom.TagWalkType", "goog.dom.pattern.Tag"]); goog.addDependency("/closure/goog/dom/pattern/fulltag.js", ["goog.dom.pattern.FullTag"], ["goog.dom.pattern.MatchType", "goog.dom.pattern.StartTag", "goog.dom.pattern.Tag"]); goog.addDependency("/closure/goog/dom/pattern/matcher.js", ["goog.dom.pattern.Matcher"], ["goog.dom.TagIterator", "goog.dom.pattern.MatchType", "goog.iter"]); goog.addDependency("/closure/goog/dom/pattern/nodetype.js", ["goog.dom.pattern.NodeType"], ["goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/pattern.js", ["goog.dom.pattern", "goog.dom.pattern.MatchType"], []); goog.addDependency("/closure/goog/dom/pattern/repeat.js", ["goog.dom.pattern.Repeat"], ["goog.dom.NodeType", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/sequence.js", ["goog.dom.pattern.Sequence"], ["goog.dom.NodeType", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/starttag.js", ["goog.dom.pattern.StartTag"], ["goog.dom.TagWalkType", "goog.dom.pattern.Tag"]); goog.addDependency("/closure/goog/dom/pattern/tag.js", ["goog.dom.pattern.Tag"], ["goog.dom.pattern", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType", "goog.object"]); goog.addDependency("/closure/goog/dom/pattern/text.js", ["goog.dom.pattern.Text"], ["goog.dom.NodeType", "goog.dom.pattern", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/range.js", ["goog.dom.Range"], ["goog.dom", "goog.dom.AbstractRange", "goog.dom.ControlRange", "goog.dom.MultiRange", "goog.dom.NodeType", "goog.dom.TextRange", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/rangeendpoint.js", ["goog.dom.RangeEndpoint"], []); goog.addDependency("/closure/goog/dom/savedcaretrange.js", ["goog.dom.SavedCaretRange"], ["goog.array", "goog.dom", "goog.dom.SavedRange", "goog.dom.TagName", "goog.string"]); goog.addDependency("/closure/goog/dom/savedrange.js", ["goog.dom.SavedRange"], ["goog.Disposable", "goog.log"]); goog.addDependency("/closure/goog/dom/selection.js", ["goog.dom.selection"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/tagiterator.js", ["goog.dom.TagIterator", "goog.dom.TagWalkType"], ["goog.dom.NodeType", "goog.iter.Iterator", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/tagname.js", ["goog.dom.TagName"], []); goog.addDependency("/closure/goog/dom/textrange.js", ["goog.dom.TextRange"], ["goog.array", "goog.dom", "goog.dom.AbstractRange", "goog.dom.RangeType", "goog.dom.SavedRange", "goog.dom.TagName", "goog.dom.TextRangeIterator", "goog.dom.browserrange", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/textrangeiterator.js", ["goog.dom.TextRangeIterator"], ["goog.array", "goog.dom.NodeType", "goog.dom.RangeIterator", "goog.dom.TagName", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/vendor.js", ["goog.dom.vendor"], ["goog.userAgent"]); goog.addDependency("/closure/goog/dom/viewportsizemonitor.js", ["goog.dom.ViewportSizeMonitor"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.math.Size"]); goog.addDependency("/closure/goog/dom/xml.js", ["goog.dom.xml"], ["goog.dom", "goog.dom.NodeType"]); goog.addDependency("/closure/goog/editor/browserfeature.js", ["goog.editor.BrowserFeature"], ["goog.editor.defines", "goog.userAgent", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/editor/clicktoeditwrapper.js", ["goog.editor.ClickToEditWrapper"], ["goog.Disposable", "goog.asserts", "goog.dom", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Field.EventType", "goog.editor.range", "goog.events.BrowserEvent.MouseButton", "goog.events.EventHandler", "goog.events.EventType", "goog.log"]); goog.addDependency("/closure/goog/editor/command.js", ["goog.editor.Command"], []); goog.addDependency("/closure/goog/editor/contenteditablefield.js", ["goog.editor.ContentEditableField"], ["goog.asserts", "goog.editor.Field", "goog.log"]); goog.addDependency("/closure/goog/editor/defines.js", ["goog.editor.defines"], []); goog.addDependency("/closure/goog/editor/field.js", ["goog.editor.Field", "goog.editor.Field.EventType"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.array", "goog.asserts", "goog.async.Delay", "goog.dom", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.icontent", "goog.editor.icontent.FieldFormatInfo", "goog.editor.icontent.FieldStyleInfo", "goog.editor.node", "goog.editor.range", "goog.events", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.functions", "goog.log", "goog.string", "goog.string.Unicode", "goog.style", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/editor/field_test.js", ["goog.editor.field_test"], ["goog.dom", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Field", "goog.editor.Plugin", "goog.editor.range", "goog.events", "goog.events.BrowserEvent", "goog.events.KeyCodes", "goog.functions", "goog.testing.LooseMock", "goog.testing.MockClock", "goog.testing.dom", "goog.testing.events", "goog.testing.events.Event", "goog.testing.recordFunction", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/focus.js", ["goog.editor.focus"], ["goog.dom.selection"]); goog.addDependency("/closure/goog/editor/icontent.js", ["goog.editor.icontent", "goog.editor.icontent.FieldFormatInfo", "goog.editor.icontent.FieldStyleInfo"], ["goog.editor.BrowserFeature", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/link.js", ["goog.editor.Link"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.node", "goog.editor.range", "goog.string", "goog.string.Unicode", "goog.uri.utils", "goog.uri.utils.ComponentIndex"]); goog.addDependency("/closure/goog/editor/node.js", ["goog.editor.node"], ["goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.iter.ChildIterator", "goog.dom.iter.SiblingIterator", "goog.iter", "goog.object", "goog.string", "goog.string.Unicode", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugin.js", ["goog.editor.Plugin"], ["goog.editor.Command", "goog.events.EventTarget", "goog.functions", "goog.log", "goog.object", "goog.reflect"]); goog.addDependency("/closure/goog/editor/plugins/abstractbubbleplugin.js", ["goog.editor.plugins.AbstractBubblePlugin"], ["goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.Plugin", "goog.editor.style", "goog.events", "goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.actionEventWrapper", "goog.functions", "goog.string.Unicode", "goog.ui.Component.EventType", "goog.ui.editor.Bubble", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/abstractdialogplugin.js", ["goog.editor.plugins.AbstractDialogPlugin", "goog.editor.plugins.AbstractDialogPlugin.EventType"], ["goog.dom", "goog.dom.Range", "goog.editor.Field.EventType", "goog.editor.Plugin", "goog.editor.range", "goog.events", "goog.ui.editor.AbstractDialog.EventType"]); goog.addDependency("/closure/goog/editor/plugins/abstracttabhandler.js", ["goog.editor.plugins.AbstractTabHandler"], ["goog.editor.Plugin", "goog.events.KeyCodes"]); goog.addDependency("/closure/goog/editor/plugins/basictextformatter.js", ["goog.editor.plugins.BasicTextFormatter", "goog.editor.plugins.BasicTextFormatter.COMMAND"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Link", "goog.editor.Plugin", "goog.editor.node", "goog.editor.range", "goog.editor.style", "goog.iter", "goog.iter.StopIteration", "goog.log", "goog.object", "goog.string", "goog.string.Unicode", "goog.style", "goog.ui.editor.messages", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/blockquote.js", ["goog.editor.plugins.Blockquote"], ["goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.node", "goog.functions", "goog.log"]); goog.addDependency("/closure/goog/editor/plugins/emoticons.js", ["goog.editor.plugins.Emoticons"], ["goog.dom.TagName", "goog.editor.Plugin", "goog.editor.range", "goog.functions", "goog.ui.emoji.Emoji", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/enterhandler.js", ["goog.editor.plugins.EnterHandler"], ["goog.dom", "goog.dom.NodeOffset", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Plugin", "goog.editor.node", "goog.editor.plugins.Blockquote", "goog.editor.range", "goog.editor.style", "goog.events.KeyCodes", "goog.functions", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/equationeditorbubble.js", ["goog.editor.plugins.equation.EquationBubble"], ["goog.dom", "goog.dom.TagName", "goog.editor.Command", "goog.editor.plugins.AbstractBubblePlugin", "goog.string.Unicode", "goog.ui.editor.Bubble", "goog.ui.equation.ImageRenderer"]); goog.addDependency("/closure/goog/editor/plugins/equationeditorplugin.js", ["goog.editor.plugins.EquationEditorPlugin"], ["goog.dom", "goog.editor.Command", "goog.editor.plugins.AbstractDialogPlugin", "goog.editor.range", "goog.events", "goog.events.EventType", "goog.functions", "goog.log", "goog.ui.editor.AbstractDialog", "goog.ui.editor.EquationEditorDialog", "goog.ui.equation.ImageRenderer", "goog.ui.equation.PaletteManager"]); goog.addDependency("/closure/goog/editor/plugins/firststrong.js", ["goog.editor.plugins.FirstStrong"], ["goog.dom.NodeType", "goog.dom.TagIterator", "goog.dom.TagName", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.node", "goog.editor.range", "goog.i18n.bidi", "goog.i18n.uChar", "goog.iter", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/headerformatter.js", ["goog.editor.plugins.HeaderFormatter"], ["goog.editor.Command", "goog.editor.Plugin", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/linkbubble.js", ["goog.editor.plugins.LinkBubble", "goog.editor.plugins.LinkBubble.Action"], ["goog.array", "goog.dom", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Link", "goog.editor.plugins.AbstractBubblePlugin", "goog.editor.range", "goog.string", "goog.style", "goog.ui.editor.messages", "goog.uri.utils", "goog.window"]); goog.addDependency("/closure/goog/editor/plugins/linkdialogplugin.js", ["goog.editor.plugins.LinkDialogPlugin"], ["goog.array", "goog.dom", "goog.editor.Command", "goog.editor.plugins.AbstractDialogPlugin", "goog.events.EventHandler", "goog.functions", "goog.ui.editor.AbstractDialog.EventType", "goog.ui.editor.LinkDialog", "goog.ui.editor.LinkDialog.EventType", "goog.ui.editor.LinkDialog.OkEvent", "goog.uri.utils"]); goog.addDependency("/closure/goog/editor/plugins/linkshortcutplugin.js", ["goog.editor.plugins.LinkShortcutPlugin"], ["goog.editor.Command", "goog.editor.Link", "goog.editor.Plugin", "goog.string"]); goog.addDependency("/closure/goog/editor/plugins/listtabhandler.js", ["goog.editor.plugins.ListTabHandler"], ["goog.dom.TagName", "goog.editor.Command", "goog.editor.plugins.AbstractTabHandler"]); goog.addDependency("/closure/goog/editor/plugins/loremipsum.js", ["goog.editor.plugins.LoremIpsum"], ["goog.asserts", "goog.dom", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.node", "goog.functions"]); goog.addDependency("/closure/goog/editor/plugins/removeformatting.js", ["goog.editor.plugins.RemoveFormatting"], ["goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Plugin", "goog.editor.node", "goog.editor.range", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/spacestabhandler.js", ["goog.editor.plugins.SpacesTabHandler"], ["goog.dom", "goog.dom.TagName", "goog.editor.plugins.AbstractTabHandler", "goog.editor.range"]); goog.addDependency("/closure/goog/editor/plugins/tableeditor.js", ["goog.editor.plugins.TableEditor"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.editor.Plugin", "goog.editor.Table", "goog.editor.node", "goog.editor.range", "goog.object"]); goog.addDependency("/closure/goog/editor/plugins/tagonenterhandler.js", ["goog.editor.plugins.TagOnEnterHandler"], ["goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.Command", "goog.editor.node", "goog.editor.plugins.EnterHandler", "goog.editor.range", "goog.editor.style", "goog.events.KeyCodes", "goog.string", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/undoredo.js", ["goog.editor.plugins.UndoRedo"], ["goog.dom", "goog.dom.NodeOffset", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Field.EventType", "goog.editor.Plugin", "goog.editor.node", "goog.editor.plugins.UndoRedoManager", "goog.editor.plugins.UndoRedoState", "goog.events", "goog.events.EventHandler", "goog.log"]); goog.addDependency("/closure/goog/editor/plugins/undoredomanager.js", ["goog.editor.plugins.UndoRedoManager", "goog.editor.plugins.UndoRedoManager.EventType"], ["goog.editor.plugins.UndoRedoState", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/editor/plugins/undoredostate.js", ["goog.editor.plugins.UndoRedoState"], ["goog.events.EventTarget"]); goog.addDependency("/closure/goog/editor/range.js", ["goog.editor.range", "goog.editor.range.Point"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.RangeEndpoint", "goog.dom.SavedCaretRange", "goog.editor.node", "goog.editor.style", "goog.iter", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/seamlessfield.js", ["goog.editor.SeamlessField"], ["goog.cssom.iframe.style", "goog.dom", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Field", "goog.editor.icontent", "goog.editor.icontent.FieldFormatInfo", "goog.editor.icontent.FieldStyleInfo", "goog.editor.node", "goog.events", "goog.events.EventType", "goog.log", "goog.style"]); goog.addDependency("/closure/goog/editor/seamlessfield_test.js", ["goog.editor.seamlessfield_test"], ["goog.dom", "goog.dom.DomHelper", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Field", "goog.editor.SeamlessField", "goog.events", "goog.functions", "goog.style", "goog.testing.MockClock", "goog.testing.MockRange", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/editor/style.js", ["goog.editor.style"], ["goog.dom", "goog.dom.NodeType", "goog.editor.BrowserFeature", "goog.events.EventType", "goog.object", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/table.js", ["goog.editor.Table", "goog.editor.TableCell", "goog.editor.TableRow"], ["goog.dom", "goog.dom.DomHelper", "goog.dom.NodeType", "goog.dom.TagName", "goog.log", "goog.string.Unicode", "goog.style"]); goog.addDependency("/closure/goog/events/actioneventwrapper.js", ["goog.events.actionEventWrapper"], ["goog.events", "goog.events.EventHandler", "goog.events.EventType", "goog.events.EventWrapper", "goog.events.KeyCodes"]); goog.addDependency("/closure/goog/events/actionhandler.js", ["goog.events.ActionEvent", "goog.events.ActionHandler", "goog.events.ActionHandler.EventType", "goog.events.BeforeActionEvent"], ["goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/browserevent.js", ["goog.events.BrowserEvent", "goog.events.BrowserEvent.MouseButton"], ["goog.events.BrowserFeature", "goog.events.Event", "goog.events.EventType", "goog.reflect", "goog.userAgent"]); goog.addDependency("/closure/goog/events/browserfeature.js", ["goog.events.BrowserFeature"], ["goog.userAgent"]); goog.addDependency("/closure/goog/events/event.js", ["goog.events.Event", "goog.events.EventLike"], ["goog.Disposable"]); goog.addDependency("/closure/goog/events/eventhandler.js", ["goog.events.EventHandler"], ["goog.Disposable", "goog.events", "goog.object"]); goog.addDependency("/closure/goog/events/events.js", ["goog.events", "goog.events.Key", "goog.events.ListenableType"], ["goog.array", "goog.asserts", "goog.debug.entryPointRegistry", "goog.events.BrowserEvent", "goog.events.BrowserFeature", "goog.events.Listenable", "goog.events.Listener", "goog.object"]); goog.addDependency("/closure/goog/events/eventtarget.js", ["goog.events.EventTarget"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.events", "goog.events.Event", "goog.events.Listenable", "goog.events.ListenerMap", "goog.object"]); goog.addDependency("/closure/goog/events/eventtargettester.js", ["goog.events.eventTargetTester", "goog.events.eventTargetTester.KeyType", "goog.events.eventTargetTester.UnlistenReturnType"], ["goog.array", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.testing.asserts", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/events/eventtype.js", ["goog.events.EventType"], ["goog.userAgent"]); goog.addDependency("/closure/goog/events/eventwrapper.js", ["goog.events.EventWrapper"], []); goog.addDependency("/closure/goog/events/filedrophandler.js", ["goog.events.FileDropHandler", "goog.events.FileDropHandler.EventType"], ["goog.array", "goog.dom", "goog.events", "goog.events.BrowserEvent", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.log"]); goog.addDependency("/closure/goog/events/focushandler.js", ["goog.events.FocusHandler", "goog.events.FocusHandler.EventType"], ["goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.userAgent"]); goog.addDependency("/closure/goog/events/imehandler.js", ["goog.events.ImeHandler", "goog.events.ImeHandler.Event", "goog.events.ImeHandler.EventType"], ["goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/inputhandler.js", ["goog.events.InputHandler", "goog.events.InputHandler.EventType"], ["goog.Timer", "goog.dom", "goog.events.BrowserEvent", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/keycodes.js", ["goog.events.KeyCodes"], ["goog.userAgent"]); goog.addDependency("/closure/goog/events/keyhandler.js", ["goog.events.KeyEvent", "goog.events.KeyHandler", "goog.events.KeyHandler.EventType"], ["goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/keynames.js", ["goog.events.KeyNames"], []); goog.addDependency("/closure/goog/events/listenable.js", ["goog.events.Listenable", "goog.events.ListenableKey"], []); goog.addDependency("/closure/goog/events/listener.js", ["goog.events.Listener"], ["goog.events.ListenableKey"]); goog.addDependency("/closure/goog/events/listenermap.js", ["goog.events.ListenerMap"], ["goog.array", "goog.events.Listener", "goog.object"]); goog.addDependency("/closure/goog/events/listenermap_test.js", ["goog.events.ListenerMapTest"], ["goog.dispose", "goog.events.EventTarget", "goog.events.ListenerMap", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/events/mousewheelhandler.js", ["goog.events.MouseWheelEvent", "goog.events.MouseWheelHandler", "goog.events.MouseWheelHandler.EventType"], ["goog.dom", "goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.math", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/events/onlinehandler.js", ["goog.events.OnlineHandler", "goog.events.OnlineHandler.EventType"], ["goog.Timer", "goog.events.BrowserFeature", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.net.NetworkStatusMonitor", "goog.userAgent"]); goog.addDependency("/closure/goog/events/pastehandler.js", ["goog.events.PasteHandler", "goog.events.PasteHandler.EventType", "goog.events.PasteHandler.State"], ["goog.Timer", "goog.async.ConditionalDelay", "goog.events.BrowserEvent", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.log", "goog.userAgent"]); goog.addDependency("/closure/goog/format/emailaddress.js", ["goog.format.EmailAddress"], ["goog.string"]); goog.addDependency("/closure/goog/format/format.js", ["goog.format"], ["goog.i18n.GraphemeBreak", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/format/htmlprettyprinter.js", ["goog.format.HtmlPrettyPrinter", "goog.format.HtmlPrettyPrinter.Buffer"], ["goog.object", "goog.string.StringBuffer"]); goog.addDependency("/closure/goog/format/jsonprettyprinter.js", ["goog.format.JsonPrettyPrinter", "goog.format.JsonPrettyPrinter.HtmlDelimiters", "goog.format.JsonPrettyPrinter.TextDelimiters"], ["goog.json", "goog.json.Serializer", "goog.string", "goog.string.StringBuffer", "goog.string.format"]); goog.addDependency("/closure/goog/fs/entry.js", ["goog.fs.DirectoryEntry", "goog.fs.DirectoryEntry.Behavior", "goog.fs.Entry", "goog.fs.FileEntry"], []); goog.addDependency("/closure/goog/fs/entryimpl.js", ["goog.fs.DirectoryEntryImpl", "goog.fs.EntryImpl", "goog.fs.FileEntryImpl"], ["goog.array", "goog.async.Deferred", "goog.fs.DirectoryEntry", "goog.fs.Entry", "goog.fs.Error", "goog.fs.FileEntry", "goog.fs.FileWriter", "goog.functions", "goog.string"]); goog.addDependency("/closure/goog/fs/error.js", ["goog.fs.Error", "goog.fs.Error.ErrorCode"], ["goog.debug.Error", "goog.string"]); goog.addDependency("/closure/goog/fs/filereader.js", ["goog.fs.FileReader", "goog.fs.FileReader.EventType", "goog.fs.FileReader.ReadyState"], ["goog.async.Deferred", "goog.events.Event", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.ProgressEvent"]); goog.addDependency("/closure/goog/fs/filesaver.js", ["goog.fs.FileSaver", "goog.fs.FileSaver.EventType", "goog.fs.FileSaver.ProgressEvent", "goog.fs.FileSaver.ReadyState"], ["goog.events.Event", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.ProgressEvent"]); goog.addDependency("/closure/goog/fs/filesystem.js", ["goog.fs.FileSystem"], []); goog.addDependency("/closure/goog/fs/filesystemimpl.js", ["goog.fs.FileSystemImpl"], ["goog.fs.DirectoryEntryImpl", "goog.fs.FileSystem"]); goog.addDependency("/closure/goog/fs/filewriter.js", ["goog.fs.FileWriter"], ["goog.fs.Error", "goog.fs.FileSaver"]); goog.addDependency("/closure/goog/fs/fs.js", ["goog.fs"], ["goog.array", "goog.async.Deferred", "goog.fs.Error", "goog.fs.FileReader", "goog.fs.FileSystemImpl", "goog.userAgent"]); goog.addDependency("/closure/goog/fs/progressevent.js", ["goog.fs.ProgressEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/functions/functions.js", ["goog.functions"], []); goog.addDependency("/closure/goog/fx/abstractdragdrop.js", ["goog.fx.AbstractDragDrop", "goog.fx.AbstractDragDrop.EventType", "goog.fx.DragDropEvent", "goog.fx.DragDropItem"], ["goog.dom", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.fx.Dragger", "goog.fx.Dragger.EventType", "goog.math.Box", "goog.math.Coordinate", "goog.style"]); goog.addDependency("/closure/goog/fx/anim/anim.js", ["goog.fx.anim", "goog.fx.anim.Animated"], ["goog.async.AnimationDelay", "goog.async.Delay", "goog.object"]); goog.addDependency("/closure/goog/fx/animation.js", ["goog.fx.Animation", "goog.fx.Animation.EventType", "goog.fx.Animation.State", "goog.fx.AnimationEvent"], ["goog.array", "goog.events.Event", "goog.fx.Transition", "goog.fx.Transition.EventType", "goog.fx.TransitionBase.State", "goog.fx.anim", "goog.fx.anim.Animated"]); goog.addDependency("/closure/goog/fx/animationqueue.js", ["goog.fx.AnimationParallelQueue", "goog.fx.AnimationQueue", "goog.fx.AnimationSerialQueue"], ["goog.array", "goog.asserts", "goog.events.EventHandler", "goog.fx.Transition.EventType", "goog.fx.TransitionBase", "goog.fx.TransitionBase.State"]); goog.addDependency("/closure/goog/fx/css3/fx.js", ["goog.fx.css3"], ["goog.fx.css3.Transition"]); goog.addDependency("/closure/goog/fx/css3/transition.js", ["goog.fx.css3.Transition"], ["goog.Timer", "goog.fx.TransitionBase", "goog.style", "goog.style.transition"]); goog.addDependency("/closure/goog/fx/cssspriteanimation.js", ["goog.fx.CssSpriteAnimation"], ["goog.fx.Animation"]); goog.addDependency("/closure/goog/fx/dom.js", ["goog.fx.dom", "goog.fx.dom.BgColorTransform", "goog.fx.dom.ColorTransform", "goog.fx.dom.Fade", "goog.fx.dom.FadeIn", "goog.fx.dom.FadeInAndShow", "goog.fx.dom.FadeOut", "goog.fx.dom.FadeOutAndHide", "goog.fx.dom.PredefinedEffect", "goog.fx.dom.Resize", "goog.fx.dom.ResizeHeight", "goog.fx.dom.ResizeWidth", "goog.fx.dom.Scroll", "goog.fx.dom.Slide", "goog.fx.dom.SlideFrom", "goog.fx.dom.Swipe"], ["goog.color", "goog.events", "goog.fx.Animation", "goog.fx.Transition.EventType", "goog.style", "goog.style.bidi"]); goog.addDependency("/closure/goog/fx/dragdrop.js", ["goog.fx.DragDrop"], ["goog.fx.AbstractDragDrop", "goog.fx.DragDropItem"]); goog.addDependency("/closure/goog/fx/dragdropgroup.js", ["goog.fx.DragDropGroup"], ["goog.dom", "goog.fx.AbstractDragDrop", "goog.fx.DragDropItem"]); goog.addDependency("/closure/goog/fx/dragger.js", ["goog.fx.DragEvent", "goog.fx.Dragger", "goog.fx.Dragger.EventType"], ["goog.dom", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.math.Coordinate", "goog.math.Rect", "goog.style", "goog.style.bidi", "goog.userAgent"]); goog.addDependency("/closure/goog/fx/draglistgroup.js", ["goog.fx.DragListDirection", "goog.fx.DragListGroup", "goog.fx.DragListGroup.EventType", "goog.fx.DragListGroupEvent"], ["goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.fx.Dragger", "goog.fx.Dragger.EventType", "goog.math.Coordinate", "goog.style"]); goog.addDependency("/closure/goog/fx/dragscrollsupport.js", ["goog.fx.DragScrollSupport"], ["goog.Disposable", "goog.Timer", "goog.dom", "goog.events.EventHandler", "goog.events.EventType", "goog.math.Coordinate", "goog.style"]); goog.addDependency("/closure/goog/fx/easing.js", ["goog.fx.easing"], []); goog.addDependency("/closure/goog/fx/fx.js", ["goog.fx"], ["goog.asserts", "goog.fx.Animation", "goog.fx.Animation.EventType", "goog.fx.Animation.State", "goog.fx.AnimationEvent", "goog.fx.Transition.EventType", "goog.fx.easing"]); goog.addDependency("/closure/goog/fx/transition.js", ["goog.fx.Transition", "goog.fx.Transition.EventType"], []); goog.addDependency("/closure/goog/fx/transitionbase.js", ["goog.fx.TransitionBase", "goog.fx.TransitionBase.State"], ["goog.events.EventTarget", "goog.fx.Transition", "goog.fx.Transition.EventType"]); goog.addDependency("/closure/goog/gears/basestore.js", ["goog.gears.BaseStore", "goog.gears.BaseStore.SchemaType"], ["goog.Disposable"]); goog.addDependency("/closure/goog/gears/database.js", ["goog.gears.Database", "goog.gears.Database.EventType", "goog.gears.Database.TransactionEvent"], ["goog.array", "goog.debug", "goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.json", "goog.log"]); goog.addDependency("/closure/goog/gears/gears.js", ["goog.gears"], ["goog.string"]); goog.addDependency("/closure/goog/gears/httprequest.js", ["goog.gears.HttpRequest"], ["goog.Timer", "goog.gears", "goog.net.WrapperXmlHttpFactory", "goog.net.XmlHttp"]); goog.addDependency("/closure/goog/gears/loggerclient.js", ["goog.gears.LoggerClient"], ["goog.Disposable", "goog.debug", "goog.debug.Logger"]); goog.addDependency("/closure/goog/gears/loggerserver.js", ["goog.gears.LoggerServer"], ["goog.Disposable", "goog.gears.Worker.EventType", "goog.log", "goog.log.Level"]); goog.addDependency("/closure/goog/gears/logstore.js", ["goog.gears.LogStore", "goog.gears.LogStore.Query"], ["goog.async.Delay", "goog.debug.LogManager", "goog.gears.BaseStore", "goog.gears.BaseStore.SchemaType", "goog.json", "goog.log", "goog.log.Level", "goog.log.LogRecord"]); goog.addDependency("/closure/goog/gears/managedresourcestore.js", ["goog.gears.ManagedResourceStore", "goog.gears.ManagedResourceStore.EventType", "goog.gears.ManagedResourceStore.UpdateStatus", "goog.gears.ManagedResourceStoreEvent"], ["goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.log", "goog.string"]); goog.addDependency("/closure/goog/gears/multipartformdata.js", ["goog.gears.MultipartFormData"], ["goog.asserts", "goog.gears", "goog.string"]); goog.addDependency("/closure/goog/gears/statustype.js", ["goog.gears.StatusType"], []); goog.addDependency("/closure/goog/gears/urlcapture.js", ["goog.gears.UrlCapture", "goog.gears.UrlCapture.Event", "goog.gears.UrlCapture.EventType"], ["goog.Uri", "goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.log"]); goog.addDependency("/closure/goog/gears/worker.js", ["goog.gears.Worker", "goog.gears.Worker.EventType", "goog.gears.WorkerEvent"], ["goog.events.Event", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/gears/workerchannel.js", ["goog.gears.WorkerChannel"], ["goog.Disposable", "goog.debug", "goog.events", "goog.gears.Worker", "goog.gears.Worker.EventType", "goog.gears.WorkerEvent", "goog.json", "goog.log", "goog.messaging.AbstractChannel"]); goog.addDependency("/closure/goog/gears/workerpool.js", ["goog.gears.WorkerPool", "goog.gears.WorkerPool.Event", "goog.gears.WorkerPool.EventType"], ["goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.gears.Worker"]); goog.addDependency("/closure/goog/graphics/abstractgraphics.js", ["goog.graphics.AbstractGraphics"], ["goog.dom", "goog.graphics.Path", "goog.math.Coordinate", "goog.math.Size", "goog.style", "goog.ui.Component"]); goog.addDependency("/closure/goog/graphics/affinetransform.js", ["goog.graphics.AffineTransform"], ["goog.math"]); goog.addDependency("/closure/goog/graphics/canvaselement.js", ["goog.graphics.CanvasEllipseElement", "goog.graphics.CanvasGroupElement", "goog.graphics.CanvasImageElement", "goog.graphics.CanvasPathElement", "goog.graphics.CanvasRectElement", "goog.graphics.CanvasTextElement"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.graphics.EllipseElement", "goog.graphics.GroupElement", "goog.graphics.ImageElement", "goog.graphics.Path", "goog.graphics.PathElement", "goog.graphics.RectElement", "goog.graphics.TextElement", "goog.math", "goog.string"]); goog.addDependency("/closure/goog/graphics/canvasgraphics.js", ["goog.graphics.CanvasGraphics"], ["goog.events.EventType", "goog.graphics.AbstractGraphics", "goog.graphics.CanvasEllipseElement", "goog.graphics.CanvasGroupElement", "goog.graphics.CanvasImageElement", "goog.graphics.CanvasPathElement", "goog.graphics.CanvasRectElement", "goog.graphics.CanvasTextElement", "goog.graphics.SolidFill", "goog.math.Size", "goog.style"]); goog.addDependency("/closure/goog/graphics/element.js", ["goog.graphics.Element"], ["goog.events", "goog.events.EventTarget", "goog.events.Listenable", "goog.graphics.AffineTransform", "goog.math"]); goog.addDependency("/closure/goog/graphics/ellipseelement.js", ["goog.graphics.EllipseElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/ext/coordinates.js", ["goog.graphics.ext.coordinates"], ["goog.string"]); goog.addDependency("/closure/goog/graphics/ext/element.js", ["goog.graphics.ext.Element"], ["goog.events", "goog.events.EventTarget", "goog.functions", "goog.graphics", "goog.graphics.ext.coordinates"]); goog.addDependency("/closure/goog/graphics/ext/ellipse.js", ["goog.graphics.ext.Ellipse"], ["goog.graphics.ext.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/ext/ext.js", ["goog.graphics.ext"], ["goog.graphics.ext.Ellipse", "goog.graphics.ext.Graphics", "goog.graphics.ext.Group", "goog.graphics.ext.Image", "goog.graphics.ext.Rectangle", "goog.graphics.ext.Shape", "goog.graphics.ext.coordinates"]); goog.addDependency("/closure/goog/graphics/ext/graphics.js", ["goog.graphics.ext.Graphics"], ["goog.events.EventType", "goog.graphics.ext.Group"]); goog.addDependency("/closure/goog/graphics/ext/group.js", ["goog.graphics.ext.Group"], ["goog.graphics.ext.Element"]); goog.addDependency("/closure/goog/graphics/ext/image.js", ["goog.graphics.ext.Image"], ["goog.graphics.ext.Element"]); goog.addDependency("/closure/goog/graphics/ext/path.js", ["goog.graphics.ext.Path"], ["goog.graphics.AffineTransform", "goog.graphics.Path", "goog.math", "goog.math.Rect"]); goog.addDependency("/closure/goog/graphics/ext/rectangle.js", ["goog.graphics.ext.Rectangle"], ["goog.graphics.ext.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/ext/shape.js", ["goog.graphics.ext.Shape"], ["goog.graphics.ext.Path", "goog.graphics.ext.StrokeAndFillElement", "goog.math.Rect"]); goog.addDependency("/closure/goog/graphics/ext/strokeandfillelement.js", ["goog.graphics.ext.StrokeAndFillElement"], ["goog.graphics.ext.Element"]); goog.addDependency("/closure/goog/graphics/fill.js", ["goog.graphics.Fill"], []); goog.addDependency("/closure/goog/graphics/font.js", ["goog.graphics.Font"], []); goog.addDependency("/closure/goog/graphics/graphics.js", ["goog.graphics"], ["goog.graphics.CanvasGraphics", "goog.graphics.SvgGraphics", "goog.graphics.VmlGraphics", "goog.userAgent"]); goog.addDependency("/closure/goog/graphics/groupelement.js", ["goog.graphics.GroupElement"], ["goog.graphics.Element"]); goog.addDependency("/closure/goog/graphics/imageelement.js", ["goog.graphics.ImageElement"], ["goog.graphics.Element"]); goog.addDependency("/closure/goog/graphics/lineargradient.js", ["goog.graphics.LinearGradient"], ["goog.asserts", "goog.graphics.Fill"]); goog.addDependency("/closure/goog/graphics/path.js", ["goog.graphics.Path", "goog.graphics.Path.Segment"], ["goog.array", "goog.math"]); goog.addDependency("/closure/goog/graphics/pathelement.js", ["goog.graphics.PathElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/paths.js", ["goog.graphics.paths"], ["goog.graphics.Path", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/graphics/rectelement.js", ["goog.graphics.RectElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/solidfill.js", ["goog.graphics.SolidFill"], ["goog.graphics.Fill"]); goog.addDependency("/closure/goog/graphics/stroke.js", ["goog.graphics.Stroke"], []); goog.addDependency("/closure/goog/graphics/strokeandfillelement.js", ["goog.graphics.StrokeAndFillElement"], ["goog.graphics.Element"]); goog.addDependency("/closure/goog/graphics/svgelement.js", ["goog.graphics.SvgEllipseElement", "goog.graphics.SvgGroupElement", "goog.graphics.SvgImageElement", "goog.graphics.SvgPathElement", "goog.graphics.SvgRectElement", "goog.graphics.SvgTextElement"], ["goog.dom", "goog.graphics.EllipseElement", "goog.graphics.GroupElement", "goog.graphics.ImageElement", "goog.graphics.PathElement", "goog.graphics.RectElement", "goog.graphics.TextElement"]); goog.addDependency("/closure/goog/graphics/svggraphics.js", ["goog.graphics.SvgGraphics"], ["goog.Timer", "goog.dom", "goog.events.EventHandler", "goog.events.EventType", "goog.graphics.AbstractGraphics", "goog.graphics.LinearGradient", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.graphics.Stroke", "goog.graphics.SvgEllipseElement", "goog.graphics.SvgGroupElement", "goog.graphics.SvgImageElement", "goog.graphics.SvgPathElement", "goog.graphics.SvgRectElement", "goog.graphics.SvgTextElement", "goog.math", "goog.math.Size", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/graphics/textelement.js", ["goog.graphics.TextElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/vmlelement.js", ["goog.graphics.VmlEllipseElement", "goog.graphics.VmlGroupElement", "goog.graphics.VmlImageElement", "goog.graphics.VmlPathElement", "goog.graphics.VmlRectElement", "goog.graphics.VmlTextElement"], ["goog.dom", "goog.graphics.EllipseElement", "goog.graphics.GroupElement", "goog.graphics.ImageElement", "goog.graphics.PathElement", "goog.graphics.RectElement", "goog.graphics.TextElement"]); goog.addDependency("/closure/goog/graphics/vmlgraphics.js", ["goog.graphics.VmlGraphics"], ["goog.array", "goog.events", "goog.events.EventHandler", "goog.events.EventType", "goog.graphics.AbstractGraphics", "goog.graphics.LinearGradient", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.graphics.VmlEllipseElement", "goog.graphics.VmlGroupElement", "goog.graphics.VmlImageElement", "goog.graphics.VmlPathElement", "goog.graphics.VmlRectElement", "goog.graphics.VmlTextElement", "goog.math", "goog.math.Size", "goog.string", "goog.style"]); goog.addDependency("/closure/goog/history/event.js", ["goog.history.Event"], ["goog.events.Event", "goog.history.EventType"]); goog.addDependency("/closure/goog/history/eventtype.js", ["goog.history.EventType"], []); goog.addDependency("/closure/goog/history/history.js", ["goog.History", "goog.History.Event", "goog.History.EventType"], ["goog.Timer", "goog.dom", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.history.Event", "goog.history.EventType", "goog.memoize", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/history/history_test.js", ["goog.HistoryTest"], ["goog.History", "goog.testing.jsunit", "goog.userAgent"]); goog.addDependency("/closure/goog/history/html5history.js", ["goog.history.Html5History", "goog.history.Html5History.TokenTransformer"], ["goog.asserts", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.history.Event", "goog.history.EventType"]); goog.addDependency("/closure/goog/i18n/bidi.js", ["goog.i18n.bidi"], []); goog.addDependency("/closure/goog/i18n/bidiformatter.js", ["goog.i18n.BidiFormatter"], ["goog.i18n.bidi", "goog.string"]); goog.addDependency("/closure/goog/i18n/charlistdecompressor.js", ["goog.i18n.CharListDecompressor"], ["goog.array", "goog.i18n.uChar"]); goog.addDependency("/closure/goog/i18n/charpickerdata.js", ["goog.i18n.CharPickerData"], []); goog.addDependency("/closure/goog/i18n/collation.js", ["goog.i18n.collation"], []); goog.addDependency("/closure/goog/i18n/compactnumberformatsymbols.js", ["goog.i18n.CompactNumberFormatSymbols", "goog.i18n.CompactNumberFormatSymbols_af", "goog.i18n.CompactNumberFormatSymbols_af_ZA", "goog.i18n.CompactNumberFormatSymbols_am", "goog.i18n.CompactNumberFormatSymbols_am_ET", "goog.i18n.CompactNumberFormatSymbols_ar", "goog.i18n.CompactNumberFormatSymbols_ar_001", "goog.i18n.CompactNumberFormatSymbols_ar_EG", "goog.i18n.CompactNumberFormatSymbols_bg", "goog.i18n.CompactNumberFormatSymbols_bg_BG", "goog.i18n.CompactNumberFormatSymbols_bn", "goog.i18n.CompactNumberFormatSymbols_bn_BD", "goog.i18n.CompactNumberFormatSymbols_br", "goog.i18n.CompactNumberFormatSymbols_br_FR", "goog.i18n.CompactNumberFormatSymbols_ca", "goog.i18n.CompactNumberFormatSymbols_ca_AD", "goog.i18n.CompactNumberFormatSymbols_ca_ES", "goog.i18n.CompactNumberFormatSymbols_chr", "goog.i18n.CompactNumberFormatSymbols_chr_US", "goog.i18n.CompactNumberFormatSymbols_cs", "goog.i18n.CompactNumberFormatSymbols_cs_CZ", "goog.i18n.CompactNumberFormatSymbols_cy", "goog.i18n.CompactNumberFormatSymbols_cy_GB", "goog.i18n.CompactNumberFormatSymbols_da", "goog.i18n.CompactNumberFormatSymbols_da_DK", "goog.i18n.CompactNumberFormatSymbols_de", "goog.i18n.CompactNumberFormatSymbols_de_AT", "goog.i18n.CompactNumberFormatSymbols_de_BE", "goog.i18n.CompactNumberFormatSymbols_de_CH", "goog.i18n.CompactNumberFormatSymbols_de_DE", "goog.i18n.CompactNumberFormatSymbols_de_LU", "goog.i18n.CompactNumberFormatSymbols_el", "goog.i18n.CompactNumberFormatSymbols_el_GR", "goog.i18n.CompactNumberFormatSymbols_en", "goog.i18n.CompactNumberFormatSymbols_en_AS", "goog.i18n.CompactNumberFormatSymbols_en_AU", "goog.i18n.CompactNumberFormatSymbols_en_Dsrt_US", "goog.i18n.CompactNumberFormatSymbols_en_FM", "goog.i18n.CompactNumberFormatSymbols_en_GB", "goog.i18n.CompactNumberFormatSymbols_en_GU", "goog.i18n.CompactNumberFormatSymbols_en_IE", "goog.i18n.CompactNumberFormatSymbols_en_IN", "goog.i18n.CompactNumberFormatSymbols_en_MH", "goog.i18n.CompactNumberFormatSymbols_en_MP", "goog.i18n.CompactNumberFormatSymbols_en_PR", "goog.i18n.CompactNumberFormatSymbols_en_PW", "goog.i18n.CompactNumberFormatSymbols_en_SG", "goog.i18n.CompactNumberFormatSymbols_en_TC", "goog.i18n.CompactNumberFormatSymbols_en_UM", "goog.i18n.CompactNumberFormatSymbols_en_US", "goog.i18n.CompactNumberFormatSymbols_en_VG", "goog.i18n.CompactNumberFormatSymbols_en_VI", "goog.i18n.CompactNumberFormatSymbols_en_ZA", "goog.i18n.CompactNumberFormatSymbols_es", "goog.i18n.CompactNumberFormatSymbols_es_419", "goog.i18n.CompactNumberFormatSymbols_es_EA", "goog.i18n.CompactNumberFormatSymbols_es_ES", "goog.i18n.CompactNumberFormatSymbols_es_IC", "goog.i18n.CompactNumberFormatSymbols_et", "goog.i18n.CompactNumberFormatSymbols_et_EE", "goog.i18n.CompactNumberFormatSymbols_eu", "goog.i18n.CompactNumberFormatSymbols_eu_ES", "goog.i18n.CompactNumberFormatSymbols_fa", "goog.i18n.CompactNumberFormatSymbols_fa_IR", "goog.i18n.CompactNumberFormatSymbols_fi", "goog.i18n.CompactNumberFormatSymbols_fi_FI", "goog.i18n.CompactNumberFormatSymbols_fil", "goog.i18n.CompactNumberFormatSymbols_fil_PH", "goog.i18n.CompactNumberFormatSymbols_fr", "goog.i18n.CompactNumberFormatSymbols_fr_BL", "goog.i18n.CompactNumberFormatSymbols_fr_CA", "goog.i18n.CompactNumberFormatSymbols_fr_FR", "goog.i18n.CompactNumberFormatSymbols_fr_GF", "goog.i18n.CompactNumberFormatSymbols_fr_GP", "goog.i18n.CompactNumberFormatSymbols_fr_MC", "goog.i18n.CompactNumberFormatSymbols_fr_MF", "goog.i18n.CompactNumberFormatSymbols_fr_MQ", "goog.i18n.CompactNumberFormatSymbols_fr_RE", "goog.i18n.CompactNumberFormatSymbols_fr_YT", "goog.i18n.CompactNumberFormatSymbols_gl", "goog.i18n.CompactNumberFormatSymbols_gl_ES", "goog.i18n.CompactNumberFormatSymbols_gsw", "goog.i18n.CompactNumberFormatSymbols_gsw_CH", "goog.i18n.CompactNumberFormatSymbols_gu", "goog.i18n.CompactNumberFormatSymbols_gu_IN", "goog.i18n.CompactNumberFormatSymbols_haw", "goog.i18n.CompactNumberFormatSymbols_haw_US", "goog.i18n.CompactNumberFormatSymbols_he", "goog.i18n.CompactNumberFormatSymbols_he_IL", "goog.i18n.CompactNumberFormatSymbols_hi", "goog.i18n.CompactNumberFormatSymbols_hi_IN", "goog.i18n.CompactNumberFormatSymbols_hr", "goog.i18n.CompactNumberFormatSymbols_hr_HR", "goog.i18n.CompactNumberFormatSymbols_hu", "goog.i18n.CompactNumberFormatSymbols_hu_HU", "goog.i18n.CompactNumberFormatSymbols_id", "goog.i18n.CompactNumberFormatSymbols_id_ID", "goog.i18n.CompactNumberFormatSymbols_in", "goog.i18n.CompactNumberFormatSymbols_is", "goog.i18n.CompactNumberFormatSymbols_is_IS", "goog.i18n.CompactNumberFormatSymbols_it", "goog.i18n.CompactNumberFormatSymbols_it_IT", "goog.i18n.CompactNumberFormatSymbols_it_SM", "goog.i18n.CompactNumberFormatSymbols_iw", "goog.i18n.CompactNumberFormatSymbols_ja", "goog.i18n.CompactNumberFormatSymbols_ja_JP", "goog.i18n.CompactNumberFormatSymbols_kn", "goog.i18n.CompactNumberFormatSymbols_kn_IN", "goog.i18n.CompactNumberFormatSymbols_ko", "goog.i18n.CompactNumberFormatSymbols_ko_KR", "goog.i18n.CompactNumberFormatSymbols_ln", "goog.i18n.CompactNumberFormatSymbols_ln_CD", "goog.i18n.CompactNumberFormatSymbols_lt", "goog.i18n.CompactNumberFormatSymbols_lt_LT", "goog.i18n.CompactNumberFormatSymbols_lv", "goog.i18n.CompactNumberFormatSymbols_lv_LV", "goog.i18n.CompactNumberFormatSymbols_ml", "goog.i18n.CompactNumberFormatSymbols_ml_IN", "goog.i18n.CompactNumberFormatSymbols_mr", "goog.i18n.CompactNumberFormatSymbols_mr_IN", "goog.i18n.CompactNumberFormatSymbols_ms", "goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY", "goog.i18n.CompactNumberFormatSymbols_mt", "goog.i18n.CompactNumberFormatSymbols_mt_MT", "goog.i18n.CompactNumberFormatSymbols_nb", "goog.i18n.CompactNumberFormatSymbols_nb_NO", "goog.i18n.CompactNumberFormatSymbols_nl", "goog.i18n.CompactNumberFormatSymbols_nl_NL", "goog.i18n.CompactNumberFormatSymbols_no", "goog.i18n.CompactNumberFormatSymbols_or", "goog.i18n.CompactNumberFormatSymbols_or_IN", "goog.i18n.CompactNumberFormatSymbols_pl", "goog.i18n.CompactNumberFormatSymbols_pl_PL", "goog.i18n.CompactNumberFormatSymbols_pt", "goog.i18n.CompactNumberFormatSymbols_pt_BR", "goog.i18n.CompactNumberFormatSymbols_pt_PT", "goog.i18n.CompactNumberFormatSymbols_ro", "goog.i18n.CompactNumberFormatSymbols_ro_RO", "goog.i18n.CompactNumberFormatSymbols_ru", "goog.i18n.CompactNumberFormatSymbols_ru_RU", "goog.i18n.CompactNumberFormatSymbols_sk", "goog.i18n.CompactNumberFormatSymbols_sk_SK", "goog.i18n.CompactNumberFormatSymbols_sl", "goog.i18n.CompactNumberFormatSymbols_sl_SI", "goog.i18n.CompactNumberFormatSymbols_sq", "goog.i18n.CompactNumberFormatSymbols_sq_AL", "goog.i18n.CompactNumberFormatSymbols_sr", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS", "goog.i18n.CompactNumberFormatSymbols_sv", "goog.i18n.CompactNumberFormatSymbols_sv_SE", "goog.i18n.CompactNumberFormatSymbols_sw", "goog.i18n.CompactNumberFormatSymbols_sw_TZ", "goog.i18n.CompactNumberFormatSymbols_ta", "goog.i18n.CompactNumberFormatSymbols_ta_IN", "goog.i18n.CompactNumberFormatSymbols_te", "goog.i18n.CompactNumberFormatSymbols_te_IN", "goog.i18n.CompactNumberFormatSymbols_th", "goog.i18n.CompactNumberFormatSymbols_th_TH", "goog.i18n.CompactNumberFormatSymbols_tl", "goog.i18n.CompactNumberFormatSymbols_tr", "goog.i18n.CompactNumberFormatSymbols_tr_TR", "goog.i18n.CompactNumberFormatSymbols_uk", "goog.i18n.CompactNumberFormatSymbols_uk_UA", "goog.i18n.CompactNumberFormatSymbols_ur", "goog.i18n.CompactNumberFormatSymbols_ur_PK", "goog.i18n.CompactNumberFormatSymbols_vi", "goog.i18n.CompactNumberFormatSymbols_vi_VN", "goog.i18n.CompactNumberFormatSymbols_zh", "goog.i18n.CompactNumberFormatSymbols_zh_CN", "goog.i18n.CompactNumberFormatSymbols_zh_HK", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN", "goog.i18n.CompactNumberFormatSymbols_zh_TW", "goog.i18n.CompactNumberFormatSymbols_zu", "goog.i18n.CompactNumberFormatSymbols_zu_ZA"], []); goog.addDependency("/closure/goog/i18n/compactnumberformatsymbols_ext.js", ["goog.i18n.CompactNumberFormatSymbolsExt", "goog.i18n.CompactNumberFormatSymbols_aa", "goog.i18n.CompactNumberFormatSymbols_aa_DJ", "goog.i18n.CompactNumberFormatSymbols_aa_ER", "goog.i18n.CompactNumberFormatSymbols_aa_ET", "goog.i18n.CompactNumberFormatSymbols_af_NA", "goog.i18n.CompactNumberFormatSymbols_agq", "goog.i18n.CompactNumberFormatSymbols_agq_CM", "goog.i18n.CompactNumberFormatSymbols_ak", "goog.i18n.CompactNumberFormatSymbols_ak_GH", "goog.i18n.CompactNumberFormatSymbols_ar_AE", "goog.i18n.CompactNumberFormatSymbols_ar_BH", "goog.i18n.CompactNumberFormatSymbols_ar_DJ", "goog.i18n.CompactNumberFormatSymbols_ar_DZ", "goog.i18n.CompactNumberFormatSymbols_ar_EH", "goog.i18n.CompactNumberFormatSymbols_ar_ER", "goog.i18n.CompactNumberFormatSymbols_ar_IL", "goog.i18n.CompactNumberFormatSymbols_ar_IQ", "goog.i18n.CompactNumberFormatSymbols_ar_JO", "goog.i18n.CompactNumberFormatSymbols_ar_KM", "goog.i18n.CompactNumberFormatSymbols_ar_KW", "goog.i18n.CompactNumberFormatSymbols_ar_LB", "goog.i18n.CompactNumberFormatSymbols_ar_LY", "goog.i18n.CompactNumberFormatSymbols_ar_MA", "goog.i18n.CompactNumberFormatSymbols_ar_MR", "goog.i18n.CompactNumberFormatSymbols_ar_OM", "goog.i18n.CompactNumberFormatSymbols_ar_PS", "goog.i18n.CompactNumberFormatSymbols_ar_QA", "goog.i18n.CompactNumberFormatSymbols_ar_SA", "goog.i18n.CompactNumberFormatSymbols_ar_SD", "goog.i18n.CompactNumberFormatSymbols_ar_SO", "goog.i18n.CompactNumberFormatSymbols_ar_SY", "goog.i18n.CompactNumberFormatSymbols_ar_TD", "goog.i18n.CompactNumberFormatSymbols_ar_TN", "goog.i18n.CompactNumberFormatSymbols_ar_YE", "goog.i18n.CompactNumberFormatSymbols_as", "goog.i18n.CompactNumberFormatSymbols_as_IN", "goog.i18n.CompactNumberFormatSymbols_asa", "goog.i18n.CompactNumberFormatSymbols_asa_TZ", "goog.i18n.CompactNumberFormatSymbols_ast", "goog.i18n.CompactNumberFormatSymbols_ast_ES", "goog.i18n.CompactNumberFormatSymbols_az", "goog.i18n.CompactNumberFormatSymbols_az_Cyrl", "goog.i18n.CompactNumberFormatSymbols_az_Cyrl_AZ", "goog.i18n.CompactNumberFormatSymbols_az_Latn", "goog.i18n.CompactNumberFormatSymbols_az_Latn_AZ", "goog.i18n.CompactNumberFormatSymbols_bas", "goog.i18n.CompactNumberFormatSymbols_bas_CM", "goog.i18n.CompactNumberFormatSymbols_be", "goog.i18n.CompactNumberFormatSymbols_be_BY", "goog.i18n.CompactNumberFormatSymbols_bem", "goog.i18n.CompactNumberFormatSymbols_bem_ZM", "goog.i18n.CompactNumberFormatSymbols_bez", "goog.i18n.CompactNumberFormatSymbols_bez_TZ", "goog.i18n.CompactNumberFormatSymbols_bm", "goog.i18n.CompactNumberFormatSymbols_bm_ML", "goog.i18n.CompactNumberFormatSymbols_bn_IN", "goog.i18n.CompactNumberFormatSymbols_bo", "goog.i18n.CompactNumberFormatSymbols_bo_CN", "goog.i18n.CompactNumberFormatSymbols_bo_IN", "goog.i18n.CompactNumberFormatSymbols_brx", "goog.i18n.CompactNumberFormatSymbols_brx_IN", "goog.i18n.CompactNumberFormatSymbols_bs", "goog.i18n.CompactNumberFormatSymbols_bs_Cyrl", "goog.i18n.CompactNumberFormatSymbols_bs_Cyrl_BA", "goog.i18n.CompactNumberFormatSymbols_bs_Latn", "goog.i18n.CompactNumberFormatSymbols_bs_Latn_BA", "goog.i18n.CompactNumberFormatSymbols_byn", "goog.i18n.CompactNumberFormatSymbols_byn_ER", "goog.i18n.CompactNumberFormatSymbols_cgg", "goog.i18n.CompactNumberFormatSymbols_cgg_UG", "goog.i18n.CompactNumberFormatSymbols_ckb", "goog.i18n.CompactNumberFormatSymbols_ckb_Arab", "goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IQ", "goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IR", "goog.i18n.CompactNumberFormatSymbols_ckb_IQ", "goog.i18n.CompactNumberFormatSymbols_ckb_IR", "goog.i18n.CompactNumberFormatSymbols_ckb_Latn", "goog.i18n.CompactNumberFormatSymbols_ckb_Latn_IQ", "goog.i18n.CompactNumberFormatSymbols_dav", "goog.i18n.CompactNumberFormatSymbols_dav_KE", "goog.i18n.CompactNumberFormatSymbols_de_LI", "goog.i18n.CompactNumberFormatSymbols_dje", "goog.i18n.CompactNumberFormatSymbols_dje_NE", "goog.i18n.CompactNumberFormatSymbols_dua", "goog.i18n.CompactNumberFormatSymbols_dua_CM", "goog.i18n.CompactNumberFormatSymbols_dyo", "goog.i18n.CompactNumberFormatSymbols_dyo_SN", "goog.i18n.CompactNumberFormatSymbols_dz", "goog.i18n.CompactNumberFormatSymbols_dz_BT", "goog.i18n.CompactNumberFormatSymbols_ebu", "goog.i18n.CompactNumberFormatSymbols_ebu_KE", "goog.i18n.CompactNumberFormatSymbols_ee", "goog.i18n.CompactNumberFormatSymbols_ee_GH", "goog.i18n.CompactNumberFormatSymbols_ee_TG", "goog.i18n.CompactNumberFormatSymbols_el_CY", "goog.i18n.CompactNumberFormatSymbols_en_150", "goog.i18n.CompactNumberFormatSymbols_en_AG", "goog.i18n.CompactNumberFormatSymbols_en_BB", "goog.i18n.CompactNumberFormatSymbols_en_BE", "goog.i18n.CompactNumberFormatSymbols_en_BM", "goog.i18n.CompactNumberFormatSymbols_en_BS", "goog.i18n.CompactNumberFormatSymbols_en_BW", "goog.i18n.CompactNumberFormatSymbols_en_BZ", "goog.i18n.CompactNumberFormatSymbols_en_CA", "goog.i18n.CompactNumberFormatSymbols_en_CM", "goog.i18n.CompactNumberFormatSymbols_en_DM", "goog.i18n.CompactNumberFormatSymbols_en_Dsrt", "goog.i18n.CompactNumberFormatSymbols_en_FJ", "goog.i18n.CompactNumberFormatSymbols_en_GD", "goog.i18n.CompactNumberFormatSymbols_en_GG", "goog.i18n.CompactNumberFormatSymbols_en_GH", "goog.i18n.CompactNumberFormatSymbols_en_GI", "goog.i18n.CompactNumberFormatSymbols_en_GM", "goog.i18n.CompactNumberFormatSymbols_en_GY", "goog.i18n.CompactNumberFormatSymbols_en_HK", "goog.i18n.CompactNumberFormatSymbols_en_IM", "goog.i18n.CompactNumberFormatSymbols_en_JE", "goog.i18n.CompactNumberFormatSymbols_en_JM", "goog.i18n.CompactNumberFormatSymbols_en_KE", "goog.i18n.CompactNumberFormatSymbols_en_KI", "goog.i18n.CompactNumberFormatSymbols_en_KN", "goog.i18n.CompactNumberFormatSymbols_en_KY", "goog.i18n.CompactNumberFormatSymbols_en_LC", "goog.i18n.CompactNumberFormatSymbols_en_LR", "goog.i18n.CompactNumberFormatSymbols_en_LS", "goog.i18n.CompactNumberFormatSymbols_en_MG", "goog.i18n.CompactNumberFormatSymbols_en_MT", "goog.i18n.CompactNumberFormatSymbols_en_MU", "goog.i18n.CompactNumberFormatSymbols_en_MW", "goog.i18n.CompactNumberFormatSymbols_en_NA", "goog.i18n.CompactNumberFormatSymbols_en_NG", "goog.i18n.CompactNumberFormatSymbols_en_NZ", "goog.i18n.CompactNumberFormatSymbols_en_PG", "goog.i18n.CompactNumberFormatSymbols_en_PH", "goog.i18n.CompactNumberFormatSymbols_en_PK", "goog.i18n.CompactNumberFormatSymbols_en_SB", "goog.i18n.CompactNumberFormatSymbols_en_SC", "goog.i18n.CompactNumberFormatSymbols_en_SL", "goog.i18n.CompactNumberFormatSymbols_en_SS", "goog.i18n.CompactNumberFormatSymbols_en_SZ", "goog.i18n.CompactNumberFormatSymbols_en_TO", "goog.i18n.CompactNumberFormatSymbols_en_TT", "goog.i18n.CompactNumberFormatSymbols_en_TZ", "goog.i18n.CompactNumberFormatSymbols_en_UG", "goog.i18n.CompactNumberFormatSymbols_en_VC", "goog.i18n.CompactNumberFormatSymbols_en_VU", "goog.i18n.CompactNumberFormatSymbols_en_WS", "goog.i18n.CompactNumberFormatSymbols_en_ZM", "goog.i18n.CompactNumberFormatSymbols_en_ZW", "goog.i18n.CompactNumberFormatSymbols_eo", "goog.i18n.CompactNumberFormatSymbols_es_AR", "goog.i18n.CompactNumberFormatSymbols_es_BO", "goog.i18n.CompactNumberFormatSymbols_es_CL", "goog.i18n.CompactNumberFormatSymbols_es_CO", "goog.i18n.CompactNumberFormatSymbols_es_CR", "goog.i18n.CompactNumberFormatSymbols_es_CU", "goog.i18n.CompactNumberFormatSymbols_es_DO", "goog.i18n.CompactNumberFormatSymbols_es_EC", "goog.i18n.CompactNumberFormatSymbols_es_GQ", "goog.i18n.CompactNumberFormatSymbols_es_GT", "goog.i18n.CompactNumberFormatSymbols_es_HN", "goog.i18n.CompactNumberFormatSymbols_es_MX", "goog.i18n.CompactNumberFormatSymbols_es_NI", "goog.i18n.CompactNumberFormatSymbols_es_PA", "goog.i18n.CompactNumberFormatSymbols_es_PE", "goog.i18n.CompactNumberFormatSymbols_es_PH", "goog.i18n.CompactNumberFormatSymbols_es_PR", "goog.i18n.CompactNumberFormatSymbols_es_PY", "goog.i18n.CompactNumberFormatSymbols_es_SV", "goog.i18n.CompactNumberFormatSymbols_es_US", "goog.i18n.CompactNumberFormatSymbols_es_UY", "goog.i18n.CompactNumberFormatSymbols_es_VE", "goog.i18n.CompactNumberFormatSymbols_ewo", "goog.i18n.CompactNumberFormatSymbols_ewo_CM", "goog.i18n.CompactNumberFormatSymbols_fa_AF", "goog.i18n.CompactNumberFormatSymbols_ff", "goog.i18n.CompactNumberFormatSymbols_ff_SN", "goog.i18n.CompactNumberFormatSymbols_fo", "goog.i18n.CompactNumberFormatSymbols_fo_FO", "goog.i18n.CompactNumberFormatSymbols_fr_BE", "goog.i18n.CompactNumberFormatSymbols_fr_BF", "goog.i18n.CompactNumberFormatSymbols_fr_BI", "goog.i18n.CompactNumberFormatSymbols_fr_BJ", "goog.i18n.CompactNumberFormatSymbols_fr_CD", "goog.i18n.CompactNumberFormatSymbols_fr_CF", "goog.i18n.CompactNumberFormatSymbols_fr_CG", "goog.i18n.CompactNumberFormatSymbols_fr_CH", "goog.i18n.CompactNumberFormatSymbols_fr_CI", "goog.i18n.CompactNumberFormatSymbols_fr_CM", "goog.i18n.CompactNumberFormatSymbols_fr_DJ", "goog.i18n.CompactNumberFormatSymbols_fr_DZ", "goog.i18n.CompactNumberFormatSymbols_fr_GA", "goog.i18n.CompactNumberFormatSymbols_fr_GN", "goog.i18n.CompactNumberFormatSymbols_fr_GQ", "goog.i18n.CompactNumberFormatSymbols_fr_HT", "goog.i18n.CompactNumberFormatSymbols_fr_KM", "goog.i18n.CompactNumberFormatSymbols_fr_LU", "goog.i18n.CompactNumberFormatSymbols_fr_MA", "goog.i18n.CompactNumberFormatSymbols_fr_MG", "goog.i18n.CompactNumberFormatSymbols_fr_ML", "goog.i18n.CompactNumberFormatSymbols_fr_MR", "goog.i18n.CompactNumberFormatSymbols_fr_MU", "goog.i18n.CompactNumberFormatSymbols_fr_NC", "goog.i18n.CompactNumberFormatSymbols_fr_NE", "goog.i18n.CompactNumberFormatSymbols_fr_PF", "goog.i18n.CompactNumberFormatSymbols_fr_RW", "goog.i18n.CompactNumberFormatSymbols_fr_SC", "goog.i18n.CompactNumberFormatSymbols_fr_SN", "goog.i18n.CompactNumberFormatSymbols_fr_SY", "goog.i18n.CompactNumberFormatSymbols_fr_TD", "goog.i18n.CompactNumberFormatSymbols_fr_TG", "goog.i18n.CompactNumberFormatSymbols_fr_TN", "goog.i18n.CompactNumberFormatSymbols_fr_VU", "goog.i18n.CompactNumberFormatSymbols_fur", "goog.i18n.CompactNumberFormatSymbols_fur_IT", "goog.i18n.CompactNumberFormatSymbols_ga", "goog.i18n.CompactNumberFormatSymbols_ga_IE", "goog.i18n.CompactNumberFormatSymbols_gd", "goog.i18n.CompactNumberFormatSymbols_gd_GB", "goog.i18n.CompactNumberFormatSymbols_guz", "goog.i18n.CompactNumberFormatSymbols_guz_KE", "goog.i18n.CompactNumberFormatSymbols_gv", "goog.i18n.CompactNumberFormatSymbols_gv_GB", "goog.i18n.CompactNumberFormatSymbols_ha", "goog.i18n.CompactNumberFormatSymbols_ha_Latn", "goog.i18n.CompactNumberFormatSymbols_ha_Latn_GH", "goog.i18n.CompactNumberFormatSymbols_ha_Latn_NE", "goog.i18n.CompactNumberFormatSymbols_ha_Latn_NG", "goog.i18n.CompactNumberFormatSymbols_hr_BA", "goog.i18n.CompactNumberFormatSymbols_hy", "goog.i18n.CompactNumberFormatSymbols_hy_AM", "goog.i18n.CompactNumberFormatSymbols_ia", "goog.i18n.CompactNumberFormatSymbols_ia_FR", "goog.i18n.CompactNumberFormatSymbols_ig", "goog.i18n.CompactNumberFormatSymbols_ig_NG", "goog.i18n.CompactNumberFormatSymbols_ii", "goog.i18n.CompactNumberFormatSymbols_ii_CN", "goog.i18n.CompactNumberFormatSymbols_it_CH", "goog.i18n.CompactNumberFormatSymbols_jgo", "goog.i18n.CompactNumberFormatSymbols_jgo_CM", "goog.i18n.CompactNumberFormatSymbols_jmc", "goog.i18n.CompactNumberFormatSymbols_jmc_TZ", "goog.i18n.CompactNumberFormatSymbols_ka", "goog.i18n.CompactNumberFormatSymbols_ka_GE", "goog.i18n.CompactNumberFormatSymbols_kab", "goog.i18n.CompactNumberFormatSymbols_kab_DZ", "goog.i18n.CompactNumberFormatSymbols_kam", "goog.i18n.CompactNumberFormatSymbols_kam_KE", "goog.i18n.CompactNumberFormatSymbols_kde", "goog.i18n.CompactNumberFormatSymbols_kde_TZ", "goog.i18n.CompactNumberFormatSymbols_kea", "goog.i18n.CompactNumberFormatSymbols_kea_CV", "goog.i18n.CompactNumberFormatSymbols_khq", "goog.i18n.CompactNumberFormatSymbols_khq_ML", "goog.i18n.CompactNumberFormatSymbols_ki", "goog.i18n.CompactNumberFormatSymbols_ki_KE", "goog.i18n.CompactNumberFormatSymbols_kk", "goog.i18n.CompactNumberFormatSymbols_kk_Cyrl", "goog.i18n.CompactNumberFormatSymbols_kk_Cyrl_KZ", "goog.i18n.CompactNumberFormatSymbols_kkj", "goog.i18n.CompactNumberFormatSymbols_kkj_CM", "goog.i18n.CompactNumberFormatSymbols_kl", "goog.i18n.CompactNumberFormatSymbols_kl_GL", "goog.i18n.CompactNumberFormatSymbols_kln", "goog.i18n.CompactNumberFormatSymbols_kln_KE", "goog.i18n.CompactNumberFormatSymbols_km", "goog.i18n.CompactNumberFormatSymbols_km_KH", "goog.i18n.CompactNumberFormatSymbols_ko_KP", "goog.i18n.CompactNumberFormatSymbols_kok", "goog.i18n.CompactNumberFormatSymbols_kok_IN", "goog.i18n.CompactNumberFormatSymbols_ks", "goog.i18n.CompactNumberFormatSymbols_ks_Arab", "goog.i18n.CompactNumberFormatSymbols_ks_Arab_IN", "goog.i18n.CompactNumberFormatSymbols_ksb", "goog.i18n.CompactNumberFormatSymbols_ksb_TZ", "goog.i18n.CompactNumberFormatSymbols_ksf", "goog.i18n.CompactNumberFormatSymbols_ksf_CM", "goog.i18n.CompactNumberFormatSymbols_ksh", "goog.i18n.CompactNumberFormatSymbols_ksh_DE", "goog.i18n.CompactNumberFormatSymbols_kw", "goog.i18n.CompactNumberFormatSymbols_kw_GB", "goog.i18n.CompactNumberFormatSymbols_ky", "goog.i18n.CompactNumberFormatSymbols_ky_KG", "goog.i18n.CompactNumberFormatSymbols_lag", "goog.i18n.CompactNumberFormatSymbols_lag_TZ", "goog.i18n.CompactNumberFormatSymbols_lg", "goog.i18n.CompactNumberFormatSymbols_lg_UG", "goog.i18n.CompactNumberFormatSymbols_ln_AO", "goog.i18n.CompactNumberFormatSymbols_ln_CF", "goog.i18n.CompactNumberFormatSymbols_ln_CG", "goog.i18n.CompactNumberFormatSymbols_lo", "goog.i18n.CompactNumberFormatSymbols_lo_LA", "goog.i18n.CompactNumberFormatSymbols_lu", "goog.i18n.CompactNumberFormatSymbols_lu_CD", "goog.i18n.CompactNumberFormatSymbols_luo", "goog.i18n.CompactNumberFormatSymbols_luo_KE", "goog.i18n.CompactNumberFormatSymbols_luy", "goog.i18n.CompactNumberFormatSymbols_luy_KE", "goog.i18n.CompactNumberFormatSymbols_mas", "goog.i18n.CompactNumberFormatSymbols_mas_KE", "goog.i18n.CompactNumberFormatSymbols_mas_TZ", "goog.i18n.CompactNumberFormatSymbols_mer", "goog.i18n.CompactNumberFormatSymbols_mer_KE", "goog.i18n.CompactNumberFormatSymbols_mfe", "goog.i18n.CompactNumberFormatSymbols_mfe_MU", "goog.i18n.CompactNumberFormatSymbols_mg", "goog.i18n.CompactNumberFormatSymbols_mg_MG", "goog.i18n.CompactNumberFormatSymbols_mgh", "goog.i18n.CompactNumberFormatSymbols_mgh_MZ", "goog.i18n.CompactNumberFormatSymbols_mgo", "goog.i18n.CompactNumberFormatSymbols_mgo_CM", "goog.i18n.CompactNumberFormatSymbols_mk", "goog.i18n.CompactNumberFormatSymbols_mk_MK", "goog.i18n.CompactNumberFormatSymbols_mn", "goog.i18n.CompactNumberFormatSymbols_mn_Cyrl", "goog.i18n.CompactNumberFormatSymbols_mn_Cyrl_MN", "goog.i18n.CompactNumberFormatSymbols_ms_Latn", "goog.i18n.CompactNumberFormatSymbols_ms_Latn_BN", "goog.i18n.CompactNumberFormatSymbols_ms_Latn_SG", "goog.i18n.CompactNumberFormatSymbols_mua", "goog.i18n.CompactNumberFormatSymbols_mua_CM", "goog.i18n.CompactNumberFormatSymbols_my", "goog.i18n.CompactNumberFormatSymbols_my_MM", "goog.i18n.CompactNumberFormatSymbols_naq", "goog.i18n.CompactNumberFormatSymbols_naq_NA", "goog.i18n.CompactNumberFormatSymbols_nd", "goog.i18n.CompactNumberFormatSymbols_nd_ZW", "goog.i18n.CompactNumberFormatSymbols_ne", "goog.i18n.CompactNumberFormatSymbols_ne_IN", "goog.i18n.CompactNumberFormatSymbols_ne_NP", "goog.i18n.CompactNumberFormatSymbols_nl_AW", "goog.i18n.CompactNumberFormatSymbols_nl_BE", "goog.i18n.CompactNumberFormatSymbols_nl_CW", "goog.i18n.CompactNumberFormatSymbols_nl_SR", "goog.i18n.CompactNumberFormatSymbols_nl_SX", "goog.i18n.CompactNumberFormatSymbols_nmg", "goog.i18n.CompactNumberFormatSymbols_nmg_CM", "goog.i18n.CompactNumberFormatSymbols_nn", "goog.i18n.CompactNumberFormatSymbols_nn_NO", "goog.i18n.CompactNumberFormatSymbols_nnh", "goog.i18n.CompactNumberFormatSymbols_nnh_CM", "goog.i18n.CompactNumberFormatSymbols_nr", "goog.i18n.CompactNumberFormatSymbols_nr_ZA", "goog.i18n.CompactNumberFormatSymbols_nso", "goog.i18n.CompactNumberFormatSymbols_nso_ZA", "goog.i18n.CompactNumberFormatSymbols_nus", "goog.i18n.CompactNumberFormatSymbols_nus_SD", "goog.i18n.CompactNumberFormatSymbols_nyn", "goog.i18n.CompactNumberFormatSymbols_nyn_UG", "goog.i18n.CompactNumberFormatSymbols_om", "goog.i18n.CompactNumberFormatSymbols_om_ET", "goog.i18n.CompactNumberFormatSymbols_om_KE", "goog.i18n.CompactNumberFormatSymbols_os", "goog.i18n.CompactNumberFormatSymbols_os_GE", "goog.i18n.CompactNumberFormatSymbols_os_RU", "goog.i18n.CompactNumberFormatSymbols_pa", "goog.i18n.CompactNumberFormatSymbols_pa_Arab", "goog.i18n.CompactNumberFormatSymbols_pa_Arab_PK", "goog.i18n.CompactNumberFormatSymbols_pa_Guru", "goog.i18n.CompactNumberFormatSymbols_pa_Guru_IN", "goog.i18n.CompactNumberFormatSymbols_ps", "goog.i18n.CompactNumberFormatSymbols_ps_AF", "goog.i18n.CompactNumberFormatSymbols_pt_AO", "goog.i18n.CompactNumberFormatSymbols_pt_CV", "goog.i18n.CompactNumberFormatSymbols_pt_GW", "goog.i18n.CompactNumberFormatSymbols_pt_MO", "goog.i18n.CompactNumberFormatSymbols_pt_MZ", "goog.i18n.CompactNumberFormatSymbols_pt_ST", "goog.i18n.CompactNumberFormatSymbols_pt_TL", "goog.i18n.CompactNumberFormatSymbols_rm", "goog.i18n.CompactNumberFormatSymbols_rm_CH", "goog.i18n.CompactNumberFormatSymbols_rn", "goog.i18n.CompactNumberFormatSymbols_rn_BI", "goog.i18n.CompactNumberFormatSymbols_ro_MD", "goog.i18n.CompactNumberFormatSymbols_rof", "goog.i18n.CompactNumberFormatSymbols_rof_TZ", "goog.i18n.CompactNumberFormatSymbols_ru_BY", "goog.i18n.CompactNumberFormatSymbols_ru_KG", "goog.i18n.CompactNumberFormatSymbols_ru_KZ", "goog.i18n.CompactNumberFormatSymbols_ru_MD", "goog.i18n.CompactNumberFormatSymbols_ru_UA", "goog.i18n.CompactNumberFormatSymbols_rw", "goog.i18n.CompactNumberFormatSymbols_rw_RW", "goog.i18n.CompactNumberFormatSymbols_rwk", "goog.i18n.CompactNumberFormatSymbols_rwk_TZ", "goog.i18n.CompactNumberFormatSymbols_sah", "goog.i18n.CompactNumberFormatSymbols_sah_RU", "goog.i18n.CompactNumberFormatSymbols_saq", "goog.i18n.CompactNumberFormatSymbols_saq_KE", "goog.i18n.CompactNumberFormatSymbols_sbp", "goog.i18n.CompactNumberFormatSymbols_sbp_TZ", "goog.i18n.CompactNumberFormatSymbols_se", "goog.i18n.CompactNumberFormatSymbols_se_FI", "goog.i18n.CompactNumberFormatSymbols_se_NO", "goog.i18n.CompactNumberFormatSymbols_seh", "goog.i18n.CompactNumberFormatSymbols_seh_MZ", "goog.i18n.CompactNumberFormatSymbols_ses", "goog.i18n.CompactNumberFormatSymbols_ses_ML", "goog.i18n.CompactNumberFormatSymbols_sg", "goog.i18n.CompactNumberFormatSymbols_sg_CF", "goog.i18n.CompactNumberFormatSymbols_shi", "goog.i18n.CompactNumberFormatSymbols_shi_Latn", "goog.i18n.CompactNumberFormatSymbols_shi_Latn_MA", "goog.i18n.CompactNumberFormatSymbols_shi_Tfng", "goog.i18n.CompactNumberFormatSymbols_shi_Tfng_MA", "goog.i18n.CompactNumberFormatSymbols_si", "goog.i18n.CompactNumberFormatSymbols_si_LK", "goog.i18n.CompactNumberFormatSymbols_sn", "goog.i18n.CompactNumberFormatSymbols_sn_ZW", "goog.i18n.CompactNumberFormatSymbols_so", "goog.i18n.CompactNumberFormatSymbols_so_DJ", "goog.i18n.CompactNumberFormatSymbols_so_ET", "goog.i18n.CompactNumberFormatSymbols_so_KE", "goog.i18n.CompactNumberFormatSymbols_so_SO", "goog.i18n.CompactNumberFormatSymbols_sq_MK", "goog.i18n.CompactNumberFormatSymbols_sq_XK", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_BA", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_ME", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_XK", "goog.i18n.CompactNumberFormatSymbols_sr_Latn", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_BA", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_ME", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_RS", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_XK", "goog.i18n.CompactNumberFormatSymbols_ss", "goog.i18n.CompactNumberFormatSymbols_ss_SZ", "goog.i18n.CompactNumberFormatSymbols_ss_ZA", "goog.i18n.CompactNumberFormatSymbols_ssy", "goog.i18n.CompactNumberFormatSymbols_ssy_ER", "goog.i18n.CompactNumberFormatSymbols_st", "goog.i18n.CompactNumberFormatSymbols_st_LS", "goog.i18n.CompactNumberFormatSymbols_st_ZA", "goog.i18n.CompactNumberFormatSymbols_sv_AX", "goog.i18n.CompactNumberFormatSymbols_sv_FI", "goog.i18n.CompactNumberFormatSymbols_sw_KE", "goog.i18n.CompactNumberFormatSymbols_sw_UG", "goog.i18n.CompactNumberFormatSymbols_swc", "goog.i18n.CompactNumberFormatSymbols_swc_CD", "goog.i18n.CompactNumberFormatSymbols_ta_LK", "goog.i18n.CompactNumberFormatSymbols_ta_MY", "goog.i18n.CompactNumberFormatSymbols_ta_SG", "goog.i18n.CompactNumberFormatSymbols_teo", "goog.i18n.CompactNumberFormatSymbols_teo_KE", "goog.i18n.CompactNumberFormatSymbols_teo_UG", "goog.i18n.CompactNumberFormatSymbols_tg", "goog.i18n.CompactNumberFormatSymbols_tg_Cyrl", "goog.i18n.CompactNumberFormatSymbols_tg_Cyrl_TJ", "goog.i18n.CompactNumberFormatSymbols_ti", "goog.i18n.CompactNumberFormatSymbols_ti_ER", "goog.i18n.CompactNumberFormatSymbols_ti_ET", "goog.i18n.CompactNumberFormatSymbols_tig", "goog.i18n.CompactNumberFormatSymbols_tig_ER", "goog.i18n.CompactNumberFormatSymbols_tn", "goog.i18n.CompactNumberFormatSymbols_tn_BW", "goog.i18n.CompactNumberFormatSymbols_tn_ZA", "goog.i18n.CompactNumberFormatSymbols_to", "goog.i18n.CompactNumberFormatSymbols_to_TO", "goog.i18n.CompactNumberFormatSymbols_tr_CY", "goog.i18n.CompactNumberFormatSymbols_ts", "goog.i18n.CompactNumberFormatSymbols_ts_ZA", "goog.i18n.CompactNumberFormatSymbols_twq", "goog.i18n.CompactNumberFormatSymbols_twq_NE", "goog.i18n.CompactNumberFormatSymbols_tzm", "goog.i18n.CompactNumberFormatSymbols_tzm_Latn", "goog.i18n.CompactNumberFormatSymbols_tzm_Latn_MA", "goog.i18n.CompactNumberFormatSymbols_ur_IN", "goog.i18n.CompactNumberFormatSymbols_uz", "goog.i18n.CompactNumberFormatSymbols_uz_Arab", "goog.i18n.CompactNumberFormatSymbols_uz_Arab_AF", "goog.i18n.CompactNumberFormatSymbols_uz_Cyrl", "goog.i18n.CompactNumberFormatSymbols_uz_Cyrl_UZ", "goog.i18n.CompactNumberFormatSymbols_uz_Latn", "goog.i18n.CompactNumberFormatSymbols_uz_Latn_UZ", "goog.i18n.CompactNumberFormatSymbols_vai", "goog.i18n.CompactNumberFormatSymbols_vai_Latn", "goog.i18n.CompactNumberFormatSymbols_vai_Latn_LR", "goog.i18n.CompactNumberFormatSymbols_vai_Vaii", "goog.i18n.CompactNumberFormatSymbols_vai_Vaii_LR", "goog.i18n.CompactNumberFormatSymbols_ve", "goog.i18n.CompactNumberFormatSymbols_ve_ZA", "goog.i18n.CompactNumberFormatSymbols_vo", "goog.i18n.CompactNumberFormatSymbols_vun", "goog.i18n.CompactNumberFormatSymbols_vun_TZ", "goog.i18n.CompactNumberFormatSymbols_wae", "goog.i18n.CompactNumberFormatSymbols_wae_CH", "goog.i18n.CompactNumberFormatSymbols_wal", "goog.i18n.CompactNumberFormatSymbols_wal_ET", "goog.i18n.CompactNumberFormatSymbols_xh", "goog.i18n.CompactNumberFormatSymbols_xh_ZA", "goog.i18n.CompactNumberFormatSymbols_xog", "goog.i18n.CompactNumberFormatSymbols_xog_UG", "goog.i18n.CompactNumberFormatSymbols_yav", "goog.i18n.CompactNumberFormatSymbols_yav_CM", "goog.i18n.CompactNumberFormatSymbols_yo", "goog.i18n.CompactNumberFormatSymbols_yo_NG", "goog.i18n.CompactNumberFormatSymbols_zh_Hans", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_HK", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_MO", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_SG", "goog.i18n.CompactNumberFormatSymbols_zh_Hant", "goog.i18n.CompactNumberFormatSymbols_zh_Hant_HK", "goog.i18n.CompactNumberFormatSymbols_zh_Hant_MO", "goog.i18n.CompactNumberFormatSymbols_zh_Hant_TW"], []); goog.addDependency("/closure/goog/i18n/currency.js", ["goog.i18n.currency", "goog.i18n.currency.CurrencyInfo", "goog.i18n.currency.CurrencyInfoTier2"], []); goog.addDependency("/closure/goog/i18n/currencycodemap.js", ["goog.i18n.currencyCodeMap", "goog.i18n.currencyCodeMapTier2"], []); goog.addDependency("/closure/goog/i18n/datetimeformat.js", ["goog.i18n.DateTimeFormat", "goog.i18n.DateTimeFormat.Format"], ["goog.asserts", "goog.i18n.DateTimeSymbols", "goog.i18n.TimeZone", "goog.string"]); goog.addDependency("/closure/goog/i18n/datetimeparse.js", ["goog.i18n.DateTimeParse"], ["goog.i18n.DateTimeFormat", "goog.i18n.DateTimeSymbols"]); goog.addDependency("/closure/goog/i18n/datetimepatterns.js", ["goog.i18n.DateTimePatterns", "goog.i18n.DateTimePatterns_af", "goog.i18n.DateTimePatterns_am", "goog.i18n.DateTimePatterns_ar", "goog.i18n.DateTimePatterns_bg", "goog.i18n.DateTimePatterns_bn", "goog.i18n.DateTimePatterns_br", "goog.i18n.DateTimePatterns_ca", "goog.i18n.DateTimePatterns_chr", "goog.i18n.DateTimePatterns_cs", "goog.i18n.DateTimePatterns_cy", "goog.i18n.DateTimePatterns_da", "goog.i18n.DateTimePatterns_de", "goog.i18n.DateTimePatterns_de_AT", "goog.i18n.DateTimePatterns_de_CH", "goog.i18n.DateTimePatterns_el", "goog.i18n.DateTimePatterns_en", "goog.i18n.DateTimePatterns_en_AU", "goog.i18n.DateTimePatterns_en_GB", "goog.i18n.DateTimePatterns_en_IE", "goog.i18n.DateTimePatterns_en_IN", "goog.i18n.DateTimePatterns_en_SG", "goog.i18n.DateTimePatterns_en_US", "goog.i18n.DateTimePatterns_en_ZA", "goog.i18n.DateTimePatterns_es", "goog.i18n.DateTimePatterns_es_419", "goog.i18n.DateTimePatterns_es_ES", "goog.i18n.DateTimePatterns_et", "goog.i18n.DateTimePatterns_eu", "goog.i18n.DateTimePatterns_fa", "goog.i18n.DateTimePatterns_fi", "goog.i18n.DateTimePatterns_fil", "goog.i18n.DateTimePatterns_fr", "goog.i18n.DateTimePatterns_fr_CA", "goog.i18n.DateTimePatterns_gl", "goog.i18n.DateTimePatterns_gsw", "goog.i18n.DateTimePatterns_gu", "goog.i18n.DateTimePatterns_haw", "goog.i18n.DateTimePatterns_he", "goog.i18n.DateTimePatterns_hi", "goog.i18n.DateTimePatterns_hr", "goog.i18n.DateTimePatterns_hu", "goog.i18n.DateTimePatterns_id", "goog.i18n.DateTimePatterns_in", "goog.i18n.DateTimePatterns_is", "goog.i18n.DateTimePatterns_it", "goog.i18n.DateTimePatterns_iw", "goog.i18n.DateTimePatterns_ja", "goog.i18n.DateTimePatterns_kn", "goog.i18n.DateTimePatterns_ko", "goog.i18n.DateTimePatterns_ln", "goog.i18n.DateTimePatterns_lt", "goog.i18n.DateTimePatterns_lv", "goog.i18n.DateTimePatterns_ml", "goog.i18n.DateTimePatterns_mo", "goog.i18n.DateTimePatterns_mr", "goog.i18n.DateTimePatterns_ms", "goog.i18n.DateTimePatterns_mt", "goog.i18n.DateTimePatterns_nb", "goog.i18n.DateTimePatterns_nl", "goog.i18n.DateTimePatterns_no", "goog.i18n.DateTimePatterns_or", "goog.i18n.DateTimePatterns_pl", "goog.i18n.DateTimePatterns_pt", "goog.i18n.DateTimePatterns_pt_BR", "goog.i18n.DateTimePatterns_pt_PT", "goog.i18n.DateTimePatterns_ro", "goog.i18n.DateTimePatterns_ru", "goog.i18n.DateTimePatterns_sk", "goog.i18n.DateTimePatterns_sl", "goog.i18n.DateTimePatterns_sq", "goog.i18n.DateTimePatterns_sr", "goog.i18n.DateTimePatterns_sv", "goog.i18n.DateTimePatterns_sw", "goog.i18n.DateTimePatterns_ta", "goog.i18n.DateTimePatterns_te", "goog.i18n.DateTimePatterns_th", "goog.i18n.DateTimePatterns_tl", "goog.i18n.DateTimePatterns_tr", "goog.i18n.DateTimePatterns_uk", "goog.i18n.DateTimePatterns_ur", "goog.i18n.DateTimePatterns_vi", "goog.i18n.DateTimePatterns_zh", "goog.i18n.DateTimePatterns_zh_CN", "goog.i18n.DateTimePatterns_zh_HK", "goog.i18n.DateTimePatterns_zh_TW", "goog.i18n.DateTimePatterns_zu"], []); goog.addDependency("/closure/goog/i18n/datetimepatternsext.js", ["goog.i18n.DateTimePatternsExt", "goog.i18n.DateTimePatterns_af_NA", "goog.i18n.DateTimePatterns_af_ZA", "goog.i18n.DateTimePatterns_agq", "goog.i18n.DateTimePatterns_agq_CM", "goog.i18n.DateTimePatterns_ak", "goog.i18n.DateTimePatterns_ak_GH", "goog.i18n.DateTimePatterns_am_ET", "goog.i18n.DateTimePatterns_ar_001", "goog.i18n.DateTimePatterns_ar_AE", "goog.i18n.DateTimePatterns_ar_BH", "goog.i18n.DateTimePatterns_ar_DJ", "goog.i18n.DateTimePatterns_ar_DZ", "goog.i18n.DateTimePatterns_ar_EG", "goog.i18n.DateTimePatterns_ar_EH", "goog.i18n.DateTimePatterns_ar_ER", "goog.i18n.DateTimePatterns_ar_IL", "goog.i18n.DateTimePatterns_ar_IQ", "goog.i18n.DateTimePatterns_ar_JO", "goog.i18n.DateTimePatterns_ar_KM", "goog.i18n.DateTimePatterns_ar_KW", "goog.i18n.DateTimePatterns_ar_LB", "goog.i18n.DateTimePatterns_ar_LY", "goog.i18n.DateTimePatterns_ar_MA", "goog.i18n.DateTimePatterns_ar_MR", "goog.i18n.DateTimePatterns_ar_OM", "goog.i18n.DateTimePatterns_ar_PS", "goog.i18n.DateTimePatterns_ar_QA", "goog.i18n.DateTimePatterns_ar_SA", "goog.i18n.DateTimePatterns_ar_SD", "goog.i18n.DateTimePatterns_ar_SO", "goog.i18n.DateTimePatterns_ar_SY", "goog.i18n.DateTimePatterns_ar_TD", "goog.i18n.DateTimePatterns_ar_TN", "goog.i18n.DateTimePatterns_ar_YE", "goog.i18n.DateTimePatterns_as", "goog.i18n.DateTimePatterns_as_IN", "goog.i18n.DateTimePatterns_asa", "goog.i18n.DateTimePatterns_asa_TZ", "goog.i18n.DateTimePatterns_az", "goog.i18n.DateTimePatterns_az_Cyrl", "goog.i18n.DateTimePatterns_az_Cyrl_AZ", "goog.i18n.DateTimePatterns_az_Latn", "goog.i18n.DateTimePatterns_az_Latn_AZ", "goog.i18n.DateTimePatterns_bas", "goog.i18n.DateTimePatterns_bas_CM", "goog.i18n.DateTimePatterns_be", "goog.i18n.DateTimePatterns_be_BY", "goog.i18n.DateTimePatterns_bem", "goog.i18n.DateTimePatterns_bem_ZM", "goog.i18n.DateTimePatterns_bez", "goog.i18n.DateTimePatterns_bez_TZ", "goog.i18n.DateTimePatterns_bg_BG", "goog.i18n.DateTimePatterns_bm", "goog.i18n.DateTimePatterns_bm_ML", "goog.i18n.DateTimePatterns_bn_BD", "goog.i18n.DateTimePatterns_bn_IN", "goog.i18n.DateTimePatterns_bo", "goog.i18n.DateTimePatterns_bo_CN", "goog.i18n.DateTimePatterns_bo_IN", "goog.i18n.DateTimePatterns_br_FR", "goog.i18n.DateTimePatterns_brx", "goog.i18n.DateTimePatterns_brx_IN", "goog.i18n.DateTimePatterns_bs", "goog.i18n.DateTimePatterns_bs_Cyrl", "goog.i18n.DateTimePatterns_bs_Cyrl_BA", "goog.i18n.DateTimePatterns_bs_Latn", "goog.i18n.DateTimePatterns_bs_Latn_BA", "goog.i18n.DateTimePatterns_ca_AD", "goog.i18n.DateTimePatterns_ca_ES", "goog.i18n.DateTimePatterns_cgg", "goog.i18n.DateTimePatterns_cgg_UG", "goog.i18n.DateTimePatterns_chr_US", "goog.i18n.DateTimePatterns_cs_CZ", "goog.i18n.DateTimePatterns_cy_GB", "goog.i18n.DateTimePatterns_da_DK", "goog.i18n.DateTimePatterns_dav", "goog.i18n.DateTimePatterns_dav_KE", "goog.i18n.DateTimePatterns_de_BE", "goog.i18n.DateTimePatterns_de_DE", "goog.i18n.DateTimePatterns_de_LI", "goog.i18n.DateTimePatterns_de_LU", "goog.i18n.DateTimePatterns_dje", "goog.i18n.DateTimePatterns_dje_NE", "goog.i18n.DateTimePatterns_dua", "goog.i18n.DateTimePatterns_dua_CM", "goog.i18n.DateTimePatterns_dyo", "goog.i18n.DateTimePatterns_dyo_SN", "goog.i18n.DateTimePatterns_dz", "goog.i18n.DateTimePatterns_dz_BT", "goog.i18n.DateTimePatterns_ebu", "goog.i18n.DateTimePatterns_ebu_KE", "goog.i18n.DateTimePatterns_ee", "goog.i18n.DateTimePatterns_ee_GH", "goog.i18n.DateTimePatterns_ee_TG", "goog.i18n.DateTimePatterns_el_CY", "goog.i18n.DateTimePatterns_el_GR", "goog.i18n.DateTimePatterns_en_150", "goog.i18n.DateTimePatterns_en_AG", "goog.i18n.DateTimePatterns_en_AS", "goog.i18n.DateTimePatterns_en_BB", "goog.i18n.DateTimePatterns_en_BE", "goog.i18n.DateTimePatterns_en_BM", "goog.i18n.DateTimePatterns_en_BS", "goog.i18n.DateTimePatterns_en_BW", "goog.i18n.DateTimePatterns_en_BZ", "goog.i18n.DateTimePatterns_en_CA", "goog.i18n.DateTimePatterns_en_CM", "goog.i18n.DateTimePatterns_en_DM", "goog.i18n.DateTimePatterns_en_FJ", "goog.i18n.DateTimePatterns_en_FM", "goog.i18n.DateTimePatterns_en_GD", "goog.i18n.DateTimePatterns_en_GG", "goog.i18n.DateTimePatterns_en_GH", "goog.i18n.DateTimePatterns_en_GI", "goog.i18n.DateTimePatterns_en_GM", "goog.i18n.DateTimePatterns_en_GU", "goog.i18n.DateTimePatterns_en_GY", "goog.i18n.DateTimePatterns_en_HK", "goog.i18n.DateTimePatterns_en_IM", "goog.i18n.DateTimePatterns_en_JE", "goog.i18n.DateTimePatterns_en_JM", "goog.i18n.DateTimePatterns_en_KE", "goog.i18n.DateTimePatterns_en_KI", "goog.i18n.DateTimePatterns_en_KN", "goog.i18n.DateTimePatterns_en_KY", "goog.i18n.DateTimePatterns_en_LC", "goog.i18n.DateTimePatterns_en_LR", "goog.i18n.DateTimePatterns_en_LS", "goog.i18n.DateTimePatterns_en_MG", "goog.i18n.DateTimePatterns_en_MH", "goog.i18n.DateTimePatterns_en_MP", "goog.i18n.DateTimePatterns_en_MT", "goog.i18n.DateTimePatterns_en_MU", "goog.i18n.DateTimePatterns_en_MW", "goog.i18n.DateTimePatterns_en_NA", "goog.i18n.DateTimePatterns_en_NG", "goog.i18n.DateTimePatterns_en_NZ", "goog.i18n.DateTimePatterns_en_PG", "goog.i18n.DateTimePatterns_en_PH", "goog.i18n.DateTimePatterns_en_PK", "goog.i18n.DateTimePatterns_en_PR", "goog.i18n.DateTimePatterns_en_PW", "goog.i18n.DateTimePatterns_en_SB", "goog.i18n.DateTimePatterns_en_SC", "goog.i18n.DateTimePatterns_en_SL", "goog.i18n.DateTimePatterns_en_SS", "goog.i18n.DateTimePatterns_en_SZ", "goog.i18n.DateTimePatterns_en_TC", "goog.i18n.DateTimePatterns_en_TO", "goog.i18n.DateTimePatterns_en_TT", "goog.i18n.DateTimePatterns_en_TZ", "goog.i18n.DateTimePatterns_en_UG", "goog.i18n.DateTimePatterns_en_UM", "goog.i18n.DateTimePatterns_en_US_POSIX", "goog.i18n.DateTimePatterns_en_VC", "goog.i18n.DateTimePatterns_en_VG", "goog.i18n.DateTimePatterns_en_VI", "goog.i18n.DateTimePatterns_en_VU", "goog.i18n.DateTimePatterns_en_WS", "goog.i18n.DateTimePatterns_en_ZM", "goog.i18n.DateTimePatterns_en_ZW", "goog.i18n.DateTimePatterns_eo", "goog.i18n.DateTimePatterns_es_AR", "goog.i18n.DateTimePatterns_es_BO", "goog.i18n.DateTimePatterns_es_CL", "goog.i18n.DateTimePatterns_es_CO", "goog.i18n.DateTimePatterns_es_CR", "goog.i18n.DateTimePatterns_es_CU", "goog.i18n.DateTimePatterns_es_DO", "goog.i18n.DateTimePatterns_es_EA", "goog.i18n.DateTimePatterns_es_EC", "goog.i18n.DateTimePatterns_es_GQ", "goog.i18n.DateTimePatterns_es_GT", "goog.i18n.DateTimePatterns_es_HN", "goog.i18n.DateTimePatterns_es_IC", "goog.i18n.DateTimePatterns_es_MX", "goog.i18n.DateTimePatterns_es_NI", "goog.i18n.DateTimePatterns_es_PA", "goog.i18n.DateTimePatterns_es_PE", "goog.i18n.DateTimePatterns_es_PH", "goog.i18n.DateTimePatterns_es_PR", "goog.i18n.DateTimePatterns_es_PY", "goog.i18n.DateTimePatterns_es_SV", "goog.i18n.DateTimePatterns_es_US", "goog.i18n.DateTimePatterns_es_UY", "goog.i18n.DateTimePatterns_es_VE", "goog.i18n.DateTimePatterns_et_EE", "goog.i18n.DateTimePatterns_eu_ES", "goog.i18n.DateTimePatterns_ewo", "goog.i18n.DateTimePatterns_ewo_CM", "goog.i18n.DateTimePatterns_fa_AF", "goog.i18n.DateTimePatterns_fa_IR", "goog.i18n.DateTimePatterns_ff", "goog.i18n.DateTimePatterns_ff_SN", "goog.i18n.DateTimePatterns_fi_FI", "goog.i18n.DateTimePatterns_fil_PH", "goog.i18n.DateTimePatterns_fo", "goog.i18n.DateTimePatterns_fo_FO", "goog.i18n.DateTimePatterns_fr_BE", "goog.i18n.DateTimePatterns_fr_BF", "goog.i18n.DateTimePatterns_fr_BI", "goog.i18n.DateTimePatterns_fr_BJ", "goog.i18n.DateTimePatterns_fr_BL", "goog.i18n.DateTimePatterns_fr_CD", "goog.i18n.DateTimePatterns_fr_CF", "goog.i18n.DateTimePatterns_fr_CG", "goog.i18n.DateTimePatterns_fr_CH", "goog.i18n.DateTimePatterns_fr_CI", "goog.i18n.DateTimePatterns_fr_CM", "goog.i18n.DateTimePatterns_fr_DJ", "goog.i18n.DateTimePatterns_fr_DZ", "goog.i18n.DateTimePatterns_fr_FR", "goog.i18n.DateTimePatterns_fr_GA", "goog.i18n.DateTimePatterns_fr_GF", "goog.i18n.DateTimePatterns_fr_GN", "goog.i18n.DateTimePatterns_fr_GP", "goog.i18n.DateTimePatterns_fr_GQ", "goog.i18n.DateTimePatterns_fr_HT", "goog.i18n.DateTimePatterns_fr_KM", "goog.i18n.DateTimePatterns_fr_LU", "goog.i18n.DateTimePatterns_fr_MA", "goog.i18n.DateTimePatterns_fr_MC", "goog.i18n.DateTimePatterns_fr_MF", "goog.i18n.DateTimePatterns_fr_MG", "goog.i18n.DateTimePatterns_fr_ML", "goog.i18n.DateTimePatterns_fr_MQ", "goog.i18n.DateTimePatterns_fr_MR", "goog.i18n.DateTimePatterns_fr_MU", "goog.i18n.DateTimePatterns_fr_NC", "goog.i18n.DateTimePatterns_fr_NE", "goog.i18n.DateTimePatterns_fr_PF", "goog.i18n.DateTimePatterns_fr_RE", "goog.i18n.DateTimePatterns_fr_RW", "goog.i18n.DateTimePatterns_fr_SC", "goog.i18n.DateTimePatterns_fr_SN", "goog.i18n.DateTimePatterns_fr_SY", "goog.i18n.DateTimePatterns_fr_TD", "goog.i18n.DateTimePatterns_fr_TG", "goog.i18n.DateTimePatterns_fr_TN", "goog.i18n.DateTimePatterns_fr_VU", "goog.i18n.DateTimePatterns_fr_YT", "goog.i18n.DateTimePatterns_ga", "goog.i18n.DateTimePatterns_ga_IE", "goog.i18n.DateTimePatterns_gl_ES", "goog.i18n.DateTimePatterns_gsw_CH", "goog.i18n.DateTimePatterns_gu_IN", "goog.i18n.DateTimePatterns_guz", "goog.i18n.DateTimePatterns_guz_KE", "goog.i18n.DateTimePatterns_gv", "goog.i18n.DateTimePatterns_gv_GB", "goog.i18n.DateTimePatterns_ha", "goog.i18n.DateTimePatterns_ha_Latn", "goog.i18n.DateTimePatterns_ha_Latn_GH", "goog.i18n.DateTimePatterns_ha_Latn_NE", "goog.i18n.DateTimePatterns_ha_Latn_NG", "goog.i18n.DateTimePatterns_haw_US", "goog.i18n.DateTimePatterns_he_IL", "goog.i18n.DateTimePatterns_hi_IN", "goog.i18n.DateTimePatterns_hr_BA", "goog.i18n.DateTimePatterns_hr_HR", "goog.i18n.DateTimePatterns_hu_HU", "goog.i18n.DateTimePatterns_hy", "goog.i18n.DateTimePatterns_hy_AM", "goog.i18n.DateTimePatterns_id_ID", "goog.i18n.DateTimePatterns_ig", "goog.i18n.DateTimePatterns_ig_NG", "goog.i18n.DateTimePatterns_ii", "goog.i18n.DateTimePatterns_ii_CN", "goog.i18n.DateTimePatterns_is_IS", "goog.i18n.DateTimePatterns_it_CH", "goog.i18n.DateTimePatterns_it_IT", "goog.i18n.DateTimePatterns_it_SM", "goog.i18n.DateTimePatterns_ja_JP", "goog.i18n.DateTimePatterns_jgo", "goog.i18n.DateTimePatterns_jgo_CM", "goog.i18n.DateTimePatterns_jmc", "goog.i18n.DateTimePatterns_jmc_TZ", "goog.i18n.DateTimePatterns_ka", "goog.i18n.DateTimePatterns_ka_GE", "goog.i18n.DateTimePatterns_kab", "goog.i18n.DateTimePatterns_kab_DZ", "goog.i18n.DateTimePatterns_kam", "goog.i18n.DateTimePatterns_kam_KE", "goog.i18n.DateTimePatterns_kde", "goog.i18n.DateTimePatterns_kde_TZ", "goog.i18n.DateTimePatterns_kea", "goog.i18n.DateTimePatterns_kea_CV", "goog.i18n.DateTimePatterns_khq", "goog.i18n.DateTimePatterns_khq_ML", "goog.i18n.DateTimePatterns_ki", "goog.i18n.DateTimePatterns_ki_KE", "goog.i18n.DateTimePatterns_kk", "goog.i18n.DateTimePatterns_kk_Cyrl", "goog.i18n.DateTimePatterns_kk_Cyrl_KZ", "goog.i18n.DateTimePatterns_kl", "goog.i18n.DateTimePatterns_kl_GL", "goog.i18n.DateTimePatterns_kln", "goog.i18n.DateTimePatterns_kln_KE", "goog.i18n.DateTimePatterns_km", "goog.i18n.DateTimePatterns_km_KH", "goog.i18n.DateTimePatterns_kn_IN", "goog.i18n.DateTimePatterns_ko_KP", "goog.i18n.DateTimePatterns_ko_KR", "goog.i18n.DateTimePatterns_kok", "goog.i18n.DateTimePatterns_kok_IN", "goog.i18n.DateTimePatterns_ks", "goog.i18n.DateTimePatterns_ks_Arab", "goog.i18n.DateTimePatterns_ks_Arab_IN", "goog.i18n.DateTimePatterns_ksb", "goog.i18n.DateTimePatterns_ksb_TZ", "goog.i18n.DateTimePatterns_ksf", "goog.i18n.DateTimePatterns_ksf_CM", "goog.i18n.DateTimePatterns_kw", "goog.i18n.DateTimePatterns_kw_GB", "goog.i18n.DateTimePatterns_lag", "goog.i18n.DateTimePatterns_lag_TZ", "goog.i18n.DateTimePatterns_lg", "goog.i18n.DateTimePatterns_lg_UG", "goog.i18n.DateTimePatterns_ln_AO", "goog.i18n.DateTimePatterns_ln_CD", "goog.i18n.DateTimePatterns_ln_CF", "goog.i18n.DateTimePatterns_ln_CG", "goog.i18n.DateTimePatterns_lo", "goog.i18n.DateTimePatterns_lo_LA", "goog.i18n.DateTimePatterns_lt_LT", "goog.i18n.DateTimePatterns_lu", "goog.i18n.DateTimePatterns_lu_CD", "goog.i18n.DateTimePatterns_luo", "goog.i18n.DateTimePatterns_luo_KE", "goog.i18n.DateTimePatterns_luy", "goog.i18n.DateTimePatterns_luy_KE", "goog.i18n.DateTimePatterns_lv_LV", "goog.i18n.DateTimePatterns_mas", "goog.i18n.DateTimePatterns_mas_KE", "goog.i18n.DateTimePatterns_mas_TZ", "goog.i18n.DateTimePatterns_mer", "goog.i18n.DateTimePatterns_mer_KE", "goog.i18n.DateTimePatterns_mfe", "goog.i18n.DateTimePatterns_mfe_MU", "goog.i18n.DateTimePatterns_mg", "goog.i18n.DateTimePatterns_mg_MG", "goog.i18n.DateTimePatterns_mgh", "goog.i18n.DateTimePatterns_mgh_MZ", "goog.i18n.DateTimePatterns_mgo", "goog.i18n.DateTimePatterns_mgo_CM", "goog.i18n.DateTimePatterns_mk", "goog.i18n.DateTimePatterns_mk_MK", "goog.i18n.DateTimePatterns_ml_IN", "goog.i18n.DateTimePatterns_mn", "goog.i18n.DateTimePatterns_mn_Cyrl", "goog.i18n.DateTimePatterns_mn_Cyrl_MN", "goog.i18n.DateTimePatterns_mr_IN", "goog.i18n.DateTimePatterns_ms_Latn", "goog.i18n.DateTimePatterns_ms_Latn_BN", "goog.i18n.DateTimePatterns_ms_Latn_MY", "goog.i18n.DateTimePatterns_ms_Latn_SG", "goog.i18n.DateTimePatterns_mt_MT", "goog.i18n.DateTimePatterns_mua", "goog.i18n.DateTimePatterns_mua_CM", "goog.i18n.DateTimePatterns_my", "goog.i18n.DateTimePatterns_my_MM", "goog.i18n.DateTimePatterns_naq", "goog.i18n.DateTimePatterns_naq_NA", "goog.i18n.DateTimePatterns_nb_NO", "goog.i18n.DateTimePatterns_nd", "goog.i18n.DateTimePatterns_nd_ZW", "goog.i18n.DateTimePatterns_ne", "goog.i18n.DateTimePatterns_ne_IN", "goog.i18n.DateTimePatterns_ne_NP", "goog.i18n.DateTimePatterns_nl_AW", "goog.i18n.DateTimePatterns_nl_BE", "goog.i18n.DateTimePatterns_nl_CW", "goog.i18n.DateTimePatterns_nl_NL", "goog.i18n.DateTimePatterns_nl_SR", "goog.i18n.DateTimePatterns_nl_SX", "goog.i18n.DateTimePatterns_nmg", "goog.i18n.DateTimePatterns_nmg_CM", "goog.i18n.DateTimePatterns_nn", "goog.i18n.DateTimePatterns_nn_NO", "goog.i18n.DateTimePatterns_nus", "goog.i18n.DateTimePatterns_nus_SD", "goog.i18n.DateTimePatterns_nyn", "goog.i18n.DateTimePatterns_nyn_UG", "goog.i18n.DateTimePatterns_om", "goog.i18n.DateTimePatterns_om_ET", "goog.i18n.DateTimePatterns_om_KE", "goog.i18n.DateTimePatterns_or_IN", "goog.i18n.DateTimePatterns_pa", "goog.i18n.DateTimePatterns_pa_Arab", "goog.i18n.DateTimePatterns_pa_Arab_PK", "goog.i18n.DateTimePatterns_pa_Guru", "goog.i18n.DateTimePatterns_pa_Guru_IN", "goog.i18n.DateTimePatterns_pl_PL", "goog.i18n.DateTimePatterns_ps", "goog.i18n.DateTimePatterns_ps_AF", "goog.i18n.DateTimePatterns_pt_AO", "goog.i18n.DateTimePatterns_pt_CV", "goog.i18n.DateTimePatterns_pt_GW", "goog.i18n.DateTimePatterns_pt_MO", "goog.i18n.DateTimePatterns_pt_MZ", "goog.i18n.DateTimePatterns_pt_ST", "goog.i18n.DateTimePatterns_pt_TL", "goog.i18n.DateTimePatterns_rm", "goog.i18n.DateTimePatterns_rm_CH", "goog.i18n.DateTimePatterns_rn", "goog.i18n.DateTimePatterns_rn_BI", "goog.i18n.DateTimePatterns_ro_MD", "goog.i18n.DateTimePatterns_ro_RO", "goog.i18n.DateTimePatterns_rof", "goog.i18n.DateTimePatterns_rof_TZ", "goog.i18n.DateTimePatterns_ru_BY", "goog.i18n.DateTimePatterns_ru_KG", "goog.i18n.DateTimePatterns_ru_KZ", "goog.i18n.DateTimePatterns_ru_MD", "goog.i18n.DateTimePatterns_ru_RU", "goog.i18n.DateTimePatterns_ru_UA", "goog.i18n.DateTimePatterns_rw", "goog.i18n.DateTimePatterns_rw_RW", "goog.i18n.DateTimePatterns_rwk", "goog.i18n.DateTimePatterns_rwk_TZ", "goog.i18n.DateTimePatterns_saq", "goog.i18n.DateTimePatterns_saq_KE", "goog.i18n.DateTimePatterns_sbp", "goog.i18n.DateTimePatterns_sbp_TZ", "goog.i18n.DateTimePatterns_seh", "goog.i18n.DateTimePatterns_seh_MZ", "goog.i18n.DateTimePatterns_ses", "goog.i18n.DateTimePatterns_ses_ML", "goog.i18n.DateTimePatterns_sg", "goog.i18n.DateTimePatterns_sg_CF", "goog.i18n.DateTimePatterns_shi", "goog.i18n.DateTimePatterns_shi_Latn", "goog.i18n.DateTimePatterns_shi_Latn_MA", "goog.i18n.DateTimePatterns_shi_Tfng", "goog.i18n.DateTimePatterns_shi_Tfng_MA", "goog.i18n.DateTimePatterns_si", "goog.i18n.DateTimePatterns_si_LK", "goog.i18n.DateTimePatterns_sk_SK", "goog.i18n.DateTimePatterns_sl_SI", "goog.i18n.DateTimePatterns_sn", "goog.i18n.DateTimePatterns_sn_ZW", "goog.i18n.DateTimePatterns_so", "goog.i18n.DateTimePatterns_so_DJ", "goog.i18n.DateTimePatterns_so_ET", "goog.i18n.DateTimePatterns_so_KE", "goog.i18n.DateTimePatterns_so_SO", "goog.i18n.DateTimePatterns_sq_AL", "goog.i18n.DateTimePatterns_sq_MK", "goog.i18n.DateTimePatterns_sr_Cyrl", "goog.i18n.DateTimePatterns_sr_Cyrl_BA", "goog.i18n.DateTimePatterns_sr_Cyrl_ME", "goog.i18n.DateTimePatterns_sr_Cyrl_RS", "goog.i18n.DateTimePatterns_sr_Latn", "goog.i18n.DateTimePatterns_sr_Latn_BA", "goog.i18n.DateTimePatterns_sr_Latn_ME", "goog.i18n.DateTimePatterns_sr_Latn_RS", "goog.i18n.DateTimePatterns_sv_AX", "goog.i18n.DateTimePatterns_sv_FI", "goog.i18n.DateTimePatterns_sv_SE", "goog.i18n.DateTimePatterns_sw_KE", "goog.i18n.DateTimePatterns_sw_TZ", "goog.i18n.DateTimePatterns_sw_UG", "goog.i18n.DateTimePatterns_swc", "goog.i18n.DateTimePatterns_swc_CD", "goog.i18n.DateTimePatterns_ta_IN", "goog.i18n.DateTimePatterns_ta_LK", "goog.i18n.DateTimePatterns_ta_MY", "goog.i18n.DateTimePatterns_ta_SG", "goog.i18n.DateTimePatterns_te_IN", "goog.i18n.DateTimePatterns_teo", "goog.i18n.DateTimePatterns_teo_KE", "goog.i18n.DateTimePatterns_teo_UG", "goog.i18n.DateTimePatterns_th_TH", "goog.i18n.DateTimePatterns_ti", "goog.i18n.DateTimePatterns_ti_ER", "goog.i18n.DateTimePatterns_ti_ET", "goog.i18n.DateTimePatterns_to", "goog.i18n.DateTimePatterns_to_TO", "goog.i18n.DateTimePatterns_tr_CY", "goog.i18n.DateTimePatterns_tr_TR", "goog.i18n.DateTimePatterns_twq", "goog.i18n.DateTimePatterns_twq_NE", "goog.i18n.DateTimePatterns_tzm", "goog.i18n.DateTimePatterns_tzm_Latn", "goog.i18n.DateTimePatterns_tzm_Latn_MA", "goog.i18n.DateTimePatterns_uk_UA", "goog.i18n.DateTimePatterns_ur_IN", "goog.i18n.DateTimePatterns_ur_PK", "goog.i18n.DateTimePatterns_uz", "goog.i18n.DateTimePatterns_uz_Arab", "goog.i18n.DateTimePatterns_uz_Arab_AF", "goog.i18n.DateTimePatterns_uz_Cyrl", "goog.i18n.DateTimePatterns_uz_Cyrl_UZ", "goog.i18n.DateTimePatterns_uz_Latn", "goog.i18n.DateTimePatterns_uz_Latn_UZ", "goog.i18n.DateTimePatterns_vai", "goog.i18n.DateTimePatterns_vai_Latn", "goog.i18n.DateTimePatterns_vai_Latn_LR", "goog.i18n.DateTimePatterns_vai_Vaii", "goog.i18n.DateTimePatterns_vai_Vaii_LR", "goog.i18n.DateTimePatterns_vi_VN", "goog.i18n.DateTimePatterns_vun", "goog.i18n.DateTimePatterns_vun_TZ", "goog.i18n.DateTimePatterns_xog", "goog.i18n.DateTimePatterns_xog_UG", "goog.i18n.DateTimePatterns_yav", "goog.i18n.DateTimePatterns_yav_CM", "goog.i18n.DateTimePatterns_yo", "goog.i18n.DateTimePatterns_yo_NG", "goog.i18n.DateTimePatterns_zh_Hans", "goog.i18n.DateTimePatterns_zh_Hans_CN", "goog.i18n.DateTimePatterns_zh_Hans_HK", "goog.i18n.DateTimePatterns_zh_Hans_MO", "goog.i18n.DateTimePatterns_zh_Hans_SG", "goog.i18n.DateTimePatterns_zh_Hant", "goog.i18n.DateTimePatterns_zh_Hant_HK", "goog.i18n.DateTimePatterns_zh_Hant_MO", "goog.i18n.DateTimePatterns_zh_Hant_TW", "goog.i18n.DateTimePatterns_zu_ZA"], ["goog.i18n.DateTimePatterns"]); goog.addDependency("/closure/goog/i18n/datetimesymbols.js", ["goog.i18n.DateTimeSymbols", "goog.i18n.DateTimeSymbols_af", "goog.i18n.DateTimeSymbols_am", "goog.i18n.DateTimeSymbols_ar", "goog.i18n.DateTimeSymbols_bg", "goog.i18n.DateTimeSymbols_bn", "goog.i18n.DateTimeSymbols_br", "goog.i18n.DateTimeSymbols_ca", "goog.i18n.DateTimeSymbols_chr", "goog.i18n.DateTimeSymbols_cs", "goog.i18n.DateTimeSymbols_cy", "goog.i18n.DateTimeSymbols_da", "goog.i18n.DateTimeSymbols_de", "goog.i18n.DateTimeSymbols_de_AT", "goog.i18n.DateTimeSymbols_de_CH", "goog.i18n.DateTimeSymbols_el", "goog.i18n.DateTimeSymbols_en", "goog.i18n.DateTimeSymbols_en_AU", "goog.i18n.DateTimeSymbols_en_GB", "goog.i18n.DateTimeSymbols_en_IE", "goog.i18n.DateTimeSymbols_en_IN", "goog.i18n.DateTimeSymbols_en_ISO", "goog.i18n.DateTimeSymbols_en_SG", "goog.i18n.DateTimeSymbols_en_US", "goog.i18n.DateTimeSymbols_en_ZA", "goog.i18n.DateTimeSymbols_es", "goog.i18n.DateTimeSymbols_es_419", "goog.i18n.DateTimeSymbols_es_ES", "goog.i18n.DateTimeSymbols_et", "goog.i18n.DateTimeSymbols_eu", "goog.i18n.DateTimeSymbols_fa", "goog.i18n.DateTimeSymbols_fi", "goog.i18n.DateTimeSymbols_fil", "goog.i18n.DateTimeSymbols_fr", "goog.i18n.DateTimeSymbols_fr_CA", "goog.i18n.DateTimeSymbols_gl", "goog.i18n.DateTimeSymbols_gsw", "goog.i18n.DateTimeSymbols_gu", "goog.i18n.DateTimeSymbols_haw", "goog.i18n.DateTimeSymbols_he", "goog.i18n.DateTimeSymbols_hi", "goog.i18n.DateTimeSymbols_hr", "goog.i18n.DateTimeSymbols_hu", "goog.i18n.DateTimeSymbols_id", "goog.i18n.DateTimeSymbols_in", "goog.i18n.DateTimeSymbols_is", "goog.i18n.DateTimeSymbols_it", "goog.i18n.DateTimeSymbols_iw", "goog.i18n.DateTimeSymbols_ja", "goog.i18n.DateTimeSymbols_kn", "goog.i18n.DateTimeSymbols_ko", "goog.i18n.DateTimeSymbols_ln", "goog.i18n.DateTimeSymbols_lt", "goog.i18n.DateTimeSymbols_lv", "goog.i18n.DateTimeSymbols_ml", "goog.i18n.DateTimeSymbols_mr", "goog.i18n.DateTimeSymbols_ms", "goog.i18n.DateTimeSymbols_mt", "goog.i18n.DateTimeSymbols_nb", "goog.i18n.DateTimeSymbols_nl", "goog.i18n.DateTimeSymbols_no", "goog.i18n.DateTimeSymbols_or", "goog.i18n.DateTimeSymbols_pl", "goog.i18n.DateTimeSymbols_pt", "goog.i18n.DateTimeSymbols_pt_BR", "goog.i18n.DateTimeSymbols_pt_PT", "goog.i18n.DateTimeSymbols_ro", "goog.i18n.DateTimeSymbols_ru", "goog.i18n.DateTimeSymbols_sk", "goog.i18n.DateTimeSymbols_sl", "goog.i18n.DateTimeSymbols_sq", "goog.i18n.DateTimeSymbols_sr", "goog.i18n.DateTimeSymbols_sv", "goog.i18n.DateTimeSymbols_sw", "goog.i18n.DateTimeSymbols_ta", "goog.i18n.DateTimeSymbols_te", "goog.i18n.DateTimeSymbols_th", "goog.i18n.DateTimeSymbols_tl", "goog.i18n.DateTimeSymbols_tr", "goog.i18n.DateTimeSymbols_uk", "goog.i18n.DateTimeSymbols_ur", "goog.i18n.DateTimeSymbols_vi", "goog.i18n.DateTimeSymbols_zh", "goog.i18n.DateTimeSymbols_zh_CN", "goog.i18n.DateTimeSymbols_zh_HK", "goog.i18n.DateTimeSymbols_zh_TW", "goog.i18n.DateTimeSymbols_zu"], []); goog.addDependency("/closure/goog/i18n/datetimesymbolsext.js", ["goog.i18n.DateTimeSymbolsExt", "goog.i18n.DateTimeSymbols_aa", "goog.i18n.DateTimeSymbols_aa_DJ", "goog.i18n.DateTimeSymbols_aa_ER", "goog.i18n.DateTimeSymbols_aa_ET", "goog.i18n.DateTimeSymbols_af_NA", "goog.i18n.DateTimeSymbols_af_ZA", "goog.i18n.DateTimeSymbols_agq", "goog.i18n.DateTimeSymbols_agq_CM", "goog.i18n.DateTimeSymbols_ak", "goog.i18n.DateTimeSymbols_ak_GH", "goog.i18n.DateTimeSymbols_am_ET", "goog.i18n.DateTimeSymbols_ar_001", "goog.i18n.DateTimeSymbols_ar_AE", "goog.i18n.DateTimeSymbols_ar_BH", "goog.i18n.DateTimeSymbols_ar_DJ", "goog.i18n.DateTimeSymbols_ar_DZ", "goog.i18n.DateTimeSymbols_ar_EG", "goog.i18n.DateTimeSymbols_ar_EH", "goog.i18n.DateTimeSymbols_ar_ER", "goog.i18n.DateTimeSymbols_ar_IL", "goog.i18n.DateTimeSymbols_ar_IQ", "goog.i18n.DateTimeSymbols_ar_JO", "goog.i18n.DateTimeSymbols_ar_KM", "goog.i18n.DateTimeSymbols_ar_KW", "goog.i18n.DateTimeSymbols_ar_LB", "goog.i18n.DateTimeSymbols_ar_LY", "goog.i18n.DateTimeSymbols_ar_MA", "goog.i18n.DateTimeSymbols_ar_MR", "goog.i18n.DateTimeSymbols_ar_OM", "goog.i18n.DateTimeSymbols_ar_PS", "goog.i18n.DateTimeSymbols_ar_QA", "goog.i18n.DateTimeSymbols_ar_SA", "goog.i18n.DateTimeSymbols_ar_SD", "goog.i18n.DateTimeSymbols_ar_SO", "goog.i18n.DateTimeSymbols_ar_SY", "goog.i18n.DateTimeSymbols_ar_TD", "goog.i18n.DateTimeSymbols_ar_TN", "goog.i18n.DateTimeSymbols_ar_YE", "goog.i18n.DateTimeSymbols_as", "goog.i18n.DateTimeSymbols_as_IN", "goog.i18n.DateTimeSymbols_asa", "goog.i18n.DateTimeSymbols_asa_TZ", "goog.i18n.DateTimeSymbols_ast", "goog.i18n.DateTimeSymbols_ast_ES", "goog.i18n.DateTimeSymbols_az", "goog.i18n.DateTimeSymbols_az_Cyrl", "goog.i18n.DateTimeSymbols_az_Cyrl_AZ", "goog.i18n.DateTimeSymbols_az_Latn", "goog.i18n.DateTimeSymbols_az_Latn_AZ", "goog.i18n.DateTimeSymbols_bas", "goog.i18n.DateTimeSymbols_bas_CM", "goog.i18n.DateTimeSymbols_be", "goog.i18n.DateTimeSymbols_be_BY", "goog.i18n.DateTimeSymbols_bem", "goog.i18n.DateTimeSymbols_bem_ZM", "goog.i18n.DateTimeSymbols_bez", "goog.i18n.DateTimeSymbols_bez_TZ", "goog.i18n.DateTimeSymbols_bg_BG", "goog.i18n.DateTimeSymbols_bm", "goog.i18n.DateTimeSymbols_bm_ML", "goog.i18n.DateTimeSymbols_bn_BD", "goog.i18n.DateTimeSymbols_bn_IN", "goog.i18n.DateTimeSymbols_bo", "goog.i18n.DateTimeSymbols_bo_CN", "goog.i18n.DateTimeSymbols_bo_IN", "goog.i18n.DateTimeSymbols_br_FR", "goog.i18n.DateTimeSymbols_brx", "goog.i18n.DateTimeSymbols_brx_IN", "goog.i18n.DateTimeSymbols_bs", "goog.i18n.DateTimeSymbols_bs_Cyrl", "goog.i18n.DateTimeSymbols_bs_Cyrl_BA", "goog.i18n.DateTimeSymbols_bs_Latn", "goog.i18n.DateTimeSymbols_bs_Latn_BA", "goog.i18n.DateTimeSymbols_byn", "goog.i18n.DateTimeSymbols_byn_ER", "goog.i18n.DateTimeSymbols_ca_AD", "goog.i18n.DateTimeSymbols_ca_ES", "goog.i18n.DateTimeSymbols_cgg", "goog.i18n.DateTimeSymbols_cgg_UG", "goog.i18n.DateTimeSymbols_chr_US", "goog.i18n.DateTimeSymbols_ckb", "goog.i18n.DateTimeSymbols_ckb_Arab", "goog.i18n.DateTimeSymbols_ckb_Arab_IQ", "goog.i18n.DateTimeSymbols_ckb_Arab_IR", "goog.i18n.DateTimeSymbols_ckb_IQ", "goog.i18n.DateTimeSymbols_ckb_IR", "goog.i18n.DateTimeSymbols_ckb_Latn", "goog.i18n.DateTimeSymbols_ckb_Latn_IQ", "goog.i18n.DateTimeSymbols_cs_CZ", "goog.i18n.DateTimeSymbols_cy_GB", "goog.i18n.DateTimeSymbols_da_DK", "goog.i18n.DateTimeSymbols_dav", "goog.i18n.DateTimeSymbols_dav_KE", "goog.i18n.DateTimeSymbols_de_BE", "goog.i18n.DateTimeSymbols_de_DE", "goog.i18n.DateTimeSymbols_de_LI", "goog.i18n.DateTimeSymbols_de_LU", "goog.i18n.DateTimeSymbols_dje", "goog.i18n.DateTimeSymbols_dje_NE", "goog.i18n.DateTimeSymbols_dua", "goog.i18n.DateTimeSymbols_dua_CM", "goog.i18n.DateTimeSymbols_dyo", "goog.i18n.DateTimeSymbols_dyo_SN", "goog.i18n.DateTimeSymbols_dz", "goog.i18n.DateTimeSymbols_dz_BT", "goog.i18n.DateTimeSymbols_ebu", "goog.i18n.DateTimeSymbols_ebu_KE", "goog.i18n.DateTimeSymbols_ee", "goog.i18n.DateTimeSymbols_ee_GH", "goog.i18n.DateTimeSymbols_ee_TG", "goog.i18n.DateTimeSymbols_el_CY", "goog.i18n.DateTimeSymbols_el_GR", "goog.i18n.DateTimeSymbols_en_150", "goog.i18n.DateTimeSymbols_en_AG", "goog.i18n.DateTimeSymbols_en_AS", "goog.i18n.DateTimeSymbols_en_BB", "goog.i18n.DateTimeSymbols_en_BE", "goog.i18n.DateTimeSymbols_en_BM", "goog.i18n.DateTimeSymbols_en_BS", "goog.i18n.DateTimeSymbols_en_BW", "goog.i18n.DateTimeSymbols_en_BZ", "goog.i18n.DateTimeSymbols_en_CA", "goog.i18n.DateTimeSymbols_en_CM", "goog.i18n.DateTimeSymbols_en_DM", "goog.i18n.DateTimeSymbols_en_Dsrt", "goog.i18n.DateTimeSymbols_en_Dsrt_US", "goog.i18n.DateTimeSymbols_en_FJ", "goog.i18n.DateTimeSymbols_en_FM", "goog.i18n.DateTimeSymbols_en_GD", "goog.i18n.DateTimeSymbols_en_GG", "goog.i18n.DateTimeSymbols_en_GH", "goog.i18n.DateTimeSymbols_en_GI", "goog.i18n.DateTimeSymbols_en_GM", "goog.i18n.DateTimeSymbols_en_GU", "goog.i18n.DateTimeSymbols_en_GY", "goog.i18n.DateTimeSymbols_en_HK", "goog.i18n.DateTimeSymbols_en_IM", "goog.i18n.DateTimeSymbols_en_JE", "goog.i18n.DateTimeSymbols_en_JM", "goog.i18n.DateTimeSymbols_en_KE", "goog.i18n.DateTimeSymbols_en_KI", "goog.i18n.DateTimeSymbols_en_KN", "goog.i18n.DateTimeSymbols_en_KY", "goog.i18n.DateTimeSymbols_en_LC", "goog.i18n.DateTimeSymbols_en_LR", "goog.i18n.DateTimeSymbols_en_LS", "goog.i18n.DateTimeSymbols_en_MG", "goog.i18n.DateTimeSymbols_en_MH", "goog.i18n.DateTimeSymbols_en_MP", "goog.i18n.DateTimeSymbols_en_MT", "goog.i18n.DateTimeSymbols_en_MU", "goog.i18n.DateTimeSymbols_en_MW", "goog.i18n.DateTimeSymbols_en_NA", "goog.i18n.DateTimeSymbols_en_NG", "goog.i18n.DateTimeSymbols_en_NZ", "goog.i18n.DateTimeSymbols_en_PG", "goog.i18n.DateTimeSymbols_en_PH", "goog.i18n.DateTimeSymbols_en_PK", "goog.i18n.DateTimeSymbols_en_PR", "goog.i18n.DateTimeSymbols_en_PW", "goog.i18n.DateTimeSymbols_en_SB", "goog.i18n.DateTimeSymbols_en_SC", "goog.i18n.DateTimeSymbols_en_SL", "goog.i18n.DateTimeSymbols_en_SS", "goog.i18n.DateTimeSymbols_en_SZ", "goog.i18n.DateTimeSymbols_en_TC", "goog.i18n.DateTimeSymbols_en_TO", "goog.i18n.DateTimeSymbols_en_TT", "goog.i18n.DateTimeSymbols_en_TZ", "goog.i18n.DateTimeSymbols_en_UG", "goog.i18n.DateTimeSymbols_en_UM", "goog.i18n.DateTimeSymbols_en_VC", "goog.i18n.DateTimeSymbols_en_VG", "goog.i18n.DateTimeSymbols_en_VI", "goog.i18n.DateTimeSymbols_en_VU", "goog.i18n.DateTimeSymbols_en_WS", "goog.i18n.DateTimeSymbols_en_ZM", "goog.i18n.DateTimeSymbols_en_ZW", "goog.i18n.DateTimeSymbols_eo", "goog.i18n.DateTimeSymbols_es_AR", "goog.i18n.DateTimeSymbols_es_BO", "goog.i18n.DateTimeSymbols_es_CL", "goog.i18n.DateTimeSymbols_es_CO", "goog.i18n.DateTimeSymbols_es_CR", "goog.i18n.DateTimeSymbols_es_CU", "goog.i18n.DateTimeSymbols_es_DO", "goog.i18n.DateTimeSymbols_es_EA", "goog.i18n.DateTimeSymbols_es_EC", "goog.i18n.DateTimeSymbols_es_GQ", "goog.i18n.DateTimeSymbols_es_GT", "goog.i18n.DateTimeSymbols_es_HN", "goog.i18n.DateTimeSymbols_es_IC", "goog.i18n.DateTimeSymbols_es_MX", "goog.i18n.DateTimeSymbols_es_NI", "goog.i18n.DateTimeSymbols_es_PA", "goog.i18n.DateTimeSymbols_es_PE", "goog.i18n.DateTimeSymbols_es_PH", "goog.i18n.DateTimeSymbols_es_PR", "goog.i18n.DateTimeSymbols_es_PY", "goog.i18n.DateTimeSymbols_es_SV", "goog.i18n.DateTimeSymbols_es_US", "goog.i18n.DateTimeSymbols_es_UY", "goog.i18n.DateTimeSymbols_es_VE", "goog.i18n.DateTimeSymbols_et_EE", "goog.i18n.DateTimeSymbols_eu_ES", "goog.i18n.DateTimeSymbols_ewo", "goog.i18n.DateTimeSymbols_ewo_CM", "goog.i18n.DateTimeSymbols_fa_AF", "goog.i18n.DateTimeSymbols_fa_IR", "goog.i18n.DateTimeSymbols_ff", "goog.i18n.DateTimeSymbols_ff_SN", "goog.i18n.DateTimeSymbols_fi_FI", "goog.i18n.DateTimeSymbols_fil_PH", "goog.i18n.DateTimeSymbols_fo", "goog.i18n.DateTimeSymbols_fo_FO", "goog.i18n.DateTimeSymbols_fr_BE", "goog.i18n.DateTimeSymbols_fr_BF", "goog.i18n.DateTimeSymbols_fr_BI", "goog.i18n.DateTimeSymbols_fr_BJ", "goog.i18n.DateTimeSymbols_fr_BL", "goog.i18n.DateTimeSymbols_fr_CD", "goog.i18n.DateTimeSymbols_fr_CF", "goog.i18n.DateTimeSymbols_fr_CG", "goog.i18n.DateTimeSymbols_fr_CH", "goog.i18n.DateTimeSymbols_fr_CI", "goog.i18n.DateTimeSymbols_fr_CM", "goog.i18n.DateTimeSymbols_fr_DJ", "goog.i18n.DateTimeSymbols_fr_DZ", "goog.i18n.DateTimeSymbols_fr_FR", "goog.i18n.DateTimeSymbols_fr_GA", "goog.i18n.DateTimeSymbols_fr_GF", "goog.i18n.DateTimeSymbols_fr_GN", "goog.i18n.DateTimeSymbols_fr_GP", "goog.i18n.DateTimeSymbols_fr_GQ", "goog.i18n.DateTimeSymbols_fr_HT", "goog.i18n.DateTimeSymbols_fr_KM", "goog.i18n.DateTimeSymbols_fr_LU", "goog.i18n.DateTimeSymbols_fr_MA", "goog.i18n.DateTimeSymbols_fr_MC", "goog.i18n.DateTimeSymbols_fr_MF", "goog.i18n.DateTimeSymbols_fr_MG", "goog.i18n.DateTimeSymbols_fr_ML", "goog.i18n.DateTimeSymbols_fr_MQ", "goog.i18n.DateTimeSymbols_fr_MR", "goog.i18n.DateTimeSymbols_fr_MU", "goog.i18n.DateTimeSymbols_fr_NC", "goog.i18n.DateTimeSymbols_fr_NE", "goog.i18n.DateTimeSymbols_fr_PF", "goog.i18n.DateTimeSymbols_fr_RE", "goog.i18n.DateTimeSymbols_fr_RW", "goog.i18n.DateTimeSymbols_fr_SC", "goog.i18n.DateTimeSymbols_fr_SN", "goog.i18n.DateTimeSymbols_fr_SY", "goog.i18n.DateTimeSymbols_fr_TD", "goog.i18n.DateTimeSymbols_fr_TG", "goog.i18n.DateTimeSymbols_fr_TN", "goog.i18n.DateTimeSymbols_fr_VU", "goog.i18n.DateTimeSymbols_fr_YT", "goog.i18n.DateTimeSymbols_fur", "goog.i18n.DateTimeSymbols_fur_IT", "goog.i18n.DateTimeSymbols_ga", "goog.i18n.DateTimeSymbols_ga_IE", "goog.i18n.DateTimeSymbols_gd", "goog.i18n.DateTimeSymbols_gd_GB", "goog.i18n.DateTimeSymbols_gl_ES", "goog.i18n.DateTimeSymbols_gsw_CH", "goog.i18n.DateTimeSymbols_gu_IN", "goog.i18n.DateTimeSymbols_guz", "goog.i18n.DateTimeSymbols_guz_KE", "goog.i18n.DateTimeSymbols_gv", "goog.i18n.DateTimeSymbols_gv_GB", "goog.i18n.DateTimeSymbols_ha", "goog.i18n.DateTimeSymbols_ha_Latn", "goog.i18n.DateTimeSymbols_ha_Latn_GH", "goog.i18n.DateTimeSymbols_ha_Latn_NE", "goog.i18n.DateTimeSymbols_ha_Latn_NG", "goog.i18n.DateTimeSymbols_haw_US", "goog.i18n.DateTimeSymbols_he_IL", "goog.i18n.DateTimeSymbols_hi_IN", "goog.i18n.DateTimeSymbols_hr_BA", "goog.i18n.DateTimeSymbols_hr_HR", "goog.i18n.DateTimeSymbols_hu_HU", "goog.i18n.DateTimeSymbols_hy", "goog.i18n.DateTimeSymbols_hy_AM", "goog.i18n.DateTimeSymbols_ia", "goog.i18n.DateTimeSymbols_ia_FR", "goog.i18n.DateTimeSymbols_id_ID", "goog.i18n.DateTimeSymbols_ig", "goog.i18n.DateTimeSymbols_ig_NG", "goog.i18n.DateTimeSymbols_ii", "goog.i18n.DateTimeSymbols_ii_CN", "goog.i18n.DateTimeSymbols_is_IS", "goog.i18n.DateTimeSymbols_it_CH", "goog.i18n.DateTimeSymbols_it_IT", "goog.i18n.DateTimeSymbols_it_SM", "goog.i18n.DateTimeSymbols_ja_JP", "goog.i18n.DateTimeSymbols_jgo", "goog.i18n.DateTimeSymbols_jgo_CM", "goog.i18n.DateTimeSymbols_jmc", "goog.i18n.DateTimeSymbols_jmc_TZ", "goog.i18n.DateTimeSymbols_ka", "goog.i18n.DateTimeSymbols_ka_GE", "goog.i18n.DateTimeSymbols_kab", "goog.i18n.DateTimeSymbols_kab_DZ", "goog.i18n.DateTimeSymbols_kam", "goog.i18n.DateTimeSymbols_kam_KE", "goog.i18n.DateTimeSymbols_kde", "goog.i18n.DateTimeSymbols_kde_TZ", "goog.i18n.DateTimeSymbols_kea", "goog.i18n.DateTimeSymbols_kea_CV", "goog.i18n.DateTimeSymbols_khq", "goog.i18n.DateTimeSymbols_khq_ML", "goog.i18n.DateTimeSymbols_ki", "goog.i18n.DateTimeSymbols_ki_KE", "goog.i18n.DateTimeSymbols_kk", "goog.i18n.DateTimeSymbols_kk_Cyrl", "goog.i18n.DateTimeSymbols_kk_Cyrl_KZ", "goog.i18n.DateTimeSymbols_kkj", "goog.i18n.DateTimeSymbols_kkj_CM", "goog.i18n.DateTimeSymbols_kl", "goog.i18n.DateTimeSymbols_kl_GL", "goog.i18n.DateTimeSymbols_kln", "goog.i18n.DateTimeSymbols_kln_KE", "goog.i18n.DateTimeSymbols_km", "goog.i18n.DateTimeSymbols_km_KH", "goog.i18n.DateTimeSymbols_kn_IN", "goog.i18n.DateTimeSymbols_ko_KP", "goog.i18n.DateTimeSymbols_ko_KR", "goog.i18n.DateTimeSymbols_kok", "goog.i18n.DateTimeSymbols_kok_IN", "goog.i18n.DateTimeSymbols_ks", "goog.i18n.DateTimeSymbols_ks_Arab", "goog.i18n.DateTimeSymbols_ks_Arab_IN", "goog.i18n.DateTimeSymbols_ksb", "goog.i18n.DateTimeSymbols_ksb_TZ", "goog.i18n.DateTimeSymbols_ksf", "goog.i18n.DateTimeSymbols_ksf_CM", "goog.i18n.DateTimeSymbols_ksh", "goog.i18n.DateTimeSymbols_ksh_DE", "goog.i18n.DateTimeSymbols_kw", "goog.i18n.DateTimeSymbols_kw_GB", "goog.i18n.DateTimeSymbols_ky", "goog.i18n.DateTimeSymbols_ky_KG", "goog.i18n.DateTimeSymbols_lag", "goog.i18n.DateTimeSymbols_lag_TZ", "goog.i18n.DateTimeSymbols_lg", "goog.i18n.DateTimeSymbols_lg_UG", "goog.i18n.DateTimeSymbols_ln_AO", "goog.i18n.DateTimeSymbols_ln_CD", "goog.i18n.DateTimeSymbols_ln_CF", "goog.i18n.DateTimeSymbols_ln_CG", "goog.i18n.DateTimeSymbols_lo", "goog.i18n.DateTimeSymbols_lo_LA", "goog.i18n.DateTimeSymbols_lt_LT", "goog.i18n.DateTimeSymbols_lu", "goog.i18n.DateTimeSymbols_lu_CD", "goog.i18n.DateTimeSymbols_luo", "goog.i18n.DateTimeSymbols_luo_KE", "goog.i18n.DateTimeSymbols_luy", "goog.i18n.DateTimeSymbols_luy_KE", "goog.i18n.DateTimeSymbols_lv_LV", "goog.i18n.DateTimeSymbols_mas", "goog.i18n.DateTimeSymbols_mas_KE", "goog.i18n.DateTimeSymbols_mas_TZ", "goog.i18n.DateTimeSymbols_mer", "goog.i18n.DateTimeSymbols_mer_KE", "goog.i18n.DateTimeSymbols_mfe", "goog.i18n.DateTimeSymbols_mfe_MU", "goog.i18n.DateTimeSymbols_mg", "goog.i18n.DateTimeSymbols_mg_MG", "goog.i18n.DateTimeSymbols_mgh", "goog.i18n.DateTimeSymbols_mgh_MZ", "goog.i18n.DateTimeSymbols_mgo", "goog.i18n.DateTimeSymbols_mgo_CM", "goog.i18n.DateTimeSymbols_mk", "goog.i18n.DateTimeSymbols_mk_MK", "goog.i18n.DateTimeSymbols_ml_IN", "goog.i18n.DateTimeSymbols_mn", "goog.i18n.DateTimeSymbols_mn_Cyrl", "goog.i18n.DateTimeSymbols_mn_Cyrl_MN", "goog.i18n.DateTimeSymbols_mr_IN", "goog.i18n.DateTimeSymbols_ms_Latn", "goog.i18n.DateTimeSymbols_ms_Latn_BN", "goog.i18n.DateTimeSymbols_ms_Latn_MY", "goog.i18n.DateTimeSymbols_ms_Latn_SG", "goog.i18n.DateTimeSymbols_mt_MT", "goog.i18n.DateTimeSymbols_mua", "goog.i18n.DateTimeSymbols_mua_CM", "goog.i18n.DateTimeSymbols_my", "goog.i18n.DateTimeSymbols_my_MM", "goog.i18n.DateTimeSymbols_naq", "goog.i18n.DateTimeSymbols_naq_NA", "goog.i18n.DateTimeSymbols_nb_NO", "goog.i18n.DateTimeSymbols_nd", "goog.i18n.DateTimeSymbols_nd_ZW", "goog.i18n.DateTimeSymbols_ne", "goog.i18n.DateTimeSymbols_ne_IN", "goog.i18n.DateTimeSymbols_ne_NP", "goog.i18n.DateTimeSymbols_nl_AW", "goog.i18n.DateTimeSymbols_nl_BE", "goog.i18n.DateTimeSymbols_nl_CW", "goog.i18n.DateTimeSymbols_nl_NL", "goog.i18n.DateTimeSymbols_nl_SR", "goog.i18n.DateTimeSymbols_nl_SX", "goog.i18n.DateTimeSymbols_nmg", "goog.i18n.DateTimeSymbols_nmg_CM", "goog.i18n.DateTimeSymbols_nn", "goog.i18n.DateTimeSymbols_nn_NO", "goog.i18n.DateTimeSymbols_nnh", "goog.i18n.DateTimeSymbols_nnh_CM", "goog.i18n.DateTimeSymbols_nr", "goog.i18n.DateTimeSymbols_nr_ZA", "goog.i18n.DateTimeSymbols_nso", "goog.i18n.DateTimeSymbols_nso_ZA", "goog.i18n.DateTimeSymbols_nus", "goog.i18n.DateTimeSymbols_nus_SD", "goog.i18n.DateTimeSymbols_nyn", "goog.i18n.DateTimeSymbols_nyn_UG", "goog.i18n.DateTimeSymbols_om", "goog.i18n.DateTimeSymbols_om_ET", "goog.i18n.DateTimeSymbols_om_KE", "goog.i18n.DateTimeSymbols_or_IN", "goog.i18n.DateTimeSymbols_os", "goog.i18n.DateTimeSymbols_os_GE", "goog.i18n.DateTimeSymbols_os_RU", "goog.i18n.DateTimeSymbols_pa", "goog.i18n.DateTimeSymbols_pa_Arab", "goog.i18n.DateTimeSymbols_pa_Arab_PK", "goog.i18n.DateTimeSymbols_pa_Guru", "goog.i18n.DateTimeSymbols_pa_Guru_IN", "goog.i18n.DateTimeSymbols_pl_PL", "goog.i18n.DateTimeSymbols_ps", "goog.i18n.DateTimeSymbols_ps_AF", "goog.i18n.DateTimeSymbols_pt_AO", "goog.i18n.DateTimeSymbols_pt_CV", "goog.i18n.DateTimeSymbols_pt_GW", "goog.i18n.DateTimeSymbols_pt_MO", "goog.i18n.DateTimeSymbols_pt_MZ", "goog.i18n.DateTimeSymbols_pt_ST", "goog.i18n.DateTimeSymbols_pt_TL", "goog.i18n.DateTimeSymbols_rm", "goog.i18n.DateTimeSymbols_rm_CH", "goog.i18n.DateTimeSymbols_rn", "goog.i18n.DateTimeSymbols_rn_BI", "goog.i18n.DateTimeSymbols_ro_MD", "goog.i18n.DateTimeSymbols_ro_RO", "goog.i18n.DateTimeSymbols_rof", "goog.i18n.DateTimeSymbols_rof_TZ", "goog.i18n.DateTimeSymbols_ru_BY", "goog.i18n.DateTimeSymbols_ru_KG", "goog.i18n.DateTimeSymbols_ru_KZ", "goog.i18n.DateTimeSymbols_ru_MD", "goog.i18n.DateTimeSymbols_ru_RU", "goog.i18n.DateTimeSymbols_ru_UA", "goog.i18n.DateTimeSymbols_rw", "goog.i18n.DateTimeSymbols_rw_RW", "goog.i18n.DateTimeSymbols_rwk", "goog.i18n.DateTimeSymbols_rwk_TZ", "goog.i18n.DateTimeSymbols_sah", "goog.i18n.DateTimeSymbols_sah_RU", "goog.i18n.DateTimeSymbols_saq", "goog.i18n.DateTimeSymbols_saq_KE", "goog.i18n.DateTimeSymbols_sbp", "goog.i18n.DateTimeSymbols_sbp_TZ", "goog.i18n.DateTimeSymbols_se", "goog.i18n.DateTimeSymbols_se_FI", "goog.i18n.DateTimeSymbols_se_NO", "goog.i18n.DateTimeSymbols_seh", "goog.i18n.DateTimeSymbols_seh_MZ", "goog.i18n.DateTimeSymbols_ses", "goog.i18n.DateTimeSymbols_ses_ML", "goog.i18n.DateTimeSymbols_sg", "goog.i18n.DateTimeSymbols_sg_CF", "goog.i18n.DateTimeSymbols_shi", "goog.i18n.DateTimeSymbols_shi_Latn", "goog.i18n.DateTimeSymbols_shi_Latn_MA", "goog.i18n.DateTimeSymbols_shi_Tfng", "goog.i18n.DateTimeSymbols_shi_Tfng_MA", "goog.i18n.DateTimeSymbols_si", "goog.i18n.DateTimeSymbols_si_LK", "goog.i18n.DateTimeSymbols_sk_SK", "goog.i18n.DateTimeSymbols_sl_SI", "goog.i18n.DateTimeSymbols_sn", "goog.i18n.DateTimeSymbols_sn_ZW", "goog.i18n.DateTimeSymbols_so", "goog.i18n.DateTimeSymbols_so_DJ", "goog.i18n.DateTimeSymbols_so_ET", "goog.i18n.DateTimeSymbols_so_KE", "goog.i18n.DateTimeSymbols_so_SO", "goog.i18n.DateTimeSymbols_sq_AL", "goog.i18n.DateTimeSymbols_sq_MK", "goog.i18n.DateTimeSymbols_sq_XK", "goog.i18n.DateTimeSymbols_sr_Cyrl", "goog.i18n.DateTimeSymbols_sr_Cyrl_BA", "goog.i18n.DateTimeSymbols_sr_Cyrl_ME", "goog.i18n.DateTimeSymbols_sr_Cyrl_RS", "goog.i18n.DateTimeSymbols_sr_Cyrl_XK", "goog.i18n.DateTimeSymbols_sr_Latn", "goog.i18n.DateTimeSymbols_sr_Latn_BA", "goog.i18n.DateTimeSymbols_sr_Latn_ME", "goog.i18n.DateTimeSymbols_sr_Latn_RS", "goog.i18n.DateTimeSymbols_sr_Latn_XK", "goog.i18n.DateTimeSymbols_ss", "goog.i18n.DateTimeSymbols_ss_SZ", "goog.i18n.DateTimeSymbols_ss_ZA", "goog.i18n.DateTimeSymbols_ssy", "goog.i18n.DateTimeSymbols_ssy_ER", "goog.i18n.DateTimeSymbols_st", "goog.i18n.DateTimeSymbols_st_LS", "goog.i18n.DateTimeSymbols_st_ZA", "goog.i18n.DateTimeSymbols_sv_AX", "goog.i18n.DateTimeSymbols_sv_FI", "goog.i18n.DateTimeSymbols_sv_SE", "goog.i18n.DateTimeSymbols_sw_KE", "goog.i18n.DateTimeSymbols_sw_TZ", "goog.i18n.DateTimeSymbols_sw_UG", "goog.i18n.DateTimeSymbols_swc", "goog.i18n.DateTimeSymbols_swc_CD", "goog.i18n.DateTimeSymbols_ta_IN", "goog.i18n.DateTimeSymbols_ta_LK", "goog.i18n.DateTimeSymbols_ta_MY", "goog.i18n.DateTimeSymbols_ta_SG", "goog.i18n.DateTimeSymbols_te_IN", "goog.i18n.DateTimeSymbols_teo", "goog.i18n.DateTimeSymbols_teo_KE", "goog.i18n.DateTimeSymbols_teo_UG", "goog.i18n.DateTimeSymbols_tg", "goog.i18n.DateTimeSymbols_tg_Cyrl", "goog.i18n.DateTimeSymbols_tg_Cyrl_TJ", "goog.i18n.DateTimeSymbols_th_TH", "goog.i18n.DateTimeSymbols_ti", "goog.i18n.DateTimeSymbols_ti_ER", "goog.i18n.DateTimeSymbols_ti_ET", "goog.i18n.DateTimeSymbols_tig", "goog.i18n.DateTimeSymbols_tig_ER", "goog.i18n.DateTimeSymbols_tn", "goog.i18n.DateTimeSymbols_tn_BW", "goog.i18n.DateTimeSymbols_tn_ZA", "goog.i18n.DateTimeSymbols_to", "goog.i18n.DateTimeSymbols_to_TO", "goog.i18n.DateTimeSymbols_tr_CY", "goog.i18n.DateTimeSymbols_tr_TR", "goog.i18n.DateTimeSymbols_ts", "goog.i18n.DateTimeSymbols_ts_ZA", "goog.i18n.DateTimeSymbols_twq", "goog.i18n.DateTimeSymbols_twq_NE", "goog.i18n.DateTimeSymbols_tzm", "goog.i18n.DateTimeSymbols_tzm_Latn", "goog.i18n.DateTimeSymbols_tzm_Latn_MA", "goog.i18n.DateTimeSymbols_uk_UA", "goog.i18n.DateTimeSymbols_ur_IN", "goog.i18n.DateTimeSymbols_ur_PK", "goog.i18n.DateTimeSymbols_uz", "goog.i18n.DateTimeSymbols_uz_Arab", "goog.i18n.DateTimeSymbols_uz_Arab_AF", "goog.i18n.DateTimeSymbols_uz_Cyrl", "goog.i18n.DateTimeSymbols_uz_Cyrl_UZ", "goog.i18n.DateTimeSymbols_uz_Latn", "goog.i18n.DateTimeSymbols_uz_Latn_UZ", "goog.i18n.DateTimeSymbols_vai", "goog.i18n.DateTimeSymbols_vai_Latn", "goog.i18n.DateTimeSymbols_vai_Latn_LR", "goog.i18n.DateTimeSymbols_vai_Vaii", "goog.i18n.DateTimeSymbols_vai_Vaii_LR", "goog.i18n.DateTimeSymbols_ve", "goog.i18n.DateTimeSymbols_ve_ZA", "goog.i18n.DateTimeSymbols_vi_VN", "goog.i18n.DateTimeSymbols_vo", "goog.i18n.DateTimeSymbols_vun", "goog.i18n.DateTimeSymbols_vun_TZ", "goog.i18n.DateTimeSymbols_wae", "goog.i18n.DateTimeSymbols_wae_CH", "goog.i18n.DateTimeSymbols_wal", "goog.i18n.DateTimeSymbols_wal_ET", "goog.i18n.DateTimeSymbols_xh", "goog.i18n.DateTimeSymbols_xh_ZA", "goog.i18n.DateTimeSymbols_xog", "goog.i18n.DateTimeSymbols_xog_UG", "goog.i18n.DateTimeSymbols_yav", "goog.i18n.DateTimeSymbols_yav_CM", "goog.i18n.DateTimeSymbols_yo", "goog.i18n.DateTimeSymbols_yo_NG", "goog.i18n.DateTimeSymbols_zh_Hans", "goog.i18n.DateTimeSymbols_zh_Hans_CN", "goog.i18n.DateTimeSymbols_zh_Hans_HK", "goog.i18n.DateTimeSymbols_zh_Hans_MO", "goog.i18n.DateTimeSymbols_zh_Hans_SG", "goog.i18n.DateTimeSymbols_zh_Hant", "goog.i18n.DateTimeSymbols_zh_Hant_HK", "goog.i18n.DateTimeSymbols_zh_Hant_MO", "goog.i18n.DateTimeSymbols_zh_Hant_TW", "goog.i18n.DateTimeSymbols_zu_ZA"], ["goog.i18n.DateTimeSymbols"]); goog.addDependency("/closure/goog/i18n/graphemebreak.js", ["goog.i18n.GraphemeBreak"], ["goog.structs.InversionMap"]); goog.addDependency("/closure/goog/i18n/messageformat.js", ["goog.i18n.MessageFormat"], ["goog.asserts", "goog.i18n.NumberFormat", "goog.i18n.ordinalRules", "goog.i18n.pluralRules"]); goog.addDependency("/closure/goog/i18n/mime.js", ["goog.i18n.mime", "goog.i18n.mime.encode"], ["goog.array"]); goog.addDependency("/closure/goog/i18n/numberformat.js", ["goog.i18n.NumberFormat", "goog.i18n.NumberFormat.CurrencyStyle", "goog.i18n.NumberFormat.Format"], ["goog.asserts", "goog.i18n.CompactNumberFormatSymbols", "goog.i18n.NumberFormatSymbols", "goog.i18n.currency", "goog.math"]); goog.addDependency("/closure/goog/i18n/numberformatsymbols.js", ["goog.i18n.NumberFormatSymbols", "goog.i18n.NumberFormatSymbols_af", "goog.i18n.NumberFormatSymbols_af_ZA", "goog.i18n.NumberFormatSymbols_am", "goog.i18n.NumberFormatSymbols_am_ET", "goog.i18n.NumberFormatSymbols_ar", "goog.i18n.NumberFormatSymbols_ar_001", "goog.i18n.NumberFormatSymbols_ar_EG", "goog.i18n.NumberFormatSymbols_bg", "goog.i18n.NumberFormatSymbols_bg_BG", "goog.i18n.NumberFormatSymbols_bn", "goog.i18n.NumberFormatSymbols_bn_BD", "goog.i18n.NumberFormatSymbols_br", "goog.i18n.NumberFormatSymbols_br_FR", "goog.i18n.NumberFormatSymbols_ca", "goog.i18n.NumberFormatSymbols_ca_AD", "goog.i18n.NumberFormatSymbols_ca_ES", "goog.i18n.NumberFormatSymbols_chr", "goog.i18n.NumberFormatSymbols_chr_US", "goog.i18n.NumberFormatSymbols_cs", "goog.i18n.NumberFormatSymbols_cs_CZ", "goog.i18n.NumberFormatSymbols_cy", "goog.i18n.NumberFormatSymbols_cy_GB", "goog.i18n.NumberFormatSymbols_da", "goog.i18n.NumberFormatSymbols_da_DK", "goog.i18n.NumberFormatSymbols_de", "goog.i18n.NumberFormatSymbols_de_AT", "goog.i18n.NumberFormatSymbols_de_BE", "goog.i18n.NumberFormatSymbols_de_CH", "goog.i18n.NumberFormatSymbols_de_DE", "goog.i18n.NumberFormatSymbols_de_LU", "goog.i18n.NumberFormatSymbols_el", "goog.i18n.NumberFormatSymbols_el_GR", "goog.i18n.NumberFormatSymbols_en", "goog.i18n.NumberFormatSymbols_en_AS", "goog.i18n.NumberFormatSymbols_en_AU", "goog.i18n.NumberFormatSymbols_en_Dsrt_US", "goog.i18n.NumberFormatSymbols_en_FM", "goog.i18n.NumberFormatSymbols_en_GB", "goog.i18n.NumberFormatSymbols_en_GU", "goog.i18n.NumberFormatSymbols_en_IE", "goog.i18n.NumberFormatSymbols_en_IN", "goog.i18n.NumberFormatSymbols_en_MH", "goog.i18n.NumberFormatSymbols_en_MP", "goog.i18n.NumberFormatSymbols_en_PR", "goog.i18n.NumberFormatSymbols_en_PW", "goog.i18n.NumberFormatSymbols_en_SG", "goog.i18n.NumberFormatSymbols_en_TC", "goog.i18n.NumberFormatSymbols_en_UM", "goog.i18n.NumberFormatSymbols_en_US", "goog.i18n.NumberFormatSymbols_en_VG", "goog.i18n.NumberFormatSymbols_en_VI", "goog.i18n.NumberFormatSymbols_en_ZA", "goog.i18n.NumberFormatSymbols_es", "goog.i18n.NumberFormatSymbols_es_419", "goog.i18n.NumberFormatSymbols_es_EA", "goog.i18n.NumberFormatSymbols_es_ES", "goog.i18n.NumberFormatSymbols_es_IC", "goog.i18n.NumberFormatSymbols_et", "goog.i18n.NumberFormatSymbols_et_EE", "goog.i18n.NumberFormatSymbols_eu", "goog.i18n.NumberFormatSymbols_eu_ES", "goog.i18n.NumberFormatSymbols_fa", "goog.i18n.NumberFormatSymbols_fa_IR", "goog.i18n.NumberFormatSymbols_fi", "goog.i18n.NumberFormatSymbols_fi_FI", "goog.i18n.NumberFormatSymbols_fil", "goog.i18n.NumberFormatSymbols_fil_PH", "goog.i18n.NumberFormatSymbols_fr", "goog.i18n.NumberFormatSymbols_fr_BL", "goog.i18n.NumberFormatSymbols_fr_CA", "goog.i18n.NumberFormatSymbols_fr_FR", "goog.i18n.NumberFormatSymbols_fr_GF", "goog.i18n.NumberFormatSymbols_fr_GP", "goog.i18n.NumberFormatSymbols_fr_MC", "goog.i18n.NumberFormatSymbols_fr_MF", "goog.i18n.NumberFormatSymbols_fr_MQ", "goog.i18n.NumberFormatSymbols_fr_RE", "goog.i18n.NumberFormatSymbols_fr_YT", "goog.i18n.NumberFormatSymbols_gl", "goog.i18n.NumberFormatSymbols_gl_ES", "goog.i18n.NumberFormatSymbols_gsw", "goog.i18n.NumberFormatSymbols_gsw_CH", "goog.i18n.NumberFormatSymbols_gu", "goog.i18n.NumberFormatSymbols_gu_IN", "goog.i18n.NumberFormatSymbols_haw", "goog.i18n.NumberFormatSymbols_haw_US", "goog.i18n.NumberFormatSymbols_he", "goog.i18n.NumberFormatSymbols_he_IL", "goog.i18n.NumberFormatSymbols_hi", "goog.i18n.NumberFormatSymbols_hi_IN", "goog.i18n.NumberFormatSymbols_hr", "goog.i18n.NumberFormatSymbols_hr_HR", "goog.i18n.NumberFormatSymbols_hu", "goog.i18n.NumberFormatSymbols_hu_HU", "goog.i18n.NumberFormatSymbols_id", "goog.i18n.NumberFormatSymbols_id_ID", "goog.i18n.NumberFormatSymbols_in", "goog.i18n.NumberFormatSymbols_is", "goog.i18n.NumberFormatSymbols_is_IS", "goog.i18n.NumberFormatSymbols_it", "goog.i18n.NumberFormatSymbols_it_IT", "goog.i18n.NumberFormatSymbols_it_SM", "goog.i18n.NumberFormatSymbols_iw", "goog.i18n.NumberFormatSymbols_ja", "goog.i18n.NumberFormatSymbols_ja_JP", "goog.i18n.NumberFormatSymbols_kn", "goog.i18n.NumberFormatSymbols_kn_IN", "goog.i18n.NumberFormatSymbols_ko", "goog.i18n.NumberFormatSymbols_ko_KR", "goog.i18n.NumberFormatSymbols_ln", "goog.i18n.NumberFormatSymbols_ln_CD", "goog.i18n.NumberFormatSymbols_lt", "goog.i18n.NumberFormatSymbols_lt_LT", "goog.i18n.NumberFormatSymbols_lv", "goog.i18n.NumberFormatSymbols_lv_LV", "goog.i18n.NumberFormatSymbols_ml", "goog.i18n.NumberFormatSymbols_ml_IN", "goog.i18n.NumberFormatSymbols_mr", "goog.i18n.NumberFormatSymbols_mr_IN", "goog.i18n.NumberFormatSymbols_ms", "goog.i18n.NumberFormatSymbols_ms_Latn_MY", "goog.i18n.NumberFormatSymbols_mt", "goog.i18n.NumberFormatSymbols_mt_MT", "goog.i18n.NumberFormatSymbols_nb", "goog.i18n.NumberFormatSymbols_nb_NO", "goog.i18n.NumberFormatSymbols_nl", "goog.i18n.NumberFormatSymbols_nl_NL", "goog.i18n.NumberFormatSymbols_no", "goog.i18n.NumberFormatSymbols_or", "goog.i18n.NumberFormatSymbols_or_IN", "goog.i18n.NumberFormatSymbols_pl", "goog.i18n.NumberFormatSymbols_pl_PL", "goog.i18n.NumberFormatSymbols_pt", "goog.i18n.NumberFormatSymbols_pt_BR", "goog.i18n.NumberFormatSymbols_pt_PT", "goog.i18n.NumberFormatSymbols_ro", "goog.i18n.NumberFormatSymbols_ro_RO", "goog.i18n.NumberFormatSymbols_ru", "goog.i18n.NumberFormatSymbols_ru_RU", "goog.i18n.NumberFormatSymbols_sk", "goog.i18n.NumberFormatSymbols_sk_SK", "goog.i18n.NumberFormatSymbols_sl", "goog.i18n.NumberFormatSymbols_sl_SI", "goog.i18n.NumberFormatSymbols_sq", "goog.i18n.NumberFormatSymbols_sq_AL", "goog.i18n.NumberFormatSymbols_sr", "goog.i18n.NumberFormatSymbols_sr_Cyrl_RS", "goog.i18n.NumberFormatSymbols_sv", "goog.i18n.NumberFormatSymbols_sv_SE", "goog.i18n.NumberFormatSymbols_sw", "goog.i18n.NumberFormatSymbols_sw_TZ", "goog.i18n.NumberFormatSymbols_ta", "goog.i18n.NumberFormatSymbols_ta_IN", "goog.i18n.NumberFormatSymbols_te", "goog.i18n.NumberFormatSymbols_te_IN", "goog.i18n.NumberFormatSymbols_th", "goog.i18n.NumberFormatSymbols_th_TH", "goog.i18n.NumberFormatSymbols_tl", "goog.i18n.NumberFormatSymbols_tr", "goog.i18n.NumberFormatSymbols_tr_TR", "goog.i18n.NumberFormatSymbols_uk", "goog.i18n.NumberFormatSymbols_uk_UA", "goog.i18n.NumberFormatSymbols_ur", "goog.i18n.NumberFormatSymbols_ur_PK", "goog.i18n.NumberFormatSymbols_vi", "goog.i18n.NumberFormatSymbols_vi_VN", "goog.i18n.NumberFormatSymbols_zh", "goog.i18n.NumberFormatSymbols_zh_CN", "goog.i18n.NumberFormatSymbols_zh_HK", "goog.i18n.NumberFormatSymbols_zh_Hans_CN", "goog.i18n.NumberFormatSymbols_zh_TW", "goog.i18n.NumberFormatSymbols_zu", "goog.i18n.NumberFormatSymbols_zu_ZA"], []); goog.addDependency("/closure/goog/i18n/numberformatsymbolsext.js", ["goog.i18n.NumberFormatSymbolsExt", "goog.i18n.NumberFormatSymbols_aa", "goog.i18n.NumberFormatSymbols_aa_DJ", "goog.i18n.NumberFormatSymbols_aa_ER", "goog.i18n.NumberFormatSymbols_aa_ET", "goog.i18n.NumberFormatSymbols_af_NA", "goog.i18n.NumberFormatSymbols_agq", "goog.i18n.NumberFormatSymbols_agq_CM", "goog.i18n.NumberFormatSymbols_ak", "goog.i18n.NumberFormatSymbols_ak_GH", "goog.i18n.NumberFormatSymbols_ar_AE", "goog.i18n.NumberFormatSymbols_ar_BH", "goog.i18n.NumberFormatSymbols_ar_DJ", "goog.i18n.NumberFormatSymbols_ar_DZ", "goog.i18n.NumberFormatSymbols_ar_EH", "goog.i18n.NumberFormatSymbols_ar_ER", "goog.i18n.NumberFormatSymbols_ar_IL", "goog.i18n.NumberFormatSymbols_ar_IQ", "goog.i18n.NumberFormatSymbols_ar_JO", "goog.i18n.NumberFormatSymbols_ar_KM", "goog.i18n.NumberFormatSymbols_ar_KW", "goog.i18n.NumberFormatSymbols_ar_LB", "goog.i18n.NumberFormatSymbols_ar_LY", "goog.i18n.NumberFormatSymbols_ar_MA", "goog.i18n.NumberFormatSymbols_ar_MR", "goog.i18n.NumberFormatSymbols_ar_OM", "goog.i18n.NumberFormatSymbols_ar_PS", "goog.i18n.NumberFormatSymbols_ar_QA", "goog.i18n.NumberFormatSymbols_ar_SA", "goog.i18n.NumberFormatSymbols_ar_SD", "goog.i18n.NumberFormatSymbols_ar_SO", "goog.i18n.NumberFormatSymbols_ar_SY", "goog.i18n.NumberFormatSymbols_ar_TD", "goog.i18n.NumberFormatSymbols_ar_TN", "goog.i18n.NumberFormatSymbols_ar_YE", "goog.i18n.NumberFormatSymbols_as", "goog.i18n.NumberFormatSymbols_as_IN", "goog.i18n.NumberFormatSymbols_asa", "goog.i18n.NumberFormatSymbols_asa_TZ", "goog.i18n.NumberFormatSymbols_ast", "goog.i18n.NumberFormatSymbols_ast_ES", "goog.i18n.NumberFormatSymbols_az", "goog.i18n.NumberFormatSymbols_az_Cyrl", "goog.i18n.NumberFormatSymbols_az_Cyrl_AZ", "goog.i18n.NumberFormatSymbols_az_Latn", "goog.i18n.NumberFormatSymbols_az_Latn_AZ", "goog.i18n.NumberFormatSymbols_bas", "goog.i18n.NumberFormatSymbols_bas_CM", "goog.i18n.NumberFormatSymbols_be", "goog.i18n.NumberFormatSymbols_be_BY", "goog.i18n.NumberFormatSymbols_bem", "goog.i18n.NumberFormatSymbols_bem_ZM", "goog.i18n.NumberFormatSymbols_bez", "goog.i18n.NumberFormatSymbols_bez_TZ", "goog.i18n.NumberFormatSymbols_bm", "goog.i18n.NumberFormatSymbols_bm_ML", "goog.i18n.NumberFormatSymbols_bn_IN", "goog.i18n.NumberFormatSymbols_bo", "goog.i18n.NumberFormatSymbols_bo_CN", "goog.i18n.NumberFormatSymbols_bo_IN", "goog.i18n.NumberFormatSymbols_brx", "goog.i18n.NumberFormatSymbols_brx_IN", "goog.i18n.NumberFormatSymbols_bs", "goog.i18n.NumberFormatSymbols_bs_Cyrl", "goog.i18n.NumberFormatSymbols_bs_Cyrl_BA", "goog.i18n.NumberFormatSymbols_bs_Latn", "goog.i18n.NumberFormatSymbols_bs_Latn_BA", "goog.i18n.NumberFormatSymbols_byn", "goog.i18n.NumberFormatSymbols_byn_ER", "goog.i18n.NumberFormatSymbols_cgg", "goog.i18n.NumberFormatSymbols_cgg_UG", "goog.i18n.NumberFormatSymbols_ckb", "goog.i18n.NumberFormatSymbols_ckb_Arab", "goog.i18n.NumberFormatSymbols_ckb_Arab_IQ", "goog.i18n.NumberFormatSymbols_ckb_Arab_IR", "goog.i18n.NumberFormatSymbols_ckb_IQ", "goog.i18n.NumberFormatSymbols_ckb_IR", "goog.i18n.NumberFormatSymbols_ckb_Latn", "goog.i18n.NumberFormatSymbols_ckb_Latn_IQ", "goog.i18n.NumberFormatSymbols_dav", "goog.i18n.NumberFormatSymbols_dav_KE", "goog.i18n.NumberFormatSymbols_de_LI", "goog.i18n.NumberFormatSymbols_dje", "goog.i18n.NumberFormatSymbols_dje_NE", "goog.i18n.NumberFormatSymbols_dua", "goog.i18n.NumberFormatSymbols_dua_CM", "goog.i18n.NumberFormatSymbols_dyo", "goog.i18n.NumberFormatSymbols_dyo_SN", "goog.i18n.NumberFormatSymbols_dz", "goog.i18n.NumberFormatSymbols_dz_BT", "goog.i18n.NumberFormatSymbols_ebu", "goog.i18n.NumberFormatSymbols_ebu_KE", "goog.i18n.NumberFormatSymbols_ee", "goog.i18n.NumberFormatSymbols_ee_GH", "goog.i18n.NumberFormatSymbols_ee_TG", "goog.i18n.NumberFormatSymbols_el_CY", "goog.i18n.NumberFormatSymbols_en_150", "goog.i18n.NumberFormatSymbols_en_AG", "goog.i18n.NumberFormatSymbols_en_BB", "goog.i18n.NumberFormatSymbols_en_BE", "goog.i18n.NumberFormatSymbols_en_BM", "goog.i18n.NumberFormatSymbols_en_BS", "goog.i18n.NumberFormatSymbols_en_BW", "goog.i18n.NumberFormatSymbols_en_BZ", "goog.i18n.NumberFormatSymbols_en_CA", "goog.i18n.NumberFormatSymbols_en_CM", "goog.i18n.NumberFormatSymbols_en_DM", "goog.i18n.NumberFormatSymbols_en_Dsrt", "goog.i18n.NumberFormatSymbols_en_FJ", "goog.i18n.NumberFormatSymbols_en_GD", "goog.i18n.NumberFormatSymbols_en_GG", "goog.i18n.NumberFormatSymbols_en_GH", "goog.i18n.NumberFormatSymbols_en_GI", "goog.i18n.NumberFormatSymbols_en_GM", "goog.i18n.NumberFormatSymbols_en_GY", "goog.i18n.NumberFormatSymbols_en_HK", "goog.i18n.NumberFormatSymbols_en_IM", "goog.i18n.NumberFormatSymbols_en_JE", "goog.i18n.NumberFormatSymbols_en_JM", "goog.i18n.NumberFormatSymbols_en_KE", "goog.i18n.NumberFormatSymbols_en_KI", "goog.i18n.NumberFormatSymbols_en_KN", "goog.i18n.NumberFormatSymbols_en_KY", "goog.i18n.NumberFormatSymbols_en_LC", "goog.i18n.NumberFormatSymbols_en_LR", "goog.i18n.NumberFormatSymbols_en_LS", "goog.i18n.NumberFormatSymbols_en_MG", "goog.i18n.NumberFormatSymbols_en_MT", "goog.i18n.NumberFormatSymbols_en_MU", "goog.i18n.NumberFormatSymbols_en_MW", "goog.i18n.NumberFormatSymbols_en_NA", "goog.i18n.NumberFormatSymbols_en_NG", "goog.i18n.NumberFormatSymbols_en_NZ", "goog.i18n.NumberFormatSymbols_en_PG", "goog.i18n.NumberFormatSymbols_en_PH", "goog.i18n.NumberFormatSymbols_en_PK", "goog.i18n.NumberFormatSymbols_en_SB", "goog.i18n.NumberFormatSymbols_en_SC", "goog.i18n.NumberFormatSymbols_en_SL", "goog.i18n.NumberFormatSymbols_en_SS", "goog.i18n.NumberFormatSymbols_en_SZ", "goog.i18n.NumberFormatSymbols_en_TO", "goog.i18n.NumberFormatSymbols_en_TT", "goog.i18n.NumberFormatSymbols_en_TZ", "goog.i18n.NumberFormatSymbols_en_UG", "goog.i18n.NumberFormatSymbols_en_VC", "goog.i18n.NumberFormatSymbols_en_VU", "goog.i18n.NumberFormatSymbols_en_WS", "goog.i18n.NumberFormatSymbols_en_ZM", "goog.i18n.NumberFormatSymbols_en_ZW", "goog.i18n.NumberFormatSymbols_eo", "goog.i18n.NumberFormatSymbols_es_AR", "goog.i18n.NumberFormatSymbols_es_BO", "goog.i18n.NumberFormatSymbols_es_CL", "goog.i18n.NumberFormatSymbols_es_CO", "goog.i18n.NumberFormatSymbols_es_CR", "goog.i18n.NumberFormatSymbols_es_CU", "goog.i18n.NumberFormatSymbols_es_DO", "goog.i18n.NumberFormatSymbols_es_EC", "goog.i18n.NumberFormatSymbols_es_GQ", "goog.i18n.NumberFormatSymbols_es_GT", "goog.i18n.NumberFormatSymbols_es_HN", "goog.i18n.NumberFormatSymbols_es_MX", "goog.i18n.NumberFormatSymbols_es_NI", "goog.i18n.NumberFormatSymbols_es_PA", "goog.i18n.NumberFormatSymbols_es_PE", "goog.i18n.NumberFormatSymbols_es_PH", "goog.i18n.NumberFormatSymbols_es_PR", "goog.i18n.NumberFormatSymbols_es_PY", "goog.i18n.NumberFormatSymbols_es_SV", "goog.i18n.NumberFormatSymbols_es_US", "goog.i18n.NumberFormatSymbols_es_UY", "goog.i18n.NumberFormatSymbols_es_VE", "goog.i18n.NumberFormatSymbols_ewo", "goog.i18n.NumberFormatSymbols_ewo_CM", "goog.i18n.NumberFormatSymbols_fa_AF", "goog.i18n.NumberFormatSymbols_ff", "goog.i18n.NumberFormatSymbols_ff_SN", "goog.i18n.NumberFormatSymbols_fo", "goog.i18n.NumberFormatSymbols_fo_FO", "goog.i18n.NumberFormatSymbols_fr_BE", "goog.i18n.NumberFormatSymbols_fr_BF", "goog.i18n.NumberFormatSymbols_fr_BI", "goog.i18n.NumberFormatSymbols_fr_BJ", "goog.i18n.NumberFormatSymbols_fr_CD", "goog.i18n.NumberFormatSymbols_fr_CF", "goog.i18n.NumberFormatSymbols_fr_CG", "goog.i18n.NumberFormatSymbols_fr_CH", "goog.i18n.NumberFormatSymbols_fr_CI", "goog.i18n.NumberFormatSymbols_fr_CM", "goog.i18n.NumberFormatSymbols_fr_DJ", "goog.i18n.NumberFormatSymbols_fr_DZ", "goog.i18n.NumberFormatSymbols_fr_GA", "goog.i18n.NumberFormatSymbols_fr_GN", "goog.i18n.NumberFormatSymbols_fr_GQ", "goog.i18n.NumberFormatSymbols_fr_HT", "goog.i18n.NumberFormatSymbols_fr_KM", "goog.i18n.NumberFormatSymbols_fr_LU", "goog.i18n.NumberFormatSymbols_fr_MA", "goog.i18n.NumberFormatSymbols_fr_MG", "goog.i18n.NumberFormatSymbols_fr_ML", "goog.i18n.NumberFormatSymbols_fr_MR", "goog.i18n.NumberFormatSymbols_fr_MU", "goog.i18n.NumberFormatSymbols_fr_NC", "goog.i18n.NumberFormatSymbols_fr_NE", "goog.i18n.NumberFormatSymbols_fr_PF", "goog.i18n.NumberFormatSymbols_fr_RW", "goog.i18n.NumberFormatSymbols_fr_SC", "goog.i18n.NumberFormatSymbols_fr_SN", "goog.i18n.NumberFormatSymbols_fr_SY", "goog.i18n.NumberFormatSymbols_fr_TD", "goog.i18n.NumberFormatSymbols_fr_TG", "goog.i18n.NumberFormatSymbols_fr_TN", "goog.i18n.NumberFormatSymbols_fr_VU", "goog.i18n.NumberFormatSymbols_fur", "goog.i18n.NumberFormatSymbols_fur_IT", "goog.i18n.NumberFormatSymbols_ga", "goog.i18n.NumberFormatSymbols_ga_IE", "goog.i18n.NumberFormatSymbols_gd", "goog.i18n.NumberFormatSymbols_gd_GB", "goog.i18n.NumberFormatSymbols_guz", "goog.i18n.NumberFormatSymbols_guz_KE", "goog.i18n.NumberFormatSymbols_gv", "goog.i18n.NumberFormatSymbols_gv_GB", "goog.i18n.NumberFormatSymbols_ha", "goog.i18n.NumberFormatSymbols_ha_Latn", "goog.i18n.NumberFormatSymbols_ha_Latn_GH", "goog.i18n.NumberFormatSymbols_ha_Latn_NE", "goog.i18n.NumberFormatSymbols_ha_Latn_NG", "goog.i18n.NumberFormatSymbols_hr_BA", "goog.i18n.NumberFormatSymbols_hy", "goog.i18n.NumberFormatSymbols_hy_AM", "goog.i18n.NumberFormatSymbols_ia", "goog.i18n.NumberFormatSymbols_ia_FR", "goog.i18n.NumberFormatSymbols_ig", "goog.i18n.NumberFormatSymbols_ig_NG", "goog.i18n.NumberFormatSymbols_ii", "goog.i18n.NumberFormatSymbols_ii_CN", "goog.i18n.NumberFormatSymbols_it_CH", "goog.i18n.NumberFormatSymbols_jgo", "goog.i18n.NumberFormatSymbols_jgo_CM", "goog.i18n.NumberFormatSymbols_jmc", "goog.i18n.NumberFormatSymbols_jmc_TZ", "goog.i18n.NumberFormatSymbols_ka", "goog.i18n.NumberFormatSymbols_ka_GE", "goog.i18n.NumberFormatSymbols_kab", "goog.i18n.NumberFormatSymbols_kab_DZ", "goog.i18n.NumberFormatSymbols_kam", "goog.i18n.NumberFormatSymbols_kam_KE", "goog.i18n.NumberFormatSymbols_kde", "goog.i18n.NumberFormatSymbols_kde_TZ", "goog.i18n.NumberFormatSymbols_kea", "goog.i18n.NumberFormatSymbols_kea_CV", "goog.i18n.NumberFormatSymbols_khq", "goog.i18n.NumberFormatSymbols_khq_ML", "goog.i18n.NumberFormatSymbols_ki", "goog.i18n.NumberFormatSymbols_ki_KE", "goog.i18n.NumberFormatSymbols_kk", "goog.i18n.NumberFormatSymbols_kk_Cyrl", "goog.i18n.NumberFormatSymbols_kk_Cyrl_KZ", "goog.i18n.NumberFormatSymbols_kkj", "goog.i18n.NumberFormatSymbols_kkj_CM", "goog.i18n.NumberFormatSymbols_kl", "goog.i18n.NumberFormatSymbols_kl_GL", "goog.i18n.NumberFormatSymbols_kln", "goog.i18n.NumberFormatSymbols_kln_KE", "goog.i18n.NumberFormatSymbols_km", "goog.i18n.NumberFormatSymbols_km_KH", "goog.i18n.NumberFormatSymbols_ko_KP", "goog.i18n.NumberFormatSymbols_kok", "goog.i18n.NumberFormatSymbols_kok_IN", "goog.i18n.NumberFormatSymbols_ks", "goog.i18n.NumberFormatSymbols_ks_Arab", "goog.i18n.NumberFormatSymbols_ks_Arab_IN", "goog.i18n.NumberFormatSymbols_ksb", "goog.i18n.NumberFormatSymbols_ksb_TZ", "goog.i18n.NumberFormatSymbols_ksf", "goog.i18n.NumberFormatSymbols_ksf_CM", "goog.i18n.NumberFormatSymbols_ksh", "goog.i18n.NumberFormatSymbols_ksh_DE", "goog.i18n.NumberFormatSymbols_kw", "goog.i18n.NumberFormatSymbols_kw_GB", "goog.i18n.NumberFormatSymbols_ky", "goog.i18n.NumberFormatSymbols_ky_KG", "goog.i18n.NumberFormatSymbols_lag", "goog.i18n.NumberFormatSymbols_lag_TZ", "goog.i18n.NumberFormatSymbols_lg", "goog.i18n.NumberFormatSymbols_lg_UG", "goog.i18n.NumberFormatSymbols_ln_AO", "goog.i18n.NumberFormatSymbols_ln_CF", "goog.i18n.NumberFormatSymbols_ln_CG", "goog.i18n.NumberFormatSymbols_lo", "goog.i18n.NumberFormatSymbols_lo_LA", "goog.i18n.NumberFormatSymbols_lu", "goog.i18n.NumberFormatSymbols_lu_CD", "goog.i18n.NumberFormatSymbols_luo", "goog.i18n.NumberFormatSymbols_luo_KE", "goog.i18n.NumberFormatSymbols_luy", "goog.i18n.NumberFormatSymbols_luy_KE", "goog.i18n.NumberFormatSymbols_mas", "goog.i18n.NumberFormatSymbols_mas_KE", "goog.i18n.NumberFormatSymbols_mas_TZ", "goog.i18n.NumberFormatSymbols_mer", "goog.i18n.NumberFormatSymbols_mer_KE", "goog.i18n.NumberFormatSymbols_mfe", "goog.i18n.NumberFormatSymbols_mfe_MU", "goog.i18n.NumberFormatSymbols_mg", "goog.i18n.NumberFormatSymbols_mg_MG", "goog.i18n.NumberFormatSymbols_mgh", "goog.i18n.NumberFormatSymbols_mgh_MZ", "goog.i18n.NumberFormatSymbols_mgo", "goog.i18n.NumberFormatSymbols_mgo_CM", "goog.i18n.NumberFormatSymbols_mk", "goog.i18n.NumberFormatSymbols_mk_MK", "goog.i18n.NumberFormatSymbols_mn", "goog.i18n.NumberFormatSymbols_mn_Cyrl", "goog.i18n.NumberFormatSymbols_mn_Cyrl_MN", "goog.i18n.NumberFormatSymbols_ms_Latn", "goog.i18n.NumberFormatSymbols_ms_Latn_BN", "goog.i18n.NumberFormatSymbols_ms_Latn_SG", "goog.i18n.NumberFormatSymbols_mua", "goog.i18n.NumberFormatSymbols_mua_CM", "goog.i18n.NumberFormatSymbols_my", "goog.i18n.NumberFormatSymbols_my_MM", "goog.i18n.NumberFormatSymbols_naq", "goog.i18n.NumberFormatSymbols_naq_NA", "goog.i18n.NumberFormatSymbols_nd", "goog.i18n.NumberFormatSymbols_nd_ZW", "goog.i18n.NumberFormatSymbols_ne", "goog.i18n.NumberFormatSymbols_ne_IN", "goog.i18n.NumberFormatSymbols_ne_NP", "goog.i18n.NumberFormatSymbols_nl_AW", "goog.i18n.NumberFormatSymbols_nl_BE", "goog.i18n.NumberFormatSymbols_nl_CW", "goog.i18n.NumberFormatSymbols_nl_SR", "goog.i18n.NumberFormatSymbols_nl_SX", "goog.i18n.NumberFormatSymbols_nmg", "goog.i18n.NumberFormatSymbols_nmg_CM", "goog.i18n.NumberFormatSymbols_nn", "goog.i18n.NumberFormatSymbols_nn_NO", "goog.i18n.NumberFormatSymbols_nnh", "goog.i18n.NumberFormatSymbols_nnh_CM", "goog.i18n.NumberFormatSymbols_nr", "goog.i18n.NumberFormatSymbols_nr_ZA", "goog.i18n.NumberFormatSymbols_nso", "goog.i18n.NumberFormatSymbols_nso_ZA", "goog.i18n.NumberFormatSymbols_nus", "goog.i18n.NumberFormatSymbols_nus_SD", "goog.i18n.NumberFormatSymbols_nyn", "goog.i18n.NumberFormatSymbols_nyn_UG", "goog.i18n.NumberFormatSymbols_om", "goog.i18n.NumberFormatSymbols_om_ET", "goog.i18n.NumberFormatSymbols_om_KE", "goog.i18n.NumberFormatSymbols_os", "goog.i18n.NumberFormatSymbols_os_GE", "goog.i18n.NumberFormatSymbols_os_RU", "goog.i18n.NumberFormatSymbols_pa", "goog.i18n.NumberFormatSymbols_pa_Arab", "goog.i18n.NumberFormatSymbols_pa_Arab_PK", "goog.i18n.NumberFormatSymbols_pa_Guru", "goog.i18n.NumberFormatSymbols_pa_Guru_IN", "goog.i18n.NumberFormatSymbols_ps", "goog.i18n.NumberFormatSymbols_ps_AF", "goog.i18n.NumberFormatSymbols_pt_AO", "goog.i18n.NumberFormatSymbols_pt_CV", "goog.i18n.NumberFormatSymbols_pt_GW", "goog.i18n.NumberFormatSymbols_pt_MO", "goog.i18n.NumberFormatSymbols_pt_MZ", "goog.i18n.NumberFormatSymbols_pt_ST", "goog.i18n.NumberFormatSymbols_pt_TL", "goog.i18n.NumberFormatSymbols_rm", "goog.i18n.NumberFormatSymbols_rm_CH", "goog.i18n.NumberFormatSymbols_rn", "goog.i18n.NumberFormatSymbols_rn_BI", "goog.i18n.NumberFormatSymbols_ro_MD", "goog.i18n.NumberFormatSymbols_rof", "goog.i18n.NumberFormatSymbols_rof_TZ", "goog.i18n.NumberFormatSymbols_ru_BY", "goog.i18n.NumberFormatSymbols_ru_KG", "goog.i18n.NumberFormatSymbols_ru_KZ", "goog.i18n.NumberFormatSymbols_ru_MD", "goog.i18n.NumberFormatSymbols_ru_UA", "goog.i18n.NumberFormatSymbols_rw", "goog.i18n.NumberFormatSymbols_rw_RW", "goog.i18n.NumberFormatSymbols_rwk", "goog.i18n.NumberFormatSymbols_rwk_TZ", "goog.i18n.NumberFormatSymbols_sah", "goog.i18n.NumberFormatSymbols_sah_RU", "goog.i18n.NumberFormatSymbols_saq", "goog.i18n.NumberFormatSymbols_saq_KE", "goog.i18n.NumberFormatSymbols_sbp", "goog.i18n.NumberFormatSymbols_sbp_TZ", "goog.i18n.NumberFormatSymbols_se", "goog.i18n.NumberFormatSymbols_se_FI", "goog.i18n.NumberFormatSymbols_se_NO", "goog.i18n.NumberFormatSymbols_seh", "goog.i18n.NumberFormatSymbols_seh_MZ", "goog.i18n.NumberFormatSymbols_ses", "goog.i18n.NumberFormatSymbols_ses_ML", "goog.i18n.NumberFormatSymbols_sg", "goog.i18n.NumberFormatSymbols_sg_CF", "goog.i18n.NumberFormatSymbols_shi", "goog.i18n.NumberFormatSymbols_shi_Latn", "goog.i18n.NumberFormatSymbols_shi_Latn_MA", "goog.i18n.NumberFormatSymbols_shi_Tfng", "goog.i18n.NumberFormatSymbols_shi_Tfng_MA", "goog.i18n.NumberFormatSymbols_si", "goog.i18n.NumberFormatSymbols_si_LK", "goog.i18n.NumberFormatSymbols_sn", "goog.i18n.NumberFormatSymbols_sn_ZW", "goog.i18n.NumberFormatSymbols_so", "goog.i18n.NumberFormatSymbols_so_DJ", "goog.i18n.NumberFormatSymbols_so_ET", "goog.i18n.NumberFormatSymbols_so_KE", "goog.i18n.NumberFormatSymbols_so_SO", "goog.i18n.NumberFormatSymbols_sq_MK", "goog.i18n.NumberFormatSymbols_sq_XK", "goog.i18n.NumberFormatSymbols_sr_Cyrl", "goog.i18n.NumberFormatSymbols_sr_Cyrl_BA", "goog.i18n.NumberFormatSymbols_sr_Cyrl_ME", "goog.i18n.NumberFormatSymbols_sr_Cyrl_XK", "goog.i18n.NumberFormatSymbols_sr_Latn", "goog.i18n.NumberFormatSymbols_sr_Latn_BA", "goog.i18n.NumberFormatSymbols_sr_Latn_ME", "goog.i18n.NumberFormatSymbols_sr_Latn_RS", "goog.i18n.NumberFormatSymbols_sr_Latn_XK", "goog.i18n.NumberFormatSymbols_ss", "goog.i18n.NumberFormatSymbols_ss_SZ", "goog.i18n.NumberFormatSymbols_ss_ZA", "goog.i18n.NumberFormatSymbols_ssy", "goog.i18n.NumberFormatSymbols_ssy_ER", "goog.i18n.NumberFormatSymbols_st", "goog.i18n.NumberFormatSymbols_st_LS", "goog.i18n.NumberFormatSymbols_st_ZA", "goog.i18n.NumberFormatSymbols_sv_AX", "goog.i18n.NumberFormatSymbols_sv_FI", "goog.i18n.NumberFormatSymbols_sw_KE", "goog.i18n.NumberFormatSymbols_sw_UG", "goog.i18n.NumberFormatSymbols_swc", "goog.i18n.NumberFormatSymbols_swc_CD", "goog.i18n.NumberFormatSymbols_ta_LK", "goog.i18n.NumberFormatSymbols_ta_MY", "goog.i18n.NumberFormatSymbols_ta_SG", "goog.i18n.NumberFormatSymbols_teo", "goog.i18n.NumberFormatSymbols_teo_KE", "goog.i18n.NumberFormatSymbols_teo_UG", "goog.i18n.NumberFormatSymbols_tg", "goog.i18n.NumberFormatSymbols_tg_Cyrl", "goog.i18n.NumberFormatSymbols_tg_Cyrl_TJ", "goog.i18n.NumberFormatSymbols_ti", "goog.i18n.NumberFormatSymbols_ti_ER", "goog.i18n.NumberFormatSymbols_ti_ET", "goog.i18n.NumberFormatSymbols_tig", "goog.i18n.NumberFormatSymbols_tig_ER", "goog.i18n.NumberFormatSymbols_tn", "goog.i18n.NumberFormatSymbols_tn_BW", "goog.i18n.NumberFormatSymbols_tn_ZA", "goog.i18n.NumberFormatSymbols_to", "goog.i18n.NumberFormatSymbols_to_TO", "goog.i18n.NumberFormatSymbols_tr_CY", "goog.i18n.NumberFormatSymbols_ts", "goog.i18n.NumberFormatSymbols_ts_ZA", "goog.i18n.NumberFormatSymbols_twq", "goog.i18n.NumberFormatSymbols_twq_NE", "goog.i18n.NumberFormatSymbols_tzm", "goog.i18n.NumberFormatSymbols_tzm_Latn", "goog.i18n.NumberFormatSymbols_tzm_Latn_MA", "goog.i18n.NumberFormatSymbols_ur_IN", "goog.i18n.NumberFormatSymbols_uz", "goog.i18n.NumberFormatSymbols_uz_Arab", "goog.i18n.NumberFormatSymbols_uz_Arab_AF", "goog.i18n.NumberFormatSymbols_uz_Cyrl", "goog.i18n.NumberFormatSymbols_uz_Cyrl_UZ", "goog.i18n.NumberFormatSymbols_uz_Latn", "goog.i18n.NumberFormatSymbols_uz_Latn_UZ", "goog.i18n.NumberFormatSymbols_vai", "goog.i18n.NumberFormatSymbols_vai_Latn", "goog.i18n.NumberFormatSymbols_vai_Latn_LR", "goog.i18n.NumberFormatSymbols_vai_Vaii", "goog.i18n.NumberFormatSymbols_vai_Vaii_LR", "goog.i18n.NumberFormatSymbols_ve", "goog.i18n.NumberFormatSymbols_ve_ZA", "goog.i18n.NumberFormatSymbols_vo", "goog.i18n.NumberFormatSymbols_vun", "goog.i18n.NumberFormatSymbols_vun_TZ", "goog.i18n.NumberFormatSymbols_wae", "goog.i18n.NumberFormatSymbols_wae_CH", "goog.i18n.NumberFormatSymbols_wal", "goog.i18n.NumberFormatSymbols_wal_ET", "goog.i18n.NumberFormatSymbols_xh", "goog.i18n.NumberFormatSymbols_xh_ZA", "goog.i18n.NumberFormatSymbols_xog", "goog.i18n.NumberFormatSymbols_xog_UG", "goog.i18n.NumberFormatSymbols_yav", "goog.i18n.NumberFormatSymbols_yav_CM", "goog.i18n.NumberFormatSymbols_yo", "goog.i18n.NumberFormatSymbols_yo_NG", "goog.i18n.NumberFormatSymbols_zh_Hans", "goog.i18n.NumberFormatSymbols_zh_Hans_HK", "goog.i18n.NumberFormatSymbols_zh_Hans_MO", "goog.i18n.NumberFormatSymbols_zh_Hans_SG", "goog.i18n.NumberFormatSymbols_zh_Hant", "goog.i18n.NumberFormatSymbols_zh_Hant_HK", "goog.i18n.NumberFormatSymbols_zh_Hant_MO", "goog.i18n.NumberFormatSymbols_zh_Hant_TW"], ["goog.i18n.NumberFormatSymbols"]); goog.addDependency("/closure/goog/i18n/ordinalrules.js", ["goog.i18n.ordinalRules"], []); goog.addDependency("/closure/goog/i18n/pluralrules.js", ["goog.i18n.pluralRules"], []); goog.addDependency("/closure/goog/i18n/timezone.js", ["goog.i18n.TimeZone"], ["goog.array", "goog.date.DateLike", "goog.string"]); goog.addDependency("/closure/goog/i18n/uchar.js", ["goog.i18n.uChar"], []); goog.addDependency("/closure/goog/i18n/uchar/localnamefetcher.js", ["goog.i18n.uChar.LocalNameFetcher"], ["goog.i18n.uChar", "goog.i18n.uChar.NameFetcher", "goog.log"]); goog.addDependency("/closure/goog/i18n/uchar/namefetcher.js", ["goog.i18n.uChar.NameFetcher"], []); goog.addDependency("/closure/goog/i18n/uchar/remotenamefetcher.js", ["goog.i18n.uChar.RemoteNameFetcher"], ["goog.Disposable", "goog.Uri", "goog.i18n.uChar", "goog.i18n.uChar.NameFetcher", "goog.log", "goog.net.XhrIo", "goog.structs.Map"]); goog.addDependency("/closure/goog/iter/iter.js", ["goog.iter", "goog.iter.Iterator", "goog.iter.StopIteration"], ["goog.array", "goog.asserts"]); goog.addDependency("/closure/goog/json/evaljsonprocessor.js", ["goog.json.EvalJsonProcessor"], ["goog.json", "goog.json.Processor", "goog.json.Serializer"]); goog.addDependency("/closure/goog/json/json.js", ["goog.json", "goog.json.Serializer"], []); goog.addDependency("/closure/goog/json/nativejsonprocessor.js", ["goog.json.NativeJsonProcessor"], ["goog.asserts", "goog.json", "goog.json.Processor"]); goog.addDependency("/closure/goog/json/processor.js", ["goog.json.Processor"], ["goog.string.Parser", "goog.string.Stringifier"]); goog.addDependency("/closure/goog/labs/classdef/classdef.js", ["goog.labs.classdef"], []); goog.addDependency("/closure/goog/labs/events/touch.js", ["goog.labs.events.touch", "goog.labs.events.touch.TouchData"], ["goog.array", "goog.asserts", "goog.events.EventType", "goog.string"]); goog.addDependency("/closure/goog/labs/events/touch_test.js", ["goog.labs.events.touchTest"], ["goog.labs.events.touch", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/format/csv.js", ["goog.labs.format.csv", "goog.labs.format.csv.ParseError", "goog.labs.format.csv.Token"], ["goog.array", "goog.asserts", "goog.debug.Error", "goog.object", "goog.string", "goog.string.newlines"]); goog.addDependency("/closure/goog/labs/format/csv_test.js", ["goog.labs.format.csvTest"], ["goog.labs.format.csv", "goog.labs.format.csv.ParseError", "goog.object", "goog.testing.asserts", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/mock/mock.js", ["goog.labs.mock"], ["goog.array", "goog.debug", "goog.debug.Error", "goog.functions", "goog.json"]); goog.addDependency("/closure/goog/labs/net/image.js", ["goog.labs.net.image"], ["goog.events.EventHandler", "goog.events.EventType", "goog.net.EventType", "goog.result.SimpleResult", "goog.userAgent"]); goog.addDependency("/closure/goog/labs/net/image_test.js", ["goog.labs.net.imageTest"], ["goog.events", "goog.labs.net.image", "goog.result", "goog.result.Result", "goog.string", "goog.testing.AsyncTestCase", "goog.testing.jsunit", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/labs/net/webchannel.js", ["goog.net.WebChannel"], ["goog.events", "goog.events.Event"]); goog.addDependency("/closure/goog/labs/net/webchannel/basetestchannel.js", ["goog.labs.net.webChannel.BaseTestChannel"], ["goog.json.EvalJsonProcessor", "goog.labs.net.webChannel.Channel", "goog.labs.net.webChannel.WebChannelRequest", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.ServerReachability", "goog.labs.net.webChannel.requestStats.Stat", "goog.net.tmpnetwork"]); goog.addDependency("/closure/goog/labs/net/webchannel/channel.js", ["goog.labs.net.webChannel.Channel"], []); goog.addDependency("/closure/goog/labs/net/webchannel/requeststats.js", ["goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.Event", "goog.labs.net.webChannel.requestStats.ServerReachability", "goog.labs.net.webChannel.requestStats.ServerReachabilityEvent", "goog.labs.net.webChannel.requestStats.Stat", "goog.labs.net.webChannel.requestStats.StatEvent", "goog.labs.net.webChannel.requestStats.TimingEvent"], ["goog.events.Event", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelbase.js", ["goog.labs.net.webChannel.WebChannelBase"], ["goog.Uri", "goog.array", "goog.asserts", "goog.debug.TextFormatter", "goog.json", "goog.json.EvalJsonProcessor", "goog.labs.net.webChannel.BaseTestChannel", "goog.labs.net.webChannel.Channel", "goog.labs.net.webChannel.WebChannelDebug", "goog.labs.net.webChannel.WebChannelRequest", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.Stat", "goog.log", "goog.net.XhrIo", "goog.net.tmpnetwork", "goog.string", "goog.structs", "goog.structs.CircularBuffer"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelbase_test.js", ["goog.labs.net.webChannel.webChannelBaseTest"], ["goog.Timer", "goog.array", "goog.dom", "goog.functions", "goog.json", "goog.labs.net.webChannel.WebChannelBase", "goog.labs.net.webChannel.WebChannelDebug", "goog.labs.net.webChannel.WebChannelRequest", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.Stat", "goog.net.tmpnetwork", "goog.structs.Map", "goog.testing.MockClock", "goog.testing.PropertyReplacer", "goog.testing.asserts", "goog.testing.jsunit", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelbasetransport.js", ["goog.labs.net.webChannel.WebChannelBaseTransport"], ["goog.asserts", "goog.events.EventTarget", "goog.labs.net.webChannel.WebChannelBase", "goog.log", "goog.net.WebChannel", "goog.net.WebChannelTransport", "goog.string.path"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchanneldebug.js", ["goog.labs.net.webChannel.WebChannelDebug"], ["goog.json", "goog.log"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelrequest.js", ["goog.labs.net.webChannel.WebChannelRequest"], ["goog.Timer", "goog.async.Throttle", "goog.events.EventHandler", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.ServerReachability", "goog.labs.net.webChannel.requestStats.Stat", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.XmlHttp", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/labs/net/webchanneltransport.js", ["goog.net.WebChannelTransport"], []); goog.addDependency("/closure/goog/labs/net/webchanneltransportfactory.js", ["goog.net.createWebChannelTransport"], ["goog.functions", "goog.labs.net.webChannel.WebChannelBaseTransport"]); goog.addDependency("/closure/goog/labs/net/xhr.js", ["goog.labs.net.xhr", "goog.labs.net.xhr.Error", "goog.labs.net.xhr.HttpError", "goog.labs.net.xhr.TimeoutError"], ["goog.debug.Error", "goog.json", "goog.net.HttpStatus", "goog.net.XmlHttp", "goog.result", "goog.result.SimpleResult", "goog.string", "goog.uri.utils"]); goog.addDependency("/closure/goog/labs/object/object.js", ["goog.labs.object"], []); goog.addDependency("/closure/goog/labs/observe/notice.js", ["goog.labs.observe.Notice"], []); goog.addDependency("/closure/goog/labs/observe/observable.js", ["goog.labs.observe.Observable"], ["goog.disposable.IDisposable"]); goog.addDependency("/closure/goog/labs/observe/observableset.js", ["goog.labs.observe.ObservableSet"], ["goog.array", "goog.labs.observe.Observer"]); goog.addDependency("/closure/goog/labs/observe/observationset.js", ["goog.labs.observe.ObservationSet"], ["goog.array", "goog.labs.observe.Observer"]); goog.addDependency("/closure/goog/labs/observe/observer.js", ["goog.labs.observe.Observer"], []); goog.addDependency("/closure/goog/labs/observe/simpleobservable.js", ["goog.labs.observe.SimpleObservable"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.labs.observe.Notice", "goog.labs.observe.Observable", "goog.labs.observe.Observer", "goog.object"]); goog.addDependency("/closure/goog/labs/structs/map.js", ["goog.labs.structs.Map"], ["goog.array", "goog.asserts", "goog.labs.object", "goog.object"]); goog.addDependency("/closure/goog/labs/structs/map_perf.js", ["goog.labs.structs.mapPerf"], ["goog.dom", "goog.labs.structs.Map", "goog.structs.Map", "goog.testing.PerformanceTable", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/structs/multimap.js", ["goog.labs.structs.Multimap"], ["goog.array", "goog.labs.object", "goog.labs.structs.Map"]); goog.addDependency("/closure/goog/labs/style/pixeldensitymonitor.js", ["goog.labs.style.PixelDensityMonitor", "goog.labs.style.PixelDensityMonitor.Density", "goog.labs.style.PixelDensityMonitor.EventType"], ["goog.events", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/labs/style/pixeldensitymonitor_test.js", ["goog.labs.style.PixelDensityMonitorTest"], ["goog.array", "goog.dom.DomHelper", "goog.events", "goog.labs.style.PixelDensityMonitor", "goog.testing.MockControl", "goog.testing.jsunit", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/labs/testing/assertthat.js", ["goog.labs.testing.MatcherError", "goog.labs.testing.assertThat"], ["goog.asserts", "goog.debug.Error", "goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/decoratormatcher.js", ["goog.labs.testing.AnythingMatcher"], ["goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/dictionarymatcher.js", ["goog.labs.testing.HasEntriesMatcher", "goog.labs.testing.HasEntryMatcher", "goog.labs.testing.HasKeyMatcher", "goog.labs.testing.HasValueMatcher"], ["goog.array", "goog.asserts", "goog.labs.testing.Matcher", "goog.string"]); goog.addDependency("/closure/goog/labs/testing/logicmatcher.js", ["goog.labs.testing.AllOfMatcher", "goog.labs.testing.AnyOfMatcher", "goog.labs.testing.IsNotMatcher"], ["goog.array", "goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/matcher.js", ["goog.labs.testing.Matcher"], []); goog.addDependency("/closure/goog/labs/testing/numbermatcher.js", ["goog.labs.testing.CloseToMatcher", "goog.labs.testing.EqualToMatcher", "goog.labs.testing.GreaterThanEqualToMatcher", "goog.labs.testing.GreaterThanMatcher", "goog.labs.testing.LessThanEqualToMatcher", "goog.labs.testing.LessThanMatcher"], ["goog.asserts", "goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/objectmatcher.js", ["goog.labs.testing.HasPropertyMatcher", "goog.labs.testing.InstanceOfMatcher", "goog.labs.testing.IsNullMatcher", "goog.labs.testing.IsNullOrUndefinedMatcher", "goog.labs.testing.IsUndefinedMatcher", "goog.labs.testing.ObjectEqualsMatcher"], ["goog.labs.testing.Matcher", "goog.string"]); goog.addDependency("/closure/goog/labs/testing/stringmatcher.js", ["goog.labs.testing.ContainsStringMatcher", "goog.labs.testing.EndsWithMatcher", "goog.labs.testing.EqualToIgnoringCaseMatcher", "goog.labs.testing.EqualToIgnoringWhitespaceMatcher", "goog.labs.testing.EqualsMatcher", "goog.labs.testing.RegexMatcher", "goog.labs.testing.StartsWithMatcher", "goog.labs.testing.StringContainsInOrderMatcher"], ["goog.asserts", "goog.labs.testing.Matcher", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/browser.js", ["goog.labs.userAgent.browser"], ["goog.asserts", "goog.labs.userAgent.util", "goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/browser_test.js", ["goog.labs.userAgent.browserTest"], ["goog.labs.userAgent.browser", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/device.js", ["goog.labs.userAgent.device"], ["goog.labs.userAgent.util"]); goog.addDependency("/closure/goog/labs/useragent/device_test.js", ["goog.labs.userAgent.deviceTest"], ["goog.labs.userAgent.device", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/engine.js", ["goog.labs.userAgent.engine"], ["goog.array", "goog.labs.userAgent.util", "goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/engine_test.js", ["goog.labs.userAgent.engineTest"], ["goog.labs.userAgent.engine", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/platform.js", ["goog.labs.userAgent.platform"], ["goog.labs.userAgent.util", "goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/platform_test.js", ["goog.labs.userAgent.platformTest"], ["goog.labs.userAgent.platform", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/test_agents.js", ["goog.labs.userAgent.testAgents"], []); goog.addDependency("/closure/goog/labs/useragent/util.js", ["goog.labs.userAgent.util"], ["goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/util_test.js", ["goog.labs.userAgent.utilTest"], ["goog.labs.userAgent.testAgents", "goog.labs.userAgent.util", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/locale/countries.js", ["goog.locale.countries"], []); goog.addDependency("/closure/goog/locale/defaultlocalenameconstants.js", ["goog.locale.defaultLocaleNameConstants"], []); goog.addDependency("/closure/goog/locale/genericfontnames.js", ["goog.locale.genericFontNames"], []); goog.addDependency("/closure/goog/locale/genericfontnamesdata.js", ["goog.locale.genericFontNamesData"], []); goog.addDependency("/closure/goog/locale/locale.js", ["goog.locale"], ["goog.locale.nativeNameConstants"]); goog.addDependency("/closure/goog/locale/nativenameconstants.js", ["goog.locale.nativeNameConstants"], []); goog.addDependency("/closure/goog/locale/scriptToLanguages.js", ["goog.locale.scriptToLanguages"], ["goog.locale"]); goog.addDependency("/closure/goog/locale/timezonedetection.js", ["goog.locale.timeZoneDetection"], ["goog.locale", "goog.locale.TimeZoneFingerprint"]); goog.addDependency("/closure/goog/locale/timezonefingerprint.js", ["goog.locale.TimeZoneFingerprint"], []); goog.addDependency("/closure/goog/locale/timezonelist.js", ["goog.locale.TimeZoneList"], ["goog.locale"]); goog.addDependency("/closure/goog/log/log.js", ["goog.log", "goog.log.Level", "goog.log.LogRecord", "goog.log.Logger"], ["goog.debug", "goog.debug.LogRecord", "goog.debug.Logger"]); goog.addDependency("/closure/goog/log/log_test.js", ["goog.logTest"], ["goog.debug.LogManager", "goog.log", "goog.log.Level", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/math/bezier.js", ["goog.math.Bezier"], ["goog.math", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/box.js", ["goog.math.Box"], ["goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/coordinate.js", ["goog.math.Coordinate"], ["goog.math"]); goog.addDependency("/closure/goog/math/coordinate3.js", ["goog.math.Coordinate3"], []); goog.addDependency("/closure/goog/math/exponentialbackoff.js", ["goog.math.ExponentialBackoff"], ["goog.asserts"]); goog.addDependency("/closure/goog/math/integer.js", ["goog.math.Integer"], []); goog.addDependency("/closure/goog/math/interpolator/interpolator1.js", ["goog.math.interpolator.Interpolator1"], []); goog.addDependency("/closure/goog/math/interpolator/linear1.js", ["goog.math.interpolator.Linear1"], ["goog.array", "goog.math", "goog.math.interpolator.Interpolator1"]); goog.addDependency("/closure/goog/math/interpolator/pchip1.js", ["goog.math.interpolator.Pchip1"], ["goog.math", "goog.math.interpolator.Spline1"]); goog.addDependency("/closure/goog/math/interpolator/spline1.js", ["goog.math.interpolator.Spline1"], ["goog.array", "goog.math", "goog.math.interpolator.Interpolator1", "goog.math.tdma"]); goog.addDependency("/closure/goog/math/line.js", ["goog.math.Line"], ["goog.math", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/long.js", ["goog.math.Long"], []); goog.addDependency("/closure/goog/math/math.js", ["goog.math"], ["goog.array", "goog.asserts"]); goog.addDependency("/closure/goog/math/matrix.js", ["goog.math.Matrix"], ["goog.array", "goog.math", "goog.math.Size", "goog.string"]); goog.addDependency("/closure/goog/math/range.js", ["goog.math.Range"], []); goog.addDependency("/closure/goog/math/rangeset.js", ["goog.math.RangeSet"], ["goog.array", "goog.iter.Iterator", "goog.iter.StopIteration", "goog.math.Range"]); goog.addDependency("/closure/goog/math/rect.js", ["goog.math.Rect"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size"]); goog.addDependency("/closure/goog/math/size.js", ["goog.math.Size"], []); goog.addDependency("/closure/goog/math/tdma.js", ["goog.math.tdma"], []); goog.addDependency("/closure/goog/math/vec2.js", ["goog.math.Vec2"], ["goog.math", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/vec3.js", ["goog.math.Vec3"], ["goog.math", "goog.math.Coordinate3"]); goog.addDependency("/closure/goog/memoize/memoize.js", ["goog.memoize"], []); goog.addDependency("/closure/goog/messaging/abstractchannel.js", ["goog.messaging.AbstractChannel"], ["goog.Disposable", "goog.debug", "goog.json", "goog.log", "goog.messaging.MessageChannel"]); goog.addDependency("/closure/goog/messaging/bufferedchannel.js", ["goog.messaging.BufferedChannel"], ["goog.Timer", "goog.Uri", "goog.debug.Error", "goog.events", "goog.log", "goog.messaging.MessageChannel", "goog.messaging.MultiChannel"]); goog.addDependency("/closure/goog/messaging/deferredchannel.js", ["goog.messaging.DeferredChannel"], ["goog.Disposable", "goog.async.Deferred", "goog.messaging.MessageChannel"]); goog.addDependency("/closure/goog/messaging/loggerclient.js", ["goog.messaging.LoggerClient"], ["goog.Disposable", "goog.debug", "goog.debug.LogManager", "goog.debug.Logger"]); goog.addDependency("/closure/goog/messaging/loggerserver.js", ["goog.messaging.LoggerServer"], ["goog.Disposable", "goog.log"]); goog.addDependency("/closure/goog/messaging/messagechannel.js", ["goog.messaging.MessageChannel"], []); goog.addDependency("/closure/goog/messaging/messaging.js", ["goog.messaging"], ["goog.messaging.MessageChannel"]); goog.addDependency("/closure/goog/messaging/multichannel.js", ["goog.messaging.MultiChannel", "goog.messaging.MultiChannel.VirtualChannel"], ["goog.Disposable", "goog.events.EventHandler", "goog.log", "goog.messaging.MessageChannel", "goog.object"]); goog.addDependency("/closure/goog/messaging/portcaller.js", ["goog.messaging.PortCaller"], ["goog.Disposable", "goog.async.Deferred", "goog.messaging.DeferredChannel", "goog.messaging.PortChannel", "goog.messaging.PortNetwork", "goog.object"]); goog.addDependency("/closure/goog/messaging/portchannel.js", ["goog.messaging.PortChannel"], ["goog.Timer", "goog.array", "goog.async.Deferred", "goog.debug", "goog.dom", "goog.dom.DomHelper", "goog.events", "goog.events.EventType", "goog.json", "goog.log", "goog.messaging.AbstractChannel", "goog.messaging.DeferredChannel", "goog.object", "goog.string"]); goog.addDependency("/closure/goog/messaging/portnetwork.js", ["goog.messaging.PortNetwork"], []); goog.addDependency("/closure/goog/messaging/portoperator.js", ["goog.messaging.PortOperator"], ["goog.Disposable", "goog.asserts", "goog.log", "goog.messaging.PortChannel", "goog.messaging.PortNetwork", "goog.object"]); goog.addDependency("/closure/goog/messaging/respondingchannel.js", ["goog.messaging.RespondingChannel"], ["goog.Disposable", "goog.log", "goog.messaging.MessageChannel", "goog.messaging.MultiChannel", "goog.messaging.MultiChannel.VirtualChannel"]); goog.addDependency("/closure/goog/messaging/testdata/portchannel_worker.js", ["goog.messaging.testdata.portchannel_worker"], ["goog.messaging.PortChannel"]); goog.addDependency("/closure/goog/messaging/testdata/portnetwork_worker1.js", ["goog.messaging.testdata.portnetwork_worker1"], ["goog.messaging.PortCaller", "goog.messaging.PortChannel"]); goog.addDependency("/closure/goog/messaging/testdata/portnetwork_worker2.js", ["goog.messaging.testdata.portnetwork_worker2"], ["goog.messaging.PortCaller", "goog.messaging.PortChannel"]); goog.addDependency("/closure/goog/module/abstractmoduleloader.js", ["goog.module.AbstractModuleLoader"], []); goog.addDependency("/closure/goog/module/basemodule.js", ["goog.module.BaseModule"], ["goog.Disposable"]); goog.addDependency("/closure/goog/module/loader.js", ["goog.module.Loader"], ["goog.Timer", "goog.array", "goog.dom", "goog.object"]); goog.addDependency("/closure/goog/module/module.js", ["goog.module"], ["goog.array", "goog.module.Loader"]); goog.addDependency("/closure/goog/module/moduleinfo.js", ["goog.module.ModuleInfo"], ["goog.Disposable", "goog.functions", "goog.module.BaseModule", "goog.module.ModuleLoadCallback"]); goog.addDependency("/closure/goog/module/moduleloadcallback.js", ["goog.module.ModuleLoadCallback"], ["goog.debug.entryPointRegistry", "goog.debug.errorHandlerWeakDep"]); goog.addDependency("/closure/goog/module/moduleloader.js", ["goog.module.ModuleLoader"], ["goog.Timer", "goog.array", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.log", "goog.module.AbstractModuleLoader", "goog.net.BulkLoader", "goog.net.EventType", "goog.net.jsloader", "goog.userAgent.product"]); goog.addDependency("/closure/goog/module/moduleloader_test.js", ["goog.module.ModuleLoaderTest"], ["goog.array", "goog.dom", "goog.functions", "goog.module.ModuleLoader", "goog.module.ModuleManager", "goog.module.ModuleManager.CallbackType", "goog.object", "goog.testing.AsyncTestCase", "goog.testing.PropertyReplacer", "goog.testing.events.EventObserver", "goog.testing.jsunit", "goog.testing.recordFunction", "goog.userAgent.product"]); goog.addDependency("/closure/goog/module/modulemanager.js", ["goog.module.ModuleManager", "goog.module.ModuleManager.CallbackType", "goog.module.ModuleManager.FailureType"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.async.Deferred", "goog.debug.Trace", "goog.dispose", "goog.log", "goog.module.ModuleInfo", "goog.module.ModuleLoadCallback", "goog.object"]); goog.addDependency("/closure/goog/module/testdata/modA_1.js", ["goog.module.testdata.modA_1"], []); goog.addDependency("/closure/goog/module/testdata/modA_2.js", ["goog.module.testdata.modA_2"], ["goog.module.ModuleManager"]); goog.addDependency("/closure/goog/module/testdata/modB_1.js", ["goog.module.testdata.modB_1"], ["goog.module.ModuleManager"]); goog.addDependency("/closure/goog/net/browserchannel.js", ["goog.net.BrowserChannel", "goog.net.BrowserChannel.Error", "goog.net.BrowserChannel.Event", "goog.net.BrowserChannel.Handler", "goog.net.BrowserChannel.LogSaver", "goog.net.BrowserChannel.QueuedMap", "goog.net.BrowserChannel.ServerReachability", "goog.net.BrowserChannel.ServerReachabilityEvent", "goog.net.BrowserChannel.Stat", "goog.net.BrowserChannel.StatEvent", "goog.net.BrowserChannel.State", "goog.net.BrowserChannel.TimingEvent"], ["goog.Uri", "goog.array", "goog.asserts", "goog.debug.TextFormatter", "goog.events.Event", "goog.events.EventTarget", "goog.json", "goog.json.EvalJsonProcessor", "goog.log", "goog.net.BrowserTestChannel", "goog.net.ChannelDebug", "goog.net.ChannelRequest", "goog.net.XhrIo", "goog.net.tmpnetwork", "goog.string", "goog.structs", "goog.structs.CircularBuffer"]); goog.addDependency("/closure/goog/net/browsertestchannel.js", ["goog.net.BrowserTestChannel"], ["goog.json.EvalJsonProcessor", "goog.net.ChannelRequest", "goog.net.ChannelRequest.Error", "goog.net.tmpnetwork", "goog.string.Parser", "goog.userAgent"]); goog.addDependency("/closure/goog/net/bulkloader.js", ["goog.net.BulkLoader"], ["goog.events.EventHandler", "goog.events.EventTarget", "goog.log", "goog.net.BulkLoaderHelper", "goog.net.EventType", "goog.net.XhrIo"]); goog.addDependency("/closure/goog/net/bulkloaderhelper.js", ["goog.net.BulkLoaderHelper"], ["goog.Disposable", "goog.log"]); goog.addDependency("/closure/goog/net/channeldebug.js", ["goog.net.ChannelDebug"], ["goog.json", "goog.log"]); goog.addDependency("/closure/goog/net/channelrequest.js", ["goog.net.ChannelRequest", "goog.net.ChannelRequest.Error"], ["goog.Timer", "goog.async.Throttle", "goog.events.EventHandler", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.XmlHttp", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/net/cookies.js", ["goog.net.Cookies", "goog.net.cookies"], []); goog.addDependency("/closure/goog/net/crossdomainrpc.js", ["goog.net.CrossDomainRpc"], ["goog.Uri", "goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.json", "goog.log", "goog.net.EventType", "goog.net.HttpStatus", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/net/errorcode.js", ["goog.net.ErrorCode"], []); goog.addDependency("/closure/goog/net/eventtype.js", ["goog.net.EventType"], []); goog.addDependency("/closure/goog/net/filedownloader.js", ["goog.net.FileDownloader", "goog.net.FileDownloader.Error"], ["goog.Disposable", "goog.asserts", "goog.async.Deferred", "goog.crypt.hash32", "goog.debug.Error", "goog.events", "goog.events.EventHandler", "goog.fs", "goog.fs.DirectoryEntry", "goog.fs.Error", "goog.fs.FileSaver", "goog.net.EventType", "goog.net.XhrIo", "goog.net.XhrIoPool", "goog.object"]); goog.addDependency("/closure/goog/net/httpstatus.js", ["goog.net.HttpStatus"], []); goog.addDependency("/closure/goog/net/iframeio.js", ["goog.net.IframeIo", "goog.net.IframeIo.IncrementalDataEvent"], ["goog.Timer", "goog.Uri", "goog.debug", "goog.dom", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.events.EventType", "goog.json", "goog.log", "goog.net.ErrorCode", "goog.net.EventType", "goog.reflect", "goog.string", "goog.structs", "goog.userAgent"]); goog.addDependency("/closure/goog/net/iframeloadmonitor.js", ["goog.net.IframeLoadMonitor"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.userAgent"]); goog.addDependency("/closure/goog/net/imageloader.js", ["goog.net.ImageLoader"], ["goog.array", "goog.dom", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.net.EventType", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/net/ipaddress.js", ["goog.net.IpAddress", "goog.net.Ipv4Address", "goog.net.Ipv6Address"], ["goog.array", "goog.math.Integer", "goog.object", "goog.string"]); goog.addDependency("/closure/goog/net/jsloader.js", ["goog.net.jsloader", "goog.net.jsloader.Error", "goog.net.jsloader.ErrorCode", "goog.net.jsloader.Options"], ["goog.array", "goog.async.Deferred", "goog.debug.Error", "goog.dom", "goog.dom.TagName"]); goog.addDependency("/closure/goog/net/jsonp.js", ["goog.net.Jsonp"], ["goog.Uri", "goog.net.jsloader"]); goog.addDependency("/closure/goog/net/mockiframeio.js", ["goog.net.MockIFrameIo"], ["goog.events.EventTarget", "goog.json", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.IframeIo"]); goog.addDependency("/closure/goog/net/multiiframeloadmonitor.js", ["goog.net.MultiIframeLoadMonitor"], ["goog.events", "goog.net.IframeLoadMonitor"]); goog.addDependency("/closure/goog/net/networkstatusmonitor.js", ["goog.net.NetworkStatusMonitor"], ["goog.events.Listenable"]); goog.addDependency("/closure/goog/net/networktester.js", ["goog.net.NetworkTester"], ["goog.Timer", "goog.Uri", "goog.log"]); goog.addDependency("/closure/goog/net/testdata/jsloader_test1.js", ["goog.net.testdata.jsloader_test1"], []); goog.addDependency("/closure/goog/net/testdata/jsloader_test2.js", ["goog.net.testdata.jsloader_test2"], []); goog.addDependency("/closure/goog/net/testdata/jsloader_test3.js", ["goog.net.testdata.jsloader_test3"], []); goog.addDependency("/closure/goog/net/testdata/jsloader_test4.js", ["goog.net.testdata.jsloader_test4"], []); goog.addDependency("/closure/goog/net/tmpnetwork.js", ["goog.net.tmpnetwork"], ["goog.Uri", "goog.net.ChannelDebug"]); goog.addDependency("/closure/goog/net/websocket.js", ["goog.net.WebSocket", "goog.net.WebSocket.ErrorEvent", "goog.net.WebSocket.EventType", "goog.net.WebSocket.MessageEvent"], ["goog.Timer", "goog.asserts", "goog.debug.entryPointRegistry", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.log"]); goog.addDependency("/closure/goog/net/wrapperxmlhttpfactory.js", ["goog.net.WrapperXmlHttpFactory"], ["goog.net.XmlHttpFactory"]); goog.addDependency("/closure/goog/net/xhrio.js", ["goog.net.XhrIo", "goog.net.XhrIo.ResponseType"], ["goog.Timer", "goog.array", "goog.debug.entryPointRegistry", "goog.events.EventTarget", "goog.json", "goog.log", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.HttpStatus", "goog.net.XmlHttp", "goog.object", "goog.string", "goog.structs", "goog.structs.Map", "goog.uri.utils", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xhriopool.js", ["goog.net.XhrIoPool"], ["goog.net.XhrIo", "goog.structs", "goog.structs.PriorityPool"]); goog.addDependency("/closure/goog/net/xhrmanager.js", ["goog.net.XhrManager", "goog.net.XhrManager.Event", "goog.net.XhrManager.Request"], ["goog.Disposable", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.XhrIo", "goog.net.XhrIoPool", "goog.structs", "goog.structs.Map"]); goog.addDependency("/closure/goog/net/xmlhttp.js", ["goog.net.DefaultXmlHttpFactory", "goog.net.XmlHttp", "goog.net.XmlHttp.OptionType", "goog.net.XmlHttp.ReadyState"], ["goog.net.WrapperXmlHttpFactory", "goog.net.XmlHttpFactory"]); goog.addDependency("/closure/goog/net/xmlhttpfactory.js", ["goog.net.XmlHttpFactory"], []); goog.addDependency("/closure/goog/net/xpc/crosspagechannel.js", ["goog.net.xpc.CrossPageChannel"], ["goog.Disposable", "goog.Uri", "goog.async.Deferred", "goog.async.Delay", "goog.dom", "goog.events", "goog.events.EventHandler", "goog.json", "goog.messaging.AbstractChannel", "goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.FrameElementMethodTransport", "goog.net.xpc.IframePollingTransport", "goog.net.xpc.IframeRelayTransport", "goog.net.xpc.NativeMessagingTransport", "goog.net.xpc.NixTransport", "goog.net.xpc.Transport", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xpc/crosspagechannelrole.js", ["goog.net.xpc.CrossPageChannelRole"], []); goog.addDependency("/closure/goog/net/xpc/frameelementmethodtransport.js", ["goog.net.xpc.FrameElementMethodTransport"], ["goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport"]); goog.addDependency("/closure/goog/net/xpc/iframepollingtransport.js", ["goog.net.xpc.IframePollingTransport", "goog.net.xpc.IframePollingTransport.Receiver", "goog.net.xpc.IframePollingTransport.Sender"], ["goog.array", "goog.dom", "goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xpc/iframerelaytransport.js", ["goog.net.xpc.IframeRelayTransport"], ["goog.dom", "goog.events", "goog.net.xpc", "goog.net.xpc.Transport", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xpc/nativemessagingtransport.js", ["goog.net.xpc.NativeMessagingTransport"], ["goog.Timer", "goog.asserts", "goog.async.Deferred", "goog.events", "goog.events.EventHandler", "goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport"]); goog.addDependency("/closure/goog/net/xpc/nixtransport.js", ["goog.net.xpc.NixTransport"], ["goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport", "goog.reflect"]); goog.addDependency("/closure/goog/net/xpc/relay.js", ["goog.net.xpc.relay"], []); goog.addDependency("/closure/goog/net/xpc/transport.js", ["goog.net.xpc.Transport"], ["goog.Disposable", "goog.dom", "goog.net.xpc"]); goog.addDependency("/closure/goog/net/xpc/xpc.js", ["goog.net.xpc", "goog.net.xpc.CfgFields", "goog.net.xpc.ChannelStates", "goog.net.xpc.TransportNames", "goog.net.xpc.TransportTypes", "goog.net.xpc.UriCfgFields"], ["goog.log"]); goog.addDependency("/closure/goog/object/object.js", ["goog.object"], []); goog.addDependency("/closure/goog/positioning/absoluteposition.js", ["goog.positioning.AbsolutePosition"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning", "goog.positioning.AbstractPosition"]); goog.addDependency("/closure/goog/positioning/abstractposition.js", ["goog.positioning.AbstractPosition"], ["goog.math.Box", "goog.math.Size", "goog.positioning.Corner"]); goog.addDependency("/closure/goog/positioning/anchoredposition.js", ["goog.positioning.AnchoredPosition"], ["goog.math.Box", "goog.positioning", "goog.positioning.AbstractPosition"]); goog.addDependency("/closure/goog/positioning/anchoredviewportposition.js", ["goog.positioning.AnchoredViewportPosition"], ["goog.math.Box", "goog.positioning", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus"]); goog.addDependency("/closure/goog/positioning/clientposition.js", ["goog.positioning.ClientPosition"], ["goog.asserts", "goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning", "goog.positioning.AbstractPosition", "goog.style"]); goog.addDependency("/closure/goog/positioning/clientposition_test.js", ["goog.positioning.clientPositionTest"], ["goog.dom", "goog.positioning.ClientPosition", "goog.style", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/positioning/menuanchoredposition.js", ["goog.positioning.MenuAnchoredPosition"], ["goog.math.Box", "goog.math.Size", "goog.positioning", "goog.positioning.AnchoredViewportPosition", "goog.positioning.Corner", "goog.positioning.Overflow"]); goog.addDependency("/closure/goog/positioning/positioning.js", ["goog.positioning", "goog.positioning.Corner", "goog.positioning.CornerBit", "goog.positioning.Overflow", "goog.positioning.OverflowStatus"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.style", "goog.style.bidi"]); goog.addDependency("/closure/goog/positioning/positioning_test.js", ["goog.positioningTest"], ["goog.dom", "goog.dom.DomHelper", "goog.math.Box", "goog.math.Coordinate", "goog.math.Rect", "goog.math.Size", "goog.positioning", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus", "goog.style", "goog.testing.ExpectedFailures", "goog.testing.jsunit", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/positioning/viewportclientposition.js", ["goog.positioning.ViewportClientPosition"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning.ClientPosition"]); goog.addDependency("/closure/goog/positioning/viewportposition.js", ["goog.positioning.ViewportPosition"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning.AbstractPosition"]); goog.addDependency("/closure/goog/proto/proto.js", ["goog.proto"], ["goog.proto.Serializer"]); goog.addDependency("/closure/goog/proto/serializer.js", ["goog.proto.Serializer"], ["goog.json.Serializer", "goog.string"]); goog.addDependency("/closure/goog/proto2/descriptor.js", ["goog.proto2.Descriptor", "goog.proto2.Metadata"], ["goog.array", "goog.object", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/fielddescriptor.js", ["goog.proto2.FieldDescriptor"], ["goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/lazydeserializer.js", ["goog.proto2.LazyDeserializer"], ["goog.proto2.Message", "goog.proto2.Serializer", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/message.js", ["goog.proto2.Message"], ["goog.proto2.Descriptor", "goog.proto2.FieldDescriptor", "goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/objectserializer.js", ["goog.proto2.ObjectSerializer"], ["goog.proto2.Serializer", "goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/package_test.pb.js", ["someprotopackage.TestPackageTypes"], ["goog.proto2.Message", "proto2.TestAllTypes"]); goog.addDependency("/closure/goog/proto2/pbliteserializer.js", ["goog.proto2.PbLiteSerializer"], ["goog.proto2.LazyDeserializer", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/serializer.js", ["goog.proto2.Serializer"], ["goog.proto2.Descriptor", "goog.proto2.FieldDescriptor", "goog.proto2.Message", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/test.pb.js", ["proto2.TestAllTypes", "proto2.TestAllTypes.NestedEnum", "proto2.TestAllTypes.NestedMessage", "proto2.TestAllTypes.OptionalGroup", "proto2.TestAllTypes.RepeatedGroup"], ["goog.proto2.Message"]); goog.addDependency("/closure/goog/proto2/textformatserializer.js", ["goog.proto2.TextFormatSerializer", "goog.proto2.TextFormatSerializer.Parser"], ["goog.array", "goog.asserts", "goog.json", "goog.proto2.Serializer", "goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/textformatserializer_test.js", ["goog.proto2.TextFormatSerializerTest"], ["goog.proto2.TextFormatSerializer", "goog.testing.jsunit", "proto2.TestAllTypes"]); goog.addDependency("/closure/goog/proto2/util.js", ["goog.proto2.Util"], ["goog.asserts"]); goog.addDependency("/closure/goog/pubsub/pubsub.js", ["goog.pubsub.PubSub"], ["goog.Disposable", "goog.array"]); goog.addDependency("/closure/goog/reflect/reflect.js", ["goog.reflect"], []); goog.addDependency("/closure/goog/result/deferredadaptor.js", ["goog.result.DeferredAdaptor"], ["goog.async.Deferred", "goog.result", "goog.result.Result"]); goog.addDependency("/closure/goog/result/dependentresult.js", ["goog.result.DependentResult"], ["goog.result.Result"]); goog.addDependency("/closure/goog/result/result_interface.js", ["goog.result.Result"], []); goog.addDependency("/closure/goog/result/resultutil.js", ["goog.result"], ["goog.array", "goog.result.DependentResult", "goog.result.Result", "goog.result.SimpleResult"]); goog.addDependency("/closure/goog/result/simpleresult.js", ["goog.result.SimpleResult", "goog.result.SimpleResult.StateError"], ["goog.debug.Error", "goog.result.Result"]); goog.addDependency("/closure/goog/soy/data.js", ["goog.soy.data", "goog.soy.data.SanitizedContent", "goog.soy.data.SanitizedContentKind"], []); goog.addDependency("/closure/goog/soy/renderer.js", ["goog.soy.InjectedDataSupplier", "goog.soy.Renderer"], ["goog.asserts", "goog.dom", "goog.soy", "goog.soy.data.SanitizedContent", "goog.soy.data.SanitizedContentKind"]); goog.addDependency("/closure/goog/soy/soy.js", ["goog.soy"], ["goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.soy.data", "goog.string"]); goog.addDependency("/closure/goog/soy/soy_test.js", ["goog.soy.testHelper"], ["goog.dom", "goog.soy.data.SanitizedContent", "goog.soy.data.SanitizedContentKind", "goog.string", "goog.userAgent", "goog.dom.TagName"]); goog.addDependency("/closure/goog/spell/spellcheck.js", ["goog.spell.SpellCheck", "goog.spell.SpellCheck.WordChangedEvent"], ["goog.Timer", "goog.events.EventTarget", "goog.structs.Set"]); goog.addDependency("/closure/goog/stats/basicstat.js", ["goog.stats.BasicStat"], ["goog.array", "goog.iter", "goog.log", "goog.object", "goog.string.format", "goog.structs.CircularBuffer"]); goog.addDependency("/closure/goog/storage/collectablestorage.js", ["goog.storage.CollectableStorage"], ["goog.array", "goog.asserts", "goog.iter", "goog.storage.ErrorCode", "goog.storage.ExpiringStorage", "goog.storage.RichStorage.Wrapper", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/encryptedstorage.js", ["goog.storage.EncryptedStorage"], ["goog.crypt", "goog.crypt.Arc4", "goog.crypt.Sha1", "goog.crypt.base64", "goog.json", "goog.json.Serializer", "goog.storage.CollectableStorage", "goog.storage.ErrorCode", "goog.storage.RichStorage", "goog.storage.RichStorage.Wrapper", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/errorcode.js", ["goog.storage.ErrorCode"], []); goog.addDependency("/closure/goog/storage/expiringstorage.js", ["goog.storage.ExpiringStorage"], ["goog.storage.RichStorage", "goog.storage.RichStorage.Wrapper", "goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/mechanism/errorcode.js", ["goog.storage.mechanism.ErrorCode"], []); goog.addDependency("/closure/goog/storage/mechanism/errorhandlingmechanism.js", ["goog.storage.mechanism.ErrorHandlingMechanism"], ["goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/mechanism/html5localstorage.js", ["goog.storage.mechanism.HTML5LocalStorage"], ["goog.storage.mechanism.HTML5WebStorage"]); goog.addDependency("/closure/goog/storage/mechanism/html5sessionstorage.js", ["goog.storage.mechanism.HTML5SessionStorage"], ["goog.storage.mechanism.HTML5WebStorage"]); goog.addDependency("/closure/goog/storage/mechanism/html5webstorage.js", ["goog.storage.mechanism.HTML5WebStorage"], ["goog.asserts", "goog.iter.Iterator", "goog.iter.StopIteration", "goog.storage.mechanism.ErrorCode", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/mechanism/ieuserdata.js", ["goog.storage.mechanism.IEUserData"], ["goog.asserts", "goog.iter.Iterator", "goog.iter.StopIteration", "goog.storage.mechanism.ErrorCode", "goog.storage.mechanism.IterableMechanism", "goog.structs.Map", "goog.userAgent"]); goog.addDependency("/closure/goog/storage/mechanism/iterablemechanism.js", ["goog.storage.mechanism.IterableMechanism"], ["goog.array", "goog.asserts", "goog.iter", "goog.iter.Iterator", "goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/mechanism/iterablemechanismtester.js", ["goog.storage.mechanism.iterableMechanismTester"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism", "goog.testing.asserts"]); goog.addDependency("/closure/goog/storage/mechanism/mechanism.js", ["goog.storage.mechanism.Mechanism"], []); goog.addDependency("/closure/goog/storage/mechanism/mechanismfactory.js", ["goog.storage.mechanism.mechanismfactory"], ["goog.storage.mechanism.HTML5LocalStorage", "goog.storage.mechanism.HTML5SessionStorage", "goog.storage.mechanism.IEUserData", "goog.storage.mechanism.IterableMechanism", "goog.storage.mechanism.PrefixedMechanism"]); goog.addDependency("/closure/goog/storage/mechanism/mechanismseparationtester.js", ["goog.storage.mechanism.mechanismSeparationTester"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism", "goog.testing.asserts"]); goog.addDependency("/closure/goog/storage/mechanism/mechanismsharingtester.js", ["goog.storage.mechanism.mechanismSharingTester"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism", "goog.testing.asserts"]); goog.addDependency("/closure/goog/storage/mechanism/mechanismtester.js", ["goog.storage.mechanism.mechanismTester"], ["goog.storage.mechanism.ErrorCode", "goog.storage.mechanism.HTML5LocalStorage", "goog.storage.mechanism.Mechanism", "goog.testing.asserts", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/storage/mechanism/prefixedmechanism.js", ["goog.storage.mechanism.PrefixedMechanism"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/richstorage.js", ["goog.storage.RichStorage", "goog.storage.RichStorage.Wrapper"], ["goog.storage.ErrorCode", "goog.storage.Storage", "goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/storage.js", ["goog.storage.Storage"], ["goog.json", "goog.json.Serializer", "goog.storage.ErrorCode"]); goog.addDependency("/closure/goog/storage/storage_test.js", ["goog.storage.storage_test"], ["goog.storage.Storage", "goog.structs.Map", "goog.testing.asserts"]); goog.addDependency("/closure/goog/string/linkify.js", ["goog.string.linkify"], ["goog.string"]); goog.addDependency("/closure/goog/string/newlines.js", ["goog.string.newlines", "goog.string.newlines.Line"], ["goog.array"]); goog.addDependency("/closure/goog/string/newlines_test.js", ["goog.string.newlinesTest"], ["goog.string.newlines", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/string/parser.js", ["goog.string.Parser"], []); goog.addDependency("/closure/goog/string/path.js", ["goog.string.path"], ["goog.array", "goog.string"]); goog.addDependency("/closure/goog/string/string.js", ["goog.string", "goog.string.Unicode"], []); goog.addDependency("/closure/goog/string/string_test.js", ["goog.stringTest"], ["goog.functions", "goog.object", "goog.string", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/string/stringbuffer.js", ["goog.string.StringBuffer"], []); goog.addDependency("/closure/goog/string/stringformat.js", ["goog.string.format"], ["goog.string"]); goog.addDependency("/closure/goog/string/stringifier.js", ["goog.string.Stringifier"], []); goog.addDependency("/closure/goog/structs/avltree.js", ["goog.structs.AvlTree", "goog.structs.AvlTree.Node"], ["goog.structs.Collection"]); goog.addDependency("/closure/goog/structs/circularbuffer.js", ["goog.structs.CircularBuffer"], []); goog.addDependency("/closure/goog/structs/collection.js", ["goog.structs.Collection"], []); goog.addDependency("/closure/goog/structs/heap.js", ["goog.structs.Heap"], ["goog.array", "goog.object", "goog.structs.Node"]); goog.addDependency("/closure/goog/structs/inversionmap.js", ["goog.structs.InversionMap"], ["goog.array"]); goog.addDependency("/closure/goog/structs/linkedmap.js", ["goog.structs.LinkedMap"], ["goog.structs.Map"]); goog.addDependency("/closure/goog/structs/map.js", ["goog.structs.Map"], ["goog.iter.Iterator", "goog.iter.StopIteration", "goog.object"]); goog.addDependency("/closure/goog/structs/node.js", ["goog.structs.Node"], []); goog.addDependency("/closure/goog/structs/pool.js", ["goog.structs.Pool"], ["goog.Disposable", "goog.structs.Queue", "goog.structs.Set"]); goog.addDependency("/closure/goog/structs/prioritypool.js", ["goog.structs.PriorityPool"], ["goog.structs.Pool", "goog.structs.PriorityQueue"]); goog.addDependency("/closure/goog/structs/priorityqueue.js", ["goog.structs.PriorityQueue"], ["goog.structs.Heap"]); goog.addDependency("/closure/goog/structs/quadtree.js", ["goog.structs.QuadTree", "goog.structs.QuadTree.Node", "goog.structs.QuadTree.Point"], ["goog.math.Coordinate"]); goog.addDependency("/closure/goog/structs/queue.js", ["goog.structs.Queue"], ["goog.array"]); goog.addDependency("/closure/goog/structs/set.js", ["goog.structs.Set"], ["goog.structs", "goog.structs.Collection", "goog.structs.Map"]); goog.addDependency("/closure/goog/structs/simplepool.js", ["goog.structs.SimplePool"], ["goog.Disposable"]); goog.addDependency("/closure/goog/structs/stringset.js", ["goog.structs.StringSet"], ["goog.asserts", "goog.iter"]); goog.addDependency("/closure/goog/structs/structs.js", ["goog.structs"], ["goog.array", "goog.object"]); goog.addDependency("/closure/goog/structs/treenode.js", ["goog.structs.TreeNode"], ["goog.array", "goog.asserts", "goog.structs.Node"]); goog.addDependency("/closure/goog/structs/trie.js", ["goog.structs.Trie"], ["goog.object", "goog.structs"]); goog.addDependency("/closure/goog/style/bidi.js", ["goog.style.bidi"], ["goog.dom", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/style/cursor.js", ["goog.style.cursor"], ["goog.userAgent"]); goog.addDependency("/closure/goog/style/style.js", ["goog.style"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.vendor", "goog.math.Box", "goog.math.Coordinate", "goog.math.Rect", "goog.math.Size", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/style/style_test.js", ["goog.style_test"], ["goog.array", "goog.color", "goog.dom", "goog.events.BrowserEvent", "goog.math.Box", "goog.math.Coordinate", "goog.math.Rect", "goog.math.Size", "goog.object", "goog.string", "goog.style", "goog.testing.ExpectedFailures", "goog.testing.PropertyReplacer", "goog.testing.asserts", "goog.testing.jsunit", "goog.userAgent", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/style/stylescrollbartester.js", ["goog.styleScrollbarTester"], ["goog.dom", "goog.style", "goog.testing.asserts"]); goog.addDependency("/closure/goog/style/transition.js", ["goog.style.transition", "goog.style.transition.Css3Property"], ["goog.array", "goog.asserts", "goog.dom.vendor", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/asserts.js", ["goog.testing.JsUnitException", "goog.testing.asserts"], ["goog.testing.stacktrace"]); goog.addDependency("/closure/goog/testing/async/mockcontrol.js", ["goog.testing.async.MockControl"], ["goog.asserts", "goog.async.Deferred", "goog.debug", "goog.testing.asserts", "goog.testing.mockmatchers.IgnoreArgument"]); goog.addDependency("/closure/goog/testing/asynctestcase.js", ["goog.testing.AsyncTestCase", "goog.testing.AsyncTestCase.ControlBreakingException"], ["goog.testing.TestCase", "goog.testing.TestCase.Test", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/benchmark.js", ["goog.testing.benchmark"], ["goog.dom", "goog.dom.TagName", "goog.testing.PerformanceTable", "goog.testing.PerformanceTimer", "goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/continuationtestcase.js", ["goog.testing.ContinuationTestCase", "goog.testing.ContinuationTestCase.Step", "goog.testing.ContinuationTestCase.Test"], ["goog.array", "goog.events.EventHandler", "goog.testing.TestCase", "goog.testing.TestCase.Test", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/deferredtestcase.js", ["goog.testing.DeferredTestCase"], ["goog.async.Deferred", "goog.testing.AsyncTestCase", "goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/dom.js", ["goog.testing.dom"], ["goog.dom", "goog.dom.NodeIterator", "goog.dom.NodeType", "goog.dom.TagIterator", "goog.dom.TagName", "goog.dom.classes", "goog.iter", "goog.object", "goog.string", "goog.style", "goog.testing.asserts", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/editor/dom.js", ["goog.testing.editor.dom"], ["goog.dom.NodeType", "goog.dom.TagIterator", "goog.dom.TagWalkType", "goog.iter", "goog.string", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/editor/fieldmock.js", ["goog.testing.editor.FieldMock"], ["goog.dom", "goog.dom.Range", "goog.editor.Field", "goog.testing.LooseMock", "goog.testing.mockmatchers"]); goog.addDependency("/closure/goog/testing/editor/testhelper.js", ["goog.testing.editor.TestHelper"], ["goog.Disposable", "goog.dom", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.node", "goog.editor.plugins.AbstractBubblePlugin", "goog.testing.dom"]); goog.addDependency("/closure/goog/testing/events/eventobserver.js", ["goog.testing.events.EventObserver"], ["goog.array"]); goog.addDependency("/closure/goog/testing/events/events.js", ["goog.testing.events", "goog.testing.events.Event"], ["goog.Disposable", "goog.asserts", "goog.dom.NodeType", "goog.events", "goog.events.BrowserEvent", "goog.events.BrowserFeature", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.object", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/events/matchers.js", ["goog.testing.events.EventMatcher"], ["goog.events.Event", "goog.testing.mockmatchers.ArgumentMatcher"]); goog.addDependency("/closure/goog/testing/events/onlinehandler.js", ["goog.testing.events.OnlineHandler"], ["goog.events.EventTarget", "goog.net.NetworkStatusMonitor"]); goog.addDependency("/closure/goog/testing/expectedfailures.js", ["goog.testing.ExpectedFailures"], ["goog.debug.DivConsole", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.log", "goog.style", "goog.testing.JsUnitException", "goog.testing.TestCase", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/fs/blob.js", ["goog.testing.fs.Blob"], ["goog.crypt.base64"]); goog.addDependency("/closure/goog/testing/fs/entry.js", ["goog.testing.fs.DirectoryEntry", "goog.testing.fs.Entry", "goog.testing.fs.FileEntry"], ["goog.Timer", "goog.array", "goog.asserts", "goog.async.Deferred", "goog.fs.DirectoryEntry", "goog.fs.DirectoryEntryImpl", "goog.fs.Entry", "goog.fs.Error", "goog.fs.FileEntry", "goog.functions", "goog.object", "goog.string", "goog.testing.fs.File", "goog.testing.fs.FileWriter"]); goog.addDependency("/closure/goog/testing/fs/file.js", ["goog.testing.fs.File"], ["goog.testing.fs.Blob"]); goog.addDependency("/closure/goog/testing/fs/filereader.js", ["goog.testing.fs.FileReader"], ["goog.Timer", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.FileReader.EventType", "goog.fs.FileReader.ReadyState", "goog.testing.fs.File", "goog.testing.fs.ProgressEvent"]); goog.addDependency("/closure/goog/testing/fs/filesystem.js", ["goog.testing.fs.FileSystem"], ["goog.fs.FileSystem", "goog.testing.fs.DirectoryEntry"]); goog.addDependency("/closure/goog/testing/fs/filewriter.js", ["goog.testing.fs.FileWriter"], ["goog.Timer", "goog.events.Event", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.FileSaver.EventType", "goog.fs.FileSaver.ReadyState", "goog.string", "goog.testing.fs.File", "goog.testing.fs.ProgressEvent"]); goog.addDependency("/closure/goog/testing/fs/fs.js", ["goog.testing.fs"], ["goog.Timer", "goog.array", "goog.async.Deferred", "goog.fs", "goog.testing.fs.Blob", "goog.testing.fs.FileSystem"]); goog.addDependency("/closure/goog/testing/fs/progressevent.js", ["goog.testing.fs.ProgressEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/testing/functionmock.js", ["goog.testing", "goog.testing.FunctionMock", "goog.testing.GlobalFunctionMock", "goog.testing.MethodMock"], ["goog.object", "goog.testing.LooseMock", "goog.testing.Mock", "goog.testing.MockInterface", "goog.testing.PropertyReplacer", "goog.testing.StrictMock"]); goog.addDependency("/closure/goog/testing/graphics.js", ["goog.testing.graphics"], ["goog.graphics.Path.Segment", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/i18n/asserts.js", ["goog.testing.i18n.asserts"], ["goog.testing.jsunit"]); goog.addDependency("/closure/goog/testing/i18n/asserts_test.js", ["goog.testing.i18n.assertsTest"], ["goog.testing.i18n.asserts", "goog.testing.ExpectedFailures"]); goog.addDependency("/closure/goog/testing/jsunit.js", ["goog.testing.jsunit"], ["goog.testing.TestCase", "goog.testing.TestRunner"]); goog.addDependency("/closure/goog/testing/loosemock.js", ["goog.testing.LooseExpectationCollection", "goog.testing.LooseMock"], ["goog.array", "goog.structs.Map", "goog.testing.Mock"]); goog.addDependency("/closure/goog/testing/messaging/mockmessagechannel.js", ["goog.testing.messaging.MockMessageChannel"], ["goog.messaging.AbstractChannel", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/messaging/mockmessageevent.js", ["goog.testing.messaging.MockMessageEvent"], ["goog.events.BrowserEvent", "goog.events.EventType", "goog.testing.events"]); goog.addDependency("/closure/goog/testing/messaging/mockmessageport.js", ["goog.testing.messaging.MockMessagePort"], ["goog.events.EventTarget"]); goog.addDependency("/closure/goog/testing/messaging/mockportnetwork.js", ["goog.testing.messaging.MockPortNetwork"], ["goog.messaging.PortNetwork", "goog.testing.messaging.MockMessageChannel"]); goog.addDependency("/closure/goog/testing/mock.js", ["goog.testing.Mock", "goog.testing.MockExpectation"], ["goog.array", "goog.object", "goog.testing.JsUnitException", "goog.testing.MockInterface", "goog.testing.mockmatchers"]); goog.addDependency("/closure/goog/testing/mockclassfactory.js", ["goog.testing.MockClassFactory", "goog.testing.MockClassRecord"], ["goog.array", "goog.object", "goog.testing.LooseMock", "goog.testing.StrictMock", "goog.testing.TestCase", "goog.testing.mockmatchers"]); goog.addDependency("/closure/goog/testing/mockclock.js", ["goog.testing.MockClock"], ["goog.Disposable", "goog.testing.PropertyReplacer", "goog.testing.events", "goog.testing.events.Event"]); goog.addDependency("/closure/goog/testing/mockcontrol.js", ["goog.testing.MockControl"], ["goog.array", "goog.testing", "goog.testing.LooseMock", "goog.testing.MockInterface", "goog.testing.StrictMock"]); goog.addDependency("/closure/goog/testing/mockinterface.js", ["goog.testing.MockInterface"], []); goog.addDependency("/closure/goog/testing/mockmatchers.js", ["goog.testing.mockmatchers", "goog.testing.mockmatchers.ArgumentMatcher", "goog.testing.mockmatchers.IgnoreArgument", "goog.testing.mockmatchers.InstanceOf", "goog.testing.mockmatchers.ObjectEquals", "goog.testing.mockmatchers.RegexpMatch", "goog.testing.mockmatchers.SaveArgument", "goog.testing.mockmatchers.TypeOf"], ["goog.array", "goog.dom", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/mockrandom.js", ["goog.testing.MockRandom"], ["goog.Disposable"]); goog.addDependency("/closure/goog/testing/mockrange.js", ["goog.testing.MockRange"], ["goog.dom.AbstractRange", "goog.testing.LooseMock"]); goog.addDependency("/closure/goog/testing/mockstorage.js", ["goog.testing.MockStorage"], ["goog.structs.Map"]); goog.addDependency("/closure/goog/testing/mockuseragent.js", ["goog.testing.MockUserAgent"], ["goog.Disposable", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/multitestrunner.js", ["goog.testing.MultiTestRunner", "goog.testing.MultiTestRunner.TestFrame"], ["goog.Timer", "goog.array", "goog.dom", "goog.dom.classes", "goog.events.EventHandler", "goog.functions", "goog.string", "goog.ui.Component", "goog.ui.ServerChart", "goog.ui.TableSorter"]); goog.addDependency("/closure/goog/testing/net/xhrio.js", ["goog.testing.net.XhrIo"], ["goog.array", "goog.dom.xml", "goog.events", "goog.events.EventTarget", "goog.json", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.HttpStatus", "goog.net.XhrIo", "goog.net.XmlHttp", "goog.object", "goog.structs.Map"]); goog.addDependency("/closure/goog/testing/net/xhriopool.js", ["goog.testing.net.XhrIoPool"], ["goog.net.XhrIoPool", "goog.testing.net.XhrIo"]); goog.addDependency("/closure/goog/testing/objectpropertystring.js", ["goog.testing.ObjectPropertyString"], []); goog.addDependency("/closure/goog/testing/performancetable.js", ["goog.testing.PerformanceTable"], ["goog.dom", "goog.testing.PerformanceTimer"]); goog.addDependency("/closure/goog/testing/performancetimer.js", ["goog.testing.PerformanceTimer", "goog.testing.PerformanceTimer.Task"], ["goog.array", "goog.async.Deferred", "goog.math"]); goog.addDependency("/closure/goog/testing/propertyreplacer.js", ["goog.testing.PropertyReplacer"], ["goog.userAgent"]); goog.addDependency("/closure/goog/testing/proto2/proto2.js", ["goog.testing.proto2"], ["goog.proto2.Message", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/pseudorandom.js", ["goog.testing.PseudoRandom"], ["goog.Disposable"]); goog.addDependency("/closure/goog/testing/recordfunction.js", ["goog.testing.FunctionCall", "goog.testing.recordConstructor", "goog.testing.recordFunction"], []); goog.addDependency("/closure/goog/testing/shardingtestcase.js", ["goog.testing.ShardingTestCase"], ["goog.asserts", "goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/singleton.js", ["goog.testing.singleton"], []); goog.addDependency("/closure/goog/testing/stacktrace.js", ["goog.testing.stacktrace", "goog.testing.stacktrace.Frame"], []); goog.addDependency("/closure/goog/testing/storage/fakemechanism.js", ["goog.testing.storage.FakeMechanism"], ["goog.storage.mechanism.IterableMechanism", "goog.structs.Map"]); goog.addDependency("/closure/goog/testing/strictmock.js", ["goog.testing.StrictMock"], ["goog.array", "goog.testing.Mock"]); goog.addDependency("/closure/goog/testing/style/layoutasserts.js", ["goog.testing.style.layoutasserts"], ["goog.style", "goog.testing.asserts", "goog.testing.style"]); goog.addDependency("/closure/goog/testing/style/style.js", ["goog.testing.style"], ["goog.dom", "goog.math.Rect", "goog.style"]); goog.addDependency("/closure/goog/testing/testcase.js", ["goog.testing.TestCase", "goog.testing.TestCase.Error", "goog.testing.TestCase.Order", "goog.testing.TestCase.Result", "goog.testing.TestCase.Test"], ["goog.object", "goog.testing.asserts", "goog.testing.stacktrace"]); goog.addDependency("/closure/goog/testing/testqueue.js", ["goog.testing.TestQueue"], []); goog.addDependency("/closure/goog/testing/testrunner.js", ["goog.testing.TestRunner"], ["goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/ui/rendererasserts.js", ["goog.testing.ui.rendererasserts"], ["goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/ui/rendererharness.js", ["goog.testing.ui.RendererHarness"], ["goog.Disposable", "goog.dom.NodeType", "goog.testing.asserts", "goog.testing.dom"]); goog.addDependency("/closure/goog/testing/ui/style.js", ["goog.testing.ui.style"], ["goog.array", "goog.dom", "goog.dom.classes", "goog.testing.asserts"]); goog.addDependency("/closure/goog/timer/timer.js", ["goog.Timer"], ["goog.events.EventTarget"]); goog.addDependency("/closure/goog/tweak/entries.js", ["goog.tweak.BaseEntry", "goog.tweak.BasePrimitiveSetting", "goog.tweak.BaseSetting", "goog.tweak.BooleanGroup", "goog.tweak.BooleanInGroupSetting", "goog.tweak.BooleanSetting", "goog.tweak.ButtonAction", "goog.tweak.NumericSetting", "goog.tweak.StringSetting"], ["goog.array", "goog.asserts", "goog.log", "goog.object"]); goog.addDependency("/closure/goog/tweak/registry.js", ["goog.tweak.Registry"], ["goog.asserts", "goog.log", "goog.object", "goog.string", "goog.tweak.BaseEntry", "goog.uri.utils"]); goog.addDependency("/closure/goog/tweak/testhelpers.js", ["goog.tweak.testhelpers"], ["goog.tweak", "goog.tweak.BooleanGroup", "goog.tweak.BooleanInGroupSetting", "goog.tweak.BooleanSetting", "goog.tweak.ButtonAction", "goog.tweak.NumericSetting", "goog.tweak.Registry", "goog.tweak.StringSetting"]); goog.addDependency("/closure/goog/tweak/tweak.js", ["goog.tweak", "goog.tweak.ConfigParams"], ["goog.asserts", "goog.tweak.BaseSetting", "goog.tweak.BooleanGroup", "goog.tweak.BooleanInGroupSetting", "goog.tweak.BooleanSetting", "goog.tweak.ButtonAction", "goog.tweak.NumericSetting", "goog.tweak.Registry", "goog.tweak.StringSetting"]); goog.addDependency("/closure/goog/tweak/tweakui.js", ["goog.tweak.EntriesPanel", "goog.tweak.TweakUi"], ["goog.array", "goog.asserts", "goog.dom.DomHelper", "goog.object", "goog.style", "goog.tweak", "goog.ui.Zippy", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/abstractspellchecker.js", ["goog.ui.AbstractSpellChecker", "goog.ui.AbstractSpellChecker.AsyncResult"], ["goog.a11y.aria", "goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.dom.selection", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.math.Coordinate", "goog.spell.SpellCheck", "goog.structs.Set", "goog.style", "goog.ui.Component", "goog.ui.MenuItem", "goog.ui.MenuSeparator", "goog.ui.PopupMenu"]); goog.addDependency("/closure/goog/ui/ac/ac.js", ["goog.ui.ac"], ["goog.ui.ac.ArrayMatcher", "goog.ui.ac.AutoComplete", "goog.ui.ac.InputHandler", "goog.ui.ac.Renderer"]); goog.addDependency("/closure/goog/ui/ac/arraymatcher.js", ["goog.ui.ac.ArrayMatcher"], ["goog.string"]); goog.addDependency("/closure/goog/ui/ac/autocomplete.js", ["goog.ui.ac.AutoComplete", "goog.ui.ac.AutoComplete.EventType"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventTarget", "goog.object"]); goog.addDependency("/closure/goog/ui/ac/inputhandler.js", ["goog.ui.ac.InputHandler"], ["goog.Disposable", "goog.Timer", "goog.a11y.aria", "goog.dom", "goog.dom.selection", "goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.string", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/ui/ac/remote.js", ["goog.ui.ac.Remote"], ["goog.ui.ac.AutoComplete", "goog.ui.ac.InputHandler", "goog.ui.ac.RemoteArrayMatcher", "goog.ui.ac.Renderer"]); goog.addDependency("/closure/goog/ui/ac/remotearraymatcher.js", ["goog.ui.ac.RemoteArrayMatcher"], ["goog.Disposable", "goog.Uri", "goog.events", "goog.json", "goog.net.EventType", "goog.net.XhrIo"]); goog.addDependency("/closure/goog/ui/ac/renderer.js", ["goog.ui.ac.Renderer", "goog.ui.ac.Renderer.CustomRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.dispose", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.fx.dom.FadeInAndShow", "goog.fx.dom.FadeOutAndHide", "goog.positioning", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.string", "goog.style", "goog.ui.IdGenerator", "goog.ui.ac.AutoComplete"]); goog.addDependency("/closure/goog/ui/ac/renderoptions.js", ["goog.ui.ac.RenderOptions"], []); goog.addDependency("/closure/goog/ui/ac/richinputhandler.js", ["goog.ui.ac.RichInputHandler"], ["goog.ui.ac.InputHandler"]); goog.addDependency("/closure/goog/ui/ac/richremote.js", ["goog.ui.ac.RichRemote"], ["goog.ui.ac.AutoComplete", "goog.ui.ac.Remote", "goog.ui.ac.Renderer", "goog.ui.ac.RichInputHandler", "goog.ui.ac.RichRemoteArrayMatcher"]); goog.addDependency("/closure/goog/ui/ac/richremotearraymatcher.js", ["goog.ui.ac.RichRemoteArrayMatcher"], ["goog.json", "goog.ui.ac.RemoteArrayMatcher"]); goog.addDependency("/closure/goog/ui/activitymonitor.js", ["goog.ui.ActivityMonitor"], ["goog.array", "goog.asserts", "goog.dom", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("/closure/goog/ui/advancedtooltip.js", ["goog.ui.AdvancedTooltip"], ["goog.events", "goog.events.EventType", "goog.math.Box", "goog.math.Coordinate", "goog.style", "goog.ui.Tooltip", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/animatedzippy.js", ["goog.ui.AnimatedZippy"], ["goog.dom", "goog.events", "goog.fx.Animation", "goog.fx.Transition", "goog.fx.easing", "goog.ui.Zippy", "goog.ui.ZippyEvent"]); goog.addDependency("/closure/goog/ui/attachablemenu.js", ["goog.ui.AttachableMenu"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.events.Event", "goog.events.KeyCodes", "goog.string", "goog.style", "goog.ui.ItemEvent", "goog.ui.MenuBase", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/bidiinput.js", ["goog.ui.BidiInput"], ["goog.dom", "goog.events", "goog.events.InputHandler", "goog.i18n.bidi", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/bubble.js", ["goog.ui.Bubble"], ["goog.Timer", "goog.events", "goog.events.EventType", "goog.math.Box", "goog.positioning", "goog.positioning.AbsolutePosition", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.CornerBit", "goog.style", "goog.ui.Component", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/button.js", ["goog.ui.Button", "goog.ui.Button.Side"], ["goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.ui.ButtonRenderer", "goog.ui.ButtonSide", "goog.ui.Component", "goog.ui.Control", "goog.ui.NativeButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/buttonrenderer.js", ["goog.ui.ButtonRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.ui.ButtonSide", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/buttonside.js", ["goog.ui.ButtonSide"], []); goog.addDependency("/closure/goog/ui/charcounter.js", ["goog.ui.CharCounter", "goog.ui.CharCounter.Display"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.InputHandler"]); goog.addDependency("/closure/goog/ui/charpicker.js", ["goog.ui.CharPicker"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventType", "goog.events.InputHandler", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.i18n.CharListDecompressor", "goog.i18n.uChar", "goog.structs.Set", "goog.style", "goog.ui.Button", "goog.ui.Component", "goog.ui.ContainerScroller", "goog.ui.FlatButtonRenderer", "goog.ui.HoverCard", "goog.ui.LabelInput", "goog.ui.Menu", "goog.ui.MenuButton", "goog.ui.MenuItem", "goog.ui.Tooltip"]); goog.addDependency("/closure/goog/ui/checkbox.js", ["goog.ui.Checkbox", "goog.ui.Checkbox.State"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.events.EventType", "goog.events.KeyCodes", "goog.ui.CheckboxRenderer", "goog.ui.Component.EventType", "goog.ui.Component.State", "goog.ui.Control", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/checkboxmenuitem.js", ["goog.ui.CheckBoxMenuItem"], ["goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/checkboxrenderer.js", ["goog.ui.CheckboxRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom.classes", "goog.object", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/colorbutton.js", ["goog.ui.ColorButton"], ["goog.ui.Button", "goog.ui.ColorButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/colorbuttonrenderer.js", ["goog.ui.ColorButtonRenderer"], ["goog.dom.classes", "goog.functions", "goog.ui.ColorMenuButtonRenderer"]); goog.addDependency("/closure/goog/ui/colormenubutton.js", ["goog.ui.ColorMenuButton"], ["goog.array", "goog.object", "goog.ui.ColorMenuButtonRenderer", "goog.ui.ColorPalette", "goog.ui.Component", "goog.ui.Menu", "goog.ui.MenuButton", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/colormenubuttonrenderer.js", ["goog.ui.ColorMenuButtonRenderer"], ["goog.color", "goog.dom.classes", "goog.ui.MenuButtonRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/colorpalette.js", ["goog.ui.ColorPalette"], ["goog.array", "goog.color", "goog.style", "goog.ui.Palette", "goog.ui.PaletteRenderer"]); goog.addDependency("/closure/goog/ui/colorpicker.js", ["goog.ui.ColorPicker", "goog.ui.ColorPicker.EventType"], ["goog.ui.ColorPalette", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/colorsplitbehavior.js", ["goog.ui.ColorSplitBehavior"], ["goog.ui.ColorMenuButton", "goog.ui.SplitBehavior"]); goog.addDependency("/closure/goog/ui/combobox.js", ["goog.ui.ComboBox", "goog.ui.ComboBoxItem"], ["goog.Timer", "goog.dom", "goog.dom.classlist", "goog.events.EventType", "goog.events.InputHandler", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.log", "goog.positioning.Corner", "goog.positioning.MenuAnchoredPosition", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.ItemEvent", "goog.ui.LabelInput", "goog.ui.Menu", "goog.ui.MenuItem", "goog.ui.MenuSeparator", "goog.ui.registry", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/component.js", ["goog.ui.Component", "goog.ui.Component.Error", "goog.ui.Component.EventType", "goog.ui.Component.State"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.events.EventHandler", "goog.events.EventTarget", "goog.object", "goog.style", "goog.ui.IdGenerator"]); goog.addDependency("/closure/goog/ui/container.js", ["goog.ui.Container", "goog.ui.Container.EventType", "goog.ui.Container.Orientation"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.object", "goog.style", "goog.ui.Component", "goog.ui.ContainerRenderer", "goog.ui.Control"]); goog.addDependency("/closure/goog/ui/containerrenderer.js", ["goog.ui.ContainerRenderer"], ["goog.a11y.aria", "goog.array", "goog.asserts", "goog.dom.NodeType", "goog.dom.classes", "goog.string", "goog.style", "goog.ui.registry", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/containerscroller.js", ["goog.ui.ContainerScroller"], ["goog.Disposable", "goog.Timer", "goog.events.EventHandler", "goog.style", "goog.ui.Component", "goog.ui.Container"]); goog.addDependency("/closure/goog/ui/control.js", ["goog.ui.Control"], ["goog.array", "goog.dom", "goog.events.Event", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.string", "goog.ui.Component", "goog.ui.ControlContent", "goog.ui.ControlRenderer", "goog.ui.decorate", "goog.ui.registry", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/controlcontent.js", ["goog.ui.ControlContent"], []); goog.addDependency("/closure/goog/ui/controlrenderer.js", ["goog.ui.ControlRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.object", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/cookieeditor.js", ["goog.ui.CookieEditor"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events.EventType", "goog.net.cookies", "goog.string", "goog.style", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/css3buttonrenderer.js", ["goog.ui.Css3ButtonRenderer"], ["goog.dom.TagName", "goog.dom.classes", "goog.ui.Button", "goog.ui.ButtonRenderer", "goog.ui.Component", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/css3menubuttonrenderer.js", ["goog.ui.Css3MenuButtonRenderer"], ["goog.dom", "goog.dom.TagName", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.MenuButton", "goog.ui.MenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/cssnames.js", ["goog.ui.INLINE_BLOCK_CLASSNAME"], []); goog.addDependency("/closure/goog/ui/custombutton.js", ["goog.ui.CustomButton"], ["goog.ui.Button", "goog.ui.CustomButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/custombuttonrenderer.js", ["goog.ui.CustomButtonRenderer"], ["goog.a11y.aria.Role", "goog.dom.NodeType", "goog.dom.classes", "goog.string", "goog.ui.ButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME"]); goog.addDependency("/closure/goog/ui/customcolorpalette.js", ["goog.ui.CustomColorPalette"], ["goog.color", "goog.dom", "goog.dom.classes", "goog.ui.ColorPalette", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/datepicker.js", ["goog.ui.DatePicker", "goog.ui.DatePicker.Events", "goog.ui.DatePickerEvent"], ["goog.a11y.aria", "goog.asserts", "goog.date", "goog.date.Date", "goog.date.Interval", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events.Event", "goog.events.EventType", "goog.events.KeyHandler", "goog.i18n.DateTimeFormat", "goog.i18n.DateTimeSymbols", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.DefaultDatePickerRenderer", "goog.ui.IdGenerator"]); goog.addDependency("/closure/goog/ui/datepickerrenderer.js", ["goog.ui.DatePickerRenderer"], []); goog.addDependency("/closure/goog/ui/decorate.js", ["goog.ui.decorate"], ["goog.ui.registry"]); goog.addDependency("/closure/goog/ui/defaultdatepickerrenderer.js", ["goog.ui.DefaultDatePickerRenderer"], ["goog.dom", "goog.dom.TagName", "goog.ui.DatePickerRenderer"]); goog.addDependency("/closure/goog/ui/dialog.js", ["goog.ui.Dialog", "goog.ui.Dialog.ButtonSet", "goog.ui.Dialog.ButtonSet.DefaultButtons", "goog.ui.Dialog.DefaultButtonCaptions", "goog.ui.Dialog.DefaultButtonKeys", "goog.ui.Dialog.Event", "goog.ui.Dialog.EventType"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.events.KeyCodes", "goog.fx.Dragger", "goog.math.Rect", "goog.structs", "goog.structs.Map", "goog.style", "goog.ui.ModalPopup", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/dimensionpicker.js", ["goog.ui.DimensionPicker"], ["goog.events.EventType", "goog.events.KeyCodes", "goog.math.Size", "goog.ui.Component", "goog.ui.Control", "goog.ui.DimensionPickerRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/dimensionpickerrenderer.js", ["goog.ui.DimensionPickerRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.dom", "goog.dom.TagName", "goog.i18n.bidi", "goog.style", "goog.ui.ControlRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/dragdropdetector.js", ["goog.ui.DragDropDetector", "goog.ui.DragDropDetector.EventType", "goog.ui.DragDropDetector.ImageDropEvent", "goog.ui.DragDropDetector.LinkDropEvent"], ["goog.dom", "goog.dom.TagName", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.math.Coordinate", "goog.string", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/drilldownrow.js", ["goog.ui.DrilldownRow"], ["goog.dom", "goog.dom.classes", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/editor/abstractdialog.js", ["goog.ui.editor.AbstractDialog", "goog.ui.editor.AbstractDialog.Builder", "goog.ui.editor.AbstractDialog.EventType"], ["goog.dom", "goog.dom.classes", "goog.events.EventTarget", "goog.string", "goog.ui.Dialog"]); goog.addDependency("/closure/goog/ui/editor/bubble.js", ["goog.ui.editor.Bubble"], ["goog.dom", "goog.dom.TagName", "goog.dom.ViewportSizeMonitor", "goog.dom.classes", "goog.editor.style", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.log", "goog.math.Box", "goog.object", "goog.positioning", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/editor/defaulttoolbar.js", ["goog.ui.editor.ButtonDescriptor", "goog.ui.editor.DefaultToolbar"], ["goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.editor.Command", "goog.style", "goog.ui.editor.ToolbarFactory", "goog.ui.editor.messages", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/editor/equationeditordialog.js", ["goog.ui.editor.EquationEditorDialog"], ["goog.editor.Command", "goog.ui.Dialog", "goog.ui.editor.AbstractDialog", "goog.ui.editor.EquationEditorOkEvent", "goog.ui.equation.TexEditor"]); goog.addDependency("/closure/goog/ui/editor/equationeditorokevent.js", ["goog.ui.editor.EquationEditorOkEvent"], ["goog.events.Event", "goog.ui.editor.AbstractDialog"]); goog.addDependency("/closure/goog/ui/editor/linkdialog.js", ["goog.ui.editor.LinkDialog", "goog.ui.editor.LinkDialog.BeforeTestLinkEvent", "goog.ui.editor.LinkDialog.EventType", "goog.ui.editor.LinkDialog.OkEvent"], ["goog.dom", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Link", "goog.editor.focus", "goog.editor.node", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventType", "goog.events.InputHandler", "goog.string", "goog.style", "goog.ui.Button", "goog.ui.Component", "goog.ui.LinkButtonRenderer", "goog.ui.editor.AbstractDialog", "goog.ui.editor.TabPane", "goog.ui.editor.messages", "goog.userAgent", "goog.window"]); goog.addDependency("/closure/goog/ui/editor/messages.js", ["goog.ui.editor.messages"], []); goog.addDependency("/closure/goog/ui/editor/tabpane.js", ["goog.ui.editor.TabPane"], ["goog.dom.TagName", "goog.dom.classes", "goog.events.EventHandler", "goog.events.EventType", "goog.style", "goog.ui.Component", "goog.ui.Control", "goog.ui.Tab", "goog.ui.TabBar"]); goog.addDependency("/closure/goog/ui/editor/toolbarcontroller.js", ["goog.ui.editor.ToolbarController"], ["goog.editor.Field", "goog.events.EventHandler", "goog.events.EventTarget", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/editor/toolbarfactory.js", ["goog.ui.editor.ToolbarFactory"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.string", "goog.string.Unicode", "goog.style", "goog.ui.Component", "goog.ui.Container", "goog.ui.Option", "goog.ui.Toolbar", "goog.ui.ToolbarButton", "goog.ui.ToolbarColorMenuButton", "goog.ui.ToolbarMenuButton", "goog.ui.ToolbarRenderer", "goog.ui.ToolbarSelect", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/emoji/emoji.js", ["goog.ui.emoji.Emoji"], []); goog.addDependency("/closure/goog/ui/emoji/emojipalette.js", ["goog.ui.emoji.EmojiPalette"], ["goog.events.EventType", "goog.net.ImageLoader", "goog.ui.Palette", "goog.ui.emoji.Emoji", "goog.ui.emoji.EmojiPaletteRenderer"]); goog.addDependency("/closure/goog/ui/emoji/emojipaletterenderer.js", ["goog.ui.emoji.EmojiPaletteRenderer"], ["goog.a11y.aria", "goog.dom.NodeType", "goog.dom.classes", "goog.style", "goog.ui.PaletteRenderer", "goog.ui.emoji.Emoji"]); goog.addDependency("/closure/goog/ui/emoji/emojipicker.js", ["goog.ui.emoji.EmojiPicker"], ["goog.log", "goog.style", "goog.ui.Component", "goog.ui.TabPane", "goog.ui.emoji.Emoji", "goog.ui.emoji.EmojiPalette", "goog.ui.emoji.EmojiPaletteRenderer", "goog.ui.emoji.ProgressiveEmojiPaletteRenderer"]); goog.addDependency("/closure/goog/ui/emoji/popupemojipicker.js", ["goog.ui.emoji.PopupEmojiPicker"], ["goog.events.EventType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.ui.Component", "goog.ui.Popup", "goog.ui.emoji.EmojiPicker"]); goog.addDependency("/closure/goog/ui/emoji/progressiveemojipaletterenderer.js", ["goog.ui.emoji.ProgressiveEmojiPaletteRenderer"], ["goog.style", "goog.ui.emoji.EmojiPaletteRenderer"]); goog.addDependency("/closure/goog/ui/emoji/spriteinfo.js", ["goog.ui.emoji.SpriteInfo"], []); goog.addDependency("/closure/goog/ui/equation/arrowpalette.js", ["goog.ui.equation.ArrowPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/changeevent.js", ["goog.ui.equation.ChangeEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/ui/equation/comparisonpalette.js", ["goog.ui.equation.ComparisonPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/editorpane.js", ["goog.ui.equation.EditorPane"], ["goog.style", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/equation/equationeditor.js", ["goog.ui.equation.EquationEditor"], ["goog.events", "goog.ui.Component", "goog.ui.TabBar", "goog.ui.equation.ImageRenderer", "goog.ui.equation.TexPane"]); goog.addDependency("/closure/goog/ui/equation/equationeditordialog.js", ["goog.ui.equation.EquationEditorDialog"], ["goog.dom", "goog.dom.classes", "goog.ui.Dialog", "goog.ui.equation.EquationEditor", "goog.ui.equation.PaletteManager", "goog.ui.equation.TexEditor"]); goog.addDependency("/closure/goog/ui/equation/greekpalette.js", ["goog.ui.equation.GreekPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/imagerenderer.js", ["goog.ui.equation.ImageRenderer"], ["goog.dom.TagName", "goog.dom.classes", "goog.string", "goog.uri.utils"]); goog.addDependency("/closure/goog/ui/equation/mathpalette.js", ["goog.ui.equation.MathPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/menupalette.js", ["goog.ui.equation.MenuPalette", "goog.ui.equation.MenuPaletteRenderer"], ["goog.math.Size", "goog.ui.PaletteRenderer", "goog.ui.equation.Palette", "goog.ui.equation.PaletteRenderer"]); goog.addDependency("/closure/goog/ui/equation/palette.js", ["goog.ui.equation.Palette", "goog.ui.equation.PaletteEvent", "goog.ui.equation.PaletteRenderer"], ["goog.dom", "goog.dom.TagName", "goog.events.Event", "goog.ui.Palette", "goog.ui.PaletteRenderer"]); goog.addDependency("/closure/goog/ui/equation/palettemanager.js", ["goog.ui.equation.PaletteManager"], ["goog.Timer", "goog.events.EventHandler", "goog.events.EventTarget", "goog.ui.equation.ArrowPalette", "goog.ui.equation.ComparisonPalette", "goog.ui.equation.GreekPalette", "goog.ui.equation.MathPalette", "goog.ui.equation.MenuPalette", "goog.ui.equation.Palette", "goog.ui.equation.SymbolPalette"]); goog.addDependency("/closure/goog/ui/equation/symbolpalette.js", ["goog.ui.equation.SymbolPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/texeditor.js", ["goog.ui.equation.TexEditor"], ["goog.ui.Component", "goog.ui.equation.ImageRenderer", "goog.ui.equation.TexPane"]); goog.addDependency("/closure/goog/ui/equation/texpane.js", ["goog.ui.equation.TexPane"], ["goog.Timer", "goog.dom", "goog.dom.TagName", "goog.dom.selection", "goog.events", "goog.events.EventType", "goog.events.InputHandler", "goog.style", "goog.ui.equation.ChangeEvent", "goog.ui.equation.EditorPane", "goog.ui.equation.ImageRenderer", "goog.ui.equation.Palette", "goog.ui.equation.PaletteEvent"]); goog.addDependency("/closure/goog/ui/filteredmenu.js", ["goog.ui.FilteredMenu"], ["goog.dom", "goog.events", "goog.events.EventType", "goog.events.InputHandler", "goog.events.KeyCodes", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.FilterObservingMenuItem", "goog.ui.Menu", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/filterobservingmenuitem.js", ["goog.ui.FilterObservingMenuItem"], ["goog.ui.FilterObservingMenuItemRenderer", "goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/filterobservingmenuitemrenderer.js", ["goog.ui.FilterObservingMenuItemRenderer"], ["goog.ui.MenuItemRenderer"]); goog.addDependency("/closure/goog/ui/flatbuttonrenderer.js", ["goog.ui.FlatButtonRenderer"], ["goog.a11y.aria.Role", "goog.dom.classes", "goog.ui.Button", "goog.ui.ButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/flatmenubuttonrenderer.js", ["goog.ui.FlatMenuButtonRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.FlatButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.Menu", "goog.ui.MenuButton", "goog.ui.MenuRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/formpost.js", ["goog.ui.FormPost"], ["goog.array", "goog.dom.TagName", "goog.string", "goog.string.StringBuffer", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/gauge.js", ["goog.ui.Gauge", "goog.ui.GaugeColoredRange"], ["goog.a11y.aria", "goog.asserts", "goog.events", "goog.fx.Animation", "goog.fx.Transition", "goog.fx.easing", "goog.graphics", "goog.graphics.Font", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.math", "goog.ui.Component", "goog.ui.GaugeTheme"]); goog.addDependency("/closure/goog/ui/gaugetheme.js", ["goog.ui.GaugeTheme"], ["goog.graphics.LinearGradient", "goog.graphics.SolidFill", "goog.graphics.Stroke"]); goog.addDependency("/closure/goog/ui/hovercard.js", ["goog.ui.HoverCard", "goog.ui.HoverCard.EventType", "goog.ui.HoverCard.TriggerEvent"], ["goog.array", "goog.dom", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.ui.AdvancedTooltip", "goog.ui.PopupBase", "goog.ui.Tooltip"]); goog.addDependency("/closure/goog/ui/hsvapalette.js", ["goog.ui.HsvaPalette"], ["goog.array", "goog.color.alpha", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.style", "goog.ui.Component", "goog.ui.HsvPalette"]); goog.addDependency("/closure/goog/ui/hsvpalette.js", ["goog.ui.HsvPalette"], ["goog.color", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.events.InputHandler", "goog.style", "goog.style.bidi", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/idgenerator.js", ["goog.ui.IdGenerator"], []); goog.addDependency("/closure/goog/ui/idletimer.js", ["goog.ui.IdleTimer"], ["goog.Timer", "goog.events", "goog.events.EventTarget", "goog.structs.Set", "goog.ui.ActivityMonitor"]); goog.addDependency("/closure/goog/ui/iframemask.js", ["goog.ui.IframeMask"], ["goog.Disposable", "goog.Timer", "goog.dom", "goog.dom.iframe", "goog.events.EventHandler", "goog.style"]); goog.addDependency("/closure/goog/ui/imagelessbuttonrenderer.js", ["goog.ui.ImagelessButtonRenderer"], ["goog.dom.classes", "goog.ui.Button", "goog.ui.Component", "goog.ui.CustomButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/imagelessmenubuttonrenderer.js", ["goog.ui.ImagelessMenuButtonRenderer"], ["goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.MenuButton", "goog.ui.MenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/inputdatepicker.js", ["goog.ui.InputDatePicker"], ["goog.date.DateTime", "goog.dom", "goog.string", "goog.ui.Component", "goog.ui.DatePicker", "goog.ui.PopupBase", "goog.ui.PopupDatePicker"]); goog.addDependency("/closure/goog/ui/itemevent.js", ["goog.ui.ItemEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/ui/keyboardshortcuthandler.js", ["goog.ui.KeyboardShortcutEvent", "goog.ui.KeyboardShortcutHandler", "goog.ui.KeyboardShortcutHandler.EventType"], ["goog.Timer", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyNames", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/labelinput.js", ["goog.ui.LabelInput"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.classlist", "goog.events.EventHandler", "goog.events.EventType", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/linkbuttonrenderer.js", ["goog.ui.LinkButtonRenderer"], ["goog.ui.Button", "goog.ui.FlatButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/media/flashobject.js", ["goog.ui.media.FlashObject", "goog.ui.media.FlashObject.ScriptAccessLevel", "goog.ui.media.FlashObject.Wmodes"], ["goog.asserts", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventType", "goog.log", "goog.object", "goog.string", "goog.structs.Map", "goog.style", "goog.ui.Component", "goog.userAgent", "goog.userAgent.flash"]); goog.addDependency("/closure/goog/ui/media/flickr.js", ["goog.ui.media.FlickrSet", "goog.ui.media.FlickrSetModel"], ["goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/googlevideo.js", ["goog.ui.media.GoogleVideo", "goog.ui.media.GoogleVideoModel"], ["goog.string", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/media.js", ["goog.ui.media.Media", "goog.ui.media.MediaRenderer"], ["goog.style", "goog.ui.Component", "goog.ui.Control", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/media/mediamodel.js", ["goog.ui.media.MediaModel", "goog.ui.media.MediaModel.Category", "goog.ui.media.MediaModel.Credit", "goog.ui.media.MediaModel.Credit.Role", "goog.ui.media.MediaModel.Credit.Scheme", "goog.ui.media.MediaModel.Medium", "goog.ui.media.MediaModel.MimeType", "goog.ui.media.MediaModel.Player", "goog.ui.media.MediaModel.SubTitle", "goog.ui.media.MediaModel.Thumbnail"], ["goog.array"]); goog.addDependency("/closure/goog/ui/media/mp3.js", ["goog.ui.media.Mp3"], ["goog.string", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/photo.js", ["goog.ui.media.Photo"], ["goog.ui.media.Media", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/picasa.js", ["goog.ui.media.PicasaAlbum", "goog.ui.media.PicasaAlbumModel"], ["goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/vimeo.js", ["goog.ui.media.Vimeo", "goog.ui.media.VimeoModel"], ["goog.string", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/youtube.js", ["goog.ui.media.Youtube", "goog.ui.media.YoutubeModel"], ["goog.string", "goog.ui.Component", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/menu.js", ["goog.ui.Menu", "goog.ui.Menu.EventType"], ["goog.math.Coordinate", "goog.string", "goog.style", "goog.ui.Component.EventType", "goog.ui.Component.State", "goog.ui.Container", "goog.ui.Container.Orientation", "goog.ui.MenuHeader", "goog.ui.MenuItem", "goog.ui.MenuRenderer", "goog.ui.MenuSeparator"]); goog.addDependency("/closure/goog/ui/menubar.js", ["goog.ui.menuBar"], ["goog.ui.Container", "goog.ui.MenuBarRenderer"]); goog.addDependency("/closure/goog/ui/menubardecorator.js", ["goog.ui.menuBarDecorator"], ["goog.ui.MenuBarRenderer", "goog.ui.menuBar", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menubarrenderer.js", ["goog.ui.MenuBarRenderer"], ["goog.a11y.aria.Role", "goog.ui.Container", "goog.ui.ContainerRenderer"]); goog.addDependency("/closure/goog/ui/menubase.js", ["goog.ui.MenuBase"], ["goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyHandler", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/menubutton.js", ["goog.ui.MenuButton"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.math.Box", "goog.math.Rect", "goog.positioning", "goog.positioning.Corner", "goog.positioning.MenuAnchoredPosition", "goog.positioning.Overflow", "goog.style", "goog.ui.Button", "goog.ui.Component", "goog.ui.Menu", "goog.ui.MenuButtonRenderer", "goog.ui.registry", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/ui/menubuttonrenderer.js", ["goog.ui.MenuButtonRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.CustomButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.Menu", "goog.ui.MenuRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/menuheader.js", ["goog.ui.MenuHeader"], ["goog.ui.Component", "goog.ui.Control", "goog.ui.MenuHeaderRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menuheaderrenderer.js", ["goog.ui.MenuHeaderRenderer"], ["goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/menuitem.js", ["goog.ui.MenuItem"], ["goog.array", "goog.dom", "goog.dom.classes", "goog.math.Coordinate", "goog.string", "goog.ui.Component", "goog.ui.Control", "goog.ui.MenuItemRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menuitemrenderer.js", ["goog.ui.MenuItemRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.dom", "goog.dom.classes", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/menurenderer.js", ["goog.ui.MenuRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.ui.ContainerRenderer", "goog.ui.Separator"]); goog.addDependency("/closure/goog/ui/menuseparator.js", ["goog.ui.MenuSeparator"], ["goog.ui.MenuSeparatorRenderer", "goog.ui.Separator", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menuseparatorrenderer.js", ["goog.ui.MenuSeparatorRenderer"], ["goog.dom", "goog.dom.classes", "goog.ui.ControlContent", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/mockactivitymonitor.js", ["goog.ui.MockActivityMonitor"], ["goog.events.EventType", "goog.ui.ActivityMonitor"]); goog.addDependency("/closure/goog/ui/mockactivitymonitor_test.js", ["goog.ui.MockActivityMonitorTest"], ["goog.events", "goog.functions", "goog.testing.jsunit", "goog.testing.recordFunction", "goog.ui.ActivityMonitor", "goog.ui.MockActivityMonitor"]); goog.addDependency("/closure/goog/ui/modalpopup.js", ["goog.ui.ModalPopup"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.dom.iframe", "goog.events", "goog.events.EventType", "goog.events.FocusHandler", "goog.fx.Transition", "goog.style", "goog.ui.Component", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/nativebuttonrenderer.js", ["goog.ui.NativeButtonRenderer"], ["goog.dom.classes", "goog.events.EventType", "goog.ui.ButtonRenderer", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/offlineinstalldialog.js", ["goog.ui.OfflineInstallDialog", "goog.ui.OfflineInstallDialog.ButtonKeyType", "goog.ui.OfflineInstallDialog.EnableScreen", "goog.ui.OfflineInstallDialog.InstallScreen", "goog.ui.OfflineInstallDialog.InstallingGearsScreen", "goog.ui.OfflineInstallDialog.ScreenType", "goog.ui.OfflineInstallDialog.UpgradeScreen", "goog.ui.OfflineInstallDialogScreen"], ["goog.Disposable", "goog.dom.classes", "goog.gears", "goog.string", "goog.string.StringBuffer", "goog.ui.Dialog", "goog.window"]); goog.addDependency("/closure/goog/ui/offlinestatuscard.js", ["goog.ui.OfflineStatusCard", "goog.ui.OfflineStatusCard.EventType"], ["goog.dom", "goog.events.EventType", "goog.gears.StatusType", "goog.structs.Map", "goog.style", "goog.ui.Component", "goog.ui.ProgressBar"]); goog.addDependency("/closure/goog/ui/offlinestatuscomponent.js", ["goog.ui.OfflineStatusComponent", "goog.ui.OfflineStatusComponent.StatusClassNames"], ["goog.dom.classes", "goog.events.EventType", "goog.gears.StatusType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.ui.Component", "goog.ui.OfflineStatusCard", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/option.js", ["goog.ui.Option"], ["goog.ui.Component", "goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/palette.js", ["goog.ui.Palette"], ["goog.array", "goog.dom", "goog.events", "goog.events.EventType", "goog.events.KeyCodes", "goog.math.Size", "goog.ui.Component", "goog.ui.Control", "goog.ui.PaletteRenderer", "goog.ui.SelectionModel"]); goog.addDependency("/closure/goog/ui/paletterenderer.js", ["goog.ui.PaletteRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.dom", "goog.dom.NodeIterator", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.iter", "goog.style", "goog.ui.ControlRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/plaintextspellchecker.js", ["goog.ui.PlainTextSpellChecker"], ["goog.Timer", "goog.a11y.aria", "goog.asserts", "goog.dom", "goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.spell.SpellCheck", "goog.style", "goog.ui.AbstractSpellChecker", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/popup.js", ["goog.ui.Popup", "goog.ui.Popup.AbsolutePosition", "goog.ui.Popup.AnchoredPosition", "goog.ui.Popup.AnchoredViewPortPosition", "goog.ui.Popup.ClientPosition", "goog.ui.Popup.Corner", "goog.ui.Popup.Overflow", "goog.ui.Popup.ViewPortClientPosition", "goog.ui.Popup.ViewPortPosition"], ["goog.math.Box", "goog.positioning.AbsolutePosition", "goog.positioning.AnchoredPosition", "goog.positioning.AnchoredViewportPosition", "goog.positioning.ClientPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.ViewportClientPosition", "goog.positioning.ViewportPosition", "goog.style", "goog.ui.PopupBase"]); goog.addDependency("/closure/goog/ui/popupbase.js", ["goog.ui.PopupBase", "goog.ui.PopupBase.EventType", "goog.ui.PopupBase.Type"], ["goog.Timer", "goog.dom", "goog.events", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.fx.Transition", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/popupcolorpicker.js", ["goog.ui.PopupColorPicker"], ["goog.dom.classes", "goog.events.EventType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.ui.ColorPicker", "goog.ui.Component", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/popupdatepicker.js", ["goog.ui.PopupDatePicker"], ["goog.events.EventType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.style", "goog.ui.Component", "goog.ui.DatePicker", "goog.ui.Popup", "goog.ui.PopupBase"]); goog.addDependency("/closure/goog/ui/popupmenu.js", ["goog.ui.PopupMenu"], ["goog.events.EventType", "goog.positioning.AnchoredViewportPosition", "goog.positioning.Corner", "goog.positioning.MenuAnchoredPosition", "goog.positioning.ViewportClientPosition", "goog.structs", "goog.structs.Map", "goog.style", "goog.ui.Component.EventType", "goog.ui.Menu", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/progressbar.js", ["goog.ui.ProgressBar", "goog.ui.ProgressBar.Orientation"], ["goog.a11y.aria", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.events", "goog.events.EventType", "goog.ui.Component", "goog.ui.RangeModel", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/prompt.js", ["goog.ui.Prompt"], ["goog.Timer", "goog.dom", "goog.events", "goog.events.EventType", "goog.functions", "goog.ui.Component", "goog.ui.Dialog", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/rangemodel.js", ["goog.ui.RangeModel"], ["goog.events.EventTarget", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/ratings.js", ["goog.ui.Ratings", "goog.ui.Ratings.EventType"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.dom.classes", "goog.events.EventType", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/registry.js", ["goog.ui.registry"], ["goog.dom.classes"]); goog.addDependency("/closure/goog/ui/richtextspellchecker.js", ["goog.ui.RichTextSpellChecker"], ["goog.Timer", "goog.dom", "goog.dom.NodeType", "goog.events", "goog.events.EventType", "goog.spell.SpellCheck", "goog.string.StringBuffer", "goog.ui.AbstractSpellChecker"]); goog.addDependency("/closure/goog/ui/roundedpanel.js", ["goog.ui.BaseRoundedPanel", "goog.ui.CssRoundedPanel", "goog.ui.GraphicsRoundedPanel", "goog.ui.RoundedPanel", "goog.ui.RoundedPanel.Corner"], ["goog.dom", "goog.dom.classes", "goog.graphics", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.graphics.Stroke", "goog.math", "goog.math.Coordinate", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/roundedtabrenderer.js", ["goog.ui.RoundedTabRenderer"], ["goog.dom", "goog.ui.Tab", "goog.ui.TabBar", "goog.ui.TabRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/scrollfloater.js", ["goog.ui.ScrollFloater", "goog.ui.ScrollFloater.EventType"], ["goog.array", "goog.dom", "goog.dom.classes", "goog.events.EventType", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/select.js", ["goog.ui.Select"], ["goog.a11y.aria.Role", "goog.events.EventType", "goog.ui.Component", "goog.ui.MenuButton", "goog.ui.MenuItem", "goog.ui.SelectionModel", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/selectionmenubutton.js", ["goog.ui.SelectionMenuButton", "goog.ui.SelectionMenuButton.SelectionState"], ["goog.events.EventType", "goog.style", "goog.ui.Component", "goog.ui.MenuButton", "goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/selectionmodel.js", ["goog.ui.SelectionModel"], ["goog.array", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("/closure/goog/ui/separator.js", ["goog.ui.Separator"], ["goog.a11y.aria", "goog.asserts", "goog.ui.Component", "goog.ui.Control", "goog.ui.MenuSeparatorRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/serverchart.js", ["goog.ui.ServerChart", "goog.ui.ServerChart.AxisDisplayType", "goog.ui.ServerChart.ChartType", "goog.ui.ServerChart.EncodingType", "goog.ui.ServerChart.Event", "goog.ui.ServerChart.LegendPosition", "goog.ui.ServerChart.MaximumValue", "goog.ui.ServerChart.MultiAxisAlignment", "goog.ui.ServerChart.MultiAxisType", "goog.ui.ServerChart.UriParam", "goog.ui.ServerChart.UriTooLongEvent"], ["goog.Uri", "goog.array", "goog.asserts", "goog.events.Event", "goog.string", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/slider.js", ["goog.ui.Slider", "goog.ui.Slider.Orientation"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.dom", "goog.ui.SliderBase"]); goog.addDependency("/closure/goog/ui/sliderbase.js", ["goog.ui.SliderBase", "goog.ui.SliderBase.AnimationFactory", "goog.ui.SliderBase.Orientation"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.events", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.events.MouseWheelHandler", "goog.fx.AnimationParallelQueue", "goog.fx.Dragger", "goog.fx.Transition", "goog.fx.dom.ResizeHeight", "goog.fx.dom.ResizeWidth", "goog.fx.dom.Slide", "goog.math", "goog.math.Coordinate", "goog.style", "goog.style.bidi", "goog.ui.Component", "goog.ui.RangeModel"]); goog.addDependency("/closure/goog/ui/splitbehavior.js", ["goog.ui.SplitBehavior", "goog.ui.SplitBehavior.DefaultHandlers"], ["goog.Disposable", "goog.dispose", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events.EventHandler", "goog.ui.ButtonSide", "goog.ui.Component", "goog.ui.decorate", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/splitpane.js", ["goog.ui.SplitPane", "goog.ui.SplitPane.Orientation"], ["goog.dom", "goog.dom.classes", "goog.events.EventType", "goog.fx.Dragger", "goog.math.Rect", "goog.math.Size", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/style/app/buttonrenderer.js", ["goog.ui.style.app.ButtonRenderer"], ["goog.dom.classes", "goog.ui.Button", "goog.ui.CustomButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/style/app/menubuttonrenderer.js", ["goog.ui.style.app.MenuButtonRenderer"], ["goog.a11y.aria.Role", "goog.array", "goog.dom", "goog.style", "goog.ui.Menu", "goog.ui.MenuRenderer", "goog.ui.style.app.ButtonRenderer"]); goog.addDependency("/closure/goog/ui/style/app/primaryactionbuttonrenderer.js", ["goog.ui.style.app.PrimaryActionButtonRenderer"], ["goog.ui.Button", "goog.ui.registry", "goog.ui.style.app.ButtonRenderer"]); goog.addDependency("/closure/goog/ui/submenu.js", ["goog.ui.SubMenu"], ["goog.Timer", "goog.dom", "goog.dom.classes", "goog.events.KeyCodes", "goog.positioning.AnchoredViewportPosition", "goog.positioning.Corner", "goog.style", "goog.ui.Component", "goog.ui.Menu", "goog.ui.MenuItem", "goog.ui.SubMenuRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/submenurenderer.js", ["goog.ui.SubMenuRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.style", "goog.ui.Menu", "goog.ui.MenuItemRenderer"]); goog.addDependency("/closure/goog/ui/tab.js", ["goog.ui.Tab"], ["goog.ui.Component", "goog.ui.Control", "goog.ui.TabRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tabbar.js", ["goog.ui.TabBar", "goog.ui.TabBar.Location"], ["goog.ui.Component.EventType", "goog.ui.Container", "goog.ui.Container.Orientation", "goog.ui.Tab", "goog.ui.TabBarRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tabbarrenderer.js", ["goog.ui.TabBarRenderer"], ["goog.a11y.aria.Role", "goog.object", "goog.ui.ContainerRenderer"]); goog.addDependency("/closure/goog/ui/tablesorter.js", ["goog.ui.TableSorter", "goog.ui.TableSorter.EventType"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.events.EventType", "goog.functions", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/tabpane.js", ["goog.ui.TabPane", "goog.ui.TabPane.Events", "goog.ui.TabPane.TabLocation", "goog.ui.TabPane.TabPage", "goog.ui.TabPaneEvent"], ["goog.dom", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.style"]); goog.addDependency("/closure/goog/ui/tabrenderer.js", ["goog.ui.TabRenderer"], ["goog.a11y.aria.Role", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/textarea.js", ["goog.ui.Textarea", "goog.ui.Textarea.EventType"], ["goog.dom", "goog.events.EventType", "goog.style", "goog.ui.Control", "goog.ui.TextareaRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/textarearenderer.js", ["goog.ui.TextareaRenderer"], ["goog.dom.TagName", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/togglebutton.js", ["goog.ui.ToggleButton"], ["goog.ui.Button", "goog.ui.Component", "goog.ui.CustomButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbar.js", ["goog.ui.Toolbar"], ["goog.ui.Container", "goog.ui.ToolbarRenderer"]); goog.addDependency("/closure/goog/ui/toolbarbutton.js", ["goog.ui.ToolbarButton"], ["goog.ui.Button", "goog.ui.ToolbarButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarbuttonrenderer.js", ["goog.ui.ToolbarButtonRenderer"], ["goog.ui.CustomButtonRenderer"]); goog.addDependency("/closure/goog/ui/toolbarcolormenubutton.js", ["goog.ui.ToolbarColorMenuButton"], ["goog.ui.ColorMenuButton", "goog.ui.ToolbarColorMenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarcolormenubuttonrenderer.js", ["goog.ui.ToolbarColorMenuButtonRenderer"], ["goog.dom.classes", "goog.ui.ColorMenuButtonRenderer", "goog.ui.MenuButtonRenderer", "goog.ui.ToolbarMenuButtonRenderer"]); goog.addDependency("/closure/goog/ui/toolbarmenubutton.js", ["goog.ui.ToolbarMenuButton"], ["goog.ui.MenuButton", "goog.ui.ToolbarMenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarmenubuttonrenderer.js", ["goog.ui.ToolbarMenuButtonRenderer"], ["goog.ui.MenuButtonRenderer"]); goog.addDependency("/closure/goog/ui/toolbarrenderer.js", ["goog.ui.ToolbarRenderer"], ["goog.a11y.aria.Role", "goog.ui.Container", "goog.ui.ContainerRenderer", "goog.ui.Separator", "goog.ui.ToolbarSeparatorRenderer"]); goog.addDependency("/closure/goog/ui/toolbarselect.js", ["goog.ui.ToolbarSelect"], ["goog.ui.Select", "goog.ui.ToolbarMenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarseparator.js", ["goog.ui.ToolbarSeparator"], ["goog.ui.Separator", "goog.ui.ToolbarSeparatorRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarseparatorrenderer.js", ["goog.ui.ToolbarSeparatorRenderer"], ["goog.dom.classes", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.MenuSeparatorRenderer"]); goog.addDependency("/closure/goog/ui/toolbartogglebutton.js", ["goog.ui.ToolbarToggleButton"], ["goog.ui.ToggleButton", "goog.ui.ToolbarButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tooltip.js", ["goog.ui.Tooltip", "goog.ui.Tooltip.CursorTooltipPosition", "goog.ui.Tooltip.ElementTooltipPosition", "goog.ui.Tooltip.State"], ["goog.Timer", "goog.array", "goog.dom", "goog.events", "goog.events.EventType", "goog.math.Box", "goog.math.Coordinate", "goog.positioning", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus", "goog.positioning.ViewportPosition", "goog.structs.Set", "goog.style", "goog.ui.Popup", "goog.ui.PopupBase"]); goog.addDependency("/closure/goog/ui/tree/basenode.js", ["goog.ui.tree.BaseNode", "goog.ui.tree.BaseNode.EventType"], ["goog.Timer", "goog.a11y.aria", "goog.asserts", "goog.events.KeyCodes", "goog.string", "goog.string.StringBuffer", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/tree/treecontrol.js", ["goog.ui.tree.TreeControl"], ["goog.a11y.aria", "goog.asserts", "goog.dom.classes", "goog.events.EventType", "goog.events.FocusHandler", "goog.events.KeyHandler", "goog.log", "goog.ui.tree.BaseNode", "goog.ui.tree.TreeNode", "goog.ui.tree.TypeAhead", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/tree/treenode.js", ["goog.ui.tree.TreeNode"], ["goog.ui.tree.BaseNode"]); goog.addDependency("/closure/goog/ui/tree/typeahead.js", ["goog.ui.tree.TypeAhead", "goog.ui.tree.TypeAhead.Offset"], ["goog.array", "goog.events.KeyCodes", "goog.string", "goog.structs.Trie"]); goog.addDependency("/closure/goog/ui/tristatemenuitem.js", ["goog.ui.TriStateMenuItem", "goog.ui.TriStateMenuItem.State"], ["goog.dom.classes", "goog.ui.Component", "goog.ui.MenuItem", "goog.ui.TriStateMenuItemRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tristatemenuitemrenderer.js", ["goog.ui.TriStateMenuItemRenderer"], ["goog.dom.classes", "goog.ui.MenuItemRenderer"]); goog.addDependency("/closure/goog/ui/twothumbslider.js", ["goog.ui.TwoThumbSlider"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.dom", "goog.ui.SliderBase"]); goog.addDependency("/closure/goog/ui/zippy.js", ["goog.ui.Zippy", "goog.ui.Zippy.Events", "goog.ui.ZippyEvent"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.dom", "goog.dom.classes", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.style"]); goog.addDependency("/closure/goog/uri/uri.js", ["goog.Uri", "goog.Uri.QueryData"], ["goog.array", "goog.string", "goog.structs", "goog.structs.Map", "goog.uri.utils", "goog.uri.utils.ComponentIndex", "goog.uri.utils.StandardQueryParam"]); goog.addDependency("/closure/goog/uri/uri_test.js", ["goog.UriTest"], ["goog.Uri", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/uri/utils.js", ["goog.uri.utils", "goog.uri.utils.ComponentIndex", "goog.uri.utils.QueryArray", "goog.uri.utils.QueryValue", "goog.uri.utils.StandardQueryParam"], ["goog.asserts", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/adobereader.js", ["goog.userAgent.adobeReader"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/flash.js", ["goog.userAgent.flash"], ["goog.string"]); goog.addDependency("/closure/goog/useragent/iphoto.js", ["goog.userAgent.iphoto"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/jscript.js", ["goog.userAgent.jscript"], ["goog.string"]); goog.addDependency("/closure/goog/useragent/picasa.js", ["goog.userAgent.picasa"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/platform.js", ["goog.userAgent.platform"], ["goog.userAgent"]); goog.addDependency("/closure/goog/useragent/product.js", ["goog.userAgent.product"], ["goog.userAgent"]); goog.addDependency("/closure/goog/useragent/product_isversion.js", ["goog.userAgent.product.isVersion"], ["goog.userAgent.product"]); goog.addDependency("/closure/goog/useragent/useragent.js", ["goog.userAgent"], ["goog.string"]); goog.addDependency("/closure/goog/vec/float32array.js", ["goog.vec.Float32Array"], []); goog.addDependency("/closure/goog/vec/float64array.js", ["goog.vec.Float64Array"], []); goog.addDependency("/closure/goog/vec/mat3.js", ["goog.vec.Mat3"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/mat3d.js", ["goog.vec.mat3d", "goog.vec.mat3d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/mat3f.js", ["goog.vec.mat3f", "goog.vec.mat3f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/mat4.js", ["goog.vec.Mat4"], ["goog.vec", "goog.vec.Vec3", "goog.vec.Vec4"]); goog.addDependency("/closure/goog/vec/mat4d.js", ["goog.vec.mat4d", "goog.vec.mat4d.Type"], ["goog.vec", "goog.vec.vec3d", "goog.vec.vec4d"]); goog.addDependency("/closure/goog/vec/mat4f.js", ["goog.vec.mat4f", "goog.vec.mat4f.Type"], ["goog.vec", "goog.vec.vec3f", "goog.vec.vec4f"]); goog.addDependency("/closure/goog/vec/matrix3.js", ["goog.vec.Matrix3"], []); goog.addDependency("/closure/goog/vec/matrix4.js", ["goog.vec.Matrix4"], ["goog.vec", "goog.vec.Vec3", "goog.vec.Vec4"]); goog.addDependency("/closure/goog/vec/quaternion.js", ["goog.vec.Quaternion"], ["goog.vec", "goog.vec.Vec3", "goog.vec.Vec4"]); goog.addDependency("/closure/goog/vec/ray.js", ["goog.vec.Ray"], ["goog.vec.Vec3"]); goog.addDependency("/closure/goog/vec/vec.js", ["goog.vec", "goog.vec.AnyType", "goog.vec.ArrayType", "goog.vec.Float32", "goog.vec.Float64", "goog.vec.Number"], ["goog.vec.Float32Array", "goog.vec.Float64Array"]); goog.addDependency("/closure/goog/vec/vec2.js", ["goog.vec.Vec2"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec2d.js", ["goog.vec.vec2d", "goog.vec.vec2d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec2f.js", ["goog.vec.vec2f", "goog.vec.vec2f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec3.js", ["goog.vec.Vec3"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec3d.js", ["goog.vec.vec3d", "goog.vec.vec3d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec3f.js", ["goog.vec.vec3f", "goog.vec.vec3f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec4.js", ["goog.vec.Vec4"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec4d.js", ["goog.vec.vec4d", "goog.vec.vec4d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec4f.js", ["goog.vec.vec4f", "goog.vec.vec4f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/webgl/webgl.js", ["goog.webgl"], []); goog.addDependency("/closure/goog/window/window.js", ["goog.window"], ["goog.string", "goog.userAgent"]); goog.addDependency("/soy/soyutils.js", [], []); goog.addDependency("/soy/soyutils_usegoog.js", ["soy", "soy.StringBuilder", "soy.esc", "soydata", "soydata.SanitizedHtml", "soydata.SanitizedHtmlAttribute", "soydata.SanitizedJs", "soydata.SanitizedJsStrChars", "soydata.SanitizedUri", "soydata.VERY_UNSAFE"], ["goog.asserts", "goog.dom.DomHelper", "goog.format", "goog.i18n.BidiFormatter", "goog.i18n.bidi", "goog.soy", "goog.soy.data.SanitizedContentKind", "goog.string", "goog.string.StringBuffer"]); goog.addDependency("/third_party/closure/goog/base.js", [], []); goog.addDependency("/third_party/closure/goog/caja/string/html/htmlparser.js", ["goog.string.html.HtmlParser", "goog.string.html.HtmlParser.EFlags", "goog.string.html.HtmlParser.Elements", "goog.string.html.HtmlParser.Entities", "goog.string.html.HtmlSaxHandler"], []); goog.addDependency("/third_party/closure/goog/caja/string/html/htmlsanitizer.js", ["goog.string.html.HtmlSanitizer", "goog.string.html.HtmlSanitizer.AttributeType", "goog.string.html.HtmlSanitizer.Attributes", "goog.string.html.htmlSanitize"], ["goog.string.StringBuffer", "goog.string.html.HtmlParser", "goog.string.html.HtmlParser.EFlags", "goog.string.html.HtmlParser.Elements", "goog.string.html.HtmlSaxHandler"]); goog.addDependency("/third_party/closure/goog/dojo/dom/query.js", ["goog.dom.query"], ["goog.array", "goog.dom", "goog.functions", "goog.string", "goog.userAgent"]); goog.addDependency("/third_party/closure/goog/dojo/dom/query_test.js", [], []); goog.addDependency("/third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js", ["goog.crypt.JpegEncoder"], ["goog.crypt.base64"]); goog.addDependency("/third_party/closure/goog/loremipsum/text/loremipsum.js", ["goog.text.LoremIpsum"], ["goog.array", "goog.math", "goog.string", "goog.structs.Map", "goog.structs.Set"]); goog.addDependency("/third_party/closure/goog/mochikit/async/deferred.js", ["goog.async.Deferred", "goog.async.Deferred.AlreadyCalledError", "goog.async.Deferred.CanceledError"], ["goog.array", "goog.asserts", "goog.debug.Error", "goog.functions"]); goog.addDependency("/third_party/closure/goog/mochikit/async/deferredlist.js", ["goog.async.DeferredList"], ["goog.async.Deferred"]); goog.addDependency("/third_party/closure/goog/osapi/osapi.js", ["goog.osapi"], []); goog.provide("ol"); ol.inherits = goog.inherits; goog.provide("goog.debug.Error"); goog.debug.Error = function(opt_msg) { if(Error.captureStackTrace) { Error.captureStackTrace(this, goog.debug.Error) }else { this.stack = (new Error).stack || "" } if(opt_msg) { this.message = String(opt_msg) } }; goog.inherits(goog.debug.Error, Error); goog.debug.Error.prototype.name = "CustomError"; goog.provide("goog.string"); goog.provide("goog.string.Unicode"); goog.string.Unicode = {NBSP:"\u00a0"}; goog.string.startsWith = function(str, prefix) { return str.lastIndexOf(prefix, 0) == 0 }; goog.string.endsWith = function(str, suffix) { var l = str.length - suffix.length; return l >= 0 && str.indexOf(suffix, l) == l }; goog.string.caseInsensitiveStartsWith = function(str, prefix) { return goog.string.caseInsensitiveCompare(prefix, str.substr(0, prefix.length)) == 0 }; goog.string.caseInsensitiveEndsWith = function(str, suffix) { return goog.string.caseInsensitiveCompare(suffix, str.substr(str.length - suffix.length, suffix.length)) == 0 }; goog.string.caseInsensitiveEquals = function(str1, str2) { return str1.toLowerCase() == str2.toLowerCase() }; goog.string.subs = function(str, var_args) { var splitParts = str.split("%s"); var returnString = ""; var subsArguments = Array.prototype.slice.call(arguments, 1); while(subsArguments.length && splitParts.length > 1) { returnString += splitParts.shift() + subsArguments.shift() } return returnString + splitParts.join("%s") }; goog.string.collapseWhitespace = function(str) { return str.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "") }; goog.string.isEmpty = function(str) { return/^[\s\xa0]*$/.test(str) }; goog.string.isEmptySafe = function(str) { return goog.string.isEmpty(goog.string.makeSafe(str)) }; goog.string.isBreakingWhitespace = function(str) { return!/[^\t\n\r ]/.test(str) }; goog.string.isAlpha = function(str) { return!/[^a-zA-Z]/.test(str) }; goog.string.isNumeric = function(str) { return!/[^0-9]/.test(str) }; goog.string.isAlphaNumeric = function(str) { return!/[^a-zA-Z0-9]/.test(str) }; goog.string.isSpace = function(ch) { return ch == " " }; goog.string.isUnicodeChar = function(ch) { return ch.length == 1 && ch >= " " && ch <= "~" || ch >= "\u0080" && ch <= "\ufffd" }; goog.string.stripNewlines = function(str) { return str.replace(/(\r\n|\r|\n)+/g, " ") }; goog.string.canonicalizeNewlines = function(str) { return str.replace(/(\r\n|\r|\n)/g, "\n") }; goog.string.normalizeWhitespace = function(str) { return str.replace(/\xa0|\s/g, " ") }; goog.string.normalizeSpaces = function(str) { return str.replace(/\xa0|[ \t]+/g, " ") }; goog.string.collapseBreakingSpaces = function(str) { return str.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "") }; goog.string.trim = function(str) { return str.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "") }; goog.string.trimLeft = function(str) { return str.replace(/^[\s\xa0]+/, "") }; goog.string.trimRight = function(str) { return str.replace(/[\s\xa0]+$/, "") }; goog.string.caseInsensitiveCompare = function(str1, str2) { var test1 = String(str1).toLowerCase(); var test2 = String(str2).toLowerCase(); if(test1 < test2) { return-1 }else { if(test1 == test2) { return 0 }else { return 1 } } }; goog.string.numerateCompareRegExp_ = /(\.\d+)|(\d+)|(\D+)/g; goog.string.numerateCompare = function(str1, str2) { if(str1 == str2) { return 0 } if(!str1) { return-1 } if(!str2) { return 1 } var tokens1 = str1.toLowerCase().match(goog.string.numerateCompareRegExp_); var tokens2 = str2.toLowerCase().match(goog.string.numerateCompareRegExp_); var count = Math.min(tokens1.length, tokens2.length); for(var i = 0;i < count;i++) { var a = tokens1[i]; var b = tokens2[i]; if(a != b) { var num1 = parseInt(a, 10); if(!isNaN(num1)) { var num2 = parseInt(b, 10); if(!isNaN(num2) && num1 - num2) { return num1 - num2 } } return a < b ? -1 : 1 } } if(tokens1.length != tokens2.length) { return tokens1.length - tokens2.length } return str1 < str2 ? -1 : 1 }; goog.string.urlEncode = function(str) { return encodeURIComponent(String(str)) }; goog.string.urlDecode = function(str) { return decodeURIComponent(str.replace(/\+/g, " ")) }; goog.string.newLineToBr = function(str, opt_xml) { return str.replace(/(\r\n|\r|\n)/g, opt_xml ? "\x3cbr /\x3e" : "\x3cbr\x3e") }; goog.string.htmlEscape = function(str, opt_isLikelyToContainHtmlChars) { if(opt_isLikelyToContainHtmlChars) { return str.replace(goog.string.amperRe_, "\x26amp;").replace(goog.string.ltRe_, "\x26lt;").replace(goog.string.gtRe_, "\x26gt;").replace(goog.string.quotRe_, "\x26quot;") }else { if(!goog.string.allRe_.test(str)) { return str } if(str.indexOf("\x26") != -1) { str = str.replace(goog.string.amperRe_, "\x26amp;") } if(str.indexOf("\x3c") != -1) { str = str.replace(goog.string.ltRe_, "\x26lt;") } if(str.indexOf("\x3e") != -1) { str = str.replace(goog.string.gtRe_, "\x26gt;") } if(str.indexOf('"') != -1) { str = str.replace(goog.string.quotRe_, "\x26quot;") } return str } }; goog.string.amperRe_ = /&/g; goog.string.ltRe_ = //g; goog.string.quotRe_ = /\"/g; goog.string.allRe_ = /[&<>\"]/; goog.string.unescapeEntities = function(str) { if(goog.string.contains(str, "\x26")) { if("document" in goog.global) { return goog.string.unescapeEntitiesUsingDom_(str) }else { return goog.string.unescapePureXmlEntities_(str) } } return str }; goog.string.unescapeEntitiesUsingDom_ = function(str) { var seen = {"\x26amp;":"\x26", "\x26lt;":"\x3c", "\x26gt;":"\x3e", "\x26quot;":'"'}; var div = document.createElement("div"); return str.replace(goog.string.HTML_ENTITY_PATTERN_, function(s, entity) { var value = seen[s]; if(value) { return value } if(entity.charAt(0) == "#") { var n = Number("0" + entity.substr(1)); if(!isNaN(n)) { value = String.fromCharCode(n) } } if(!value) { div.innerHTML = s + " "; value = div.firstChild.nodeValue.slice(0, -1) } return seen[s] = value }) }; goog.string.unescapePureXmlEntities_ = function(str) { return str.replace(/&([^;]+);/g, function(s, entity) { switch(entity) { case "amp": return"\x26"; case "lt": return"\x3c"; case "gt": return"\x3e"; case "quot": return'"'; default: if(entity.charAt(0) == "#") { var n = Number("0" + entity.substr(1)); if(!isNaN(n)) { return String.fromCharCode(n) } } return s } }) }; goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g; goog.string.whitespaceEscape = function(str, opt_xml) { return goog.string.newLineToBr(str.replace(/ /g, " \x26#160;"), opt_xml) }; goog.string.stripQuotes = function(str, quoteChars) { var length = quoteChars.length; for(var i = 0;i < length;i++) { var quoteChar = length == 1 ? quoteChars : quoteChars.charAt(i); if(str.charAt(0) == quoteChar && str.charAt(str.length - 1) == quoteChar) { return str.substring(1, str.length - 1) } } return str }; goog.string.truncate = function(str, chars, opt_protectEscapedCharacters) { if(opt_protectEscapedCharacters) { str = goog.string.unescapeEntities(str) } if(str.length > chars) { str = str.substring(0, chars - 3) + "..." } if(opt_protectEscapedCharacters) { str = goog.string.htmlEscape(str) } return str }; goog.string.truncateMiddle = function(str, chars, opt_protectEscapedCharacters, opt_trailingChars) { if(opt_protectEscapedCharacters) { str = goog.string.unescapeEntities(str) } if(opt_trailingChars && str.length > chars) { if(opt_trailingChars > chars) { opt_trailingChars = chars } var endPoint = str.length - opt_trailingChars; var startPoint = chars - opt_trailingChars; str = str.substring(0, startPoint) + "..." + str.substring(endPoint) }else { if(str.length > chars) { var half = Math.floor(chars / 2); var endPos = str.length - half; half += chars % 2; str = str.substring(0, half) + "..." + str.substring(endPos) } } if(opt_protectEscapedCharacters) { str = goog.string.htmlEscape(str) } return str }; goog.string.specialEscapeChars_ = {"\x00":"\\0", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\x0B":"\\x0B", '"':'\\"', "\\":"\\\\"}; goog.string.jsEscapeCache_ = {"'":"\\'"}; goog.string.quote = function(s) { s = String(s); if(s.quote) { return s.quote() }else { var sb = ['"']; for(var i = 0;i < s.length;i++) { var ch = s.charAt(i); var cc = ch.charCodeAt(0); sb[i + 1] = goog.string.specialEscapeChars_[ch] || (cc > 31 && cc < 127 ? ch : goog.string.escapeChar(ch)) } sb.push('"'); return sb.join("") } }; goog.string.escapeString = function(str) { var sb = []; for(var i = 0;i < str.length;i++) { sb[i] = goog.string.escapeChar(str.charAt(i)) } return sb.join("") }; goog.string.escapeChar = function(c) { if(c in goog.string.jsEscapeCache_) { return goog.string.jsEscapeCache_[c] } if(c in goog.string.specialEscapeChars_) { return goog.string.jsEscapeCache_[c] = goog.string.specialEscapeChars_[c] } var rv = c; var cc = c.charCodeAt(0); if(cc > 31 && cc < 127) { rv = c }else { if(cc < 256) { rv = "\\x"; if(cc < 16 || cc > 256) { rv += "0" } }else { rv = "\\u"; if(cc < 4096) { rv += "0" } } rv += cc.toString(16).toUpperCase() } return goog.string.jsEscapeCache_[c] = rv }; goog.string.toMap = function(s) { var rv = {}; for(var i = 0;i < s.length;i++) { rv[s.charAt(i)] = true } return rv }; goog.string.contains = function(s, ss) { return s.indexOf(ss) != -1 }; goog.string.countOf = function(s, ss) { return s && ss ? s.split(ss).length - 1 : 0 }; goog.string.removeAt = function(s, index, stringLength) { var resultStr = s; if(index >= 0 && index < s.length && stringLength > 0) { resultStr = s.substr(0, index) + s.substr(index + stringLength, s.length - index - stringLength) } return resultStr }; goog.string.remove = function(s, ss) { var re = new RegExp(goog.string.regExpEscape(ss), ""); return s.replace(re, "") }; goog.string.removeAll = function(s, ss) { var re = new RegExp(goog.string.regExpEscape(ss), "g"); return s.replace(re, "") }; goog.string.regExpEscape = function(s) { return String(s).replace(/([-()\[\]{}+?*.$\^|,:# right) { return 1 } } return 0 }; goog.string.HASHCODE_MAX_ = 4294967296; goog.string.hashCode = function(str) { var result = 0; for(var i = 0;i < str.length;++i) { result = 31 * result + str.charCodeAt(i); result %= goog.string.HASHCODE_MAX_ } return result }; goog.string.uniqueStringCounter_ = Math.random() * 2147483648 | 0; goog.string.createUniqueString = function() { return"goog_" + goog.string.uniqueStringCounter_++ }; goog.string.toNumber = function(str) { var num = Number(str); if(num == 0 && goog.string.isEmpty(str)) { return NaN } return num }; goog.string.isLowerCamelCase = function(str) { return/^[a-z]+([A-Z][a-z]*)*$/.test(str) }; goog.string.isUpperCamelCase = function(str) { return/^([A-Z][a-z]*)+$/.test(str) }; goog.string.toCamelCase = function(str) { return String(str).replace(/\-([a-z])/g, function(all, match) { return match.toUpperCase() }) }; goog.string.toSelectorCase = function(str) { return String(str).replace(/([A-Z])/g, "-$1").toLowerCase() }; goog.string.toTitleCase = function(str, opt_delimiters) { var delimiters = goog.isString(opt_delimiters) ? goog.string.regExpEscape(opt_delimiters) : "\\s"; delimiters = delimiters ? "|[" + delimiters + "]+" : ""; var regexp = new RegExp("(^" + delimiters + ")([a-z])", "g"); return str.replace(regexp, function(all, p1, p2) { return p1 + p2.toUpperCase() }) }; goog.string.parseInt = function(value) { if(isFinite(value)) { value = String(value) } if(goog.isString(value)) { return/^\s*-?0x/i.test(value) ? parseInt(value, 16) : parseInt(value, 10) } return NaN }; goog.string.splitLimit = function(str, separator, limit) { var parts = str.split(separator); var returnVal = []; while(limit > 0 && parts.length) { returnVal.push(parts.shift()); limit-- } if(parts.length) { returnVal.push(parts.join(separator)) } return returnVal }; goog.provide("goog.asserts"); goog.provide("goog.asserts.AssertionError"); goog.require("goog.debug.Error"); goog.require("goog.string"); goog.define("goog.asserts.ENABLE_ASSERTS", goog.DEBUG); goog.asserts.AssertionError = function(messagePattern, messageArgs) { messageArgs.unshift(messagePattern); goog.debug.Error.call(this, goog.string.subs.apply(null, messageArgs)); messageArgs.shift(); this.messagePattern = messagePattern }; goog.inherits(goog.asserts.AssertionError, goog.debug.Error); goog.asserts.AssertionError.prototype.name = "AssertionError"; goog.asserts.doAssertFailure_ = function(defaultMessage, defaultArgs, givenMessage, givenArgs) { var message = "Assertion failed"; if(givenMessage) { message += ": " + givenMessage; var args = givenArgs }else { if(defaultMessage) { message += ": " + defaultMessage; args = defaultArgs } } throw new goog.asserts.AssertionError("" + message, args || []); }; goog.asserts.assert = function(condition, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !condition) { goog.asserts.doAssertFailure_("", null, opt_message, Array.prototype.slice.call(arguments, 2)) } return condition }; goog.asserts.fail = function(opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS) { throw new goog.asserts.AssertionError("Failure" + (opt_message ? ": " + opt_message : ""), Array.prototype.slice.call(arguments, 1)); } }; goog.asserts.assertNumber = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isNumber(value)) { goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertString = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isString(value)) { goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertFunction = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isFunction(value)) { goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertObject = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isObject(value)) { goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertArray = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isArray(value)) { goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertBoolean = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isBoolean(value)) { goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertInstanceof = function(value, type, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !(value instanceof type)) { goog.asserts.doAssertFailure_("instanceof check failed.", null, opt_message, Array.prototype.slice.call(arguments, 3)) } return value }; goog.asserts.assertObjectPrototypeIsIntact = function() { for(var key in Object.prototype) { goog.asserts.fail(key + " should not be enumerable in Object.prototype.") } }; goog.provide("ol.Size"); goog.provide("ol.size"); ol.Size; ol.size.equals = function(a, b) { return a[0] == b[0] && a[1] == b[1] }; goog.provide("goog.array"); goog.provide("goog.array.ArrayLike"); goog.require("goog.asserts"); goog.define("goog.NATIVE_ARRAY_PROTOTYPES", goog.TRUSTED_SITE); goog.array.ArrayLike; goog.array.peek = function(array) { return array[array.length - 1] }; goog.array.ARRAY_PROTOTYPE_ = Array.prototype; goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.indexOf ? function(arr, obj, opt_fromIndex) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.indexOf.call(arr, obj, opt_fromIndex) } : function(arr, obj, opt_fromIndex) { var fromIndex = opt_fromIndex == null ? 0 : opt_fromIndex < 0 ? Math.max(0, arr.length + opt_fromIndex) : opt_fromIndex; if(goog.isString(arr)) { if(!goog.isString(obj) || obj.length != 1) { return-1 } return arr.indexOf(obj, fromIndex) } for(var i = fromIndex;i < arr.length;i++) { if(i in arr && arr[i] === obj) { return i } } return-1 }; goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.lastIndexOf ? function(arr, obj, opt_fromIndex) { goog.asserts.assert(arr.length != null); var fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex; return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(arr, obj, fromIndex) } : function(arr, obj, opt_fromIndex) { var fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex; if(fromIndex < 0) { fromIndex = Math.max(0, arr.length + fromIndex) } if(goog.isString(arr)) { if(!goog.isString(obj) || obj.length != 1) { return-1 } return arr.lastIndexOf(obj, fromIndex) } for(var i = fromIndex;i >= 0;i--) { if(i in arr && arr[i] === obj) { return i } } return-1 }; goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.forEach ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); goog.array.ARRAY_PROTOTYPE_.forEach.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2) { f.call(opt_obj, arr2[i], i, arr) } } }; goog.array.forEachRight = function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = l - 1;i >= 0;--i) { if(i in arr2) { f.call(opt_obj, arr2[i], i, arr) } } }; goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.filter ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.filter.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var res = []; var resLength = 0; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2) { var val = arr2[i]; if(f.call(opt_obj, val, i, arr)) { res[resLength++] = val } } } return res }; goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.map ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.map.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var res = new Array(l); var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2) { res[i] = f.call(opt_obj, arr2[i], i, arr) } } return res }; goog.array.reduce = function(arr, f, val, opt_obj) { if(arr.reduce) { if(opt_obj) { return arr.reduce(goog.bind(f, opt_obj), val) }else { return arr.reduce(f, val) } } var rval = val; goog.array.forEach(arr, function(val, index) { rval = f.call(opt_obj, rval, val, index, arr) }); return rval }; goog.array.reduceRight = function(arr, f, val, opt_obj) { if(arr.reduceRight) { if(opt_obj) { return arr.reduceRight(goog.bind(f, opt_obj), val) }else { return arr.reduceRight(f, val) } } var rval = val; goog.array.forEachRight(arr, function(val, index) { rval = f.call(opt_obj, rval, val, index, arr) }); return rval }; goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.some ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.some.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) { return true } } return false }; goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.every ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.every.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2 && !f.call(opt_obj, arr2[i], i, arr)) { return false } } return true }; goog.array.count = function(arr, f, opt_obj) { var count = 0; goog.array.forEach(arr, function(element, index, arr) { if(f.call(opt_obj, element, index, arr)) { ++count } }, opt_obj); return count }; goog.array.find = function(arr, f, opt_obj) { var i = goog.array.findIndex(arr, f, opt_obj); return i < 0 ? null : goog.isString(arr) ? arr.charAt(i) : arr[i] }; goog.array.findIndex = function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) { return i } } return-1 }; goog.array.findRight = function(arr, f, opt_obj) { var i = goog.array.findIndexRight(arr, f, opt_obj); return i < 0 ? null : goog.isString(arr) ? arr.charAt(i) : arr[i] }; goog.array.findIndexRight = function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = l - 1;i >= 0;i--) { if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) { return i } } return-1 }; goog.array.contains = function(arr, obj) { return goog.array.indexOf(arr, obj) >= 0 }; goog.array.isEmpty = function(arr) { return arr.length == 0 }; goog.array.clear = function(arr) { if(!goog.isArray(arr)) { for(var i = arr.length - 1;i >= 0;i--) { delete arr[i] } } arr.length = 0 }; goog.array.insert = function(arr, obj) { if(!goog.array.contains(arr, obj)) { arr.push(obj) } }; goog.array.insertAt = function(arr, obj, opt_i) { goog.array.splice(arr, opt_i, 0, obj) }; goog.array.insertArrayAt = function(arr, elementsToAdd, opt_i) { goog.partial(goog.array.splice, arr, opt_i, 0).apply(null, elementsToAdd) }; goog.array.insertBefore = function(arr, obj, opt_obj2) { var i; if(arguments.length == 2 || (i = goog.array.indexOf(arr, opt_obj2)) < 0) { arr.push(obj) }else { goog.array.insertAt(arr, obj, i) } }; goog.array.remove = function(arr, obj) { var i = goog.array.indexOf(arr, obj); var rv; if(rv = i >= 0) { goog.array.removeAt(arr, i) } return rv }; goog.array.removeAt = function(arr, i) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.splice.call(arr, i, 1).length == 1 }; goog.array.removeIf = function(arr, f, opt_obj) { var i = goog.array.findIndex(arr, f, opt_obj); if(i >= 0) { goog.array.removeAt(arr, i); return true } return false }; goog.array.concat = function(var_args) { return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_, arguments) }; goog.array.toArray = function(object) { var length = object.length; if(length > 0) { var rv = new Array(length); for(var i = 0;i < length;i++) { rv[i] = object[i] } return rv } return[] }; goog.array.clone = goog.array.toArray; goog.array.extend = function(arr1, var_args) { for(var i = 1;i < arguments.length;i++) { var arr2 = arguments[i]; var isArrayLike; if(goog.isArray(arr2) || (isArrayLike = goog.isArrayLike(arr2)) && Object.prototype.hasOwnProperty.call(arr2, "callee")) { arr1.push.apply(arr1, arr2) }else { if(isArrayLike) { var len1 = arr1.length; var len2 = arr2.length; for(var j = 0;j < len2;j++) { arr1[len1 + j] = arr2[j] } }else { arr1.push(arr2) } } } }; goog.array.splice = function(arr, index, howMany, var_args) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.splice.apply(arr, goog.array.slice(arguments, 1)) }; goog.array.slice = function(arr, start, opt_end) { goog.asserts.assert(arr.length != null); if(arguments.length <= 2) { return goog.array.ARRAY_PROTOTYPE_.slice.call(arr, start) }else { return goog.array.ARRAY_PROTOTYPE_.slice.call(arr, start, opt_end) } }; goog.array.removeDuplicates = function(arr, opt_rv) { var returnArray = opt_rv || arr; var seen = {}, cursorInsert = 0, cursorRead = 0; while(cursorRead < arr.length) { var current = arr[cursorRead++]; var key = goog.isObject(current) ? "o" + goog.getUid(current) : (typeof current).charAt(0) + current; if(!Object.prototype.hasOwnProperty.call(seen, key)) { seen[key] = true; returnArray[cursorInsert++] = current } } returnArray.length = cursorInsert }; goog.array.binarySearch = function(arr, target, opt_compareFn) { return goog.array.binarySearch_(arr, opt_compareFn || goog.array.defaultCompare, false, target) }; goog.array.binarySelect = function(arr, evaluator, opt_obj) { return goog.array.binarySearch_(arr, evaluator, true, undefined, opt_obj) }; goog.array.binarySearch_ = function(arr, compareFn, isEvaluator, opt_target, opt_selfObj) { var left = 0; var right = arr.length; var found; while(left < right) { var middle = left + right >> 1; var compareResult; if(isEvaluator) { compareResult = compareFn.call(opt_selfObj, arr[middle], middle, arr) }else { compareResult = compareFn(opt_target, arr[middle]) } if(compareResult > 0) { left = middle + 1 }else { right = middle; found = !compareResult } } return found ? left : ~left }; goog.array.sort = function(arr, opt_compareFn) { goog.asserts.assert(arr.length != null); goog.array.ARRAY_PROTOTYPE_.sort.call(arr, opt_compareFn || goog.array.defaultCompare) }; goog.array.stableSort = function(arr, opt_compareFn) { for(var i = 0;i < arr.length;i++) { arr[i] = {index:i, value:arr[i]} } var valueCompareFn = opt_compareFn || goog.array.defaultCompare; function stableCompareFn(obj1, obj2) { return valueCompareFn(obj1.value, obj2.value) || obj1.index - obj2.index } goog.array.sort(arr, stableCompareFn); for(var i = 0;i < arr.length;i++) { arr[i] = arr[i].value } }; goog.array.sortObjectsByKey = function(arr, key, opt_compareFn) { var compare = opt_compareFn || goog.array.defaultCompare; goog.array.sort(arr, function(a, b) { return compare(a[key], b[key]) }) }; goog.array.isSorted = function(arr, opt_compareFn, opt_strict) { var compare = opt_compareFn || goog.array.defaultCompare; for(var i = 1;i < arr.length;i++) { var compareResult = compare(arr[i - 1], arr[i]); if(compareResult > 0 || compareResult == 0 && opt_strict) { return false } } return true }; goog.array.equals = function(arr1, arr2, opt_equalsFn) { if(!goog.isArrayLike(arr1) || !goog.isArrayLike(arr2) || arr1.length != arr2.length) { return false } var l = arr1.length; var equalsFn = opt_equalsFn || goog.array.defaultCompareEquality; for(var i = 0;i < l;i++) { if(!equalsFn(arr1[i], arr2[i])) { return false } } return true }; goog.array.compare = function(arr1, arr2, opt_equalsFn) { return goog.array.equals(arr1, arr2, opt_equalsFn) }; goog.array.compare3 = function(arr1, arr2, opt_compareFn) { var compare = opt_compareFn || goog.array.defaultCompare; var l = Math.min(arr1.length, arr2.length); for(var i = 0;i < l;i++) { var result = compare(arr1[i], arr2[i]); if(result != 0) { return result } } return goog.array.defaultCompare(arr1.length, arr2.length) }; goog.array.defaultCompare = function(a, b) { return a > b ? 1 : a < b ? -1 : 0 }; goog.array.defaultCompareEquality = function(a, b) { return a === b }; goog.array.binaryInsert = function(array, value, opt_compareFn) { var index = goog.array.binarySearch(array, value, opt_compareFn); if(index < 0) { goog.array.insertAt(array, value, -(index + 1)); return true } return false }; goog.array.binaryRemove = function(array, value, opt_compareFn) { var index = goog.array.binarySearch(array, value, opt_compareFn); return index >= 0 ? goog.array.removeAt(array, index) : false }; goog.array.bucket = function(array, sorter, opt_obj) { var buckets = {}; for(var i = 0;i < array.length;i++) { var value = array[i]; var key = sorter.call(opt_obj, value, i, array); if(goog.isDef(key)) { var bucket = buckets[key] || (buckets[key] = []); bucket.push(value) } } return buckets }; goog.array.toObject = function(arr, keyFunc, opt_obj) { var ret = {}; goog.array.forEach(arr, function(element, index) { ret[keyFunc.call(opt_obj, element, index, arr)] = element }); return ret }; goog.array.range = function(startOrEnd, opt_end, opt_step) { var array = []; var start = 0; var end = startOrEnd; var step = opt_step || 1; if(opt_end !== undefined) { start = startOrEnd; end = opt_end } if(step * (end - start) < 0) { return[] } if(step > 0) { for(var i = start;i < end;i += step) { array.push(i) } }else { for(var i = start;i > end;i += step) { array.push(i) } } return array }; goog.array.repeat = function(value, n) { var array = []; for(var i = 0;i < n;i++) { array[i] = value } return array }; goog.array.flatten = function(var_args) { var result = []; for(var i = 0;i < arguments.length;i++) { var element = arguments[i]; if(goog.isArray(element)) { result.push.apply(result, goog.array.flatten.apply(null, element)) }else { result.push(element) } } return result }; goog.array.rotate = function(array, n) { goog.asserts.assert(array.length != null); if(array.length) { n %= array.length; if(n > 0) { goog.array.ARRAY_PROTOTYPE_.unshift.apply(array, array.splice(-n, n)) }else { if(n < 0) { goog.array.ARRAY_PROTOTYPE_.push.apply(array, array.splice(0, -n)) } } } return array }; goog.array.moveItem = function(arr, fromIndex, toIndex) { goog.asserts.assert(fromIndex >= 0 && fromIndex < arr.length); goog.asserts.assert(toIndex >= 0 && toIndex < arr.length); var removedItems = goog.array.ARRAY_PROTOTYPE_.splice.call(arr, fromIndex, 1); goog.array.ARRAY_PROTOTYPE_.splice.call(arr, toIndex, 0, removedItems[0]) }; goog.array.zip = function(var_args) { if(!arguments.length) { return[] } var result = []; for(var i = 0;true;i++) { var value = []; for(var j = 0;j < arguments.length;j++) { var arr = arguments[j]; if(i >= arr.length) { return result } value.push(arr[i]) } result.push(value) } }; goog.array.shuffle = function(arr, opt_randFn) { var randFn = opt_randFn || Math.random; for(var i = arr.length - 1;i > 0;i--) { var j = Math.floor(randFn() * (i + 1)); var tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp } }; goog.provide("ol.TileCoord"); goog.require("goog.array"); ol.QuadKeyCharCode = {ZERO:"0".charCodeAt(0), ONE:"1".charCodeAt(0), TWO:"2".charCodeAt(0), THREE:"3".charCodeAt(0)}; ol.TileCoord = function(z, x, y) { this.z = z; this.x = x; this.y = y }; ol.TileCoord.createFromQuadKey = function(quadKey) { var z = quadKey.length, x = 0, y = 0; var mask = 1 << z - 1; var i; for(i = 0;i < z;++i) { switch(quadKey.charCodeAt(i)) { case ol.QuadKeyCharCode.ONE: x += mask; break; case ol.QuadKeyCharCode.TWO: y += mask; break; case ol.QuadKeyCharCode.THREE: x += mask; y += mask; break } mask >>= 1 } return new ol.TileCoord(z, x, y) }; ol.TileCoord.createFromString = function(str) { var v = str.split("/"); v = goog.array.map(v, function(e, i, a) { return parseInt(e, 10) }); return new ol.TileCoord(v[0], v[1], v[2]) }; ol.TileCoord.createOrUpdate = function(z, x, y, tileCoord) { if(goog.isDef(tileCoord)) { tileCoord.z = z; tileCoord.x = x; tileCoord.y = y; return tileCoord }else { return new ol.TileCoord(z, x, y) } }; ol.TileCoord.getKeyZXY = function(z, x, y) { return[z, x, y].join("/") }; ol.TileCoord.prototype.hash = function() { return(this.x << this.z) + this.y }; ol.TileCoord.prototype.quadKey = function() { var digits = new Array(this.z); var mask = 1 << this.z - 1; var i, charCode; for(i = 0;i < this.z;++i) { charCode = ol.QuadKeyCharCode.ZERO; if(this.x & mask) { charCode += 1 } if(this.y & mask) { charCode += 2 } digits[i] = String.fromCharCode(charCode); mask >>= 1 } return digits.join("") }; ol.TileCoord.prototype.toString = function() { return ol.TileCoord.getKeyZXY(this.z, this.x, this.y) }; goog.provide("ol.TileRange"); goog.require("goog.asserts"); goog.require("ol.Size"); goog.require("ol.TileCoord"); ol.TileRange = function(minX, maxX, minY, maxY) { this.minX = minX; this.maxX = maxX; this.minY = minY; this.maxY = maxY }; ol.TileRange.boundingTileRange = function(var_args) { var tileCoord0 = arguments[0]; var tileRange = new ol.TileRange(tileCoord0.x, tileCoord0.x, tileCoord0.y, tileCoord0.y); var i, ii, tileCoord; for(i = 1, ii = arguments.length;i < ii;++i) { tileCoord = arguments[i]; goog.asserts.assert(tileCoord.z == tileCoord0.z); tileRange.minX = Math.min(tileRange.minX, tileCoord.x); tileRange.maxX = Math.max(tileRange.maxX, tileCoord.x); tileRange.minY = Math.min(tileRange.minY, tileCoord.y); tileRange.maxY = Math.max(tileRange.maxY, tileCoord.y) } return tileRange }; ol.TileRange.createOrUpdate = function(minX, maxX, minY, maxY, tileRange) { if(goog.isDef(tileRange)) { tileRange.minX = minX; tileRange.maxX = maxX; tileRange.minY = minY; tileRange.maxY = maxY; return tileRange }else { return new ol.TileRange(minX, maxX, minY, maxY) } }; ol.TileRange.prototype.contains = function(tileCoord) { return this.minX <= tileCoord.x && tileCoord.x <= this.maxX && this.minY <= tileCoord.y && tileCoord.y <= this.maxY }; ol.TileRange.prototype.containsTileRange = function(tileRange) { return this.minX <= tileRange.minX && tileRange.maxX <= this.maxX && this.minY <= tileRange.minY && tileRange.maxY <= this.maxY }; ol.TileRange.prototype.equals = function(tileRange) { return this.minX == tileRange.minX && this.minY == tileRange.minY && this.maxX == tileRange.maxX && this.maxY == tileRange.maxY }; ol.TileRange.prototype.extend = function(tileRange) { if(tileRange.minX < this.minX) { this.minX = tileRange.minX } if(tileRange.maxX > this.maxX) { this.maxX = tileRange.maxX } if(tileRange.minY < this.minY) { this.minY = tileRange.minY } if(tileRange.maxY > this.maxY) { this.maxY = tileRange.maxY } }; ol.TileRange.prototype.getHeight = function() { return this.maxY - this.minY + 1 }; ol.TileRange.prototype.getSize = function() { return[this.getWidth(), this.getHeight()] }; ol.TileRange.prototype.getWidth = function() { return this.maxX - this.minX + 1 }; ol.TileRange.prototype.intersects = function(tileRange) { return this.minX <= tileRange.maxX && this.maxX >= tileRange.minX && this.minY <= tileRange.maxY && this.maxY >= tileRange.minY }; goog.provide("ol.Attribution"); goog.require("ol.TileRange"); ol.Attribution = function(options) { this.html_ = options.html; this.tileRanges_ = goog.isDef(options.tileRanges) ? options.tileRanges : null }; ol.Attribution.prototype.getHTML = function() { return this.html_ }; ol.Attribution.prototype.intersectsAnyTileRange = function(tileRanges) { if(goog.isNull(this.tileRanges_)) { return true } var i, ii, tileRange, z; for(z in tileRanges) { if(!(z in this.tileRanges_)) { continue } tileRange = tileRanges[z]; for(i = 0, ii = this.tileRanges_[z].length;i < ii;++i) { if(this.tileRanges_[z][i].intersects(tileRange)) { return true } } } return false }; goog.provide("ol.BrowserFeature"); ol.ASSUME_TOUCH = false; ol.BrowserFeature = {HAS_TOUCH:ol.ASSUME_TOUCH || goog.global.document && "ontouchstart" in goog.global.document.documentElement || !!goog.global.navigator.msPointerEnabled}; goog.provide("goog.disposable.IDisposable"); goog.disposable.IDisposable = function() { }; goog.disposable.IDisposable.prototype.dispose; goog.disposable.IDisposable.prototype.isDisposed; goog.provide("goog.Disposable"); goog.provide("goog.dispose"); goog.require("goog.disposable.IDisposable"); goog.Disposable = function() { if(goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF) { if(goog.Disposable.INCLUDE_STACK_ON_CREATION) { this.creationStack = (new Error).stack } goog.Disposable.instances_[goog.getUid(this)] = this } }; goog.Disposable.MonitoringMode = {OFF:0, PERMANENT:1, INTERACTIVE:2}; goog.define("goog.Disposable.MONITORING_MODE", 0); goog.define("goog.Disposable.INCLUDE_STACK_ON_CREATION", true); goog.Disposable.instances_ = {}; goog.Disposable.getUndisposedObjects = function() { var ret = []; for(var id in goog.Disposable.instances_) { if(goog.Disposable.instances_.hasOwnProperty(id)) { ret.push(goog.Disposable.instances_[Number(id)]) } } return ret }; goog.Disposable.clearUndisposedObjects = function() { goog.Disposable.instances_ = {} }; goog.Disposable.prototype.disposed_ = false; goog.Disposable.prototype.onDisposeCallbacks_; goog.Disposable.prototype.creationStack; goog.Disposable.prototype.isDisposed = function() { return this.disposed_ }; goog.Disposable.prototype.getDisposed = goog.Disposable.prototype.isDisposed; goog.Disposable.prototype.dispose = function() { if(!this.disposed_) { this.disposed_ = true; this.disposeInternal(); if(goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF) { var uid = goog.getUid(this); if(goog.Disposable.MONITORING_MODE == goog.Disposable.MonitoringMode.PERMANENT && !goog.Disposable.instances_.hasOwnProperty(uid)) { throw Error(this + " did not call the goog.Disposable base " + "constructor or was disposed of after a clearUndisposedObjects " + "call"); } delete goog.Disposable.instances_[uid] } } }; goog.Disposable.prototype.registerDisposable = function(disposable) { this.addOnDisposeCallback(goog.partial(goog.dispose, disposable)) }; goog.Disposable.prototype.addOnDisposeCallback = function(callback, opt_scope) { if(!this.onDisposeCallbacks_) { this.onDisposeCallbacks_ = [] } this.onDisposeCallbacks_.push(goog.bind(callback, opt_scope)) }; goog.Disposable.prototype.disposeInternal = function() { if(this.onDisposeCallbacks_) { while(this.onDisposeCallbacks_.length) { this.onDisposeCallbacks_.shift()() } } }; goog.Disposable.isDisposed = function(obj) { if(obj && typeof obj.isDisposed == "function") { return obj.isDisposed() } return false }; goog.dispose = function(obj) { if(obj && typeof obj.dispose == "function") { obj.dispose() } }; goog.disposeAll = function(var_args) { for(var i = 0, len = arguments.length;i < len;++i) { var disposable = arguments[i]; if(goog.isArrayLike(disposable)) { goog.disposeAll.apply(null, disposable) }else { goog.dispose(disposable) } } }; goog.provide("goog.events.Event"); goog.provide("goog.events.EventLike"); goog.require("goog.Disposable"); goog.events.EventLike; goog.events.Event = function(type, opt_target) { this.type = type; this.target = opt_target; this.currentTarget = this.target }; goog.events.Event.prototype.disposeInternal = function() { }; goog.events.Event.prototype.dispose = function() { }; goog.events.Event.prototype.propagationStopped_ = false; goog.events.Event.prototype.defaultPrevented = false; goog.events.Event.prototype.returnValue_ = true; goog.events.Event.prototype.stopPropagation = function() { this.propagationStopped_ = true }; goog.events.Event.prototype.preventDefault = function() { this.defaultPrevented = true; this.returnValue_ = false }; goog.events.Event.stopPropagation = function(e) { e.stopPropagation() }; goog.events.Event.preventDefault = function(e) { e.preventDefault() }; goog.provide("goog.debug.EntryPointMonitor"); goog.provide("goog.debug.entryPointRegistry"); goog.require("goog.asserts"); goog.debug.EntryPointMonitor = function() { }; goog.debug.EntryPointMonitor.prototype.wrap; goog.debug.EntryPointMonitor.prototype.unwrap; goog.debug.entryPointRegistry.refList_ = []; goog.debug.entryPointRegistry.monitors_ = []; goog.debug.entryPointRegistry.monitorsMayExist_ = false; goog.debug.entryPointRegistry.register = function(callback) { goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length] = callback; if(goog.debug.entryPointRegistry.monitorsMayExist_) { var monitors = goog.debug.entryPointRegistry.monitors_; for(var i = 0;i < monitors.length;i++) { callback(goog.bind(monitors[i].wrap, monitors[i])) } } }; goog.debug.entryPointRegistry.monitorAll = function(monitor) { goog.debug.entryPointRegistry.monitorsMayExist_ = true; var transformer = goog.bind(monitor.wrap, monitor); for(var i = 0;i < goog.debug.entryPointRegistry.refList_.length;i++) { goog.debug.entryPointRegistry.refList_[i](transformer) } goog.debug.entryPointRegistry.monitors_.push(monitor) }; goog.debug.entryPointRegistry.unmonitorAllIfPossible = function(monitor) { var monitors = goog.debug.entryPointRegistry.monitors_; goog.asserts.assert(monitor == monitors[monitors.length - 1], "Only the most recent monitor can be unwrapped."); var transformer = goog.bind(monitor.unwrap, monitor); for(var i = 0;i < goog.debug.entryPointRegistry.refList_.length;i++) { goog.debug.entryPointRegistry.refList_[i](transformer) } monitors.length-- }; goog.provide("goog.userAgent"); goog.require("goog.string"); goog.define("goog.userAgent.ASSUME_IE", false); goog.define("goog.userAgent.ASSUME_GECKO", false); goog.define("goog.userAgent.ASSUME_WEBKIT", false); goog.define("goog.userAgent.ASSUME_MOBILE_WEBKIT", false); goog.define("goog.userAgent.ASSUME_OPERA", false); goog.define("goog.userAgent.ASSUME_ANY_VERSION", false); goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA; goog.userAgent.getUserAgentString = function() { return goog.global["navigator"] ? goog.global["navigator"].userAgent : null }; goog.userAgent.getNavigator = function() { return goog.global["navigator"] }; goog.userAgent.init_ = function() { goog.userAgent.detectedOpera_ = false; goog.userAgent.detectedIe_ = false; goog.userAgent.detectedWebkit_ = false; goog.userAgent.detectedMobile_ = false; goog.userAgent.detectedGecko_ = false; var ua; if(!goog.userAgent.BROWSER_KNOWN_ && (ua = goog.userAgent.getUserAgentString())) { var navigator = goog.userAgent.getNavigator(); goog.userAgent.detectedOpera_ = goog.string.startsWith(ua, "Opera"); goog.userAgent.detectedIe_ = !goog.userAgent.detectedOpera_ && (goog.string.contains(ua, "MSIE") || goog.string.contains(ua, "Trident")); goog.userAgent.detectedWebkit_ = !goog.userAgent.detectedOpera_ && goog.string.contains(ua, "WebKit"); goog.userAgent.detectedMobile_ = goog.userAgent.detectedWebkit_ && goog.string.contains(ua, "Mobile"); goog.userAgent.detectedGecko_ = !goog.userAgent.detectedOpera_ && !goog.userAgent.detectedWebkit_ && !goog.userAgent.detectedIe_ && navigator.product == "Gecko" } }; if(!goog.userAgent.BROWSER_KNOWN_) { goog.userAgent.init_() } goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : goog.userAgent.detectedOpera_; goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : goog.userAgent.detectedIe_; goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : goog.userAgent.detectedGecko_; goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : goog.userAgent.detectedWebkit_; goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.detectedMobile_; goog.userAgent.SAFARI = goog.userAgent.WEBKIT; goog.userAgent.determinePlatform_ = function() { var navigator = goog.userAgent.getNavigator(); return navigator && navigator.platform || "" }; goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_(); goog.define("goog.userAgent.ASSUME_MAC", false); goog.define("goog.userAgent.ASSUME_WINDOWS", false); goog.define("goog.userAgent.ASSUME_LINUX", false); goog.define("goog.userAgent.ASSUME_X11", false); goog.define("goog.userAgent.ASSUME_ANDROID", false); goog.define("goog.userAgent.ASSUME_IPHONE", false); goog.define("goog.userAgent.ASSUME_IPAD", false); 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.initPlatform_ = function() { goog.userAgent.detectedMac_ = goog.string.contains(goog.userAgent.PLATFORM, "Mac"); goog.userAgent.detectedWindows_ = goog.string.contains(goog.userAgent.PLATFORM, "Win"); goog.userAgent.detectedLinux_ = goog.string.contains(goog.userAgent.PLATFORM, "Linux"); goog.userAgent.detectedX11_ = !!goog.userAgent.getNavigator() && goog.string.contains(goog.userAgent.getNavigator()["appVersion"] || "", "X11"); var ua = goog.userAgent.getUserAgentString(); goog.userAgent.detectedAndroid_ = !!ua && goog.string.contains(ua, "Android"); goog.userAgent.detectedIPhone_ = !!ua && goog.string.contains(ua, "iPhone"); goog.userAgent.detectedIPad_ = !!ua && goog.string.contains(ua, "iPad") }; if(!goog.userAgent.PLATFORM_KNOWN_) { goog.userAgent.initPlatform_() } goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.userAgent.detectedMac_; goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.userAgent.detectedWindows_; goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.detectedLinux_; goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.detectedX11_; goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.userAgent.detectedAndroid_; goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.userAgent.detectedIPhone_; goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.userAgent.detectedIPad_; goog.userAgent.determineVersion_ = function() { var version = "", re; if(goog.userAgent.OPERA && goog.global["opera"]) { var operaVersion = goog.global["opera"].version; version = typeof operaVersion == "function" ? operaVersion() : operaVersion }else { if(goog.userAgent.GECKO) { re = /rv\:([^\);]+)(\)|;)/ }else { if(goog.userAgent.IE) { re = /\b(?:MSIE|rv)\s+([^\);]+)(\)|;)/ }else { if(goog.userAgent.WEBKIT) { re = /WebKit\/(\S+)/ } } } if(re) { var arr = re.exec(goog.userAgent.getUserAgentString()); version = arr ? arr[1] : "" } } if(goog.userAgent.IE) { var docMode = goog.userAgent.getDocumentMode_(); if(docMode > parseFloat(version)) { return String(docMode) } } return version }; goog.userAgent.getDocumentMode_ = function() { var doc = goog.global["document"]; return doc ? doc["documentMode"] : undefined }; goog.userAgent.VERSION = goog.userAgent.determineVersion_(); goog.userAgent.compare = function(v1, v2) { return goog.string.compareVersions(v1, v2) }; goog.userAgent.isVersionOrHigherCache_ = {}; goog.userAgent.isVersionOrHigher = function(version) { return goog.userAgent.ASSUME_ANY_VERSION || goog.userAgent.isVersionOrHigherCache_[version] || (goog.userAgent.isVersionOrHigherCache_[version] = goog.string.compareVersions(goog.userAgent.VERSION, version) >= 0) }; goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher; goog.userAgent.isDocumentModeOrHigher = function(documentMode) { return goog.userAgent.IE && goog.userAgent.DOCUMENT_MODE >= documentMode }; goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher; goog.userAgent.DOCUMENT_MODE = function() { var doc = goog.global["document"]; if(!doc || !goog.userAgent.IE) { return undefined } var mode = goog.userAgent.getDocumentMode_(); return mode || (doc["compatMode"] == "CSS1Compat" ? parseInt(goog.userAgent.VERSION, 10) : 5) }(); goog.provide("goog.events.BrowserFeature"); goog.require("goog.userAgent"); goog.events.BrowserFeature = {HAS_W3C_BUTTON:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), HAS_W3C_EVENT_SUPPORT:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), HAS_NAVIGATOR_ONLINE_PROPERTY:!goog.userAgent.WEBKIT || goog.userAgent.isVersionOrHigher("528"), HAS_HTML5_NETWORK_EVENT_SUPPORT:goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9b") || goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8") || goog.userAgent.OPERA && goog.userAgent.isVersionOrHigher("9.5") || goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("528"), HTML5_NETWORK_EVENTS_FIRE_ON_BODY:goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher("8") || goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), TOUCH_ENABLED:"ontouchstart" in goog.global || !!(goog.global["document"] && document.documentElement && "ontouchstart" in document.documentElement) || !!(goog.global["navigator"] && goog.global["navigator"]["msMaxTouchPoints"])}; goog.provide("goog.events.EventType"); goog.require("goog.userAgent"); goog.events.EventType = {CLICK:"click", DBLCLICK:"dblclick", MOUSEDOWN:"mousedown", MOUSEUP:"mouseup", MOUSEOVER:"mouseover", MOUSEOUT:"mouseout", MOUSEMOVE:"mousemove", SELECTSTART:"selectstart", KEYPRESS:"keypress", KEYDOWN:"keydown", KEYUP:"keyup", BLUR:"blur", FOCUS:"focus", DEACTIVATE:"deactivate", FOCUSIN:goog.userAgent.IE ? "focusin" : "DOMFocusIn", FOCUSOUT:goog.userAgent.IE ? "focusout" : "DOMFocusOut", CHANGE:"change", SELECT:"select", SUBMIT:"submit", INPUT:"input", PROPERTYCHANGE:"propertychange", DRAGSTART:"dragstart", DRAG:"drag", DRAGENTER:"dragenter", DRAGOVER:"dragover", DRAGLEAVE:"dragleave", DROP:"drop", DRAGEND:"dragend", TOUCHSTART:"touchstart", TOUCHMOVE:"touchmove", TOUCHEND:"touchend", TOUCHCANCEL:"touchcancel", BEFOREUNLOAD:"beforeunload", CONSOLEMESSAGE:"consolemessage", CONTEXTMENU:"contextmenu", DOMCONTENTLOADED:"DOMContentLoaded", ERROR:"error", HELP:"help", LOAD:"load", LOSECAPTURE:"losecapture", READYSTATECHANGE:"readystatechange", RESIZE:"resize", SCROLL:"scroll", UNLOAD:"unload", HASHCHANGE:"hashchange", PAGEHIDE:"pagehide", PAGESHOW:"pageshow", POPSTATE:"popstate", COPY:"copy", PASTE:"paste", CUT:"cut", BEFORECOPY:"beforecopy", BEFORECUT:"beforecut", BEFOREPASTE:"beforepaste", ONLINE:"online", OFFLINE:"offline", MESSAGE:"message", CONNECT:"connect", TRANSITIONEND:goog.userAgent.WEBKIT ? "webkitTransitionEnd" : goog.userAgent.OPERA ? "oTransitionEnd" : "transitionend", MSGESTURECHANGE:"MSGestureChange", MSGESTUREEND:"MSGestureEnd", MSGESTUREHOLD:"MSGestureHold", MSGESTURESTART:"MSGestureStart", MSGESTURETAP:"MSGestureTap", MSGOTPOINTERCAPTURE:"MSGotPointerCapture", MSINERTIASTART:"MSInertiaStart", MSLOSTPOINTERCAPTURE:"MSLostPointerCapture", MSPOINTERCANCEL:"MSPointerCancel", MSPOINTERDOWN:"MSPointerDown", MSPOINTERMOVE:"MSPointerMove", MSPOINTEROVER:"MSPointerOver", MSPOINTEROUT:"MSPointerOut", MSPOINTERUP:"MSPointerUp", TEXTINPUT:"textinput", COMPOSITIONSTART:"compositionstart", COMPOSITIONUPDATE:"compositionupdate", COMPOSITIONEND:"compositionend", EXIT:"exit", LOADABORT:"loadabort", LOADCOMMIT:"loadcommit", LOADREDIRECT:"loadredirect", LOADSTART:"loadstart", LOADSTOP:"loadstop", RESPONSIVE:"responsive", SIZECHANGED:"sizechanged", UNRESPONSIVE:"unresponsive"}; goog.provide("goog.reflect"); goog.reflect.object = function(type, object) { return object }; goog.reflect.sinkValue = function(x) { goog.reflect.sinkValue[" "](x); return x }; goog.reflect.sinkValue[" "] = goog.nullFunction; goog.reflect.canAccessProperty = function(obj, prop) { try { goog.reflect.sinkValue(obj[prop]); return true }catch(e) { } return false }; goog.provide("goog.events.BrowserEvent"); goog.provide("goog.events.BrowserEvent.MouseButton"); goog.require("goog.events.BrowserFeature"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.reflect"); goog.require("goog.userAgent"); goog.events.BrowserEvent = function(opt_e, opt_currentTarget) { if(opt_e) { this.init(opt_e, opt_currentTarget) } }; goog.inherits(goog.events.BrowserEvent, goog.events.Event); goog.events.BrowserEvent.MouseButton = {LEFT:0, MIDDLE:1, RIGHT:2}; goog.events.BrowserEvent.IEButtonMap = [1, 4, 2]; goog.events.BrowserEvent.prototype.target = null; goog.events.BrowserEvent.prototype.currentTarget; goog.events.BrowserEvent.prototype.relatedTarget = null; goog.events.BrowserEvent.prototype.offsetX = 0; goog.events.BrowserEvent.prototype.offsetY = 0; goog.events.BrowserEvent.prototype.clientX = 0; goog.events.BrowserEvent.prototype.clientY = 0; goog.events.BrowserEvent.prototype.screenX = 0; goog.events.BrowserEvent.prototype.screenY = 0; goog.events.BrowserEvent.prototype.button = 0; goog.events.BrowserEvent.prototype.keyCode = 0; goog.events.BrowserEvent.prototype.charCode = 0; goog.events.BrowserEvent.prototype.ctrlKey = false; goog.events.BrowserEvent.prototype.altKey = false; goog.events.BrowserEvent.prototype.shiftKey = false; goog.events.BrowserEvent.prototype.metaKey = false; goog.events.BrowserEvent.prototype.state; goog.events.BrowserEvent.prototype.platformModifierKey = false; goog.events.BrowserEvent.prototype.event_ = null; goog.events.BrowserEvent.prototype.init = function(e, opt_currentTarget) { var type = this.type = e.type; goog.events.Event.call(this, type); this.target = (e.target) || e.srcElement; this.currentTarget = (opt_currentTarget); var relatedTarget = (e.relatedTarget); if(relatedTarget) { if(goog.userAgent.GECKO) { if(!goog.reflect.canAccessProperty(relatedTarget, "nodeName")) { relatedTarget = null } } }else { if(type == goog.events.EventType.MOUSEOVER) { relatedTarget = e.fromElement }else { if(type == goog.events.EventType.MOUSEOUT) { relatedTarget = e.toElement } } } this.relatedTarget = relatedTarget; this.offsetX = goog.userAgent.WEBKIT || e.offsetX !== undefined ? e.offsetX : e.layerX; this.offsetY = goog.userAgent.WEBKIT || e.offsetY !== undefined ? e.offsetY : e.layerY; this.clientX = e.clientX !== undefined ? e.clientX : e.pageX; this.clientY = e.clientY !== undefined ? e.clientY : e.pageY; this.screenX = e.screenX || 0; this.screenY = e.screenY || 0; this.button = e.button; this.keyCode = e.keyCode || 0; this.charCode = e.charCode || (type == "keypress" ? e.keyCode : 0); this.ctrlKey = e.ctrlKey; this.altKey = e.altKey; this.shiftKey = e.shiftKey; this.metaKey = e.metaKey; this.platformModifierKey = goog.userAgent.MAC ? e.metaKey : e.ctrlKey; this.state = e.state; this.event_ = e; if(e.defaultPrevented) { this.preventDefault() } delete this.propagationStopped_ }; goog.events.BrowserEvent.prototype.isButton = function(button) { if(!goog.events.BrowserFeature.HAS_W3C_BUTTON) { if(this.type == "click") { return button == goog.events.BrowserEvent.MouseButton.LEFT }else { return!!(this.event_.button & goog.events.BrowserEvent.IEButtonMap[button]) } }else { return this.event_.button == button } }; goog.events.BrowserEvent.prototype.isMouseActionButton = function() { return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT) && !(goog.userAgent.WEBKIT && goog.userAgent.MAC && this.ctrlKey) }; goog.events.BrowserEvent.prototype.stopPropagation = function() { goog.events.BrowserEvent.superClass_.stopPropagation.call(this); if(this.event_.stopPropagation) { this.event_.stopPropagation() }else { this.event_.cancelBubble = true } }; goog.events.BrowserEvent.prototype.preventDefault = function() { goog.events.BrowserEvent.superClass_.preventDefault.call(this); var be = this.event_; if(!be.preventDefault) { be.returnValue = false; if(goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT) { try { var VK_F1 = 112; var VK_F12 = 123; if(be.ctrlKey || be.keyCode >= VK_F1 && be.keyCode <= VK_F12) { be.keyCode = -1 } }catch(ex) { } } }else { be.preventDefault() } }; goog.events.BrowserEvent.prototype.getBrowserEvent = function() { return this.event_ }; goog.events.BrowserEvent.prototype.disposeInternal = function() { }; goog.provide("goog.events.Listenable"); goog.provide("goog.events.ListenableKey"); goog.events.Listenable = function() { }; goog.events.Listenable.IMPLEMENTED_BY_PROP = "closure_listenable_" + (Math.random() * 1E6 | 0); goog.events.Listenable.addImplementation = function(cls) { cls.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP] = true }; goog.events.Listenable.isImplementedBy = function(obj) { return!!(obj && obj[goog.events.Listenable.IMPLEMENTED_BY_PROP]) }; goog.events.Listenable.prototype.listen; goog.events.Listenable.prototype.listenOnce; goog.events.Listenable.prototype.unlisten; goog.events.Listenable.prototype.unlistenByKey; goog.events.Listenable.prototype.dispatchEvent; goog.events.Listenable.prototype.removeAllListeners; goog.events.Listenable.prototype.getParentEventTarget; goog.events.Listenable.prototype.fireListeners; goog.events.Listenable.prototype.getListeners; goog.events.Listenable.prototype.getListener; goog.events.Listenable.prototype.hasListener; goog.events.ListenableKey = function() { }; goog.events.ListenableKey.counter_ = 0; goog.events.ListenableKey.reserveKey = function() { return++goog.events.ListenableKey.counter_ }; goog.events.ListenableKey.prototype.src; goog.events.ListenableKey.prototype.type; goog.events.ListenableKey.prototype.listener; goog.events.ListenableKey.prototype.capture; goog.events.ListenableKey.prototype.handler; goog.events.ListenableKey.prototype.key; goog.provide("goog.events.Listener"); goog.require("goog.events.ListenableKey"); goog.events.Listener = function(listener, proxy, src, type, capture, opt_handler) { if(goog.events.Listener.ENABLE_MONITORING) { this.creationStack = (new Error).stack } this.listener = listener; this.proxy = proxy; this.src = src; this.type = type; this.capture = !!capture; this.handler = opt_handler; this.key = goog.events.ListenableKey.reserveKey(); this.callOnce = false; this.removed = false }; goog.define("goog.events.Listener.ENABLE_MONITORING", false); goog.events.Listener.prototype.creationStack; goog.events.Listener.prototype.markAsRemoved = function() { this.removed = true; this.listener = null; this.proxy = null; this.src = null; this.handler = null }; goog.provide("goog.object"); goog.object.forEach = function(obj, f, opt_obj) { for(var key in obj) { f.call(opt_obj, obj[key], key, obj) } }; goog.object.filter = function(obj, f, opt_obj) { var res = {}; for(var key in obj) { if(f.call(opt_obj, obj[key], key, obj)) { res[key] = obj[key] } } return res }; goog.object.map = function(obj, f, opt_obj) { var res = {}; for(var key in obj) { res[key] = f.call(opt_obj, obj[key], key, obj) } return res }; goog.object.some = function(obj, f, opt_obj) { for(var key in obj) { if(f.call(opt_obj, obj[key], key, obj)) { return true } } return false }; goog.object.every = function(obj, f, opt_obj) { for(var key in obj) { if(!f.call(opt_obj, obj[key], key, obj)) { return false } } return true }; goog.object.getCount = function(obj) { var rv = 0; for(var key in obj) { rv++ } return rv }; goog.object.getAnyKey = function(obj) { for(var key in obj) { return key } }; goog.object.getAnyValue = function(obj) { for(var key in obj) { return obj[key] } }; goog.object.contains = function(obj, val) { return goog.object.containsValue(obj, val) }; goog.object.getValues = function(obj) { var res = []; var i = 0; for(var key in obj) { res[i++] = obj[key] } return res }; goog.object.getKeys = function(obj) { var res = []; var i = 0; for(var key in obj) { res[i++] = key } return res }; goog.object.getValueByKeys = function(obj, var_args) { var isArrayLike = goog.isArrayLike(var_args); var keys = isArrayLike ? var_args : arguments; for(var i = isArrayLike ? 0 : 1;i < keys.length;i++) { obj = obj[keys[i]]; if(!goog.isDef(obj)) { break } } return obj }; goog.object.containsKey = function(obj, key) { return key in obj }; goog.object.containsValue = function(obj, val) { for(var key in obj) { if(obj[key] == val) { return true } } return false }; goog.object.findKey = function(obj, f, opt_this) { for(var key in obj) { if(f.call(opt_this, obj[key], key, obj)) { return key } } return undefined }; goog.object.findValue = function(obj, f, opt_this) { var key = goog.object.findKey(obj, f, opt_this); return key && obj[key] }; goog.object.isEmpty = function(obj) { for(var key in obj) { return false } return true }; goog.object.clear = function(obj) { for(var i in obj) { delete obj[i] } }; goog.object.remove = function(obj, key) { var rv; if(rv = key in obj) { delete obj[key] } return rv }; goog.object.add = function(obj, key, val) { if(key in obj) { throw Error('The object already contains the key "' + key + '"'); } goog.object.set(obj, key, val) }; goog.object.get = function(obj, key, opt_val) { if(key in obj) { return obj[key] } return opt_val }; goog.object.set = function(obj, key, value) { obj[key] = value }; goog.object.setIfUndefined = function(obj, key, value) { return key in obj ? obj[key] : obj[key] = value }; goog.object.clone = function(obj) { var res = {}; for(var key in obj) { res[key] = obj[key] } return res }; goog.object.unsafeClone = function(obj) { var type = goog.typeOf(obj); if(type == "object" || type == "array") { if(obj.clone) { return obj.clone() } var clone = type == "array" ? [] : {}; for(var key in obj) { clone[key] = goog.object.unsafeClone(obj[key]) } return clone } return obj }; goog.object.transpose = function(obj) { var transposed = {}; for(var key in obj) { transposed[obj[key]] = key } return transposed }; goog.object.PROTOTYPE_FIELDS_ = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; goog.object.extend = function(target, var_args) { var key, source; for(var i = 1;i < arguments.length;i++) { source = arguments[i]; for(key in source) { target[key] = source[key] } for(var j = 0;j < goog.object.PROTOTYPE_FIELDS_.length;j++) { key = goog.object.PROTOTYPE_FIELDS_[j]; if(Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } }; goog.object.create = function(var_args) { var argLength = arguments.length; if(argLength == 1 && goog.isArray(arguments[0])) { return goog.object.create.apply(null, arguments[0]) } if(argLength % 2) { throw Error("Uneven number of arguments"); } var rv = {}; for(var i = 0;i < argLength;i += 2) { rv[arguments[i]] = arguments[i + 1] } return rv }; goog.object.createSet = function(var_args) { var argLength = arguments.length; if(argLength == 1 && goog.isArray(arguments[0])) { return goog.object.createSet.apply(null, arguments[0]) } var rv = {}; for(var i = 0;i < argLength;i++) { rv[arguments[i]] = true } return rv }; goog.object.createImmutableView = function(obj) { var result = obj; if(Object.isFrozen && !Object.isFrozen(obj)) { result = Object.create(obj); Object.freeze(result) } return result }; goog.object.isImmutableView = function(obj) { return!!Object.isFrozen && Object.isFrozen(obj) }; goog.provide("goog.events"); goog.provide("goog.events.Key"); goog.provide("goog.events.ListenableType"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.debug.entryPointRegistry"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.BrowserFeature"); goog.require("goog.events.Listenable"); goog.require("goog.events.Listener"); goog.require("goog.object"); goog.events.Key; goog.events.ListenableType; goog.events.listeners_ = {}; goog.events.listenerTree_ = {}; goog.events.sources_ = {}; goog.events.onString_ = "on"; goog.events.onStringMap_ = {}; goog.events.keySeparator_ = "_"; goog.events.listen = function(src, type, listener, opt_capt, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { goog.events.listen(src, type[i], listener, opt_capt, opt_handler) } return null } listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { return src.listen((type), listener, opt_capt, opt_handler) }else { return goog.events.listen_((src), type, listener, false, opt_capt, opt_handler) } }; goog.events.listen_ = function(src, type, listener, callOnce, opt_capt, opt_handler) { if(!type) { throw Error("Invalid event type"); } var capture = !!opt_capt; var map = goog.events.listenerTree_; if(!(type in map)) { map[type] = {count_:0} } map = map[type]; if(!(capture in map)) { map[capture] = {count_:0}; map.count_++ } map = map[capture]; var srcUid = goog.getUid(src); var listenerArray, listenerObj; if(!map[srcUid]) { listenerArray = map[srcUid] = []; map.count_++ }else { listenerArray = map[srcUid]; for(var i = 0;i < listenerArray.length;i++) { listenerObj = listenerArray[i]; if(listenerObj.listener == listener && listenerObj.handler == opt_handler) { if(listenerObj.removed) { break } if(!callOnce) { listenerArray[i].callOnce = false } return listenerArray[i] } } } var proxy = goog.events.getProxy(); listenerObj = new goog.events.Listener(listener, proxy, src, type, capture, opt_handler); listenerObj.callOnce = callOnce; proxy.src = src; proxy.listener = listenerObj; listenerArray.push(listenerObj); if(!goog.events.sources_[srcUid]) { goog.events.sources_[srcUid] = [] } goog.events.sources_[srcUid].push(listenerObj); if(src.addEventListener) { src.addEventListener(type, proxy, capture) }else { src.attachEvent(goog.events.getOnString_(type), proxy) } var key = listenerObj.key; goog.events.listeners_[key] = listenerObj; return listenerObj }; goog.events.getProxy = function() { var proxyCallbackFunction = goog.events.handleBrowserEvent_; var f = goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT ? function(eventObject) { return proxyCallbackFunction.call(f.src, f.listener, eventObject) } : function(eventObject) { var v = proxyCallbackFunction.call(f.src, f.listener, eventObject); if(!v) { return v } }; return f }; goog.events.listenOnce = function(src, type, listener, opt_capt, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { goog.events.listenOnce(src, type[i], listener, opt_capt, opt_handler) } return null } var listenableKey; listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { listenableKey = src.listenOnce((type), listener, opt_capt, opt_handler) }else { listenableKey = goog.events.listen_((src), type, listener, true, opt_capt, opt_handler) } return listenableKey }; goog.events.listenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.listen(src, listener, opt_capt, opt_handler) }; goog.events.unlisten = function(src, type, listener, opt_capt, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { goog.events.unlisten(src, type[i], listener, opt_capt, opt_handler) } return null } listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { return src.unlisten((type), listener, opt_capt, opt_handler) } var capture = !!opt_capt; var listenerArray = goog.events.getListeners_(src, type, capture); if(!listenerArray) { return false } for(var i = 0;i < listenerArray.length;i++) { if(listenerArray[i].listener == listener && listenerArray[i].capture == capture && listenerArray[i].handler == opt_handler) { return goog.events.unlistenByKey(listenerArray[i]) } } return false }; goog.events.unlistenByKey = function(key) { if(goog.isNumber(key)) { return false } var listener = (key); if(!listener) { return false } if(listener.removed) { return false } var src = listener.src; if(goog.events.Listenable.isImplementedBy(src)) { return src.unlistenByKey(listener) } var type = listener.type; var proxy = listener.proxy; var capture = listener.capture; if(src.removeEventListener) { src.removeEventListener(type, proxy, capture) }else { if(src.detachEvent) { src.detachEvent(goog.events.getOnString_(type), proxy) } } var srcUid = goog.getUid(src); if(goog.events.sources_[srcUid]) { var sourcesArray = goog.events.sources_[srcUid]; goog.array.remove(sourcesArray, listener); if(sourcesArray.length == 0) { delete goog.events.sources_[srcUid] } } listener.markAsRemoved(); var listenerArray = goog.events.listenerTree_[type][capture][srcUid]; if(listenerArray) { goog.array.remove(listenerArray, listener); if(listenerArray.length == 0) { delete goog.events.listenerTree_[type][capture][srcUid]; goog.events.listenerTree_[type][capture].count_-- } if(goog.events.listenerTree_[type][capture].count_ == 0) { delete goog.events.listenerTree_[type][capture]; goog.events.listenerTree_[type].count_-- } if(goog.events.listenerTree_[type].count_ == 0) { delete goog.events.listenerTree_[type] } } delete goog.events.listeners_[listener.key]; return true }; goog.events.unlistenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.unlisten(src, listener, opt_capt, opt_handler) }; goog.events.removeAll = function(opt_obj, opt_type) { var count = 0; var noObj = opt_obj == null; var noType = opt_type == null; if(!noObj) { if(opt_obj && goog.events.Listenable.isImplementedBy(opt_obj)) { return opt_obj.removeAllListeners(opt_type) } var srcUid = goog.getUid((opt_obj)); if(goog.events.sources_[srcUid]) { var sourcesArray = goog.events.sources_[srcUid]; for(var i = sourcesArray.length - 1;i >= 0;i--) { var listener = sourcesArray[i]; if(noType || opt_type == listener.type) { goog.events.unlistenByKey(listener); count++ } } } }else { goog.object.forEach(goog.events.listeners_, function(listener) { goog.events.unlistenByKey(listener); count++ }) } return count }; goog.events.removeAllNativeListeners = function() { var count = 0; goog.object.forEach(goog.events.listeners_, function(listener) { goog.events.unlistenByKey(listener); count++ }); return count }; goog.events.getListeners = function(obj, type, capture) { if(goog.events.Listenable.isImplementedBy(obj)) { return obj.getListeners(type, capture) }else { return goog.events.getListeners_(obj, type, capture) || [] } }; goog.events.getListeners_ = function(obj, type, capture) { var map = goog.events.listenerTree_; if(type in map) { map = map[type]; if(capture in map) { map = map[capture]; var objUid = goog.getUid(obj); if(map[objUid]) { return map[objUid] } } } return null }; goog.events.getListener = function(src, type, listener, opt_capt, opt_handler) { var capture = !!opt_capt; listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { return src.getListener((type), listener, capture, opt_handler) } var listenerArray = goog.events.getListeners_(src, type, capture); if(listenerArray) { for(var i = 0;i < listenerArray.length;i++) { if(!listenerArray[i].removed && listenerArray[i].listener == listener && listenerArray[i].capture == capture && listenerArray[i].handler == opt_handler) { return listenerArray[i] } } } return null }; goog.events.hasListener = function(obj, opt_type, opt_capture) { if(goog.events.Listenable.isImplementedBy(obj)) { return obj.hasListener(opt_type, opt_capture) } var objUid = goog.getUid(obj); var listeners = goog.events.sources_[objUid]; if(listeners) { var hasType = goog.isDef(opt_type); var hasCapture = goog.isDef(opt_capture); if(hasType && hasCapture) { var map = goog.events.listenerTree_[opt_type]; return!!map && !!map[opt_capture] && objUid in map[opt_capture] }else { if(!(hasType || hasCapture)) { return true }else { return goog.array.some(listeners, function(listener) { return hasType && listener.type == opt_type || hasCapture && listener.capture == opt_capture }) } } } return false }; goog.events.expose = function(e) { var str = []; for(var key in e) { if(e[key] && e[key].id) { str.push(key + " \x3d " + e[key] + " (" + e[key].id + ")") }else { str.push(key + " \x3d " + e[key]) } } return str.join("\n") }; goog.events.getOnString_ = function(type) { if(type in goog.events.onStringMap_) { return goog.events.onStringMap_[type] } return goog.events.onStringMap_[type] = goog.events.onString_ + type }; goog.events.fireListeners = function(obj, type, capture, eventObject) { if(goog.events.Listenable.isImplementedBy(obj)) { return obj.fireListeners(type, capture, eventObject) } var map = goog.events.listenerTree_; if(type in map) { map = map[type]; if(capture in map) { return goog.events.fireListeners_(map[capture], obj, type, capture, eventObject) } } return true }; goog.events.fireListeners_ = function(map, obj, type, capture, eventObject) { var retval = 1; var objUid = goog.getUid(obj); if(map[objUid]) { var listenerArray = goog.array.clone(map[objUid]); for(var i = 0;i < listenerArray.length;i++) { var listener = listenerArray[i]; if(listener && !listener.removed) { retval &= goog.events.fireListener(listener, eventObject) !== false } } } return Boolean(retval) }; goog.events.fireListener = function(listener, eventObject) { var listenerFn = listener.listener; var listenerHandler = listener.handler || listener.src; if(listener.callOnce) { goog.events.unlistenByKey(listener) } return listenerFn.call(listenerHandler, eventObject) }; goog.events.getTotalListenerCount = function() { return goog.object.getCount(goog.events.listeners_) }; goog.events.dispatchEvent = function(src, e) { goog.asserts.assert(goog.events.Listenable.isImplementedBy(src), "Can not use goog.events.dispatchEvent with " + "non-goog.events.Listenable instance."); return src.dispatchEvent(e) }; goog.events.protectBrowserEventEntryPoint = function(errorHandler) { goog.events.handleBrowserEvent_ = errorHandler.protectEntryPoint(goog.events.handleBrowserEvent_) }; goog.events.handleBrowserEvent_ = function(listener, opt_evt) { if(listener.removed) { return true } var type = listener.type; var map = goog.events.listenerTree_; if(!(type in map)) { return true } map = map[type]; var retval, targetsMap; if(!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT) { var ieEvent = opt_evt || (goog.getObjectByName("window.event")); var hasCapture = true in map; var hasBubble = false in map; if(hasCapture) { if(goog.events.isMarkedIeEvent_(ieEvent)) { return true } goog.events.markIeEvent_(ieEvent) } var evt = new goog.events.BrowserEvent; evt.init(ieEvent, this); retval = true; try { if(hasCapture) { var ancestors = []; for(var parent = evt.currentTarget;parent;parent = parent.parentNode) { ancestors.push(parent) } targetsMap = map[true]; for(var i = ancestors.length - 1;!evt.propagationStopped_ && i >= 0;i--) { evt.currentTarget = ancestors[i]; retval &= goog.events.fireListeners_(targetsMap, ancestors[i], type, true, evt) } if(hasBubble) { targetsMap = map[false]; for(var i = 0;!evt.propagationStopped_ && i < ancestors.length;i++) { evt.currentTarget = ancestors[i]; retval &= goog.events.fireListeners_(targetsMap, ancestors[i], type, false, evt) } } }else { retval = goog.events.fireListener(listener, evt) } }finally { if(ancestors) { ancestors.length = 0 } } return retval } var be = new goog.events.BrowserEvent(opt_evt, (this)); retval = goog.events.fireListener(listener, be); return retval }; goog.events.markIeEvent_ = function(e) { var useReturnValue = false; if(e.keyCode == 0) { try { e.keyCode = -1; return }catch(ex) { useReturnValue = true } } if(useReturnValue || (e.returnValue) == undefined) { e.returnValue = true } }; goog.events.isMarkedIeEvent_ = function(e) { return e.keyCode < 0 || e.returnValue != undefined }; goog.events.uniqueIdCounter_ = 0; goog.events.getUniqueId = function(identifier) { return identifier + "_" + goog.events.uniqueIdCounter_++ }; goog.events.LISTENER_WRAPPER_PROP_ = "__closure_events_fn_" + (Math.random() * 1E9 >>> 0); goog.events.wrapListener_ = function(listener) { goog.asserts.assert(listener, "Listener can not be null."); if(goog.isFunction(listener)) { return listener } goog.asserts.assert(listener.handleEvent, "An object listener must have handleEvent method."); return listener[goog.events.LISTENER_WRAPPER_PROP_] || (listener[goog.events.LISTENER_WRAPPER_PROP_] = function(e) { return listener.handleEvent(e) }) }; goog.debug.entryPointRegistry.register(function(transformer) { goog.events.handleBrowserEvent_ = transformer(goog.events.handleBrowserEvent_) }); goog.provide("goog.events.ListenerMap"); goog.require("goog.array"); goog.require("goog.events.Listener"); goog.require("goog.object"); goog.events.ListenerMap = function(src) { this.src = src; this.listeners = {}; this.typeCount_ = 0 }; goog.events.ListenerMap.prototype.getTypeCount = function() { return this.typeCount_ }; goog.events.ListenerMap.prototype.getListenerCount = function() { var count = 0; for(var type in this.listeners) { count += this.listeners[type].length } return count }; goog.events.ListenerMap.prototype.add = function(type, listener, callOnce, opt_useCapture, opt_listenerScope) { var listenerArray = this.listeners[type]; if(!listenerArray) { listenerArray = this.listeners[type] = []; this.typeCount_++ } var listenerObj; var index = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, opt_useCapture, opt_listenerScope); if(index > -1) { listenerObj = listenerArray[index]; if(!callOnce) { listenerObj.callOnce = false } }else { listenerObj = new goog.events.Listener(listener, null, this.src, type, !!opt_useCapture, opt_listenerScope); listenerObj.callOnce = callOnce; listenerArray.push(listenerObj) } return listenerObj }; goog.events.ListenerMap.prototype.remove = function(type, listener, opt_useCapture, opt_listenerScope) { if(!(type in this.listeners)) { return false } var listenerArray = this.listeners[type]; var index = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, opt_useCapture, opt_listenerScope); if(index > -1) { var listenerObj = listenerArray[index]; listenerObj.markAsRemoved(); goog.array.removeAt(listenerArray, index); if(listenerArray.length == 0) { delete this.listeners[type]; this.typeCount_-- } return true } return false }; goog.events.ListenerMap.prototype.removeByKey = function(listener) { var type = listener.type; if(!(type in this.listeners)) { return false } var removed = goog.array.remove(this.listeners[type], listener); if(removed) { listener.markAsRemoved(); if(this.listeners[type].length == 0) { delete this.listeners[type]; this.typeCount_-- } } return removed }; goog.events.ListenerMap.prototype.removeAll = function(opt_type) { var count = 0; for(var type in this.listeners) { if(!opt_type || type == opt_type) { var listenerArray = this.listeners[type]; for(var i = 0;i < listenerArray.length;i++) { ++count; listenerArray[i].removed = true } delete this.listeners[type]; this.typeCount_-- } } return count }; goog.events.ListenerMap.prototype.getListeners = function(type, capture) { var listenerArray = this.listeners[type]; var rv = []; if(listenerArray) { for(var i = 0;i < listenerArray.length;++i) { var listenerObj = listenerArray[i]; if(listenerObj.capture == capture) { rv.push(listenerObj) } } } return rv }; goog.events.ListenerMap.prototype.getListener = function(type, listener, capture, opt_listenerScope) { var listenerArray = this.listeners[type]; var i = -1; if(listenerArray) { i = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, capture, opt_listenerScope) } return i > -1 ? listenerArray[i] : null }; goog.events.ListenerMap.prototype.hasListener = function(opt_type, opt_capture) { var hasType = goog.isDef(opt_type); var hasCapture = goog.isDef(opt_capture); return goog.object.some(this.listeners, function(listenerArray, type) { for(var i = 0;i < listenerArray.length;++i) { if((!hasType || listenerArray[i].type == opt_type) && (!hasCapture || listenerArray[i].capture == opt_capture)) { return true } } return false }) }; goog.events.ListenerMap.findListenerIndex_ = function(listenerArray, listener, opt_useCapture, opt_listenerScope) { for(var i = 0;i < listenerArray.length;++i) { var listenerObj = listenerArray[i]; if(!listenerObj.removed && listenerObj.listener == listener && listenerObj.capture == !!opt_useCapture && listenerObj.handler == opt_listenerScope) { return i } } return-1 }; goog.provide("goog.events.EventTarget"); goog.require("goog.Disposable"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.Listenable"); goog.require("goog.events.ListenerMap"); goog.require("goog.object"); goog.events.EventTarget = function() { goog.Disposable.call(this); this.eventTargetListeners_ = new goog.events.ListenerMap(this); this.actualEventTarget_ = this }; goog.inherits(goog.events.EventTarget, goog.Disposable); goog.events.Listenable.addImplementation(goog.events.EventTarget); goog.events.EventTarget.MAX_ANCESTORS_ = 1E3; goog.events.EventTarget.prototype.parentEventTarget_ = null; goog.events.EventTarget.prototype.getParentEventTarget = function() { return this.parentEventTarget_ }; goog.events.EventTarget.prototype.setParentEventTarget = function(parent) { this.parentEventTarget_ = parent }; goog.events.EventTarget.prototype.addEventListener = function(type, handler, opt_capture, opt_handlerScope) { goog.events.listen(this, type, handler, opt_capture, opt_handlerScope) }; goog.events.EventTarget.prototype.removeEventListener = function(type, handler, opt_capture, opt_handlerScope) { goog.events.unlisten(this, type, handler, opt_capture, opt_handlerScope) }; goog.events.EventTarget.prototype.dispatchEvent = function(e) { this.assertInitialized_(); var ancestorsTree, ancestor = this.getParentEventTarget(); if(ancestor) { ancestorsTree = []; var ancestorCount = 1; for(;ancestor;ancestor = ancestor.getParentEventTarget()) { ancestorsTree.push(ancestor); goog.asserts.assert(++ancestorCount < goog.events.EventTarget.MAX_ANCESTORS_, "infinite loop") } } return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_, e, ancestorsTree) }; goog.events.EventTarget.prototype.disposeInternal = function() { goog.events.EventTarget.superClass_.disposeInternal.call(this); this.removeAllListeners(); this.parentEventTarget_ = null }; goog.events.EventTarget.prototype.listen = function(type, listener, opt_useCapture, opt_listenerScope) { this.assertInitialized_(); return this.eventTargetListeners_.add(type, listener, false, opt_useCapture, opt_listenerScope) }; goog.events.EventTarget.prototype.listenOnce = function(type, listener, opt_useCapture, opt_listenerScope) { return this.eventTargetListeners_.add(type, listener, true, opt_useCapture, opt_listenerScope) }; goog.events.EventTarget.prototype.unlisten = function(type, listener, opt_useCapture, opt_listenerScope) { return this.eventTargetListeners_.remove(type, listener, opt_useCapture, opt_listenerScope) }; goog.events.EventTarget.prototype.unlistenByKey = function(key) { return this.eventTargetListeners_.removeByKey(key) }; goog.events.EventTarget.prototype.removeAllListeners = function(opt_type) { if(!this.eventTargetListeners_) { return 0 } return this.eventTargetListeners_.removeAll(opt_type) }; goog.events.EventTarget.prototype.fireListeners = function(type, capture, eventObject) { var listenerArray = this.eventTargetListeners_.listeners[type]; if(!listenerArray) { return true } listenerArray = goog.array.clone(listenerArray); var rv = true; for(var i = 0;i < listenerArray.length;++i) { var listener = listenerArray[i]; if(listener && !listener.removed && listener.capture == capture) { var listenerFn = listener.listener; var listenerHandler = listener.handler || listener.src; if(listener.callOnce) { this.unlistenByKey(listener) } rv = listenerFn.call(listenerHandler, eventObject) !== false && rv } } return rv && eventObject.returnValue_ != false }; goog.events.EventTarget.prototype.getListeners = function(type, capture) { return this.eventTargetListeners_.getListeners(type, capture) }; goog.events.EventTarget.prototype.getListener = function(type, listener, capture, opt_listenerScope) { return this.eventTargetListeners_.getListener(type, listener, capture, opt_listenerScope) }; goog.events.EventTarget.prototype.hasListener = function(opt_type, opt_capture) { return this.eventTargetListeners_.hasListener(opt_type, opt_capture) }; goog.events.EventTarget.prototype.setTargetForTesting = function(target) { this.actualEventTarget_ = target }; goog.events.EventTarget.prototype.assertInitialized_ = function() { goog.asserts.assert(this.eventTargetListeners_, "Event target is not initialized. Did you call the superclass " + "(goog.events.EventTarget) constructor?") }; goog.events.EventTarget.dispatchEventInternal_ = function(target, e, opt_ancestorsTree) { var type = e.type || (e); if(goog.isString(e)) { e = new goog.events.Event(e, target) }else { if(!(e instanceof goog.events.Event)) { var oldEvent = e; e = new goog.events.Event(type, target); goog.object.extend(e, oldEvent) }else { e.target = e.target || target } } var rv = true, currentTarget; if(opt_ancestorsTree) { for(var i = opt_ancestorsTree.length - 1;!e.propagationStopped_ && i >= 0;i--) { currentTarget = e.currentTarget = opt_ancestorsTree[i]; rv = currentTarget.fireListeners(type, true, e) && rv } } if(!e.propagationStopped_) { currentTarget = e.currentTarget = target; rv = currentTarget.fireListeners(type, true, e) && rv; if(!e.propagationStopped_) { rv = currentTarget.fireListeners(type, false, e) && rv } } if(opt_ancestorsTree) { for(i = 0;!e.propagationStopped_ && i < opt_ancestorsTree.length;i++) { currentTarget = e.currentTarget = opt_ancestorsTree[i]; rv = currentTarget.fireListeners(type, false, e) && rv } } return rv }; goog.provide("ol.Object"); goog.provide("ol.ObjectEventType"); goog.require("goog.array"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.object"); ol.ObjectEventType = {CHANGE:"change"}; ol.ObjectProperty = {ACCESSORS:"ol_accessors_", BINDINGS:"ol_bindings_"}; ol.Object = function(opt_values) { goog.base(this); this.values_ = {}; if(goog.isDef(opt_values)) { this.setValues(opt_values) } }; goog.inherits(ol.Object, goog.events.EventTarget); ol.Object.changeEventTypeCache_ = {}; ol.Object.getterNameCache_ = {}; ol.Object.setterNameCache_ = {}; ol.Object.capitalize = function(str) { return str.substr(0, 1).toUpperCase() + str.substr(1) }; ol.Object.getAccessors = function(obj) { return obj[ol.ObjectProperty.ACCESSORS] || (obj[ol.ObjectProperty.ACCESSORS] = {}) }; ol.Object.getChangeEventType = function(key) { return ol.Object.changeEventTypeCache_.hasOwnProperty(key) ? ol.Object.changeEventTypeCache_[key] : ol.Object.changeEventTypeCache_[key] = "change:" + key.toLowerCase() }; ol.Object.getGetterName = function(key) { return ol.Object.getterNameCache_.hasOwnProperty(key) ? ol.Object.getterNameCache_[key] : ol.Object.getterNameCache_[key] = "get" + ol.Object.capitalize(key) }; ol.Object.getListeners = function(obj) { return obj[ol.ObjectProperty.BINDINGS] || (obj[ol.ObjectProperty.BINDINGS] = {}) }; ol.Object.getSetterName = function(key) { return ol.Object.setterNameCache_.hasOwnProperty(key) ? ol.Object.setterNameCache_[key] : ol.Object.setterNameCache_[key] = "set" + ol.Object.capitalize(key) }; ol.Object.prototype.bindTo = function(key, target, opt_targetKey, opt_noNotify) { var targetKey = opt_targetKey || key; this.unbind(key); var eventType = ol.Object.getChangeEventType(targetKey); var listeners = ol.Object.getListeners(this); listeners[key] = goog.events.listen(target, eventType, function() { this.notifyInternal_(key) }, undefined, this); var accessors = ol.Object.getAccessors(this); accessors[key] = {target:target, key:targetKey}; var noNotify = opt_noNotify || false; if(!noNotify) { this.notifyInternal_(key) } }; ol.Object.prototype.get = function(key) { var value; var accessors = ol.Object.getAccessors(this); if(accessors.hasOwnProperty(key)) { var accessor = accessors[key]; var target = accessor.target; var targetKey = accessor.key; var getterName = ol.Object.getGetterName(targetKey); if(target[getterName]) { value = target[getterName]() }else { value = target.get(targetKey) } }else { if(this.values_.hasOwnProperty(key)) { value = this.values_[key] } } return value }; ol.Object.prototype.getKeys = function() { var keys = goog.object.getKeys(ol.Object.getAccessors(this)).concat(goog.object.getKeys(this.values_)); goog.array.removeDuplicates(keys); return keys }; ol.Object.prototype.notify = function(key) { var accessors = ol.Object.getAccessors(this); if(accessors.hasOwnProperty(key)) { var accessor = accessors[key]; var target = accessor.target; var targetKey = accessor.key; target.notify(targetKey) }else { this.notifyInternal_(key) } }; ol.Object.prototype.notifyInternal_ = function(key) { var eventType = ol.Object.getChangeEventType(key); this.dispatchEvent(eventType); this.dispatchEvent(ol.ObjectEventType.CHANGE) }; ol.Object.prototype.on = function(type, listener, opt_scope) { return goog.events.listen(this, type, listener, false, opt_scope) }; ol.Object.prototype.once = function(type, listener, opt_scope) { return goog.events.listenOnce(this, type, listener, false, opt_scope) }; ol.Object.prototype.set = function(key, value) { var accessors = ol.Object.getAccessors(this); if(accessors.hasOwnProperty(key)) { var accessor = accessors[key]; var target = accessor.target; var targetKey = accessor.key; var setterName = ol.Object.getSetterName(targetKey); if(target[setterName]) { target[setterName](value) }else { target.set(targetKey, value) } }else { this.values_[key] = value; this.notifyInternal_(key) } }; ol.Object.prototype.setValues = function(values) { var key, value, setterName; for(key in values) { value = values[key]; setterName = ol.Object.getSetterName(key); if(this[setterName]) { this[setterName](value) }else { this.set(key, value) } } }; ol.Object.prototype.unbind = function(key) { var listeners = ol.Object.getListeners(this); var listener = listeners[key]; if(listener) { delete listeners[key]; goog.events.unlistenByKey(listener); var value = this.get(key); var accessors = ol.Object.getAccessors(this); delete accessors[key]; this.values_[key] = value } }; ol.Object.prototype.un = function(type, listener, opt_scope) { goog.events.unlisten(this, type, listener, false, opt_scope) }; ol.Object.prototype.unByKey = function(key) { goog.events.unlistenByKey(key) }; ol.Object.prototype.unbindAll = function() { for(var key in ol.Object.getListeners(this)) { this.unbind(key) } }; goog.provide("ol.Collection"); goog.provide("ol.CollectionEvent"); goog.provide("ol.CollectionEventType"); goog.require("goog.array"); goog.require("goog.events.Event"); goog.require("ol.Object"); ol.CollectionEventType = {ADD:"add", REMOVE:"remove"}; ol.CollectionEvent = function(type, opt_elem, opt_target) { goog.base(this, type, opt_target); this.elem_ = opt_elem }; goog.inherits(ol.CollectionEvent, goog.events.Event); ol.CollectionEvent.prototype.getElement = function() { return this.elem_ }; ol.CollectionProperty = {LENGTH:"length"}; ol.Collection = function(opt_array) { goog.base(this); this.array_ = opt_array || []; this.updateLength_() }; goog.inherits(ol.Collection, ol.Object); ol.Collection.prototype.clear = function() { while(this.getLength() > 0) { this.pop() } }; ol.Collection.prototype.extend = function(arr) { var i, ii; for(i = 0, ii = arr.length;i < ii;++i) { this.push(arr[i]) } return this }; ol.Collection.prototype.forEach = function(f, opt_obj) { goog.array.forEach(this.array_, f, opt_obj) }; ol.Collection.prototype.getArray = function() { return this.array_ }; ol.Collection.prototype.getAt = function(index) { return this.array_[index] }; ol.Collection.prototype.getLength = function() { return(this.get(ol.CollectionProperty.LENGTH)) }; ol.Collection.prototype.insertAt = function(index, elem) { goog.array.insertAt(this.array_, elem, index); this.updateLength_(); this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.ADD, elem, this)) }; ol.Collection.prototype.pop = function() { return this.removeAt(this.getLength() - 1) }; ol.Collection.prototype.push = function(elem) { var n = this.array_.length; this.insertAt(n, elem); return n }; ol.Collection.prototype.remove = function(elem) { var arr = this.array_; var i, ii; for(i = 0, ii = arr.length;i < ii;++i) { if(arr[i] === elem) { return this.removeAt(i) } } return undefined }; ol.Collection.prototype.removeAt = function(index) { var prev = this.array_[index]; goog.array.removeAt(this.array_, index); this.updateLength_(); this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.REMOVE, prev, this)); return prev }; ol.Collection.prototype.setAt = function(index, elem) { var n = this.getLength(); if(index < n) { var prev = this.array_[index]; this.array_[index] = elem; this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.REMOVE, prev, this)); this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.ADD, elem, this)) }else { var j; for(j = n;j < index;++j) { this.insertAt(j, undefined) } this.insertAt(index, elem) } }; ol.Collection.prototype.updateLength_ = function() { this.set(ol.CollectionProperty.LENGTH, this.array_.length) }; goog.provide("goog.color.names"); goog.color.names = {"aliceblue":"#f0f8ff", "antiquewhite":"#faebd7", "aqua":"#00ffff", "aquamarine":"#7fffd4", "azure":"#f0ffff", "beige":"#f5f5dc", "bisque":"#ffe4c4", "black":"#000000", "blanchedalmond":"#ffebcd", "blue":"#0000ff", "blueviolet":"#8a2be2", "brown":"#a52a2a", "burlywood":"#deb887", "cadetblue":"#5f9ea0", "chartreuse":"#7fff00", "chocolate":"#d2691e", "coral":"#ff7f50", "cornflowerblue":"#6495ed", "cornsilk":"#fff8dc", "crimson":"#dc143c", "cyan":"#00ffff", "darkblue":"#00008b", "darkcyan":"#008b8b", "darkgoldenrod":"#b8860b", "darkgray":"#a9a9a9", "darkgreen":"#006400", "darkgrey":"#a9a9a9", "darkkhaki":"#bdb76b", "darkmagenta":"#8b008b", "darkolivegreen":"#556b2f", "darkorange":"#ff8c00", "darkorchid":"#9932cc", "darkred":"#8b0000", "darksalmon":"#e9967a", "darkseagreen":"#8fbc8f", "darkslateblue":"#483d8b", "darkslategray":"#2f4f4f", "darkslategrey":"#2f4f4f", "darkturquoise":"#00ced1", "darkviolet":"#9400d3", "deeppink":"#ff1493", "deepskyblue":"#00bfff", "dimgray":"#696969", "dimgrey":"#696969", "dodgerblue":"#1e90ff", "firebrick":"#b22222", "floralwhite":"#fffaf0", "forestgreen":"#228b22", "fuchsia":"#ff00ff", "gainsboro":"#dcdcdc", "ghostwhite":"#f8f8ff", "gold":"#ffd700", "goldenrod":"#daa520", "gray":"#808080", "green":"#008000", "greenyellow":"#adff2f", "grey":"#808080", "honeydew":"#f0fff0", "hotpink":"#ff69b4", "indianred":"#cd5c5c", "indigo":"#4b0082", "ivory":"#fffff0", "khaki":"#f0e68c", "lavender":"#e6e6fa", "lavenderblush":"#fff0f5", "lawngreen":"#7cfc00", "lemonchiffon":"#fffacd", "lightblue":"#add8e6", "lightcoral":"#f08080", "lightcyan":"#e0ffff", "lightgoldenrodyellow":"#fafad2", "lightgray":"#d3d3d3", "lightgreen":"#90ee90", "lightgrey":"#d3d3d3", "lightpink":"#ffb6c1", "lightsalmon":"#ffa07a", "lightseagreen":"#20b2aa", "lightskyblue":"#87cefa", "lightslategray":"#778899", "lightslategrey":"#778899", "lightsteelblue":"#b0c4de", "lightyellow":"#ffffe0", "lime":"#00ff00", "limegreen":"#32cd32", "linen":"#faf0e6", "magenta":"#ff00ff", "maroon":"#800000", "mediumaquamarine":"#66cdaa", "mediumblue":"#0000cd", "mediumorchid":"#ba55d3", "mediumpurple":"#9370db", "mediumseagreen":"#3cb371", "mediumslateblue":"#7b68ee", "mediumspringgreen":"#00fa9a", "mediumturquoise":"#48d1cc", "mediumvioletred":"#c71585", "midnightblue":"#191970", "mintcream":"#f5fffa", "mistyrose":"#ffe4e1", "moccasin":"#ffe4b5", "navajowhite":"#ffdead", "navy":"#000080", "oldlace":"#fdf5e6", "olive":"#808000", "olivedrab":"#6b8e23", "orange":"#ffa500", "orangered":"#ff4500", "orchid":"#da70d6", "palegoldenrod":"#eee8aa", "palegreen":"#98fb98", "paleturquoise":"#afeeee", "palevioletred":"#db7093", "papayawhip":"#ffefd5", "peachpuff":"#ffdab9", "peru":"#cd853f", "pink":"#ffc0cb", "plum":"#dda0dd", "powderblue":"#b0e0e6", "purple":"#800080", "red":"#ff0000", "rosybrown":"#bc8f8f", "royalblue":"#4169e1", "saddlebrown":"#8b4513", "salmon":"#fa8072", "sandybrown":"#f4a460", "seagreen":"#2e8b57", "seashell":"#fff5ee", "sienna":"#a0522d", "silver":"#c0c0c0", "skyblue":"#87ceeb", "slateblue":"#6a5acd", "slategray":"#708090", "slategrey":"#708090", "snow":"#fffafa", "springgreen":"#00ff7f", "steelblue":"#4682b4", "tan":"#d2b48c", "teal":"#008080", "thistle":"#d8bfd8", "tomato":"#ff6347", "turquoise":"#40e0d0", "violet":"#ee82ee", "wheat":"#f5deb3", "white":"#ffffff", "whitesmoke":"#f5f5f5", "yellow":"#ffff00", "yellowgreen":"#9acd32"}; goog.provide("goog.math"); goog.require("goog.array"); goog.require("goog.asserts"); goog.math.randomInt = function(a) { return Math.floor(Math.random() * a) }; goog.math.uniformRandom = function(a, b) { return a + Math.random() * (b - a) }; goog.math.clamp = function(value, min, max) { return Math.min(Math.max(value, min), max) }; goog.math.modulo = function(a, b) { var r = a % b; return r * b < 0 ? r + b : r }; goog.math.lerp = function(a, b, x) { return a + x * (b - a) }; goog.math.nearlyEquals = function(a, b, opt_tolerance) { return Math.abs(a - b) <= (opt_tolerance || 1E-6) }; goog.math.standardAngle = function(angle) { return goog.math.modulo(angle, 360) }; goog.math.toRadians = function(angleDegrees) { return angleDegrees * Math.PI / 180 }; goog.math.toDegrees = function(angleRadians) { return angleRadians * 180 / Math.PI }; goog.math.angleDx = function(degrees, radius) { return radius * Math.cos(goog.math.toRadians(degrees)) }; goog.math.angleDy = function(degrees, radius) { return radius * Math.sin(goog.math.toRadians(degrees)) }; goog.math.angle = function(x1, y1, x2, y2) { return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(y2 - y1, x2 - x1))) }; goog.math.angleDifference = function(startAngle, endAngle) { var d = goog.math.standardAngle(endAngle) - goog.math.standardAngle(startAngle); if(d > 180) { d = d - 360 }else { if(d <= -180) { d = 360 + d } } return d }; goog.math.sign = function(x) { return x == 0 ? 0 : x < 0 ? -1 : 1 }; goog.math.longestCommonSubsequence = function(array1, array2, opt_compareFn, opt_collectorFn) { var compare = opt_compareFn || function(a, b) { return a == b }; var collect = opt_collectorFn || function(i1, i2) { return array1[i1] }; var length1 = array1.length; var length2 = array2.length; var arr = []; for(var i = 0;i < length1 + 1;i++) { arr[i] = []; arr[i][0] = 0 } for(var j = 0;j < length2 + 1;j++) { arr[0][j] = 0 } for(i = 1;i <= length1;i++) { for(j = 1;j <= length2;j++) { if(compare(array1[i - 1], array2[j - 1])) { arr[i][j] = arr[i - 1][j - 1] + 1 }else { arr[i][j] = Math.max(arr[i - 1][j], arr[i][j - 1]) } } } var result = []; var i = length1, j = length2; while(i > 0 && j > 0) { if(compare(array1[i - 1], array2[j - 1])) { result.unshift(collect(i - 1, j - 1)); i--; j-- }else { if(arr[i - 1][j] > arr[i][j - 1]) { i-- }else { j-- } } } return result }; goog.math.sum = function(var_args) { return(goog.array.reduce(arguments, function(sum, value) { return sum + value }, 0)) }; goog.math.average = function(var_args) { return goog.math.sum.apply(null, arguments) / arguments.length }; goog.math.standardDeviation = function(var_args) { var sampleSize = arguments.length; if(sampleSize < 2) { return 0 } var mean = goog.math.average.apply(null, arguments); var variance = goog.math.sum.apply(null, goog.array.map(arguments, function(val) { return Math.pow(val - mean, 2) })) / (sampleSize - 1); return Math.sqrt(variance) }; goog.math.isInt = function(num) { return isFinite(num) && num % 1 == 0 }; goog.math.isFiniteNumber = function(num) { return isFinite(num) && !isNaN(num) }; goog.math.safeFloor = function(num, opt_epsilon) { goog.asserts.assert(!goog.isDef(opt_epsilon) || opt_epsilon > 0); return Math.floor(num + (opt_epsilon || 2E-15)) }; goog.math.safeCeil = function(num, opt_epsilon) { goog.asserts.assert(!goog.isDef(opt_epsilon) || opt_epsilon > 0); return Math.ceil(num - (opt_epsilon || 2E-15)) }; goog.provide("goog.color"); goog.require("goog.color.names"); goog.require("goog.math"); goog.color.Rgb; goog.color.Hsv; goog.color.Hsl; goog.color.parse = function(str) { var result = {}; str = String(str); var maybeHex = goog.color.prependHashIfNecessaryHelper(str); if(goog.color.isValidHexColor_(maybeHex)) { result.hex = goog.color.normalizeHex(maybeHex); result.type = "hex"; return result }else { var rgb = goog.color.isValidRgbColor_(str); if(rgb.length) { result.hex = goog.color.rgbArrayToHex(rgb); result.type = "rgb"; return result }else { if(goog.color.names) { var hex = goog.color.names[str.toLowerCase()]; if(hex) { result.hex = hex; result.type = "named"; return result } } } } throw Error(str + " is not a valid color string"); }; goog.color.isValidColor = function(str) { var maybeHex = goog.color.prependHashIfNecessaryHelper(str); return!!(goog.color.isValidHexColor_(maybeHex) || goog.color.isValidRgbColor_(str).length || goog.color.names && goog.color.names[str.toLowerCase()]) }; goog.color.parseRgb = function(str) { var rgb = goog.color.isValidRgbColor_(str); if(!rgb.length) { throw Error(str + " is not a valid RGB color"); } return rgb }; goog.color.hexToRgbStyle = function(hexColor) { return goog.color.rgbStyle_(goog.color.hexToRgb(hexColor)) }; goog.color.hexTripletRe_ = /#(.)(.)(.)/; goog.color.normalizeHex = function(hexColor) { if(!goog.color.isValidHexColor_(hexColor)) { throw Error("'" + hexColor + "' is not a valid hex color"); } if(hexColor.length == 4) { hexColor = hexColor.replace(goog.color.hexTripletRe_, "#$1$1$2$2$3$3") } return hexColor.toLowerCase() }; goog.color.hexToRgb = function(hexColor) { hexColor = goog.color.normalizeHex(hexColor); var r = parseInt(hexColor.substr(1, 2), 16); var g = parseInt(hexColor.substr(3, 2), 16); var b = parseInt(hexColor.substr(5, 2), 16); return[r, g, b] }; goog.color.rgbToHex = function(r, g, b) { r = Number(r); g = Number(g); b = Number(b); if(isNaN(r) || r < 0 || r > 255 || isNaN(g) || g < 0 || g > 255 || isNaN(b) || b < 0 || b > 255) { throw Error('"(' + r + "," + g + "," + b + '") is not a valid RGB color'); } var hexR = goog.color.prependZeroIfNecessaryHelper(r.toString(16)); var hexG = goog.color.prependZeroIfNecessaryHelper(g.toString(16)); var hexB = goog.color.prependZeroIfNecessaryHelper(b.toString(16)); return"#" + hexR + hexG + hexB }; goog.color.rgbArrayToHex = function(rgb) { return goog.color.rgbToHex(rgb[0], rgb[1], rgb[2]) }; goog.color.rgbToHsl = function(r, g, b) { var normR = r / 255; var normG = g / 255; var normB = b / 255; var max = Math.max(normR, normG, normB); var min = Math.min(normR, normG, normB); var h = 0; var s = 0; var l = 0.5 * (max + min); if(max != min) { if(max == normR) { h = 60 * (normG - normB) / (max - min) }else { if(max == normG) { h = 60 * (normB - normR) / (max - min) + 120 }else { if(max == normB) { h = 60 * (normR - normG) / (max - min) + 240 } } } if(0 < l && l <= 0.5) { s = (max - min) / (2 * l) }else { s = (max - min) / (2 - 2 * l) } } return[Math.round(h + 360) % 360, s, l] }; goog.color.rgbArrayToHsl = function(rgb) { return goog.color.rgbToHsl(rgb[0], rgb[1], rgb[2]) }; goog.color.hueToRgb_ = function(v1, v2, vH) { if(vH < 0) { vH += 1 }else { if(vH > 1) { vH -= 1 } } if(6 * vH < 1) { return v1 + (v2 - v1) * 6 * vH }else { if(2 * vH < 1) { return v2 }else { if(3 * vH < 2) { return v1 + (v2 - v1) * (2 / 3 - vH) * 6 } } } return v1 }; goog.color.hslToRgb = function(h, s, l) { var r = 0; var g = 0; var b = 0; var normH = h / 360; if(s == 0) { r = g = b = l * 255 }else { var temp1 = 0; var temp2 = 0; if(l < 0.5) { temp2 = l * (1 + s) }else { temp2 = l + s - s * l } temp1 = 2 * l - temp2; r = 255 * goog.color.hueToRgb_(temp1, temp2, normH + 1 / 3); g = 255 * goog.color.hueToRgb_(temp1, temp2, normH); b = 255 * goog.color.hueToRgb_(temp1, temp2, normH - 1 / 3) } return[Math.round(r), Math.round(g), Math.round(b)] }; goog.color.hslArrayToRgb = function(hsl) { return goog.color.hslToRgb(hsl[0], hsl[1], hsl[2]) }; goog.color.validHexColorRe_ = /^#(?:[0-9a-f]{3}){1,2}$/i; goog.color.isValidHexColor_ = function(str) { return goog.color.validHexColorRe_.test(str) }; goog.color.normalizedHexColorRe_ = /^#[0-9a-f]{6}$/; goog.color.isNormalizedHexColor_ = function(str) { return goog.color.normalizedHexColorRe_.test(str) }; goog.color.rgbColorRe_ = /^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i; goog.color.isValidRgbColor_ = function(str) { var regExpResultArray = str.match(goog.color.rgbColorRe_); if(regExpResultArray) { var r = Number(regExpResultArray[1]); var g = Number(regExpResultArray[2]); var b = Number(regExpResultArray[3]); if(r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) { return[r, g, b] } } return[] }; goog.color.prependZeroIfNecessaryHelper = function(hex) { return hex.length == 1 ? "0" + hex : hex }; goog.color.prependHashIfNecessaryHelper = function(str) { return str.charAt(0) == "#" ? str : "#" + str }; goog.color.rgbStyle_ = function(rgb) { return"rgb(" + rgb.join(",") + ")" }; goog.color.hsvToRgb = function(h, s, brightness) { var red = 0; var green = 0; var blue = 0; if(s == 0) { red = brightness; green = brightness; blue = brightness }else { var sextant = Math.floor(h / 60); var remainder = h / 60 - sextant; var val1 = brightness * (1 - s); var val2 = brightness * (1 - s * remainder); var val3 = brightness * (1 - s * (1 - remainder)); switch(sextant) { case 1: red = val2; green = brightness; blue = val1; break; case 2: red = val1; green = brightness; blue = val3; break; case 3: red = val1; green = val2; blue = brightness; break; case 4: red = val3; green = val1; blue = brightness; break; case 5: red = brightness; green = val1; blue = val2; break; case 6: ; case 0: red = brightness; green = val3; blue = val1; break } } return[Math.floor(red), Math.floor(green), Math.floor(blue)] }; goog.color.rgbToHsv = function(red, green, blue) { var max = Math.max(Math.max(red, green), blue); var min = Math.min(Math.min(red, green), blue); var hue; var saturation; var value = max; if(min == max) { hue = 0; saturation = 0 }else { var delta = max - min; saturation = delta / max; if(red == max) { hue = (green - blue) / delta }else { if(green == max) { hue = 2 + (blue - red) / delta }else { hue = 4 + (red - green) / delta } } hue *= 60; if(hue < 0) { hue += 360 } if(hue > 360) { hue -= 360 } } return[hue, saturation, value] }; goog.color.rgbArrayToHsv = function(rgb) { return goog.color.rgbToHsv(rgb[0], rgb[1], rgb[2]) }; goog.color.hsvArrayToRgb = function(hsv) { return goog.color.hsvToRgb(hsv[0], hsv[1], hsv[2]) }; goog.color.hexToHsl = function(hex) { var rgb = goog.color.hexToRgb(hex); return goog.color.rgbToHsl(rgb[0], rgb[1], rgb[2]) }; goog.color.hslToHex = function(h, s, l) { return goog.color.rgbArrayToHex(goog.color.hslToRgb(h, s, l)) }; goog.color.hslArrayToHex = function(hsl) { return goog.color.rgbArrayToHex(goog.color.hslToRgb(hsl[0], hsl[1], hsl[2])) }; goog.color.hexToHsv = function(hex) { return goog.color.rgbArrayToHsv(goog.color.hexToRgb(hex)) }; goog.color.hsvToHex = function(h, s, v) { return goog.color.rgbArrayToHex(goog.color.hsvToRgb(h, s, v)) }; goog.color.hsvArrayToHex = function(hsv) { return goog.color.hsvToHex(hsv[0], hsv[1], hsv[2]) }; goog.color.hslDistance = function(hsl1, hsl2) { var sl1, sl2; if(hsl1[2] <= 0.5) { sl1 = hsl1[1] * hsl1[2] }else { sl1 = hsl1[1] * (1 - hsl1[2]) } if(hsl2[2] <= 0.5) { sl2 = hsl2[1] * hsl2[2] }else { sl2 = hsl2[1] * (1 - hsl2[2]) } var h1 = hsl1[0] / 360; var h2 = hsl2[0] / 360; var dh = (h1 - h2) * 2 * Math.PI; return(hsl1[2] - hsl2[2]) * (hsl1[2] - hsl2[2]) + sl1 * sl1 + sl2 * sl2 - 2 * sl1 * sl2 * Math.cos(dh) }; goog.color.blend = function(rgb1, rgb2, factor) { factor = goog.math.clamp(factor, 0, 1); return[Math.round(factor * rgb1[0] + (1 - factor) * rgb2[0]), Math.round(factor * rgb1[1] + (1 - factor) * rgb2[1]), Math.round(factor * rgb1[2] + (1 - factor) * rgb2[2])] }; goog.color.darken = function(rgb, factor) { var black = [0, 0, 0]; return goog.color.blend(black, rgb, factor) }; goog.color.lighten = function(rgb, factor) { var white = [255, 255, 255]; return goog.color.blend(white, rgb, factor) }; goog.color.highContrast = function(prime, suggestions) { var suggestionsWithDiff = []; for(var i = 0;i < suggestions.length;i++) { suggestionsWithDiff.push({color:suggestions[i], diff:goog.color.yiqBrightnessDiff_(suggestions[i], prime) + goog.color.colorDiff_(suggestions[i], prime)}) } suggestionsWithDiff.sort(function(a, b) { return b.diff - a.diff }); return suggestionsWithDiff[0].color }; goog.color.yiqBrightness_ = function(rgb) { return Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1E3) }; goog.color.yiqBrightnessDiff_ = function(rgb1, rgb2) { return Math.abs(goog.color.yiqBrightness_(rgb1) - goog.color.yiqBrightness_(rgb2)) }; goog.color.colorDiff_ = function(rgb1, rgb2) { return Math.abs(rgb1[0] - rgb2[0]) + Math.abs(rgb1[1] - rgb2[1]) + Math.abs(rgb1[2] - rgb2[2]) }; goog.provide("ol.Color"); goog.require("goog.color"); goog.require("goog.math"); ol.Color = function(r, g, b, a) { this.r = goog.math.clamp(r, 0, 255); this.g = goog.math.clamp(g, 0, 255); this.b = goog.math.clamp(b, 0, 255); this.a = goog.math.clamp(a, 0, 1) }; ol.Color.createFromString = function(str, opt_a) { var rgb = goog.color.hexToRgb(goog.color.parse(str).hex); var a = goog.isDef(opt_a) ? opt_a : 1; return new ol.Color(rgb[0], rgb[1], rgb[2], a) }; ol.Color.equals = function(color1, color2) { return color1.r == color2.r && color1.g == color2.g && color1.b == color2.b && color1.a == color2.a }; goog.provide("ol.array"); goog.require("goog.array"); goog.require("goog.asserts"); ol.array.binaryFindNearest = function(arr, target) { var index = goog.array.binarySearch(arr, target, function(a, b) { return b - a }); if(index >= 0) { return index }else { if(index == -1) { return 0 }else { if(index == -arr.length - 1) { return arr.length - 1 }else { var left = -index - 2; var right = -index - 1; if(arr[left] - target < target - arr[right]) { return left }else { return right } } } } }; ol.array.linearFindNearest = function(arr, target, direction) { var n = arr.length; if(arr[0] <= target) { return 0 }else { if(target <= arr[n - 1]) { return n - 1 }else { var i; if(direction > 0) { for(i = 1;i < n;++i) { if(arr[i] < target) { return i - 1 } } }else { if(direction < 0) { for(i = 1;i < n;++i) { if(arr[i] <= target) { return i } } }else { for(i = 1;i < n;++i) { if(arr[i] == target) { return i }else { if(arr[i] < target) { if(arr[i - 1] - target < target - arr[i]) { return i - 1 }else { return i } } } } } } goog.asserts.fail(); return n - 1 } } }; goog.provide("ol.ResolutionConstraint"); goog.provide("ol.ResolutionConstraintType"); goog.require("goog.math"); goog.require("ol.array"); ol.ResolutionConstraintType; ol.ResolutionConstraint.createSnapToResolutions = function(resolutions) { return function(resolution, delta, direction) { if(goog.isDef(resolution)) { var z = ol.array.linearFindNearest(resolutions, resolution, direction); z = goog.math.clamp(z + delta, 0, resolutions.length - 1); return resolutions[z] }else { return undefined } } }; ol.ResolutionConstraint.createSnapToPower = function(power, maxResolution, opt_maxLevel) { return function(resolution, delta, direction) { if(goog.isDef(resolution)) { var offset; if(direction > 0) { offset = 0 }else { if(direction < 0) { offset = 1 }else { offset = 0.5 } } var oldLevel = Math.floor(Math.log(maxResolution / resolution) / Math.log(power) + offset); var newLevel = Math.max(oldLevel + delta, 0); if(goog.isDef(opt_maxLevel)) { newLevel = Math.min(newLevel, opt_maxLevel) } return maxResolution / Math.pow(power, newLevel) }else { return undefined } } }; goog.provide("ol.RotationConstraint"); goog.provide("ol.RotationConstraintType"); ol.RotationConstraintType; ol.RotationConstraint.none = function(rotation, delta) { if(goog.isDef(rotation)) { return rotation + delta }else { return undefined } }; ol.RotationConstraint.createSnapToN = function(n) { var theta = 2 * Math.PI / n; return function(rotation, delta) { if(goog.isDef(rotation)) { rotation = Math.floor((rotation + delta) / theta + 0.5) * theta; return rotation }else { return undefined } } }; ol.RotationConstraint.createSnapToZero = function(opt_tolerance) { var tolerance = opt_tolerance || 0.1; return function(rotation, delta) { if(goog.isDef(rotation)) { if(Math.abs(rotation + delta) <= tolerance) { return 0 }else { return rotation + delta } }else { return undefined } } }; goog.provide("ol.Constraints"); goog.require("ol.ResolutionConstraintType"); goog.require("ol.RotationConstraintType"); ol.Constraints = function(resolutionConstraint, rotationConstraint) { this.resolution = resolutionConstraint; this.rotation = rotationConstraint }; goog.provide("ol.Coordinate"); goog.provide("ol.CoordinateArray"); goog.provide("ol.CoordinateFormatType"); goog.provide("ol.coordinate"); goog.require("goog.math"); ol.CoordinateFormatType; ol.Coordinate; ol.CoordinateArray; ol.coordinate.add = function(coordinate, delta) { coordinate[0] += delta[0]; coordinate[1] += delta[1]; return coordinate }; ol.coordinate.createStringXY = function(opt_precision) { return function(coordinate) { return ol.coordinate.toStringXY(coordinate, opt_precision) } }; ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres) { var normalizedDegrees = goog.math.modulo(degrees + 180, 360) - 180; var x = Math.abs(Math.round(3600 * normalizedDegrees)); return Math.floor(x / 3600) + "\u00b0 " + Math.floor(x / 60 % 60) + "\u2032 " + Math.floor(x % 60) + "\u2033 " + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0) }; ol.coordinate.equals = function(coordinate1, coordinate2) { var equals = true; for(var i = coordinate1.length - 1;i >= 0;--i) { if(coordinate1[i] != coordinate2[i]) { equals = false; break } } return equals }; ol.coordinate.rotate = function(coordinate, angle) { var cosAngle = Math.cos(angle); var sinAngle = Math.sin(angle); var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle; var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle; coordinate[0] = x; coordinate[1] = y; return coordinate }; ol.coordinate.scale = function(coordinate, s) { coordinate[0] *= s; coordinate[1] *= s; return coordinate }; ol.coordinate.squaredDistance = function(coord1, coord2) { var dx = coord1[0] - coord2[0]; var dy = coord1[1] - coord2[1]; return dx * dx + dy * dy }; ol.coordinate.closestOnSegment = function(coordinate, segment) { var x0 = coordinate[0]; var y0 = coordinate[1]; var start = segment[0]; var end = segment[1]; var x1 = start[0]; var y1 = start[1]; var x2 = end[0]; var y2 = end[1]; var dx = x2 - x1; var dy = y2 - y1; var along = dx == 0 && dy == 0 ? 0 : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0); var x, y; if(along <= 0) { x = x1; y = y1 }else { if(along >= 1) { x = x2; y = y2 }else { x = x1 + along * dx; y = y1 + along * dy } } var xDist = x - x0; var yDist = y - y0; return[x, y, xDist * xDist + yDist * yDist, along] }; ol.coordinate.toStringHDMS = function(coordinate) { if(goog.isDef(coordinate)) { return ol.coordinate.degreesToStringHDMS_(coordinate[1], "NS") + " " + ol.coordinate.degreesToStringHDMS_(coordinate[0], "EW") }else { return"" } }; ol.coordinate.toStringXY = function(coordinate, opt_precision) { if(goog.isDef(coordinate)) { var precision = opt_precision || 0; return coordinate[0].toFixed(precision) + ", " + coordinate[1].toFixed(precision) }else { return"" } }; ol.coordinate.fromProjectedArray = function(array, axis) { var firstAxis = axis.charAt(0); if(firstAxis === "n" || firstAxis === "s") { return[array[1], array[0]] }else { return array } }; goog.provide("ol.DeviceOrientation"); goog.provide("ol.DeviceOrientation.SUPPORTED"); goog.provide("ol.DeviceOrientationProperty"); goog.require("goog.events"); goog.require("goog.math"); goog.require("ol.Object"); ol.DeviceOrientationProperty = {ALPHA:"alpha", BETA:"beta", GAMMA:"gamma", HEADING:"heading", TRACKING:"tracking"}; ol.DeviceOrientation = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.listenerKey_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.DeviceOrientationProperty.TRACKING), this.handleTrackingChanged_, false, this); this.setTracking(goog.isDef(options.tracking) ? options.tracking : false) }; goog.inherits(ol.DeviceOrientation, ol.Object); ol.DeviceOrientation.prototype.disposeInternal = function() { this.setTracking(false); goog.base(this, "disposeInternal") }; ol.DeviceOrientation.SUPPORTED = "DeviceOrientationEvent" in window; ol.DeviceOrientation.prototype.orientationChange_ = function(browserEvent) { var event = (browserEvent.getBrowserEvent()); if(goog.isDefAndNotNull(event.alpha)) { var alpha = goog.math.toRadians(event.alpha); this.set(ol.DeviceOrientationProperty.ALPHA, alpha); if(goog.isBoolean(event.absolute) && event.absolute) { this.set(ol.DeviceOrientationProperty.HEADING, alpha) }else { if(goog.isDefAndNotNull(event.webkitCompassHeading) && goog.isDefAndNotNull(event.webkitCompassAccuracy) && event.webkitCompassAccuracy != -1) { var heading = goog.math.toRadians(event.webkitCompassHeading); this.set(ol.DeviceOrientationProperty.HEADING, heading) } } } if(goog.isDefAndNotNull(event.beta)) { this.set(ol.DeviceOrientationProperty.BETA, goog.math.toRadians(event.beta)) } if(goog.isDefAndNotNull(event.gamma)) { this.set(ol.DeviceOrientationProperty.GAMMA, goog.math.toRadians(event.gamma)) } }; ol.DeviceOrientation.prototype.getAlpha = function() { return(this.get(ol.DeviceOrientationProperty.ALPHA)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getAlpha", ol.DeviceOrientation.prototype.getAlpha); ol.DeviceOrientation.prototype.getBeta = function() { return(this.get(ol.DeviceOrientationProperty.BETA)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getBeta", ol.DeviceOrientation.prototype.getBeta); ol.DeviceOrientation.prototype.getGamma = function() { return(this.get(ol.DeviceOrientationProperty.GAMMA)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getGamma", ol.DeviceOrientation.prototype.getGamma); ol.DeviceOrientation.prototype.getHeading = function() { return(this.get(ol.DeviceOrientationProperty.HEADING)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getHeading", ol.DeviceOrientation.prototype.getHeading); ol.DeviceOrientation.prototype.getTracking = function() { return(this.get(ol.DeviceOrientationProperty.TRACKING)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getTracking", ol.DeviceOrientation.prototype.getTracking); ol.DeviceOrientation.prototype.handleTrackingChanged_ = function() { if(ol.DeviceOrientation.SUPPORTED) { var tracking = this.getTracking(); if(tracking && goog.isNull(this.listenerKey_)) { this.listenerKey_ = goog.events.listen(window, "deviceorientation", this.orientationChange_, false, this) }else { if(!tracking && !goog.isNull(this.listenerKey_)) { goog.events.unlistenByKey(this.listenerKey_); this.listenerKey_ = null } } } }; ol.DeviceOrientation.prototype.setTracking = function(tracking) { this.set(ol.DeviceOrientationProperty.TRACKING, tracking) }; goog.exportProperty(ol.DeviceOrientation.prototype, "setTracking", ol.DeviceOrientation.prototype.setTracking); goog.provide("ol.Ellipsoid"); goog.require("goog.math"); goog.require("ol.Coordinate"); ol.Ellipsoid = function(a, flattening) { this.a = a; this.flattening = flattening; this.b = this.a * (1 - this.flattening); this.eSquared = 2 * flattening - flattening * flattening; this.e = Math.sqrt(this.eSquared) }; ol.Ellipsoid.prototype.vincenty = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var minDeltaLambda = goog.isDef(opt_minDeltaLambda) ? opt_minDeltaLambda : 1E-12; var maxIterations = goog.isDef(opt_maxIterations) ? opt_maxIterations : 100; var f = this.flattening; var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var U1 = Math.atan((1 - f) * Math.tan(lat1)); var cosU1 = Math.cos(U1); var sinU1 = Math.sin(U1); var U2 = Math.atan((1 - f) * Math.tan(lat2)); var cosU2 = Math.cos(U2); var sinU2 = Math.sin(U2); var lambda = deltaLon; var cosSquaredAlpha, sinAlpha; var cosLambda, deltaLambda = Infinity, sinLambda; var cos2SigmaM, cosSigma, sigma, sinSigma; var i; for(i = maxIterations;i > 0;--i) { cosLambda = Math.cos(lambda); sinLambda = Math.sin(lambda); var x = cosU2 * sinLambda; var y = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda; sinSigma = Math.sqrt(x * x + y * y); if(sinSigma === 0) { return{distance:0, initialBearing:0, finalBearing:0} } cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda; sigma = Math.atan2(sinSigma, cosSigma); sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma; cosSquaredAlpha = 1 - sinAlpha * sinAlpha; cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSquaredAlpha; if(isNaN(cos2SigmaM)) { cos2SigmaM = 0 } var C = f / 16 * cosSquaredAlpha * (4 + f * (4 - 3 * cosSquaredAlpha)); var lambdaPrime = deltaLon + (1 - C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1))); deltaLambda = Math.abs(lambdaPrime - lambda); lambda = lambdaPrime; if(deltaLambda < minDeltaLambda) { break } } if(i === 0) { return{distance:NaN, finalBearing:NaN, initialBearing:NaN} } var aSquared = this.a * this.a; var bSquared = this.b * this.b; var uSquared = cosSquaredAlpha * (aSquared - bSquared) / bSquared; var A = 1 + uSquared / 16384 * (4096 + uSquared * (uSquared * (320 - 175 * uSquared) - 768)); var B = uSquared / 1024 * (256 + uSquared * (uSquared * (74 - 47 * uSquared) - 128)); var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1) - B / 6 * cos2SigmaM * (4 * sinSigma * sinSigma - 3) * (4 * cos2SigmaM * cos2SigmaM - 3))); cosLambda = Math.cos(lambda); sinLambda = Math.sin(lambda); var alpha1 = Math.atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda); var alpha2 = Math.atan2(cosU1 * sinLambda, cosU1 * sinU2 * cosLambda - sinU1 * cosU2); return{distance:this.b * A * (sigma - deltaSigma), initialBearing:goog.math.toDegrees(alpha1), finalBearing:goog.math.toDegrees(alpha2)} }; ol.Ellipsoid.prototype.vincentyDistance = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations); return vincenty.distance }; ol.Ellipsoid.prototype.vincentyFinalBearing = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations); return vincenty.finalBearing }; ol.Ellipsoid.prototype.vincentyInitialBearing = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations); return vincenty.initialBearing }; goog.provide("ol.TransformFunction"); ol.TransformFunction; goog.provide("ol.Extent"); goog.provide("ol.extent"); goog.require("goog.asserts"); goog.require("ol.Coordinate"); goog.require("ol.Size"); goog.require("ol.TransformFunction"); ol.Extent; ol.extent.boundingExtent = function(coordinates) { var extent = ol.extent.createEmpty(); var n = coordinates.length; var i; for(i = 0;i < n;++i) { ol.extent.extendCoordinate(extent, coordinates[i]) } return extent }; ol.extent.boundingExtentXYs_ = function(xs, ys, opt_extent) { goog.asserts.assert(xs.length > 0); goog.asserts.assert(ys.length > 0); var minX = Math.min.apply(null, xs); var maxX = Math.max.apply(null, xs); var minY = Math.min.apply(null, ys); var maxY = Math.max.apply(null, ys); return ol.extent.createOrUpdate(minX, maxX, minY, maxY, opt_extent) }; ol.extent.containsCoordinate = function(extent, coordinate) { return extent[0] <= coordinate[0] && coordinate[0] <= extent[1] && extent[2] <= coordinate[1] && coordinate[1] <= extent[3] }; ol.extent.containsExtent = function(extent1, extent2) { return extent1[0] <= extent2[0] && extent2[1] <= extent1[1] && extent1[2] <= extent2[2] && extent2[3] <= extent1[3] }; ol.extent.createEmpty = function() { return[Infinity, -Infinity, Infinity, -Infinity] }; ol.extent.createOrUpdate = function(minX, maxX, minY, maxY, opt_extent) { if(goog.isDef(opt_extent)) { opt_extent[0] = minX; opt_extent[1] = maxX; opt_extent[2] = minY; opt_extent[3] = maxY; return opt_extent }else { return[minX, maxX, minY, maxY] } }; ol.extent.empty = function(extent) { extent[0] = extent[2] = Infinity; extent[1] = extent[3] = -Infinity; return extent }; ol.extent.equals = function(extent1, extent2) { return extent1[0] == extent2[0] && extent1[1] == extent2[1] && extent1[2] == extent2[2] && extent1[3] == extent2[3] }; ol.extent.extend = function(extent1, extent2) { if(extent2[0] < extent1[0]) { extent1[0] = extent2[0] } if(extent2[1] > extent1[1]) { extent1[1] = extent2[1] } if(extent2[2] < extent1[2]) { extent1[2] = extent2[2] } if(extent2[3] > extent1[3]) { extent1[3] = extent2[3] } }; ol.extent.extendCoordinate = function(extent, coordinate) { if(coordinate[0] < extent[0]) { extent[0] = coordinate[0] } if(coordinate[0] > extent[1]) { extent[1] = coordinate[0] } if(coordinate[1] < extent[2]) { extent[2] = coordinate[1] } if(coordinate[1] > extent[3]) { extent[3] = coordinate[1] } }; ol.extent.getBottomLeft = function(extent) { return[extent[0], extent[2]] }; ol.extent.getBottomRight = function(extent) { return[extent[1], extent[2]] }; ol.extent.getCenter = function(extent) { return[(extent[0] + extent[1]) / 2, (extent[2] + extent[3]) / 2] }; ol.extent.getForView2DAndSize = function(center, resolution, rotation, size, opt_extent) { var dx = resolution * size[0] / 2; var dy = resolution * size[1] / 2; var cosRotation = Math.cos(rotation); var sinRotation = Math.sin(rotation); var xs = [-dx, -dx, dx, dx]; var ys = [-dy, dy, -dy, dy]; var i, x, y; for(i = 0;i < 4;++i) { x = xs[i]; y = ys[i]; xs[i] = center[0] + x * cosRotation - y * sinRotation; ys[i] = center[1] + x * sinRotation + y * cosRotation } return ol.extent.boundingExtentXYs_(xs, ys, opt_extent) }; ol.extent.getHeight = function(extent) { return extent[3] - extent[2] }; ol.extent.getSize = function(extent) { return[extent[1] - extent[0], extent[3] - extent[2]] }; ol.extent.getTopLeft = function(extent) { return[extent[0], extent[3]] }; ol.extent.getTopRight = function(extent) { return[extent[1], extent[3]] }; ol.extent.getWidth = function(extent) { return extent[1] - extent[0] }; ol.extent.intersects = function(extent1, extent2) { return extent1[0] <= extent2[1] && extent1[1] >= extent2[0] && extent1[2] <= extent2[3] && extent1[3] >= extent2[2] }; ol.extent.isEmpty = function(extent) { return extent[1] < extent[0] || extent[3] < extent[2] }; ol.extent.normalize = function(extent, coordinate) { return[(coordinate[0] - extent[0]) / (extent[1] - extent[0]), (coordinate[1] - extent[2]) / (extent[3] - extent[2])] }; ol.extent.scaleFromCenter = function(extent, value) { var deltaX = (extent[1] - extent[0]) / 2 * (value - 1); var deltaY = (extent[3] - extent[2]) / 2 * (value - 1); extent[0] -= deltaX; extent[1] += deltaX; extent[2] -= deltaY; extent[3] += deltaY }; ol.extent.toString = function(extent) { return"(" + [extent[0], extent[1], extent[2], extent[3]].join(", ") + ")" }; ol.extent.transform = function(extent, transformFn, opt_extent) { var coordinates = [extent[0], extent[2], extent[0], extent[3], extent[1], extent[2], extent[1], extent[3]]; transformFn(coordinates, coordinates, 2); var xs = [coordinates[0], coordinates[2], coordinates[4], coordinates[6]]; var ys = [coordinates[1], coordinates[3], coordinates[5], coordinates[7]]; return ol.extent.boundingExtentXYs_(xs, ys, opt_extent) }; goog.provide("ol.geom.SharedVertices"); goog.require("goog.asserts"); goog.require("ol.Coordinate"); goog.require("ol.CoordinateArray"); ol.geom.SharedVerticesOptions; ol.geom.SharedVertices = function(opt_options) { var options = opt_options ? opt_options : {}; this.coordinates = []; this.starts_ = []; this.counts_ = []; this.dimension_ = options.dimension || 2; this.offset_ = options.offset || null; goog.asserts.assert(goog.isNull(this.offset_) || this.offset_.length === this.dimension_) }; ol.geom.SharedVertices.prototype.add = function(vertices) { var start = this.coordinates.length; var offset = this.offset_; var dimension = this.dimension_; var count = vertices.length; var vertex, index; for(var i = 0;i < count;++i) { vertex = vertices[i]; index = start + i * dimension; for(var j = 0;j < dimension;++j) { this.coordinates[index + j] = vertex[j] - (offset ? offset[j] : 0) } } var length = this.starts_.push(start); this.counts_.push(count); return length - 1 }; ol.geom.SharedVertices.prototype.get = function(id, index, dim) { goog.asserts.assert(id < this.starts_.length); goog.asserts.assert(dim <= this.dimension_); goog.asserts.assert(index < this.counts_[id]); var start = this.starts_[id]; var value = this.coordinates[start + index * this.dimension_ + dim]; if(this.offset_) { value += this.offset_[dim] } return value }; ol.geom.SharedVertices.prototype.getCount = function(id) { goog.asserts.assert(id < this.counts_.length); return this.counts_[id] }; ol.geom.SharedVertices.prototype.getCounts = function() { return this.counts_ }; ol.geom.SharedVertices.prototype.getDimension = function() { return this.dimension_ }; ol.geom.SharedVertices.prototype.getOffset = function() { return this.offset_ }; ol.geom.SharedVertices.prototype.getStart = function(id) { goog.asserts.assert(id < this.starts_.length); return this.starts_[id] }; ol.geom.SharedVertices.prototype.getStarts = function() { return this.starts_ }; ol.geom.SharedVertices.prototype.set = function(id, index, dim, value) { goog.asserts.assert(id < this.starts_.length); goog.asserts.assert(dim <= this.dimension_); goog.asserts.assert(index < this.counts_[id]); var start = this.starts_[id]; if(this.offset_) { value -= this.offset_[dim] } this.coordinates[start + index * this.dimension_ + dim] = value }; goog.provide("ol.geom.Geometry"); goog.provide("ol.geom.GeometryType"); goog.require("ol.Extent"); goog.require("ol.geom.SharedVertices"); ol.geom.Geometry = function() { this.vertices = null }; ol.geom.Geometry.prototype.dimension; ol.geom.Geometry.prototype.clone = function() { var clone = new this.constructor(this.getCoordinates()); clone.dimension = this.dimension; return clone }; ol.geom.Geometry.prototype.getBounds = goog.abstractMethod; ol.geom.Geometry.prototype.getCoordinates = goog.abstractMethod; ol.geom.Geometry.prototype.getSharedVertices = function() { return this.vertices }; ol.geom.Geometry.prototype.getType = goog.abstractMethod; ol.geom.Geometry.prototype.invalidateBounds = goog.abstractMethod; ol.geom.GeometryType = {POINT:"point", LINESTRING:"linestring", LINEARRING:"linearring", POLYGON:"polygon", MULTIPOINT:"multipoint", MULTILINESTRING:"multilinestring", MULTIPOLYGON:"multipolygon", GEOMETRYCOLLECTION:"geometrycollection"}; goog.provide("ol.layer.VectorLayerRenderIntent"); ol.layer.VectorLayerRenderIntent = {DEFAULT:"default", FUTURE:"future", HIDDEN:"hidden", SELECTED:"selected", TEMPORARY:"temporary"}; goog.provide("ol.Feature"); goog.require("ol.Object"); goog.require("ol.geom.Geometry"); goog.require("ol.layer.VectorLayerRenderIntent"); ol.Feature = function(opt_values) { goog.base(this, opt_values); this.featureId_; this.geometryName_; this.renderIntent = ol.layer.VectorLayerRenderIntent.DEFAULT; this.symbolizers_ = null }; goog.inherits(ol.Feature, ol.Object); ol.Feature.prototype.getAttributes = function() { var keys = this.getKeys(), len = keys.length, attributes = {}, i, key; for(i = 0;i < len;++i) { key = keys[i]; attributes[key] = this.get(key) } return attributes }; ol.Feature.prototype.getFeatureId = function() { return this.featureId_ }; ol.Feature.prototype.getGeometry = function() { return goog.isDef(this.geometryName_) ? (this.get(this.geometryName_)) : null }; ol.Feature.prototype.getSymbolizers = function() { return this.symbolizers_ }; ol.Feature.prototype.set = function(key, value) { if(!goog.isDef(this.geometryName_) && value instanceof ol.geom.Geometry) { this.geometryName_ = key } goog.base(this, "set", key, value) }; ol.Feature.prototype.setFeatureId = function(featureId) { this.featureId_ = featureId }; ol.Feature.prototype.setGeometry = function(geometry) { if(!goog.isDef(this.geometryName_)) { this.geometryName_ = ol.Feature.DEFAULT_GEOMETRY } this.set(this.geometryName_, geometry) }; ol.Feature.prototype.setSymbolizers = function(symbolizers) { this.symbolizers_ = symbolizers }; ol.Feature.DEFAULT_GEOMETRY = "geometry"; goog.provide("goog.vec.Float32Array"); goog.vec.Float32Array = function(p0) { this.length = (p0.length || p0); for(var i = 0;i < this.length;i++) { this[i] = p0[i] || 0 } }; goog.vec.Float32Array.BYTES_PER_ELEMENT = 4; goog.vec.Float32Array.prototype.BYTES_PER_ELEMENT = 4; goog.vec.Float32Array.prototype.set = function(values, opt_offset) { opt_offset = opt_offset || 0; for(var i = 0;i < values.length && opt_offset + i < this.length;i++) { this[opt_offset + i] = values[i] } }; goog.vec.Float32Array.prototype.toString = Array.prototype.join; if(typeof Float32Array == "undefined") { goog.exportProperty(goog.vec.Float32Array, "BYTES_PER_ELEMENT", goog.vec.Float32Array.BYTES_PER_ELEMENT); goog.exportProperty(goog.vec.Float32Array.prototype, "BYTES_PER_ELEMENT", goog.vec.Float32Array.prototype.BYTES_PER_ELEMENT); goog.exportProperty(goog.vec.Float32Array.prototype, "set", goog.vec.Float32Array.prototype.set); goog.exportProperty(goog.vec.Float32Array.prototype, "toString", goog.vec.Float32Array.prototype.toString); goog.exportSymbol("Float32Array", goog.vec.Float32Array) } ;goog.provide("goog.vec.Float64Array"); goog.vec.Float64Array = function(p0) { this.length = (p0.length || p0); for(var i = 0;i < this.length;i++) { this[i] = p0[i] || 0 } }; goog.vec.Float64Array.BYTES_PER_ELEMENT = 8; goog.vec.Float64Array.prototype.BYTES_PER_ELEMENT = 8; goog.vec.Float64Array.prototype.set = function(values, opt_offset) { opt_offset = opt_offset || 0; for(var i = 0;i < values.length && opt_offset + i < this.length;i++) { this[opt_offset + i] = values[i] } }; goog.vec.Float64Array.prototype.toString = Array.prototype.join; if(typeof Float64Array == "undefined") { try { goog.exportProperty(goog.vec.Float64Array, "BYTES_PER_ELEMENT", goog.vec.Float64Array.BYTES_PER_ELEMENT) }catch(float64ArrayError) { } goog.exportProperty(goog.vec.Float64Array.prototype, "BYTES_PER_ELEMENT", goog.vec.Float64Array.prototype.BYTES_PER_ELEMENT); goog.exportProperty(goog.vec.Float64Array.prototype, "set", goog.vec.Float64Array.prototype.set); goog.exportProperty(goog.vec.Float64Array.prototype, "toString", goog.vec.Float64Array.prototype.toString); goog.exportSymbol("Float64Array", goog.vec.Float64Array) } ;goog.provide("goog.vec"); goog.provide("goog.vec.AnyType"); goog.provide("goog.vec.ArrayType"); goog.provide("goog.vec.Float32"); goog.provide("goog.vec.Float64"); goog.provide("goog.vec.Number"); goog.require("goog.vec.Float32Array"); goog.require("goog.vec.Float64Array"); goog.vec.Float32; goog.vec.Float64; goog.vec.Number; goog.vec.AnyType; goog.vec.ArrayType; goog.vec.EPSILON = 1E-6; goog.provide("goog.vec.Vec3"); goog.require("goog.vec"); goog.vec.Vec3.Float32; goog.vec.Vec3.Float64; goog.vec.Vec3.Number; goog.vec.Vec3.AnyType; goog.vec.Vec3.Type; goog.vec.Vec3.Vec3Like; goog.vec.Vec3.createFloat32 = function() { return new Float32Array(3) }; goog.vec.Vec3.createFloat64 = function() { return new Float64Array(3) }; goog.vec.Vec3.createNumber = function() { var a = new Array(3); goog.vec.Vec3.setFromValues(a, 0, 0, 0); return a }; goog.vec.Vec3.create = function() { return new Float32Array(3) }; goog.vec.Vec3.createFloat32FromArray = function(vec) { var newVec = goog.vec.Vec3.createFloat32(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.createFloat32FromValues = function(v0, v1, v2) { var a = goog.vec.Vec3.createFloat32(); goog.vec.Vec3.setFromValues(a, v0, v1, v2); return a }; goog.vec.Vec3.cloneFloat32 = goog.vec.Vec3.createFloat32FromArray; goog.vec.Vec3.createFloat64FromArray = function(vec) { var newVec = goog.vec.Vec3.createFloat64(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.createFloat64FromValues = function(v0, v1, v2) { var vec = goog.vec.Vec3.createFloat64(); goog.vec.Vec3.setFromValues(vec, v0, v1, v2); return vec }; goog.vec.Vec3.cloneFloat64 = goog.vec.Vec3.createFloat64FromArray; goog.vec.Vec3.createFromArray = function(vec) { var newVec = goog.vec.Vec3.create(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.createFromValues = function(v0, v1, v2) { var vec = goog.vec.Vec3.create(); goog.vec.Vec3.setFromValues(vec, v0, v1, v2); return vec }; goog.vec.Vec3.clone = function(vec) { var newVec = goog.vec.Vec3.create(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.setFromValues = function(vec, v0, v1, v2) { vec[0] = v0; vec[1] = v1; vec[2] = v2; return vec }; goog.vec.Vec3.setFromArray = function(vec, values) { vec[0] = values[0]; vec[1] = values[1]; vec[2] = values[2]; return vec }; goog.vec.Vec3.add = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] + vec1[0]; resultVec[1] = vec0[1] + vec1[1]; resultVec[2] = vec0[2] + vec1[2]; return resultVec }; goog.vec.Vec3.subtract = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] - vec1[0]; resultVec[1] = vec0[1] - vec1[1]; resultVec[2] = vec0[2] - vec1[2]; return resultVec }; goog.vec.Vec3.negate = function(vec0, resultVec) { resultVec[0] = -vec0[0]; resultVec[1] = -vec0[1]; resultVec[2] = -vec0[2]; return resultVec }; goog.vec.Vec3.scale = function(vec0, scalar, resultVec) { resultVec[0] = vec0[0] * scalar; resultVec[1] = vec0[1] * scalar; resultVec[2] = vec0[2] * scalar; return resultVec }; goog.vec.Vec3.magnitudeSquared = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2]; return x * x + y * y + z * z }; goog.vec.Vec3.magnitude = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2]; return Math.sqrt(x * x + y * y + z * z) }; goog.vec.Vec3.normalize = function(vec0, resultVec) { var ilen = 1 / goog.vec.Vec3.magnitude(vec0); resultVec[0] = vec0[0] * ilen; resultVec[1] = vec0[1] * ilen; resultVec[2] = vec0[2] * ilen; return resultVec }; goog.vec.Vec3.dot = function(v0, v1) { return v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2] }; goog.vec.Vec3.cross = function(v0, v1, resultVec) { var x0 = v0[0], y0 = v0[1], z0 = v0[2]; var x1 = v1[0], y1 = v1[1], z1 = v1[2]; resultVec[0] = y0 * z1 - z0 * y1; resultVec[1] = z0 * x1 - x0 * z1; resultVec[2] = x0 * y1 - y0 * x1; return resultVec }; goog.vec.Vec3.distanceSquared = function(vec0, vec1) { var x = vec0[0] - vec1[0]; var y = vec0[1] - vec1[1]; var z = vec0[2] - vec1[2]; return x * x + y * y + z * z }; goog.vec.Vec3.distance = function(vec0, vec1) { return Math.sqrt(goog.vec.Vec3.distanceSquared(vec0, vec1)) }; goog.vec.Vec3.direction = function(vec0, vec1, resultVec) { var x = vec1[0] - vec0[0]; var y = vec1[1] - vec0[1]; var z = vec1[2] - vec0[2]; var d = Math.sqrt(x * x + y * y + z * z); if(d) { d = 1 / d; resultVec[0] = x * d; resultVec[1] = y * d; resultVec[2] = z * d }else { resultVec[0] = resultVec[1] = resultVec[2] = 0 } return resultVec }; goog.vec.Vec3.lerp = function(v0, v1, f, resultVec) { var x = v0[0], y = v0[1], z = v0[2]; resultVec[0] = (v1[0] - x) * f + x; resultVec[1] = (v1[1] - y) * f + y; resultVec[2] = (v1[2] - z) * f + z; return resultVec }; goog.vec.Vec3.equals = function(v0, v1) { return v0.length == v1.length && v0[0] == v1[0] && v0[1] == v1[1] && v0[2] == v1[2] }; goog.provide("goog.vec.Vec4"); goog.require("goog.vec"); goog.vec.Vec4.Float32; goog.vec.Vec4.Float64; goog.vec.Vec4.Number; goog.vec.Vec4.AnyType; goog.vec.Vec4.Type; goog.vec.Vec4.Vec4Like; goog.vec.Vec4.createFloat32 = function() { return new Float32Array(4) }; goog.vec.Vec4.createFloat64 = function() { return new Float64Array(4) }; goog.vec.Vec4.createNumber = function() { var v = new Array(4); goog.vec.Vec4.setFromValues(v, 0, 0, 0, 0); return v }; goog.vec.Vec4.create = function() { return new Float32Array(4) }; goog.vec.Vec4.createFromArray = function(vec) { var newVec = goog.vec.Vec4.create(); goog.vec.Vec4.setFromArray(newVec, vec); return newVec }; goog.vec.Vec4.createFloat32FromArray = function(vec) { var newVec = goog.vec.Vec4.createFloat32(); goog.vec.Vec4.setFromArray(newVec, vec); return newVec }; goog.vec.Vec4.createFloat32FromValues = function(v0, v1, v2, v3) { var vec = goog.vec.Vec4.createFloat32(); goog.vec.Vec4.setFromValues(vec, v0, v1, v2, v3); return vec }; goog.vec.Vec4.cloneFloat32 = goog.vec.Vec4.createFloat32FromArray; goog.vec.Vec4.createFloat64FromArray = function(vec) { var newVec = goog.vec.Vec4.createFloat64(); goog.vec.Vec4.setFromArray(newVec, vec); return newVec }; goog.vec.Vec4.createFloat64FromValues = function(v0, v1, v2, v3) { var vec = goog.vec.Vec4.createFloat64(); goog.vec.Vec4.setFromValues(vec, v0, v1, v2, v3); return vec }; goog.vec.Vec4.cloneFloat64 = goog.vec.Vec4.createFloat64FromArray; goog.vec.Vec4.createFromValues = function(v0, v1, v2, v3) { var vec = goog.vec.Vec4.create(); goog.vec.Vec4.setFromValues(vec, v0, v1, v2, v3); return vec }; goog.vec.Vec4.clone = goog.vec.Vec4.createFromArray; goog.vec.Vec4.setFromValues = function(vec, v0, v1, v2, v3) { vec[0] = v0; vec[1] = v1; vec[2] = v2; vec[3] = v3; return vec }; goog.vec.Vec4.setFromArray = function(vec, values) { vec[0] = values[0]; vec[1] = values[1]; vec[2] = values[2]; vec[3] = values[3]; return vec }; goog.vec.Vec4.add = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] + vec1[0]; resultVec[1] = vec0[1] + vec1[1]; resultVec[2] = vec0[2] + vec1[2]; resultVec[3] = vec0[3] + vec1[3]; return resultVec }; goog.vec.Vec4.subtract = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] - vec1[0]; resultVec[1] = vec0[1] - vec1[1]; resultVec[2] = vec0[2] - vec1[2]; resultVec[3] = vec0[3] - vec1[3]; return resultVec }; goog.vec.Vec4.negate = function(vec0, resultVec) { resultVec[0] = -vec0[0]; resultVec[1] = -vec0[1]; resultVec[2] = -vec0[2]; resultVec[3] = -vec0[3]; return resultVec }; goog.vec.Vec4.scale = function(vec0, scalar, resultVec) { resultVec[0] = vec0[0] * scalar; resultVec[1] = vec0[1] * scalar; resultVec[2] = vec0[2] * scalar; resultVec[3] = vec0[3] * scalar; return resultVec }; goog.vec.Vec4.magnitudeSquared = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2], w = vec0[3]; return x * x + y * y + z * z + w * w }; goog.vec.Vec4.magnitude = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2], w = vec0[3]; return Math.sqrt(x * x + y * y + z * z + w * w) }; goog.vec.Vec4.normalize = function(vec0, resultVec) { var ilen = 1 / goog.vec.Vec4.magnitude(vec0); resultVec[0] = vec0[0] * ilen; resultVec[1] = vec0[1] * ilen; resultVec[2] = vec0[2] * ilen; resultVec[3] = vec0[3] * ilen; return resultVec }; goog.vec.Vec4.dot = function(v0, v1) { return v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2] + v0[3] * v1[3] }; goog.vec.Vec4.lerp = function(v0, v1, f, resultVec) { var x = v0[0], y = v0[1], z = v0[2], w = v0[3]; resultVec[0] = (v1[0] - x) * f + x; resultVec[1] = (v1[1] - y) * f + y; resultVec[2] = (v1[2] - z) * f + z; resultVec[3] = (v1[3] - w) * f + w; return resultVec }; goog.vec.Vec4.equals = function(v0, v1) { return v0.length == v1.length && v0[0] == v1[0] && v0[1] == v1[1] && v0[2] == v1[2] && v0[3] == v1[3] }; goog.provide("goog.vec.Mat4"); goog.require("goog.vec"); goog.require("goog.vec.Vec3"); goog.require("goog.vec.Vec4"); goog.vec.Mat4.Float32; goog.vec.Mat4.Float64; goog.vec.Mat4.Number; goog.vec.Mat4.AnyType; goog.vec.Mat4.Type; goog.vec.Mat4.Mat4Like; goog.vec.Mat4.createFloat32 = function() { return new Float32Array(16) }; goog.vec.Mat4.createFloat64 = function() { return new Float64Array(16) }; goog.vec.Mat4.createNumber = function() { var a = new Array(16); goog.vec.Mat4.setFromValues(a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return a }; goog.vec.Mat4.create = function() { return goog.vec.Mat4.createFloat32() }; goog.vec.Mat4.createFloat32Identity = function() { var mat = goog.vec.Mat4.createFloat32(); mat[0] = mat[5] = mat[10] = mat[15] = 1; return mat }; goog.vec.Mat4.createFloat64Identity = function() { var mat = goog.vec.Mat4.createFloat64(); mat[0] = mat[5] = mat[10] = mat[15] = 1; return mat }; goog.vec.Mat4.createNumberIdentity = function() { var a = new Array(16); goog.vec.Mat4.setFromValues(a, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); return a }; goog.vec.Mat4.createIdentity = function() { return goog.vec.Mat4.createFloat32Identity() }; goog.vec.Mat4.createFloat32FromArray = function(matrix) { var newMatrix = goog.vec.Mat4.createFloat32(); goog.vec.Mat4.setFromArray(newMatrix, matrix); return newMatrix }; goog.vec.Mat4.createFloat32FromValues = function(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { var newMatrix = goog.vec.Mat4.createFloat32(); goog.vec.Mat4.setFromValues(newMatrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return newMatrix }; goog.vec.Mat4.cloneFloat32 = goog.vec.Mat4.createFloat32FromArray; goog.vec.Mat4.createFloat64FromArray = function(matrix) { var newMatrix = goog.vec.Mat4.createFloat64(); goog.vec.Mat4.setFromArray(newMatrix, matrix); return newMatrix }; goog.vec.Mat4.createFloat64FromValues = function(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { var newMatrix = goog.vec.Mat4.createFloat64(); goog.vec.Mat4.setFromValues(newMatrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return newMatrix }; goog.vec.Mat4.cloneFloat64 = goog.vec.Mat4.createFloat64FromArray; goog.vec.Mat4.createFromArray = function(matrix) { var newMatrix = goog.vec.Mat4.createFloat32(); goog.vec.Mat4.setFromArray(newMatrix, matrix); return newMatrix }; goog.vec.Mat4.createFromValues = function(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { return goog.vec.Mat4.createFloat32FromValues(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) }; goog.vec.Mat4.clone = goog.vec.Mat4.createFromArray; goog.vec.Mat4.getElement = function(mat, row, column) { return mat[row + column * 4] }; goog.vec.Mat4.setElement = function(mat, row, column, value) { mat[row + column * 4] = value; return mat }; goog.vec.Mat4.setFromValues = function(mat, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { mat[0] = v00; mat[1] = v10; mat[2] = v20; mat[3] = v30; mat[4] = v01; mat[5] = v11; mat[6] = v21; mat[7] = v31; mat[8] = v02; mat[9] = v12; mat[10] = v22; mat[11] = v32; mat[12] = v03; mat[13] = v13; mat[14] = v23; mat[15] = v33; return mat }; goog.vec.Mat4.setFromArray = function(mat, values) { mat[0] = values[0]; mat[1] = values[1]; mat[2] = values[2]; mat[3] = values[3]; mat[4] = values[4]; mat[5] = values[5]; mat[6] = values[6]; mat[7] = values[7]; mat[8] = values[8]; mat[9] = values[9]; mat[10] = values[10]; mat[11] = values[11]; mat[12] = values[12]; mat[13] = values[13]; mat[14] = values[14]; mat[15] = values[15]; return mat }; goog.vec.Mat4.setFromRowMajorArray = function(mat, values) { mat[0] = values[0]; mat[1] = values[4]; mat[2] = values[8]; mat[3] = values[12]; mat[4] = values[1]; mat[5] = values[5]; mat[6] = values[9]; mat[7] = values[13]; mat[8] = values[2]; mat[9] = values[6]; mat[10] = values[10]; mat[11] = values[14]; mat[12] = values[3]; mat[13] = values[7]; mat[14] = values[11]; mat[15] = values[15]; return mat }; goog.vec.Mat4.setDiagonalValues = function(mat, v00, v11, v22, v33) { mat[0] = v00; mat[5] = v11; mat[10] = v22; mat[15] = v33; return mat }; goog.vec.Mat4.setDiagonal = function(mat, vec) { mat[0] = vec[0]; mat[5] = vec[1]; mat[10] = vec[2]; mat[15] = vec[3]; return mat }; goog.vec.Mat4.getDiagonal = function(mat, vec, opt_diagonal) { if(!opt_diagonal) { vec[0] = mat[0]; vec[1] = mat[5]; vec[2] = mat[10]; vec[3] = mat[15] }else { var offset = opt_diagonal > 0 ? 4 * opt_diagonal : -opt_diagonal; for(var i = 0;i < 4 - Math.abs(opt_diagonal);i++) { vec[i] = mat[offset + 5 * i] } } return vec }; goog.vec.Mat4.setColumnValues = function(mat, column, v0, v1, v2, v3) { var i = column * 4; mat[i] = v0; mat[i + 1] = v1; mat[i + 2] = v2; mat[i + 3] = v3; return mat }; goog.vec.Mat4.setColumn = function(mat, column, vec) { var i = column * 4; mat[i] = vec[0]; mat[i + 1] = vec[1]; mat[i + 2] = vec[2]; mat[i + 3] = vec[3]; return mat }; goog.vec.Mat4.getColumn = function(mat, column, vec) { var i = column * 4; vec[0] = mat[i]; vec[1] = mat[i + 1]; vec[2] = mat[i + 2]; vec[3] = mat[i + 3]; return vec }; goog.vec.Mat4.setColumns = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.setColumn(mat, 0, vec0); goog.vec.Mat4.setColumn(mat, 1, vec1); goog.vec.Mat4.setColumn(mat, 2, vec2); goog.vec.Mat4.setColumn(mat, 3, vec3); return mat }; goog.vec.Mat4.getColumns = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.getColumn(mat, 0, vec0); goog.vec.Mat4.getColumn(mat, 1, vec1); goog.vec.Mat4.getColumn(mat, 2, vec2); goog.vec.Mat4.getColumn(mat, 3, vec3) }; goog.vec.Mat4.setRowValues = function(mat, row, v0, v1, v2, v3) { mat[row] = v0; mat[row + 4] = v1; mat[row + 8] = v2; mat[row + 12] = v3; return mat }; goog.vec.Mat4.setRow = function(mat, row, vec) { mat[row] = vec[0]; mat[row + 4] = vec[1]; mat[row + 8] = vec[2]; mat[row + 12] = vec[3]; return mat }; goog.vec.Mat4.getRow = function(mat, row, vec) { vec[0] = mat[row]; vec[1] = mat[row + 4]; vec[2] = mat[row + 8]; vec[3] = mat[row + 12]; return vec }; goog.vec.Mat4.setRows = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.setRow(mat, 0, vec0); goog.vec.Mat4.setRow(mat, 1, vec1); goog.vec.Mat4.setRow(mat, 2, vec2); goog.vec.Mat4.setRow(mat, 3, vec3); return mat }; goog.vec.Mat4.getRows = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.getRow(mat, 0, vec0); goog.vec.Mat4.getRow(mat, 1, vec1); goog.vec.Mat4.getRow(mat, 2, vec2); goog.vec.Mat4.getRow(mat, 3, vec3) }; goog.vec.Mat4.makeZero = function(mat) { mat[0] = 0; mat[1] = 0; mat[2] = 0; mat[3] = 0; mat[4] = 0; mat[5] = 0; mat[6] = 0; mat[7] = 0; mat[8] = 0; mat[9] = 0; mat[10] = 0; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 0; return mat }; goog.vec.Mat4.makeIdentity = function(mat) { mat[0] = 1; mat[1] = 0; mat[2] = 0; mat[3] = 0; mat[4] = 0; mat[5] = 1; mat[6] = 0; mat[7] = 0; mat[8] = 0; mat[9] = 0; mat[10] = 1; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 1; return mat }; goog.vec.Mat4.addMat = function(mat0, mat1, resultMat) { resultMat[0] = mat0[0] + mat1[0]; resultMat[1] = mat0[1] + mat1[1]; resultMat[2] = mat0[2] + mat1[2]; resultMat[3] = mat0[3] + mat1[3]; resultMat[4] = mat0[4] + mat1[4]; resultMat[5] = mat0[5] + mat1[5]; resultMat[6] = mat0[6] + mat1[6]; resultMat[7] = mat0[7] + mat1[7]; resultMat[8] = mat0[8] + mat1[8]; resultMat[9] = mat0[9] + mat1[9]; resultMat[10] = mat0[10] + mat1[10]; resultMat[11] = mat0[11] + mat1[11]; resultMat[12] = mat0[12] + mat1[12]; resultMat[13] = mat0[13] + mat1[13]; resultMat[14] = mat0[14] + mat1[14]; resultMat[15] = mat0[15] + mat1[15]; return resultMat }; goog.vec.Mat4.subMat = function(mat0, mat1, resultMat) { resultMat[0] = mat0[0] - mat1[0]; resultMat[1] = mat0[1] - mat1[1]; resultMat[2] = mat0[2] - mat1[2]; resultMat[3] = mat0[3] - mat1[3]; resultMat[4] = mat0[4] - mat1[4]; resultMat[5] = mat0[5] - mat1[5]; resultMat[6] = mat0[6] - mat1[6]; resultMat[7] = mat0[7] - mat1[7]; resultMat[8] = mat0[8] - mat1[8]; resultMat[9] = mat0[9] - mat1[9]; resultMat[10] = mat0[10] - mat1[10]; resultMat[11] = mat0[11] - mat1[11]; resultMat[12] = mat0[12] - mat1[12]; resultMat[13] = mat0[13] - mat1[13]; resultMat[14] = mat0[14] - mat1[14]; resultMat[15] = mat0[15] - mat1[15]; return resultMat }; goog.vec.Mat4.multScalar = function(mat, scalar, resultMat) { resultMat[0] = mat[0] * scalar; resultMat[1] = mat[1] * scalar; resultMat[2] = mat[2] * scalar; resultMat[3] = mat[3] * scalar; resultMat[4] = mat[4] * scalar; resultMat[5] = mat[5] * scalar; resultMat[6] = mat[6] * scalar; resultMat[7] = mat[7] * scalar; resultMat[8] = mat[8] * scalar; resultMat[9] = mat[9] * scalar; resultMat[10] = mat[10] * scalar; resultMat[11] = mat[11] * scalar; resultMat[12] = mat[12] * scalar; resultMat[13] = mat[13] * scalar; resultMat[14] = mat[14] * scalar; resultMat[15] = mat[15] * scalar; return resultMat }; goog.vec.Mat4.multMat = function(mat0, mat1, resultMat) { var a00 = mat0[0], a10 = mat0[1], a20 = mat0[2], a30 = mat0[3]; var a01 = mat0[4], a11 = mat0[5], a21 = mat0[6], a31 = mat0[7]; var a02 = mat0[8], a12 = mat0[9], a22 = mat0[10], a32 = mat0[11]; var a03 = mat0[12], a13 = mat0[13], a23 = mat0[14], a33 = mat0[15]; var b00 = mat1[0], b10 = mat1[1], b20 = mat1[2], b30 = mat1[3]; var b01 = mat1[4], b11 = mat1[5], b21 = mat1[6], b31 = mat1[7]; var b02 = mat1[8], b12 = mat1[9], b22 = mat1[10], b32 = mat1[11]; var b03 = mat1[12], b13 = mat1[13], b23 = mat1[14], b33 = mat1[15]; resultMat[0] = a00 * b00 + a01 * b10 + a02 * b20 + a03 * b30; resultMat[1] = a10 * b00 + a11 * b10 + a12 * b20 + a13 * b30; resultMat[2] = a20 * b00 + a21 * b10 + a22 * b20 + a23 * b30; resultMat[3] = a30 * b00 + a31 * b10 + a32 * b20 + a33 * b30; resultMat[4] = a00 * b01 + a01 * b11 + a02 * b21 + a03 * b31; resultMat[5] = a10 * b01 + a11 * b11 + a12 * b21 + a13 * b31; resultMat[6] = a20 * b01 + a21 * b11 + a22 * b21 + a23 * b31; resultMat[7] = a30 * b01 + a31 * b11 + a32 * b21 + a33 * b31; resultMat[8] = a00 * b02 + a01 * b12 + a02 * b22 + a03 * b32; resultMat[9] = a10 * b02 + a11 * b12 + a12 * b22 + a13 * b32; resultMat[10] = a20 * b02 + a21 * b12 + a22 * b22 + a23 * b32; resultMat[11] = a30 * b02 + a31 * b12 + a32 * b22 + a33 * b32; resultMat[12] = a00 * b03 + a01 * b13 + a02 * b23 + a03 * b33; resultMat[13] = a10 * b03 + a11 * b13 + a12 * b23 + a13 * b33; resultMat[14] = a20 * b03 + a21 * b13 + a22 * b23 + a23 * b33; resultMat[15] = a30 * b03 + a31 * b13 + a32 * b23 + a33 * b33; return resultMat }; goog.vec.Mat4.transpose = function(mat, resultMat) { if(resultMat == mat) { var a10 = mat[1], a20 = mat[2], a30 = mat[3]; var a21 = mat[6], a31 = mat[7]; var a32 = mat[11]; resultMat[1] = mat[4]; resultMat[2] = mat[8]; resultMat[3] = mat[12]; resultMat[4] = a10; resultMat[6] = mat[9]; resultMat[7] = mat[13]; resultMat[8] = a20; resultMat[9] = a21; resultMat[11] = mat[14]; resultMat[12] = a30; resultMat[13] = a31; resultMat[14] = a32 }else { resultMat[0] = mat[0]; resultMat[1] = mat[4]; resultMat[2] = mat[8]; resultMat[3] = mat[12]; resultMat[4] = mat[1]; resultMat[5] = mat[5]; resultMat[6] = mat[9]; resultMat[7] = mat[13]; resultMat[8] = mat[2]; resultMat[9] = mat[6]; resultMat[10] = mat[10]; resultMat[11] = mat[14]; resultMat[12] = mat[3]; resultMat[13] = mat[7]; resultMat[14] = mat[11]; resultMat[15] = mat[15] } return resultMat }; goog.vec.Mat4.determinant = function(mat) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var m03 = mat[12], m13 = mat[13], m23 = mat[14], m33 = mat[15]; var a0 = m00 * m11 - m10 * m01; var a1 = m00 * m21 - m20 * m01; var a2 = m00 * m31 - m30 * m01; var a3 = m10 * m21 - m20 * m11; var a4 = m10 * m31 - m30 * m11; var a5 = m20 * m31 - m30 * m21; var b0 = m02 * m13 - m12 * m03; var b1 = m02 * m23 - m22 * m03; var b2 = m02 * m33 - m32 * m03; var b3 = m12 * m23 - m22 * m13; var b4 = m12 * m33 - m32 * m13; var b5 = m22 * m33 - m32 * m23; return a0 * b5 - a1 * b4 + a2 * b3 + a3 * b2 - a4 * b1 + a5 * b0 }; goog.vec.Mat4.invert = function(mat, resultMat) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var m03 = mat[12], m13 = mat[13], m23 = mat[14], m33 = mat[15]; var a0 = m00 * m11 - m10 * m01; var a1 = m00 * m21 - m20 * m01; var a2 = m00 * m31 - m30 * m01; var a3 = m10 * m21 - m20 * m11; var a4 = m10 * m31 - m30 * m11; var a5 = m20 * m31 - m30 * m21; var b0 = m02 * m13 - m12 * m03; var b1 = m02 * m23 - m22 * m03; var b2 = m02 * m33 - m32 * m03; var b3 = m12 * m23 - m22 * m13; var b4 = m12 * m33 - m32 * m13; var b5 = m22 * m33 - m32 * m23; var det = a0 * b5 - a1 * b4 + a2 * b3 + a3 * b2 - a4 * b1 + a5 * b0; if(det == 0) { return false } var idet = 1 / det; resultMat[0] = (m11 * b5 - m21 * b4 + m31 * b3) * idet; resultMat[1] = (-m10 * b5 + m20 * b4 - m30 * b3) * idet; resultMat[2] = (m13 * a5 - m23 * a4 + m33 * a3) * idet; resultMat[3] = (-m12 * a5 + m22 * a4 - m32 * a3) * idet; resultMat[4] = (-m01 * b5 + m21 * b2 - m31 * b1) * idet; resultMat[5] = (m00 * b5 - m20 * b2 + m30 * b1) * idet; resultMat[6] = (-m03 * a5 + m23 * a2 - m33 * a1) * idet; resultMat[7] = (m02 * a5 - m22 * a2 + m32 * a1) * idet; resultMat[8] = (m01 * b4 - m11 * b2 + m31 * b0) * idet; resultMat[9] = (-m00 * b4 + m10 * b2 - m30 * b0) * idet; resultMat[10] = (m03 * a4 - m13 * a2 + m33 * a0) * idet; resultMat[11] = (-m02 * a4 + m12 * a2 - m32 * a0) * idet; resultMat[12] = (-m01 * b3 + m11 * b1 - m21 * b0) * idet; resultMat[13] = (m00 * b3 - m10 * b1 + m20 * b0) * idet; resultMat[14] = (-m03 * a3 + m13 * a1 - m23 * a0) * idet; resultMat[15] = (m02 * a3 - m12 * a1 + m22 * a0) * idet; return true }; goog.vec.Mat4.equals = function(mat0, mat1) { return mat0.length == mat1.length && mat0[0] == mat1[0] && mat0[1] == mat1[1] && mat0[2] == mat1[2] && mat0[3] == mat1[3] && mat0[4] == mat1[4] && mat0[5] == mat1[5] && mat0[6] == mat1[6] && mat0[7] == mat1[7] && mat0[8] == mat1[8] && mat0[9] == mat1[9] && mat0[10] == mat1[10] && mat0[11] == mat1[11] && mat0[12] == mat1[12] && mat0[13] == mat1[13] && mat0[14] == mat1[14] && mat0[15] == mat1[15] }; goog.vec.Mat4.multVec3 = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2]; resultVec[0] = x * mat[0] + y * mat[4] + z * mat[8] + mat[12]; resultVec[1] = x * mat[1] + y * mat[5] + z * mat[9] + mat[13]; resultVec[2] = x * mat[2] + y * mat[6] + z * mat[10] + mat[14]; return resultVec }; goog.vec.Mat4.multVec3NoTranslate = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2]; resultVec[0] = x * mat[0] + y * mat[4] + z * mat[8]; resultVec[1] = x * mat[1] + y * mat[5] + z * mat[9]; resultVec[2] = x * mat[2] + y * mat[6] + z * mat[10]; return resultVec }; goog.vec.Mat4.multVec3Projective = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2]; var invw = 1 / (x * mat[3] + y * mat[7] + z * mat[11] + mat[15]); resultVec[0] = (x * mat[0] + y * mat[4] + z * mat[8] + mat[12]) * invw; resultVec[1] = (x * mat[1] + y * mat[5] + z * mat[9] + mat[13]) * invw; resultVec[2] = (x * mat[2] + y * mat[6] + z * mat[10] + mat[14]) * invw; return resultVec }; goog.vec.Mat4.multVec4 = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; resultVec[0] = x * mat[0] + y * mat[4] + z * mat[8] + w * mat[12]; resultVec[1] = x * mat[1] + y * mat[5] + z * mat[9] + w * mat[13]; resultVec[2] = x * mat[2] + y * mat[6] + z * mat[10] + w * mat[14]; resultVec[3] = x * mat[3] + y * mat[7] + z * mat[11] + w * mat[15]; return resultVec }; goog.vec.Mat4.makeTranslate = function(mat, x, y, z) { goog.vec.Mat4.makeIdentity(mat); return goog.vec.Mat4.setColumnValues(mat, 3, x, y, z, 1) }; goog.vec.Mat4.makeScale = function(mat, x, y, z) { goog.vec.Mat4.makeIdentity(mat); return goog.vec.Mat4.setDiagonalValues(mat, x, y, z, 1) }; goog.vec.Mat4.makeRotate = function(mat, angle, ax, ay, az) { var c = Math.cos(angle); var d = 1 - c; var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, ax * ax * d + c, ax * ay * d + az * s, ax * az * d - ay * s, 0, ax * ay * d - az * s, ay * ay * d + c, ay * az * d + ax * s, 0, ax * az * d + ay * s, ay * az * d - ax * s, az * az * d + c, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeRotateX = function(mat, angle) { var c = Math.cos(angle); var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, 1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeRotateY = function(mat, angle) { var c = Math.cos(angle); var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeRotateZ = function(mat, angle) { var c = Math.cos(angle); var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeFrustum = function(mat, left, right, bottom, top, near, far) { var x = 2 * near / (right - left); var y = 2 * near / (top - bottom); var a = (right + left) / (right - left); var b = (top + bottom) / (top - bottom); var c = -(far + near) / (far - near); var d = -(2 * far * near) / (far - near); return goog.vec.Mat4.setFromValues(mat, x, 0, 0, 0, 0, y, 0, 0, a, b, c, -1, 0, 0, d, 0) }; goog.vec.Mat4.makePerspective = function(mat, fovy, aspect, near, far) { var angle = fovy / 2; var dz = far - near; var sinAngle = Math.sin(angle); if(dz == 0 || sinAngle == 0 || aspect == 0) { return mat } var cot = Math.cos(angle) / sinAngle; return goog.vec.Mat4.setFromValues(mat, cot / aspect, 0, 0, 0, 0, cot, 0, 0, 0, 0, -(far + near) / dz, -1, 0, 0, -(2 * near * far) / dz, 0) }; goog.vec.Mat4.makeOrtho = function(mat, left, right, bottom, top, near, far) { var x = 2 / (right - left); var y = 2 / (top - bottom); var z = -2 / (far - near); var a = -(right + left) / (right - left); var b = -(top + bottom) / (top - bottom); var c = -(far + near) / (far - near); return goog.vec.Mat4.setFromValues(mat, x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, a, b, c, 1) }; goog.vec.Mat4.makeLookAt = function(mat, eyePt, centerPt, worldUpVec) { var fwdVec = goog.vec.Mat4.tmpVec4_[0]; goog.vec.Vec3.subtract(centerPt, eyePt, fwdVec); goog.vec.Vec3.normalize(fwdVec, fwdVec); fwdVec[3] = 0; var sideVec = goog.vec.Mat4.tmpVec4_[1]; goog.vec.Vec3.cross(fwdVec, worldUpVec, sideVec); goog.vec.Vec3.normalize(sideVec, sideVec); sideVec[3] = 0; var upVec = goog.vec.Mat4.tmpVec4_[2]; goog.vec.Vec3.cross(sideVec, fwdVec, upVec); goog.vec.Vec3.normalize(upVec, upVec); upVec[3] = 0; goog.vec.Vec3.negate(fwdVec, fwdVec); goog.vec.Mat4.setRow(mat, 0, sideVec); goog.vec.Mat4.setRow(mat, 1, upVec); goog.vec.Mat4.setRow(mat, 2, fwdVec); goog.vec.Mat4.setRowValues(mat, 3, 0, 0, 0, 1); goog.vec.Mat4.translate(mat, -eyePt[0], -eyePt[1], -eyePt[2]); return mat }; goog.vec.Mat4.toLookAt = function(mat, eyePt, fwdVec, worldUpVec) { var matInverse = goog.vec.Mat4.tmpMat4_[0]; if(!goog.vec.Mat4.invert(mat, matInverse)) { return false } if(eyePt) { eyePt[0] = matInverse[12]; eyePt[1] = matInverse[13]; eyePt[2] = matInverse[14] } if(fwdVec || worldUpVec) { if(!fwdVec) { fwdVec = goog.vec.Mat4.tmpVec3_[0] } fwdVec[0] = -mat[2]; fwdVec[1] = -mat[6]; fwdVec[2] = -mat[10]; goog.vec.Vec3.normalize(fwdVec, fwdVec) } if(worldUpVec) { var side = goog.vec.Mat4.tmpVec3_[1]; side[0] = mat[0]; side[1] = mat[4]; side[2] = mat[8]; goog.vec.Vec3.cross(side, fwdVec, worldUpVec); goog.vec.Vec3.normalize(worldUpVec, worldUpVec) } return true }; goog.vec.Mat4.makeEulerZXZ = function(mat, theta1, theta2, theta3) { var c1 = Math.cos(theta1); var s1 = Math.sin(theta1); var c2 = Math.cos(theta2); var s2 = Math.sin(theta2); var c3 = Math.cos(theta3); var s3 = Math.sin(theta3); mat[0] = c1 * c3 - c2 * s1 * s3; mat[1] = c2 * c1 * s3 + c3 * s1; mat[2] = s3 * s2; mat[3] = 0; mat[4] = -c1 * s3 - c3 * c2 * s1; mat[5] = c1 * c2 * c3 - s1 * s3; mat[6] = c3 * s2; mat[7] = 0; mat[8] = s2 * s1; mat[9] = -c1 * s2; mat[10] = c2; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 1; return mat }; goog.vec.Mat4.toEulerZXZ = function(mat, euler, opt_theta2IsNegative) { var sinTheta2 = Math.sqrt(mat[2] * mat[2] + mat[6] * mat[6]); var signTheta2 = opt_theta2IsNegative ? -1 : 1; if(sinTheta2 > goog.vec.EPSILON) { euler[2] = Math.atan2(mat[2] * signTheta2, mat[6] * signTheta2); euler[1] = Math.atan2(sinTheta2 * signTheta2, mat[10]); euler[0] = Math.atan2(mat[8] * signTheta2, -mat[9] * signTheta2) }else { euler[0] = 0; euler[1] = Math.atan2(sinTheta2 * signTheta2, mat[10]); euler[2] = Math.atan2(mat[1], mat[0]) } euler[0] = (euler[0] + Math.PI * 2) % (Math.PI * 2); euler[2] = (euler[2] + Math.PI * 2) % (Math.PI * 2); euler[1] = (euler[1] * signTheta2 + Math.PI * 2) % (Math.PI * 2) * signTheta2; return euler }; goog.vec.Mat4.translate = function(mat, x, y, z) { return goog.vec.Mat4.setColumnValues(mat, 3, mat[0] * x + mat[4] * y + mat[8] * z + mat[12], mat[1] * x + mat[5] * y + mat[9] * z + mat[13], mat[2] * x + mat[6] * y + mat[10] * z + mat[14], mat[3] * x + mat[7] * y + mat[11] * z + mat[15]) }; goog.vec.Mat4.scale = function(mat, x, y, z) { return goog.vec.Mat4.setFromValues(mat, mat[0] * x, mat[1] * x, mat[2] * x, mat[3] * x, mat[4] * y, mat[5] * y, mat[6] * y, mat[7] * y, mat[8] * z, mat[9] * z, mat[10] * z, mat[11] * z, mat[12], mat[13], mat[14], mat[15]) }; goog.vec.Mat4.rotate = function(mat, angle, x, y, z) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var m03 = mat[12], m13 = mat[13], m23 = mat[14], m33 = mat[15]; var cosAngle = Math.cos(angle); var sinAngle = Math.sin(angle); var diffCosAngle = 1 - cosAngle; var r00 = x * x * diffCosAngle + cosAngle; var r10 = x * y * diffCosAngle + z * sinAngle; var r20 = x * z * diffCosAngle - y * sinAngle; var r01 = x * y * diffCosAngle - z * sinAngle; var r11 = y * y * diffCosAngle + cosAngle; var r21 = y * z * diffCosAngle + x * sinAngle; var r02 = x * z * diffCosAngle + y * sinAngle; var r12 = y * z * diffCosAngle - x * sinAngle; var r22 = z * z * diffCosAngle + cosAngle; return goog.vec.Mat4.setFromValues(mat, m00 * r00 + m01 * r10 + m02 * r20, m10 * r00 + m11 * r10 + m12 * r20, m20 * r00 + m21 * r10 + m22 * r20, m30 * r00 + m31 * r10 + m32 * r20, m00 * r01 + m01 * r11 + m02 * r21, m10 * r01 + m11 * r11 + m12 * r21, m20 * r01 + m21 * r11 + m22 * r21, m30 * r01 + m31 * r11 + m32 * r21, m00 * r02 + m01 * r12 + m02 * r22, m10 * r02 + m11 * r12 + m12 * r22, m20 * r02 + m21 * r12 + m22 * r22, m30 * r02 + m31 * r12 + m32 * r22, m03, m13, m23, m33) }; goog.vec.Mat4.rotateX = function(mat, angle) { var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var c = Math.cos(angle); var s = Math.sin(angle); mat[4] = m01 * c + m02 * s; mat[5] = m11 * c + m12 * s; mat[6] = m21 * c + m22 * s; mat[7] = m31 * c + m32 * s; mat[8] = m01 * -s + m02 * c; mat[9] = m11 * -s + m12 * c; mat[10] = m21 * -s + m22 * c; mat[11] = m31 * -s + m32 * c; return mat }; goog.vec.Mat4.rotateY = function(mat, angle) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var c = Math.cos(angle); var s = Math.sin(angle); mat[0] = m00 * c + m02 * -s; mat[1] = m10 * c + m12 * -s; mat[2] = m20 * c + m22 * -s; mat[3] = m30 * c + m32 * -s; mat[8] = m00 * s + m02 * c; mat[9] = m10 * s + m12 * c; mat[10] = m20 * s + m22 * c; mat[11] = m30 * s + m32 * c; return mat }; goog.vec.Mat4.rotateZ = function(mat, angle) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var c = Math.cos(angle); var s = Math.sin(angle); mat[0] = m00 * c + m01 * s; mat[1] = m10 * c + m11 * s; mat[2] = m20 * c + m21 * s; mat[3] = m30 * c + m31 * s; mat[4] = m00 * -s + m01 * c; mat[5] = m10 * -s + m11 * c; mat[6] = m20 * -s + m21 * c; mat[7] = m30 * -s + m31 * c; return mat }; goog.vec.Mat4.getTranslation = function(mat, translation) { translation[0] = mat[12]; translation[1] = mat[13]; translation[2] = mat[14]; return translation }; goog.vec.Mat4.tmpVec3_ = [goog.vec.Vec3.createFloat64(), goog.vec.Vec3.createFloat64()]; goog.vec.Mat4.tmpVec4_ = [goog.vec.Vec4.createFloat64(), goog.vec.Vec4.createFloat64(), goog.vec.Vec4.createFloat64()]; goog.vec.Mat4.tmpMat4_ = [goog.vec.Mat4.createFloat64()]; goog.provide("ol.Tile"); goog.provide("ol.TileState"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("ol.TileCoord"); ol.TileState = {IDLE:0, LOADING:1, LOADED:2, ERROR:3, EMPTY:4}; ol.Tile = function(tileCoord, state) { goog.base(this); this.tileCoord = tileCoord; this.state = state }; goog.inherits(ol.Tile, goog.events.EventTarget); ol.Tile.prototype.dispatchChangeEvent = function() { this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.Tile.prototype.getImage = goog.abstractMethod; ol.Tile.prototype.getKey = function() { return goog.getUid(this).toString() }; ol.Tile.prototype.getState = function() { return this.state }; ol.Tile.prototype.load = goog.abstractMethod; goog.provide("ol.structs.PriorityQueue"); goog.require("goog.asserts"); goog.require("goog.object"); ol.structs.PriorityQueue = function(priorityFunction, keyFunction) { this.priorityFunction_ = priorityFunction; this.keyFunction_ = keyFunction; this.elements_ = []; this.priorities_ = []; this.queuedElements_ = {} }; ol.structs.PriorityQueue.DROP = Infinity; ol.structs.PriorityQueue.prototype.assertValid = function() { var elements = this.elements_; var priorities = this.priorities_; var n = elements.length; goog.asserts.assert(priorities.length == n); var i, priority; for(i = 0;i < (n >> 1) - 1;++i) { priority = priorities[i]; goog.asserts.assert(priority <= priorities[this.getLeftChildIndex_(i)]); goog.asserts.assert(priority <= priorities[this.getRightChildIndex_(i)]) } }; ol.structs.PriorityQueue.prototype.clear = function() { this.elements_.length = 0; this.priorities_.length = 0; goog.object.clear(this.queuedElements_) }; ol.structs.PriorityQueue.prototype.dequeue = function() { var elements = this.elements_; goog.asserts.assert(elements.length > 0); var priorities = this.priorities_; var element = elements[0]; if(elements.length == 1) { elements.length = 0; priorities.length = 0 }else { elements[0] = elements.pop(); priorities[0] = priorities.pop(); this.siftUp_(0) } var elementKey = this.keyFunction_(element); goog.asserts.assert(elementKey in this.queuedElements_); delete this.queuedElements_[elementKey]; return element }; ol.structs.PriorityQueue.prototype.enqueue = function(element) { goog.asserts.assert(!(this.keyFunction_(element) in this.queuedElements_)); var priority = this.priorityFunction_(element); if(priority != ol.structs.PriorityQueue.DROP) { this.elements_.push(element); this.priorities_.push(priority); this.queuedElements_[this.keyFunction_(element)] = true; this.siftDown_(0, this.elements_.length - 1) } }; ol.structs.PriorityQueue.prototype.getCount = function() { return this.elements_.length }; ol.structs.PriorityQueue.prototype.getLeftChildIndex_ = function(index) { return index * 2 + 1 }; ol.structs.PriorityQueue.prototype.getRightChildIndex_ = function(index) { return index * 2 + 2 }; ol.structs.PriorityQueue.prototype.getParentIndex_ = function(index) { return index - 1 >> 1 }; ol.structs.PriorityQueue.prototype.heapify_ = function() { var i; for(i = (this.elements_.length >> 1) - 1;i >= 0;i--) { this.siftUp_(i) } }; ol.structs.PriorityQueue.prototype.isEmpty = function() { return this.elements_.length === 0 }; ol.structs.PriorityQueue.prototype.isKeyQueued = function(key) { return key in this.queuedElements_ }; ol.structs.PriorityQueue.prototype.isQueued = function(element) { return this.isKeyQueued(this.keyFunction_(element)) }; ol.structs.PriorityQueue.prototype.siftUp_ = function(index) { var elements = this.elements_; var priorities = this.priorities_; var count = elements.length; var element = elements[index]; var priority = priorities[index]; var startIndex = index; while(index < count >> 1) { var lIndex = this.getLeftChildIndex_(index); var rIndex = this.getRightChildIndex_(index); var smallerChildIndex = rIndex < count && priorities[rIndex] < priorities[lIndex] ? rIndex : lIndex; elements[index] = elements[smallerChildIndex]; priorities[index] = priorities[smallerChildIndex]; index = smallerChildIndex } elements[index] = element; priorities[index] = priority; this.siftDown_(startIndex, index) }; ol.structs.PriorityQueue.prototype.siftDown_ = function(startIndex, index) { var elements = this.elements_; var priorities = this.priorities_; var element = elements[index]; var priority = priorities[index]; while(index > startIndex) { var parentIndex = this.getParentIndex_(index); if(priorities[parentIndex] > priority) { elements[index] = elements[parentIndex]; priorities[index] = priorities[parentIndex]; index = parentIndex }else { break } } elements[index] = element; priorities[index] = priority }; ol.structs.PriorityQueue.prototype.reprioritize = function() { var priorityFunction = this.priorityFunction_; var elements = this.elements_; var priorities = this.priorities_; var index = 0; var n = elements.length; var element, i, priority; for(i = 0;i < n;++i) { element = elements[i]; priority = priorityFunction(element); if(priority == ol.structs.PriorityQueue.DROP) { delete this.queuedElements_[this.keyFunction_(element)] }else { priorities[index] = priority; elements[index++] = element } } elements.length = index; priorities.length = index; this.heapify_() }; goog.provide("ol.TilePriorityFunction"); goog.provide("ol.TileQueue"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.Coordinate"); goog.require("ol.Tile"); goog.require("ol.structs.PriorityQueue"); ol.TilePriorityFunction; ol.TileQueue = function(tilePriorityFunction, tileChangeCallback) { goog.base(this, function(element) { return tilePriorityFunction.apply(null, element) }, function(element) { return(element[0]).getKey() }); this.tileChangeCallback_ = tileChangeCallback; this.tilesLoading_ = 0 }; goog.inherits(ol.TileQueue, ol.structs.PriorityQueue); ol.TileQueue.prototype.getTilesLoading = function() { return this.tilesLoading_ }; ol.TileQueue.prototype.handleTileChange = function() { --this.tilesLoading_; this.tileChangeCallback_() }; ol.TileQueue.prototype.loadMoreTiles = function(maxTotalLoading, maxNewLoads) { var newLoads = Math.min(maxTotalLoading - this.getTilesLoading(), maxNewLoads, this.getCount()); var i, tile; for(i = 0;i < newLoads;++i) { tile = (this.dequeue()[0]); goog.events.listenOnce(tile, goog.events.EventType.CHANGE, this.handleTileChange, false, this); tile.load() } this.tilesLoading_ += newLoads }; /* Latitude/longitude spherical geodesy formulae taken from http://www.movable-type.co.uk/scripts/latlong.html Licenced under CC-BY-3.0. */ goog.provide("ol.Sphere"); goog.require("goog.math"); ol.Sphere = function(radius) { this.radius = radius }; ol.Sphere.prototype.cosineDistance = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); return this.radius * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(deltaLon)) }; ol.Sphere.prototype.crossTrackDistance = function(c1, c2, c3) { var d13 = this.cosineDistance(c1, c2); var theta12 = goog.math.toRadians(this.initialBearing(c1, c2)); var theta13 = goog.math.toRadians(this.initialBearing(c1, c3)); return this.radius * Math.asin(Math.sin(d13 / this.radius) * Math.sin(theta13 - theta12)) }; ol.Sphere.prototype.equirectangularDistance = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var x = deltaLon * Math.cos((lat1 + lat2) / 2); var y = lat2 - lat1; return this.radius * Math.sqrt(x * x + y * y) }; ol.Sphere.prototype.finalBearing = function(c1, c2) { return(this.initialBearing(c2, c1) + 180) % 360 }; ol.Sphere.prototype.haversineDistance = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLatBy2 = (lat2 - lat1) / 2; var deltaLonBy2 = goog.math.toRadians(c2[0] - c1[0]) / 2; var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) + Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) * Math.cos(lat1) * Math.cos(lat2); return 2 * this.radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) }; ol.Sphere.prototype.initialBearing = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var y = Math.sin(deltaLon) * Math.cos(lat2); var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(deltaLon); return goog.math.toDegrees(Math.atan2(y, x)) }; ol.Sphere.prototype.maximumLatitude = function(bearing, latitude) { return Math.cos(Math.abs(Math.sin(goog.math.toRadians(bearing)) * Math.cos(goog.math.toRadians(latitude)))) }; ol.Sphere.prototype.midpoint = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var lon1 = goog.math.toRadians(c1[0]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var Bx = Math.cos(lat2) * Math.cos(deltaLon); var By = Math.cos(lat2) * Math.sin(deltaLon); var cosLat1PlusBx = Math.cos(lat1) + Bx; var lat = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt(cosLat1PlusBx * cosLat1PlusBx + By * By)); var lon = lon1 + Math.atan2(By, cosLat1PlusBx); return[goog.math.toDegrees(lon), goog.math.toDegrees(lat)] }; ol.Sphere.prototype.offset = function(c1, distance, bearing) { var lat1 = goog.math.toRadians(c1[1]); var lon1 = goog.math.toRadians(c1[0]); var dByR = distance / this.radius; var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) + Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing)); var lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat)); return[goog.math.toDegrees(lon), goog.math.toDegrees(lat)] }; goog.provide("ol.sphere.NORMAL"); goog.require("ol.Sphere"); ol.sphere.NORMAL = new ol.Sphere(6370997); goog.provide("ol.Projection"); goog.provide("ol.ProjectionLike"); goog.provide("ol.ProjectionUnits"); goog.provide("ol.proj"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.Extent"); goog.require("ol.TransformFunction"); goog.require("ol.sphere.NORMAL"); ol.ENABLE_PROJ4JS = true; ol.HAVE_PROJ4JS = ol.ENABLE_PROJ4JS && typeof Proj4js == "object"; ol.ProjectionLike; ol.ProjectionUnits = {DEGREES:"degrees", FEET:"ft", METERS:"m"}; ol.METERS_PER_UNIT = {}; ol.METERS_PER_UNIT[ol.ProjectionUnits.DEGREES] = 2 * Math.PI * ol.sphere.NORMAL.radius / 360; ol.METERS_PER_UNIT[ol.ProjectionUnits.FEET] = 0.3048; ol.METERS_PER_UNIT[ol.ProjectionUnits.METERS] = 1; ol.Projection = function(options) { this.code_ = options.code; this.units_ = options.units; this.extent_ = goog.isDef(options.extent) ? options.extent : null; this.axisOrientation_ = goog.isDef(options.axisOrientation) ? options.axisOrientation : "enu"; this.global_ = goog.isDef(options.global) ? options.global : false; this.defaultTileGrid_ = null }; ol.Projection.prototype.getCode = function() { return this.code_ }; ol.Projection.prototype.getExtent = function() { return this.extent_ }; ol.Projection.prototype.getPointResolution = goog.abstractMethod; ol.Projection.prototype.getUnits = function() { return this.units_ }; ol.Projection.prototype.getMetersPerUnit = function() { return ol.METERS_PER_UNIT[this.units_] }; ol.Projection.prototype.getAxisOrientation = function() { return this.axisOrientation_ }; ol.Projection.prototype.isGlobal = function() { return this.global_ }; ol.Projection.prototype.getDefaultTileGrid = function() { return this.defaultTileGrid_ }; ol.Projection.prototype.setDefaultTileGrid = function(tileGrid) { this.defaultTileGrid_ = tileGrid }; ol.Proj4jsProjection_ = function(proj4jsProj, options) { var units = (proj4jsProj.units); var config = ({units:units, axisOrientation:proj4jsProj.axis}); goog.object.extend(config, options); goog.base(this, config); this.proj4jsProj_ = proj4jsProj; this.toEPSG4326_ = null }; goog.inherits(ol.Proj4jsProjection_, ol.Projection); ol.Proj4jsProjection_.prototype.getMetersPerUnit = function() { var metersPerUnit = this.proj4jsProj_.to_meter; if(!goog.isDef(metersPerUnit)) { metersPerUnit = ol.METERS_PER_UNIT[this.units_] } return metersPerUnit }; ol.Proj4jsProjection_.prototype.getPointResolution = function(resolution, point) { if(this.getUnits() == ol.ProjectionUnits.DEGREES) { return resolution }else { if(goog.isNull(this.toEPSG4326_)) { this.toEPSG4326_ = ol.proj.getTransformFromProjections(this, ol.proj.getProj4jsProjectionFromCode_({code:"EPSG:4326", extent:null})) } var vertices = [point[0] - resolution / 2, point[1], point[0] + resolution / 2, point[1], point[0], point[1] - resolution / 2, point[0], point[1] + resolution / 2]; vertices = this.toEPSG4326_(vertices, vertices, 2); var width = ol.sphere.NORMAL.haversineDistance(vertices.slice(0, 2), vertices.slice(2, 4)); var height = ol.sphere.NORMAL.haversineDistance(vertices.slice(4, 6), vertices.slice(6, 8)); var pointResolution = (width + height) / 2; if(this.getUnits() == ol.ProjectionUnits.FEET) { pointResolution /= 0.3048 } return pointResolution } }; ol.Proj4jsProjection_.prototype.getProj4jsProj = function() { return this.proj4jsProj_ }; ol.proj.proj4jsProjections_ = {}; ol.proj.projections_ = {}; ol.proj.transforms_ = {}; ol.proj.addEquivalentProjections = function(projections) { ol.proj.addProjections(projections); goog.array.forEach(projections, function(source) { goog.array.forEach(projections, function(destination) { if(source !== destination) { ol.proj.addTransform(source, destination, ol.proj.cloneTransform) } }) }) }; ol.proj.addEquivalentTransforms = function(projections1, projections2, forwardTransform, inverseTransform) { goog.array.forEach(projections1, function(projection1) { goog.array.forEach(projections2, function(projection2) { ol.proj.addTransform(projection1, projection2, forwardTransform); ol.proj.addTransform(projection2, projection1, inverseTransform) }) }) }; ol.proj.addProj4jsProjection_ = function(proj4jsProjection) { var proj4jsProjections = ol.proj.proj4jsProjections_; var code = proj4jsProjection.getCode(); goog.asserts.assert(!goog.object.containsKey(proj4jsProjections, code)); proj4jsProjections[code] = proj4jsProjection }; ol.proj.addProjection = function(projection) { var projections = ol.proj.projections_; var code = projection.getCode(); projections[code] = projection; ol.proj.addTransform(projection, projection, ol.proj.cloneTransform) }; ol.proj.addProjections = function(projections) { goog.array.forEach(projections, function(projection) { ol.proj.addProjection(projection) }) }; ol.proj.clearAllProjections = function() { if(ol.ENABLE_PROJ4JS) { ol.proj.proj4jsProjections_ = {} } ol.proj.projections_ = {}; ol.proj.transforms_ = {} }; ol.proj.createProjection = function(projection, defaultCode) { if(!goog.isDefAndNotNull(projection)) { return ol.proj.get(defaultCode) }else { if(goog.isString(projection)) { return ol.proj.get(projection) }else { goog.asserts.assertInstanceof(projection, ol.Projection); return projection } } }; ol.proj.addTransform = function(source, destination, transformFn) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); var transforms = ol.proj.transforms_; if(!goog.object.containsKey(transforms, sourceCode)) { transforms[sourceCode] = {} } transforms[sourceCode][destinationCode] = transformFn }; ol.proj.removeTransform = function(source, destination) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); var transforms = ol.proj.transforms_; goog.asserts.assert(sourceCode in transforms); goog.asserts.assert(destinationCode in transforms[sourceCode]); var transform = transforms[sourceCode][destinationCode]; delete transforms[sourceCode][destinationCode]; var keys = goog.object.getKeys(transforms[sourceCode]); if(keys.length === 0) { delete transforms[sourceCode] } return transform }; ol.proj.get = function(projectionLike) { var projection; if(projectionLike instanceof ol.Projection) { projection = projectionLike }else { if(goog.isString(projectionLike)) { var code = projectionLike; projection = ol.proj.projections_[code]; if(ol.HAVE_PROJ4JS && !goog.isDef(projection)) { projection = ol.proj.getProj4jsProjectionFromCode_({code:code, extent:null}) } if(!goog.isDef(projection)) { goog.asserts.assert(goog.isDef(projection)); projection = null } }else { projection = null } } return projection }; ol.proj.getProj4jsProjectionFromCode_ = function(options) { var code = options.code; var proj4jsProjections = ol.proj.proj4jsProjections_; var proj4jsProjection = proj4jsProjections[code]; if(!goog.isDef(proj4jsProjection)) { var proj4jsProj = new Proj4js.Proj(code); var srsCode = proj4jsProj.srsCode; proj4jsProjection = proj4jsProjections[srsCode]; if(!goog.isDef(proj4jsProjection)) { var config = (goog.object.clone(options)); config.code = srsCode; proj4jsProjection = new ol.Proj4jsProjection_(proj4jsProj, config); proj4jsProjections[srsCode] = proj4jsProjection } proj4jsProjections[code] = proj4jsProjection } return proj4jsProjection }; ol.proj.equivalent = function(projection1, projection2) { if(projection1 === projection2) { return true }else { if(projection1.getUnits() != projection2.getUnits()) { return false }else { var transformFn = ol.proj.getTransformFromProjections(projection1, projection2); return transformFn === ol.proj.cloneTransform } } }; ol.proj.getTransform = function(source, destination) { var sourceProjection = ol.proj.get(source); var destinationProjection = ol.proj.get(destination); return ol.proj.getTransformFromProjections(sourceProjection, destinationProjection) }; ol.proj.getTransformFromProjections = function(sourceProjection, destinationProjection) { var transforms = ol.proj.transforms_; var sourceCode = sourceProjection.getCode(); var destinationCode = destinationProjection.getCode(); var transform; if(goog.object.containsKey(transforms, sourceCode) && goog.object.containsKey(transforms[sourceCode], destinationCode)) { transform = transforms[sourceCode][destinationCode] } if(ol.HAVE_PROJ4JS && !goog.isDef(transform)) { var proj4jsSource; if(sourceProjection instanceof ol.Proj4jsProjection_) { proj4jsSource = sourceProjection }else { proj4jsSource = ol.proj.getProj4jsProjectionFromCode_({code:sourceCode, extent:null}) } var sourceProj4jsProj = proj4jsSource.getProj4jsProj(); var proj4jsDestination; if(destinationProjection instanceof ol.Proj4jsProjection_) { proj4jsDestination = destinationProjection }else { proj4jsDestination = ol.proj.getProj4jsProjectionFromCode_({code:destinationCode, extent:null}) } var destinationProj4jsProj = proj4jsDestination.getProj4jsProj(); transform = function(input, opt_output, opt_dimension) { var length = input.length, dimension = opt_dimension > 1 ? opt_dimension : 2, output = opt_output; if(!goog.isDef(output)) { if(dimension > 2) { output = input.slice() }else { output = new Array(length) } } goog.asserts.assert(output.length % dimension === 0); var proj4jsPoint; for(var i = 0;i < length;i += dimension) { proj4jsPoint = new Proj4js.Point(input[i], input[i + 1]); proj4jsPoint = Proj4js.transform(sourceProj4jsProj, destinationProj4jsProj, proj4jsPoint); output[i] = proj4jsPoint.x; output[i + 1] = proj4jsPoint.y } return output }; ol.proj.addTransform(sourceProjection, destinationProjection, transform) } if(!goog.isDef(transform)) { goog.asserts.assert(goog.isDef(transform)); transform = ol.proj.identityTransform } return transform }; ol.proj.identityTransform = function(input, opt_output, opt_dimension) { if(goog.isDef(opt_output) && input !== opt_output) { goog.asserts.fail("This should not be used internally."); for(var i = 0, ii = input.length;i < ii;++i) { opt_output[i] = input[i] } input = opt_output } return input }; ol.proj.cloneTransform = function(input, opt_output, opt_dimension) { var output; if(goog.isDef(opt_output)) { for(var i = 0, ii = input.length;i < ii;++i) { opt_output[i] = input[i] } output = opt_output }else { output = input.slice() } return output }; ol.proj.transform = function(point, source, destination) { var transformFn = ol.proj.getTransform(source, destination); return transformFn(point) }; ol.proj.transformWithProjections = function(point, sourceProjection, destinationProjection) { var transformFn = ol.proj.getTransformFromProjections(sourceProjection, destinationProjection); return transformFn(point) }; ol.proj.configureProj4jsProjection = function(options) { goog.asserts.assert(!goog.object.containsKey(ol.proj.proj4jsProjections_, options.code)); return ol.proj.getProj4jsProjectionFromCode_(options) }; goog.provide("ol.IView2D"); goog.provide("ol.View2DState"); goog.require("ol.Coordinate"); goog.require("ol.Projection"); ol.View2DState; ol.IView2D = function() { }; ol.IView2D.prototype.getCenter = function() { }; ol.IView2D.prototype.getProjection = function() { }; ol.IView2D.prototype.getResolution = function() { }; ol.IView2D.prototype.getRotation = function() { }; ol.IView2D.prototype.getView2DState = function() { }; goog.provide("ol.layer.Base"); goog.provide("ol.layer.LayerProperty"); goog.provide("ol.layer.LayerState"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.math"); goog.require("goog.object"); goog.require("ol.Object"); ol.layer.LayerProperty = {BRIGHTNESS:"brightness", CONTRAST:"contrast", HUE:"hue", OPACITY:"opacity", SATURATION:"saturation", VISIBLE:"visible"}; ol.layer.LayerState; ol.layer.Base = function(options) { goog.base(this); var values = goog.object.clone(options); values.brightness = goog.isDef(values.brightness) ? values.brightness : 0; values.contrast = goog.isDef(values.contrast) ? values.contrast : 1; values.hue = goog.isDef(values.hue) ? values.hue : 0; values.opacity = goog.isDef(values.opacity) ? values.opacity : 1; values.saturation = goog.isDef(values.saturation) ? values.saturation : 1; values.visible = goog.isDef(values.visible) ? values.visible : true; this.setValues(values); goog.events.listen(this, [ol.Object.getChangeEventType(ol.layer.LayerProperty.BRIGHTNESS), ol.Object.getChangeEventType(ol.layer.LayerProperty.CONTRAST), ol.Object.getChangeEventType(ol.layer.LayerProperty.HUE), ol.Object.getChangeEventType(ol.layer.LayerProperty.OPACITY), ol.Object.getChangeEventType(ol.layer.LayerProperty.SATURATION), goog.events.EventType.LOAD], this.handleLayerChange, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.layer.LayerProperty.VISIBLE), this.handleLayerVisibleChange, false, this) }; goog.inherits(ol.layer.Base, ol.Object); ol.layer.Base.prototype.dispatchChangeEvent = function() { this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.layer.Base.prototype.getBrightness = function() { return(this.get(ol.layer.LayerProperty.BRIGHTNESS)) }; goog.exportProperty(ol.layer.Base.prototype, "getBrightness", ol.layer.Base.prototype.getBrightness); ol.layer.Base.prototype.getContrast = function() { return(this.get(ol.layer.LayerProperty.CONTRAST)) }; goog.exportProperty(ol.layer.Base.prototype, "getContrast", ol.layer.Base.prototype.getContrast); ol.layer.Base.prototype.getHue = function() { return(this.get(ol.layer.LayerProperty.HUE)) }; goog.exportProperty(ol.layer.Base.prototype, "getHue", ol.layer.Base.prototype.getHue); ol.layer.Base.prototype.getLayerState = function() { var brightness = this.getBrightness(); var contrast = this.getContrast(); var hue = this.getHue(); var opacity = this.getOpacity(); var ready = this.isReady(); var saturation = this.getSaturation(); var visible = this.getVisible(); return{brightness:goog.isDef(brightness) ? goog.math.clamp(brightness, -1, 1) : 0, contrast:goog.isDef(contrast) ? Math.max(contrast, 0) : 1, hue:goog.isDef(hue) ? hue : 0, opacity:goog.isDef(opacity) ? goog.math.clamp(opacity, 0, 1) : 1, ready:ready, saturation:goog.isDef(saturation) ? Math.max(saturation, 0) : 1, visible:goog.isDef(visible) ? !!visible : true} }; ol.layer.Base.prototype.getLayersArray = goog.abstractMethod; ol.layer.Base.prototype.getLayerStatesArray = goog.abstractMethod; ol.layer.Base.prototype.getOpacity = function() { return(this.get(ol.layer.LayerProperty.OPACITY)) }; goog.exportProperty(ol.layer.Base.prototype, "getOpacity", ol.layer.Base.prototype.getOpacity); ol.layer.Base.prototype.getSaturation = function() { return(this.get(ol.layer.LayerProperty.SATURATION)) }; goog.exportProperty(ol.layer.Base.prototype, "getSaturation", ol.layer.Base.prototype.getSaturation); ol.layer.Base.prototype.getVisible = function() { return(this.get(ol.layer.LayerProperty.VISIBLE)) }; goog.exportProperty(ol.layer.Base.prototype, "getVisible", ol.layer.Base.prototype.getVisible); ol.layer.Base.prototype.handleLayerChange = function() { if(this.getVisible() && this.isReady()) { this.dispatchChangeEvent() } }; ol.layer.Base.prototype.handleLayerVisibleChange = function() { if(this.isReady()) { this.dispatchChangeEvent() } }; ol.layer.Base.prototype.isReady = goog.abstractMethod; ol.layer.Base.prototype.setBrightness = function(brightness) { this.set(ol.layer.LayerProperty.BRIGHTNESS, brightness) }; goog.exportProperty(ol.layer.Base.prototype, "setBrightness", ol.layer.Base.prototype.setBrightness); ol.layer.Base.prototype.setContrast = function(contrast) { this.set(ol.layer.LayerProperty.CONTRAST, contrast) }; goog.exportProperty(ol.layer.Base.prototype, "setContrast", ol.layer.Base.prototype.setContrast); ol.layer.Base.prototype.setHue = function(hue) { this.set(ol.layer.LayerProperty.HUE, hue) }; goog.exportProperty(ol.layer.Base.prototype, "setHue", ol.layer.Base.prototype.setHue); ol.layer.Base.prototype.setOpacity = function(opacity) { this.set(ol.layer.LayerProperty.OPACITY, opacity) }; goog.exportProperty(ol.layer.Base.prototype, "setOpacity", ol.layer.Base.prototype.setOpacity); ol.layer.Base.prototype.setSaturation = function(saturation) { this.set(ol.layer.LayerProperty.SATURATION, saturation) }; goog.exportProperty(ol.layer.Base.prototype, "setSaturation", ol.layer.Base.prototype.setSaturation); ol.layer.Base.prototype.setVisible = function(visible) { this.set(ol.layer.LayerProperty.VISIBLE, visible) }; goog.exportProperty(ol.layer.Base.prototype, "setVisible", ol.layer.Base.prototype.setVisible); goog.provide("goog.functions"); goog.functions.constant = function(retValue) { return function() { return retValue } }; goog.functions.FALSE = goog.functions.constant(false); goog.functions.TRUE = goog.functions.constant(true); goog.functions.NULL = goog.functions.constant(null); goog.functions.identity = function(opt_returnValue, var_args) { return opt_returnValue }; goog.functions.error = function(message) { return function() { throw Error(message); } }; goog.functions.fail = function(err) { return function() { throw err; } }; goog.functions.lock = function(f, opt_numArgs) { opt_numArgs = opt_numArgs || 0; return function() { return f.apply(this, Array.prototype.slice.call(arguments, 0, opt_numArgs)) } }; goog.functions.withReturnValue = function(f, retValue) { return goog.functions.sequence(f, goog.functions.constant(retValue)) }; goog.functions.compose = function(fn, var_args) { var functions = arguments; var length = functions.length; return function() { var result; if(length) { result = functions[length - 1].apply(this, arguments) } for(var i = length - 2;i >= 0;i--) { result = functions[i].call(this, result) } return result } }; goog.functions.sequence = function(var_args) { var functions = arguments; var length = functions.length; return function() { var result; for(var i = 0;i < length;i++) { result = functions[i].apply(this, arguments) } return result } }; goog.functions.and = function(var_args) { var functions = arguments; var length = functions.length; return function() { for(var i = 0;i < length;i++) { if(!functions[i].apply(this, arguments)) { return false } } return true } }; goog.functions.or = function(var_args) { var functions = arguments; var length = functions.length; return function() { for(var i = 0;i < length;i++) { if(functions[i].apply(this, arguments)) { return true } } return false } }; goog.functions.not = function(f) { return function() { return!f.apply(this, arguments) } }; goog.functions.create = function(constructor, var_args) { var temp = function() { }; temp.prototype = constructor.prototype; var obj = new temp; constructor.apply(obj, Array.prototype.slice.call(arguments, 1)); return obj }; goog.provide("ol.source.Source"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.functions"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.proj"); ol.source.Source = function(options) { goog.base(this); this.projection_ = ol.proj.get(options.projection); this.extent_ = goog.isDef(options.extent) ? options.extent : goog.isDef(options.projection) ? this.projection_.getExtent() : null; this.attributions_ = goog.isDef(options.attributions) ? options.attributions : null; this.logo_ = options.logo; this.revision_ = 0 }; goog.inherits(ol.source.Source, goog.events.EventTarget); ol.source.Source.prototype.dispatchChangeEvent = function() { ++this.revision_; this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.source.Source.prototype.dispatchLoadEvent = function() { ++this.revision_; this.dispatchEvent(goog.events.EventType.LOAD) }; ol.source.Source.prototype.getAttributions = function() { return this.attributions_ }; ol.source.Source.prototype.getExtent = function() { return this.extent_ }; ol.source.Source.prototype.getLogo = function() { return this.logo_ }; ol.source.Source.prototype.getProjection = function() { return this.projection_ }; ol.source.Source.prototype.getResolutions = goog.abstractMethod; ol.source.Source.prototype.getRevision = function() { return this.revision_ }; ol.source.Source.prototype.isReady = goog.functions.TRUE; ol.source.Source.prototype.setAttributions = function(attributions) { this.attributions_ = attributions }; ol.source.Source.prototype.setExtent = function(extent) { this.extent_ = extent }; ol.source.Source.prototype.setLogo = function(logo) { this.logo_ = logo }; ol.source.Source.prototype.setProjection = function(projection) { this.projection_ = projection }; goog.provide("ol.layer.Layer"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.layer.Base"); goog.require("ol.source.Source"); ol.layer.Layer = function(options) { var baseOptions = (goog.object.clone(options)); delete baseOptions.source; goog.base(this, baseOptions); this.selectionData_ = {featuresBySelectedFeatureUid:{}, layer:null, selectedFeaturesByFeatureUid:{}}; this.source_ = options.source; goog.events.listen(this.source_, goog.events.EventType.CHANGE, this.handleSourceChange_, false, this); if(!this.source_.isReady()) { goog.events.listenOnce(this.source_, goog.events.EventType.LOAD, this.handleSourceLoad_, false, this) } }; goog.inherits(ol.layer.Layer, ol.layer.Base); ol.layer.Layer.prototype.dispatchLoadEvent_ = function() { this.dispatchEvent(goog.events.EventType.LOAD) }; ol.layer.Layer.prototype.getLayersArray = function(opt_array) { var array = goog.isDef(opt_array) ? opt_array : []; array.push(this); return array }; ol.layer.Layer.prototype.getLayerStatesArray = function(opt_obj) { var obj = goog.isDef(opt_obj) ? opt_obj : {layers:[], layerStates:[]}; goog.asserts.assert(obj.layers.length === obj.layerStates.length); obj.layers.push(this); obj.layerStates.push(this.getLayerState()); return obj }; ol.layer.Layer.prototype.getSelectionData = function() { return this.selectionData_ }; ol.layer.Layer.prototype.getSource = function() { return this.source_ }; ol.layer.Layer.prototype.handleSourceChange_ = function() { this.dispatchChangeEvent() }; ol.layer.Layer.prototype.handleSourceLoad_ = function() { this.dispatchLoadEvent_() }; ol.layer.Layer.prototype.isReady = function() { return this.getSource().isReady() }; goog.provide("ol.FrameState"); goog.provide("ol.PostRenderFunction"); goog.provide("ol.PreRenderFunction"); goog.require("goog.vec.Mat4"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.Size"); goog.require("ol.TileQueue"); goog.require("ol.TileRange"); goog.require("ol.View2DState"); goog.require("ol.layer.Layer"); goog.require("ol.layer.LayerState"); ol.FrameState; ol.PostRenderFunction; ol.PreRenderFunction; goog.provide("ol.Geolocation"); goog.provide("ol.Geolocation.SUPPORTED"); goog.provide("ol.GeolocationProperty"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.math"); goog.require("ol.Coordinate"); goog.require("ol.Object"); goog.require("ol.Projection"); goog.require("ol.proj"); ol.GeolocationProperty = {ACCURACY:"accuracy", ALTITUDE:"altitude", ALTITUDE_ACCURACY:"altitudeAccuracy", HEADING:"heading", POSITION:"position", PROJECTION:"projection", SPEED:"speed", TRACKING:"tracking", TRACKING_OPTIONS:"trackingOptions"}; ol.Geolocation = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.position_ = null; this.transform_ = ol.proj.identityTransform; this.watchId_ = undefined; goog.events.listen(this, ol.Object.getChangeEventType(ol.GeolocationProperty.PROJECTION), this.handleProjectionChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.GeolocationProperty.TRACKING), this.handleTrackingChanged_, false, this); if(goog.isDef(options.projection)) { this.setProjection(ol.proj.get(options.projection)) } if(goog.isDef(options.trackingOptions)) { this.setTrackingOptions(options.trackingOptions) } this.setTracking(goog.isDef(options.tracking) ? options.tracking : false) }; goog.inherits(ol.Geolocation, ol.Object); ol.Geolocation.prototype.disposeInternal = function() { this.setTracking(false); goog.base(this, "disposeInternal") }; ol.Geolocation.prototype.handleProjectionChanged_ = function() { var projection = this.getProjection(); if(goog.isDefAndNotNull(projection)) { this.transform_ = ol.proj.getTransformFromProjections(ol.proj.get("EPSG:4326"), projection); if(!goog.isNull(this.position_)) { this.set(ol.GeolocationProperty.POSITION, this.transform_(this.position_)) } } }; ol.Geolocation.prototype.handleTrackingChanged_ = function() { if(ol.Geolocation.SUPPORTED) { var tracking = this.getTracking(); if(tracking && !goog.isDef(this.watchId_)) { this.watchId_ = goog.global.navigator.geolocation.watchPosition(goog.bind(this.positionChange_, this), goog.bind(this.positionError_, this), this.getTrackingOptions()) }else { if(!tracking && goog.isDef(this.watchId_)) { goog.global.navigator.geolocation.clearWatch(this.watchId_); this.watchId_ = undefined } } } }; ol.Geolocation.SUPPORTED = "geolocation" in goog.global.navigator; ol.Geolocation.prototype.positionChange_ = function(position) { var coords = position.coords; this.set(ol.GeolocationProperty.ACCURACY, coords.accuracy); this.set(ol.GeolocationProperty.ALTITUDE, goog.isNull(coords.altitude) ? undefined : coords.altitude); this.set(ol.GeolocationProperty.ALTITUDE_ACCURACY, goog.isNull(coords.altitudeAccuracy) ? undefined : coords.altitudeAccuracy); this.set(ol.GeolocationProperty.HEADING, goog.isNull(coords.heading) ? undefined : goog.math.toRadians(coords.heading)); if(goog.isNull(this.position_)) { this.position_ = [coords.longitude, coords.latitude] }else { this.position_[0] = coords.longitude; this.position_[1] = coords.latitude } this.set(ol.GeolocationProperty.POSITION, this.transform_(this.position_)); this.set(ol.GeolocationProperty.SPEED, goog.isNull(coords.speed) ? undefined : coords.speed) }; ol.Geolocation.prototype.positionError_ = function(error) { error.type = goog.events.EventType.ERROR; this.dispatchEvent(error) }; ol.Geolocation.prototype.getAccuracy = function() { return(this.get(ol.GeolocationProperty.ACCURACY)) }; goog.exportProperty(ol.Geolocation.prototype, "getAccuracy", ol.Geolocation.prototype.getAccuracy); ol.Geolocation.prototype.getAltitude = function() { return(this.get(ol.GeolocationProperty.ALTITUDE)) }; goog.exportProperty(ol.Geolocation.prototype, "getAltitude", ol.Geolocation.prototype.getAltitude); ol.Geolocation.prototype.getAltitudeAccuracy = function() { return(this.get(ol.GeolocationProperty.ALTITUDE_ACCURACY)) }; goog.exportProperty(ol.Geolocation.prototype, "getAltitudeAccuracy", ol.Geolocation.prototype.getAltitudeAccuracy); ol.Geolocation.prototype.getHeading = function() { return(this.get(ol.GeolocationProperty.HEADING)) }; goog.exportProperty(ol.Geolocation.prototype, "getHeading", ol.Geolocation.prototype.getHeading); ol.Geolocation.prototype.getPosition = function() { return(this.get(ol.GeolocationProperty.POSITION)) }; goog.exportProperty(ol.Geolocation.prototype, "getPosition", ol.Geolocation.prototype.getPosition); ol.Geolocation.prototype.getProjection = function() { return(this.get(ol.GeolocationProperty.PROJECTION)) }; goog.exportProperty(ol.Geolocation.prototype, "getProjection", ol.Geolocation.prototype.getProjection); ol.Geolocation.prototype.getSpeed = function() { return(this.get(ol.GeolocationProperty.SPEED)) }; goog.exportProperty(ol.Geolocation.prototype, "getSpeed", ol.Geolocation.prototype.getSpeed); ol.Geolocation.prototype.getTracking = function() { return(this.get(ol.GeolocationProperty.TRACKING)) }; goog.exportProperty(ol.Geolocation.prototype, "getTracking", ol.Geolocation.prototype.getTracking); ol.Geolocation.prototype.getTrackingOptions = function() { return(this.get(ol.GeolocationProperty.TRACKING_OPTIONS)) }; goog.exportProperty(ol.Geolocation.prototype, "getTrackingOptions", ol.Geolocation.prototype.getTrackingOptions); ol.Geolocation.prototype.setProjection = function(projection) { this.set(ol.GeolocationProperty.PROJECTION, projection) }; goog.exportProperty(ol.Geolocation.prototype, "setProjection", ol.Geolocation.prototype.setProjection); ol.Geolocation.prototype.setTracking = function(tracking) { this.set(ol.GeolocationProperty.TRACKING, tracking) }; goog.exportProperty(ol.Geolocation.prototype, "setTracking", ol.Geolocation.prototype.setTracking); ol.Geolocation.prototype.setTrackingOptions = function(options) { this.set(ol.GeolocationProperty.TRACKING_OPTIONS, options) }; goog.exportProperty(ol.Geolocation.prototype, "setTrackingOptions", ol.Geolocation.prototype.setTrackingOptions); goog.provide("ol.IView3D"); ol.IView3D = function() { }; goog.provide("ol.IView"); goog.require("ol.IView2D"); goog.require("ol.IView3D"); ol.IView = function() { }; ol.IView.prototype.getView2D = function() { }; ol.IView.prototype.getView3D = function() { }; goog.provide("ol.Image"); goog.provide("ol.ImageState"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.Attribution"); goog.require("ol.Extent"); ol.ImageState = {IDLE:0, LOADING:1, LOADED:2, ERROR:3}; ol.Image = function(extent, resolution, src, crossOrigin, attributions) { goog.base(this); this.attributions_ = attributions; this.extent_ = extent; this.src_ = src; this.resolution_ = resolution; this.image_ = new Image; if(!goog.isNull(crossOrigin)) { this.image_.crossOrigin = crossOrigin } this.imageByContext_ = {}; this.imageListenerKeys_ = null; this.state = ol.ImageState.IDLE }; goog.inherits(ol.Image, goog.events.EventTarget); ol.Image.prototype.dispatchChangeEvent = function() { this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.Image.prototype.getAttributions = function() { return this.attributions_ }; ol.Image.prototype.getExtent = function() { return this.extent_ }; ol.Image.prototype.getImageElement = function(opt_context) { if(goog.isDef(opt_context)) { var image; var key = goog.getUid(opt_context); if(key in this.imageByContext_) { return this.imageByContext_[key] }else { if(goog.object.isEmpty(this.imageByContext_)) { image = this.image_ }else { image = (this.image_.cloneNode(false)) } } this.imageByContext_[key] = image; return image }else { return this.image_ } }; ol.Image.prototype.getResolution = function() { return this.resolution_ }; ol.Image.prototype.getState = function() { return this.state }; ol.Image.prototype.handleImageError_ = function() { this.state = ol.ImageState.ERROR; this.unlistenImage_(); this.dispatchChangeEvent() }; ol.Image.prototype.handleImageLoad_ = function() { this.state = ol.ImageState.LOADED; this.unlistenImage_(); this.dispatchChangeEvent() }; ol.Image.prototype.load = function() { if(this.state == ol.ImageState.IDLE) { this.state = ol.ImageState.LOADING; goog.asserts.assert(goog.isNull(this.imageListenerKeys_)); this.imageListenerKeys_ = [goog.events.listenOnce(this.image_, goog.events.EventType.ERROR, this.handleImageError_, false, this), goog.events.listenOnce(this.image_, goog.events.EventType.LOAD, this.handleImageLoad_, false, this)]; this.image_.src = this.src_ } }; ol.Image.prototype.unlistenImage_ = function() { goog.asserts.assert(!goog.isNull(this.imageListenerKeys_)); goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey); this.imageListenerKeys_ = null }; goog.provide("ol.ImageTile"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileState"); ol.ImageTile = function(tileCoord, state, src, crossOrigin) { goog.base(this, tileCoord, state); this.src_ = src; this.image_ = new Image; if(!goog.isNull(crossOrigin)) { this.image_.crossOrigin = crossOrigin } this.imageByContext_ = {}; this.imageListenerKeys_ = null }; goog.inherits(ol.ImageTile, ol.Tile); ol.ImageTile.prototype.getImage = function(opt_context) { if(goog.isDef(opt_context)) { var image; var key = goog.getUid(opt_context); if(key in this.imageByContext_) { return this.imageByContext_[key] }else { if(goog.object.isEmpty(this.imageByContext_)) { image = this.image_ }else { image = (this.image_.cloneNode(false)) } } this.imageByContext_[key] = image; return image }else { return this.image_ } }; ol.ImageTile.prototype.getKey = function() { return this.src_ }; ol.ImageTile.prototype.handleImageError_ = function() { this.state = ol.TileState.ERROR; this.unlistenImage_(); this.dispatchChangeEvent() }; ol.ImageTile.prototype.handleImageLoad_ = function() { if(this.image_.naturalWidth && this.image_.naturalHeight) { this.state = ol.TileState.LOADED }else { this.state = ol.TileState.EMPTY } this.unlistenImage_(); this.dispatchChangeEvent() }; ol.ImageTile.prototype.load = function() { if(this.state == ol.TileState.IDLE) { this.state = ol.TileState.LOADING; goog.asserts.assert(goog.isNull(this.imageListenerKeys_)); this.imageListenerKeys_ = [goog.events.listenOnce(this.image_, goog.events.EventType.ERROR, this.handleImageError_, false, this), goog.events.listenOnce(this.image_, goog.events.EventType.LOAD, this.handleImageLoad_, false, this)]; this.image_.src = this.src_ } }; ol.ImageTile.prototype.unlistenImage_ = function() { goog.asserts.assert(!goog.isNull(this.imageListenerKeys_)); goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey); this.imageListenerKeys_ = null }; goog.provide("ol.ImageUrlFunction"); goog.provide("ol.ImageUrlFunctionType"); goog.require("ol.Size"); ol.ImageUrlFunctionType; ol.ImageUrlFunction.createFromParamsFunction = function(baseUrl, params, paramsFunction) { return function(extent, size, projection) { return paramsFunction(baseUrl, params, extent, size, projection) } }; ol.ImageUrlFunction.nullImageUrlFunction = function(extent, size) { return undefined }; goog.provide("ol.View"); goog.provide("ol.ViewHint"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.IView"); goog.require("ol.Object"); ol.ViewHint = {ANIMATING:0, INTERACTING:1}; ol.View = function() { goog.base(this); this.hints_ = [0, 0] }; goog.inherits(ol.View, ol.Object); ol.View.prototype.getHints = function() { return goog.array.clone(this.hints_) }; ol.View.prototype.getView2D = goog.abstractMethod; ol.View.prototype.getView3D = goog.abstractMethod; ol.View.prototype.setHint = function(hint, delta) { goog.asserts.assert(0 <= hint && hint < this.hints_.length); this.hints_[hint] += delta; goog.asserts.assert(this.hints_[hint] >= 0); return this.hints_[hint] }; goog.provide("goog.fx.easing"); goog.fx.easing.easeIn = function(t) { return t * t * t }; goog.fx.easing.easeOut = function(t) { return 1 - Math.pow(1 - t, 3) }; goog.fx.easing.inAndOut = function(t) { return 3 * t * t - 2 * t * t * t }; goog.provide("ol.easing"); goog.require("goog.fx.easing"); ol.easing.bounce = function(t) { var s = 7.5625, p = 2.75, l; if(t < 1 / p) { l = s * t * t }else { if(t < 2 / p) { t -= 1.5 / p; l = s * t * t + 0.75 }else { if(t < 2.5 / p) { t -= 2.25 / p; l = s * t * t + 0.9375 }else { t -= 2.625 / p; l = s * t * t + 0.984375 } } } return l }; ol.easing.easeIn = goog.fx.easing.easeIn; ol.easing.easeOut = goog.fx.easing.easeOut; ol.easing.elastic = function(t) { return Math.pow(2, -10 * t) * Math.sin((t - 0.075) * 2 * Math.PI / 0.3) + 1 }; ol.easing.inAndOut = goog.fx.easing.inAndOut; ol.easing.linear = function(t) { return t }; ol.easing.upAndDown = function(t) { if(t < 0.5) { return ol.easing.inAndOut(2 * t) }else { return 1 - ol.easing.inAndOut(2 * (t - 0.5)) } }; goog.provide("ol.animation"); goog.require("ol.PreRenderFunction"); goog.require("ol.ViewHint"); goog.require("ol.easing"); ol.animation.bounce = function(options) { var resolution = options.resolution; var start = goog.isDef(options.start) ? options.start : goog.now(); var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.upAndDown; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = easing((frameState.time - start) / duration); var deltaResolution = resolution - frameState.view2DState.resolution; frameState.animate = true; frameState.view2DState.resolution += delta * deltaResolution; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; ol.animation.pan = function(options) { var source = options.source; var start = goog.isDef(options.start) ? options.start : goog.now(); var sourceX = source[0]; var sourceY = source[1]; var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.inAndOut; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = 1 - easing((frameState.time - start) / duration); var deltaX = sourceX - frameState.view2DState.center[0]; var deltaY = sourceY - frameState.view2DState.center[1]; frameState.animate = true; frameState.view2DState.center[0] += delta * deltaX; frameState.view2DState.center[1] += delta * deltaY; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; ol.animation.rotate = function(options) { var sourceRotation = options.rotation; var start = goog.isDef(options.start) ? options.start : goog.now(); var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.inAndOut; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = 1 - easing((frameState.time - start) / duration); var deltaRotation = sourceRotation - frameState.view2DState.rotation; frameState.animate = true; frameState.view2DState.rotation += delta * deltaRotation; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; ol.animation.zoom = function(options) { var sourceResolution = options.resolution; var start = goog.isDef(options.start) ? options.start : goog.now(); var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.inAndOut; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = 1 - easing((frameState.time - start) / duration); var deltaResolution = sourceResolution - frameState.view2DState.resolution; frameState.animate = true; frameState.view2DState.resolution += delta * deltaResolution; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; goog.provide("ol.Kinetic"); goog.require("ol.Coordinate"); goog.require("ol.PreRenderFunction"); goog.require("ol.animation"); ol.Kinetic = function(decay, minVelocity, delay) { this.decay_ = decay; this.minVelocity_ = minVelocity; this.delay_ = delay; this.points_ = []; this.angle_ = 0; this.initialVelocity_ = 0 }; ol.Kinetic.prototype.begin = function() { this.points_.length = 0; this.angle_ = 0; this.initialVelocity_ = 0 }; ol.Kinetic.prototype.update = function(x, y) { this.points_.push(x, y, goog.now()) }; ol.Kinetic.prototype.end = function() { var delay = goog.now() - this.delay_; var lastIndex = this.points_.length - 3; if(this.points_[lastIndex + 2] < delay) { return false } var firstIndex = lastIndex - 3; while(firstIndex >= 0 && this.points_[firstIndex + 2] > delay) { firstIndex -= 3 } if(firstIndex >= 0) { var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2]; var dx = this.points_[lastIndex] - this.points_[firstIndex]; var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1]; this.angle_ = Math.atan2(dy, dx); this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration; return this.initialVelocity_ > this.minVelocity_ } return false }; ol.Kinetic.prototype.pan = function(source) { var decay = this.decay_; var initialVelocity = this.initialVelocity_; var minVelocity = this.minVelocity_; var duration = this.getDuration_(); var easingFunction = function(t) { return initialVelocity * (Math.exp(decay * t * duration) - 1) / (minVelocity - initialVelocity) }; return ol.animation.pan({source:source, duration:duration, easing:easingFunction}) }; ol.Kinetic.prototype.getDuration_ = function() { return Math.log(this.minVelocity_ / this.initialVelocity_) / this.decay_ }; ol.Kinetic.prototype.getDistance = function() { return(this.minVelocity_ - this.initialVelocity_) / this.decay_ }; ol.Kinetic.prototype.getAngle = function() { return this.angle_ }; goog.provide("goog.structs"); goog.require("goog.array"); goog.require("goog.object"); goog.structs.getCount = function(col) { if(typeof col.getCount == "function") { return col.getCount() } if(goog.isArrayLike(col) || goog.isString(col)) { return col.length } return goog.object.getCount(col) }; goog.structs.getValues = function(col) { if(typeof col.getValues == "function") { return col.getValues() } if(goog.isString(col)) { return col.split("") } if(goog.isArrayLike(col)) { var rv = []; var l = col.length; for(var i = 0;i < l;i++) { rv.push(col[i]) } return rv } return goog.object.getValues(col) }; goog.structs.getKeys = function(col) { if(typeof col.getKeys == "function") { return col.getKeys() } if(typeof col.getValues == "function") { return undefined } if(goog.isArrayLike(col) || goog.isString(col)) { var rv = []; var l = col.length; for(var i = 0;i < l;i++) { rv.push(i) } return rv } return goog.object.getKeys(col) }; goog.structs.contains = function(col, val) { if(typeof col.contains == "function") { return col.contains(val) } if(typeof col.containsValue == "function") { return col.containsValue(val) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.contains((col), val) } return goog.object.containsValue(col, val) }; goog.structs.isEmpty = function(col) { if(typeof col.isEmpty == "function") { return col.isEmpty() } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.isEmpty((col)) } return goog.object.isEmpty(col) }; goog.structs.clear = function(col) { if(typeof col.clear == "function") { col.clear() }else { if(goog.isArrayLike(col)) { goog.array.clear((col)) }else { goog.object.clear(col) } } }; goog.structs.forEach = function(col, f, opt_obj) { if(typeof col.forEach == "function") { col.forEach(f, opt_obj) }else { if(goog.isArrayLike(col) || goog.isString(col)) { goog.array.forEach((col), f, opt_obj) }else { var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { f.call(opt_obj, values[i], keys && keys[i], col) } } } }; goog.structs.filter = function(col, f, opt_obj) { if(typeof col.filter == "function") { return col.filter(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.filter((col), f, opt_obj) } var rv; var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; if(keys) { rv = {}; for(var i = 0;i < l;i++) { if(f.call(opt_obj, values[i], keys[i], col)) { rv[keys[i]] = values[i] } } }else { rv = []; for(var i = 0;i < l;i++) { if(f.call(opt_obj, values[i], undefined, col)) { rv.push(values[i]) } } } return rv }; goog.structs.map = function(col, f, opt_obj) { if(typeof col.map == "function") { return col.map(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.map((col), f, opt_obj) } var rv; var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; if(keys) { rv = {}; for(var i = 0;i < l;i++) { rv[keys[i]] = f.call(opt_obj, values[i], keys[i], col) } }else { rv = []; for(var i = 0;i < l;i++) { rv[i] = f.call(opt_obj, values[i], undefined, col) } } return rv }; goog.structs.some = function(col, f, opt_obj) { if(typeof col.some == "function") { return col.some(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.some((col), f, opt_obj) } var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { if(f.call(opt_obj, values[i], keys && keys[i], col)) { return true } } return false }; goog.structs.every = function(col, f, opt_obj) { if(typeof col.every == "function") { return col.every(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.every((col), f, opt_obj) } var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { if(!f.call(opt_obj, values[i], keys && keys[i], col)) { return false } } return true }; goog.provide("goog.iter"); goog.provide("goog.iter.Iterator"); goog.provide("goog.iter.StopIteration"); goog.require("goog.array"); goog.require("goog.asserts"); goog.iter.Iterable; if("StopIteration" in goog.global) { goog.iter.StopIteration = goog.global["StopIteration"] }else { goog.iter.StopIteration = Error("StopIteration") } goog.iter.Iterator = function() { }; goog.iter.Iterator.prototype.next = function() { throw goog.iter.StopIteration; }; goog.iter.Iterator.prototype.__iterator__ = function(opt_keys) { return this }; goog.iter.toIterator = function(iterable) { if(iterable instanceof goog.iter.Iterator) { return iterable } if(typeof iterable.__iterator__ == "function") { return iterable.__iterator__(false) } if(goog.isArrayLike(iterable)) { var i = 0; var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { if(i >= iterable.length) { throw goog.iter.StopIteration; } if(!(i in iterable)) { i++; continue } return iterable[i++] } }; return newIter } throw Error("Not implemented"); }; goog.iter.forEach = function(iterable, f, opt_obj) { if(goog.isArrayLike(iterable)) { try { goog.array.forEach((iterable), f, opt_obj) }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } }else { iterable = goog.iter.toIterator(iterable); try { while(true) { f.call(opt_obj, iterable.next(), undefined, iterable) } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } } }; goog.iter.filter = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { var val = iterator.next(); if(f.call(opt_obj, val, undefined, iterator)) { return val } } }; return newIter }; goog.iter.range = function(startOrStop, opt_stop, opt_step) { var start = 0; var stop = startOrStop; var step = opt_step || 1; if(arguments.length > 1) { start = startOrStop; stop = opt_stop } if(step == 0) { throw Error("Range step argument must not be zero"); } var newIter = new goog.iter.Iterator; newIter.next = function() { if(step > 0 && start >= stop || step < 0 && start <= stop) { throw goog.iter.StopIteration; } var rv = start; start += step; return rv }; return newIter }; goog.iter.join = function(iterable, deliminator) { return goog.iter.toArray(iterable).join(deliminator) }; goog.iter.map = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { var val = iterator.next(); return f.call(opt_obj, val, undefined, iterator) } }; return newIter }; goog.iter.reduce = function(iterable, f, val, opt_obj) { var rval = val; goog.iter.forEach(iterable, function(val) { rval = f.call(opt_obj, rval, val) }); return rval }; goog.iter.some = function(iterable, f, opt_obj) { iterable = goog.iter.toIterator(iterable); try { while(true) { if(f.call(opt_obj, iterable.next(), undefined, iterable)) { return true } } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } return false }; goog.iter.every = function(iterable, f, opt_obj) { iterable = goog.iter.toIterator(iterable); try { while(true) { if(!f.call(opt_obj, iterable.next(), undefined, iterable)) { return false } } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } return true }; goog.iter.chain = function(var_args) { var args = arguments; var length = args.length; var i = 0; var newIter = new goog.iter.Iterator; newIter.next = function() { try { if(i >= length) { throw goog.iter.StopIteration; } var current = goog.iter.toIterator(args[i]); return current.next() }catch(ex) { if(ex !== goog.iter.StopIteration || i >= length) { throw ex; }else { i++; return this.next() } } }; return newIter }; goog.iter.dropWhile = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; var dropping = true; newIter.next = function() { while(true) { var val = iterator.next(); if(dropping && f.call(opt_obj, val, undefined, iterator)) { continue }else { dropping = false } return val } }; return newIter }; goog.iter.takeWhile = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; var taking = true; newIter.next = function() { while(true) { if(taking) { var val = iterator.next(); if(f.call(opt_obj, val, undefined, iterator)) { return val }else { taking = false } }else { throw goog.iter.StopIteration; } } }; return newIter }; goog.iter.toArray = function(iterable) { if(goog.isArrayLike(iterable)) { return goog.array.toArray((iterable)) } iterable = goog.iter.toIterator(iterable); var array = []; goog.iter.forEach(iterable, function(val) { array.push(val) }); return array }; goog.iter.equals = function(iterable1, iterable2) { iterable1 = goog.iter.toIterator(iterable1); iterable2 = goog.iter.toIterator(iterable2); var b1, b2; try { while(true) { b1 = b2 = false; var val1 = iterable1.next(); b1 = true; var val2 = iterable2.next(); b2 = true; if(val1 != val2) { return false } } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; }else { if(b1 && !b2) { return false } if(!b2) { try { val2 = iterable2.next(); return false }catch(ex1) { if(ex1 !== goog.iter.StopIteration) { throw ex1; } return true } } } } return false }; goog.iter.nextOrValue = function(iterable, defaultValue) { try { return goog.iter.toIterator(iterable).next() }catch(e) { if(e != goog.iter.StopIteration) { throw e; } return defaultValue } }; goog.iter.product = function(var_args) { var someArrayEmpty = goog.array.some(arguments, function(arr) { return!arr.length }); if(someArrayEmpty || !arguments.length) { return new goog.iter.Iterator } var iter = new goog.iter.Iterator; var arrays = arguments; var indicies = goog.array.repeat(0, arrays.length); iter.next = function() { if(indicies) { var retVal = goog.array.map(indicies, function(valueIndex, arrayIndex) { return arrays[arrayIndex][valueIndex] }); for(var i = indicies.length - 1;i >= 0;i--) { goog.asserts.assert(indicies); if(indicies[i] < arrays[i].length - 1) { indicies[i]++; break } if(i == 0) { indicies = null; break } indicies[i] = 0 } return retVal } throw goog.iter.StopIteration; }; return iter }; goog.iter.cycle = function(iterable) { var baseIterator = goog.iter.toIterator(iterable); var cache = []; var cacheIndex = 0; var iter = new goog.iter.Iterator; var useCache = false; iter.next = function() { var returnElement = null; if(!useCache) { try { returnElement = baseIterator.next(); cache.push(returnElement); return returnElement }catch(e) { if(e != goog.iter.StopIteration || goog.array.isEmpty(cache)) { throw e; } useCache = true } } returnElement = cache[cacheIndex]; cacheIndex = (cacheIndex + 1) % cache.length; return returnElement }; return iter }; goog.provide("goog.structs.Map"); goog.require("goog.iter.Iterator"); goog.require("goog.iter.StopIteration"); goog.require("goog.object"); goog.structs.Map = function(opt_map, var_args) { this.map_ = {}; this.keys_ = []; var argLength = arguments.length; if(argLength > 1) { if(argLength % 2) { throw Error("Uneven number of arguments"); } for(var i = 0;i < argLength;i += 2) { this.set(arguments[i], arguments[i + 1]) } }else { if(opt_map) { this.addAll((opt_map)) } } }; goog.structs.Map.prototype.count_ = 0; goog.structs.Map.prototype.version_ = 0; goog.structs.Map.prototype.getCount = function() { return this.count_ }; goog.structs.Map.prototype.getValues = function() { this.cleanupKeysArray_(); var rv = []; for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; rv.push(this.map_[key]) } return rv }; goog.structs.Map.prototype.getKeys = function() { this.cleanupKeysArray_(); return(this.keys_.concat()) }; goog.structs.Map.prototype.containsKey = function(key) { return goog.structs.Map.hasKey_(this.map_, key) }; goog.structs.Map.prototype.containsValue = function(val) { for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; if(goog.structs.Map.hasKey_(this.map_, key) && this.map_[key] == val) { return true } } return false }; goog.structs.Map.prototype.equals = function(otherMap, opt_equalityFn) { if(this === otherMap) { return true } if(this.count_ != otherMap.getCount()) { return false } var equalityFn = opt_equalityFn || goog.structs.Map.defaultEquals; this.cleanupKeysArray_(); for(var key, i = 0;key = this.keys_[i];i++) { if(!equalityFn(this.get(key), otherMap.get(key))) { return false } } return true }; goog.structs.Map.defaultEquals = function(a, b) { return a === b }; goog.structs.Map.prototype.isEmpty = function() { return this.count_ == 0 }; goog.structs.Map.prototype.clear = function() { this.map_ = {}; this.keys_.length = 0; this.count_ = 0; this.version_ = 0 }; goog.structs.Map.prototype.remove = function(key) { if(goog.structs.Map.hasKey_(this.map_, key)) { delete this.map_[key]; this.count_--; this.version_++; if(this.keys_.length > 2 * this.count_) { this.cleanupKeysArray_() } return true } return false }; goog.structs.Map.prototype.cleanupKeysArray_ = function() { if(this.count_ != this.keys_.length) { var srcIndex = 0; var destIndex = 0; while(srcIndex < this.keys_.length) { var key = this.keys_[srcIndex]; if(goog.structs.Map.hasKey_(this.map_, key)) { this.keys_[destIndex++] = key } srcIndex++ } this.keys_.length = destIndex } if(this.count_ != this.keys_.length) { var seen = {}; var srcIndex = 0; var destIndex = 0; while(srcIndex < this.keys_.length) { var key = this.keys_[srcIndex]; if(!goog.structs.Map.hasKey_(seen, key)) { this.keys_[destIndex++] = key; seen[key] = 1 } srcIndex++ } this.keys_.length = destIndex } }; goog.structs.Map.prototype.get = function(key, opt_val) { if(goog.structs.Map.hasKey_(this.map_, key)) { return this.map_[key] } return opt_val }; goog.structs.Map.prototype.set = function(key, value) { if(!goog.structs.Map.hasKey_(this.map_, key)) { this.count_++; this.keys_.push(key); this.version_++ } this.map_[key] = value }; goog.structs.Map.prototype.addAll = function(map) { var keys, values; if(map instanceof goog.structs.Map) { keys = map.getKeys(); values = map.getValues() }else { keys = goog.object.getKeys(map); values = goog.object.getValues(map) } for(var i = 0;i < keys.length;i++) { this.set(keys[i], values[i]) } }; goog.structs.Map.prototype.clone = function() { return new goog.structs.Map(this) }; goog.structs.Map.prototype.transpose = function() { var transposed = new goog.structs.Map; for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; var value = this.map_[key]; transposed.set(value, key) } return transposed }; goog.structs.Map.prototype.toObject = function() { this.cleanupKeysArray_(); var obj = {}; for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; obj[key] = this.map_[key] } return obj }; goog.structs.Map.prototype.getKeyIterator = function() { return this.__iterator__(true) }; goog.structs.Map.prototype.getValueIterator = function() { return this.__iterator__(false) }; goog.structs.Map.prototype.__iterator__ = function(opt_keys) { this.cleanupKeysArray_(); var i = 0; var keys = this.keys_; var map = this.map_; var version = this.version_; var selfObj = this; var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { if(version != selfObj.version_) { throw Error("The map has changed since the iterator was created"); } if(i >= keys.length) { throw goog.iter.StopIteration; } var key = keys[i++]; return opt_keys ? key : map[key] } }; return newIter }; goog.structs.Map.hasKey_ = function(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key) }; goog.provide("goog.uri.utils"); goog.provide("goog.uri.utils.ComponentIndex"); goog.provide("goog.uri.utils.QueryArray"); goog.provide("goog.uri.utils.QueryValue"); goog.provide("goog.uri.utils.StandardQueryParam"); goog.require("goog.asserts"); goog.require("goog.string"); goog.require("goog.userAgent"); goog.uri.utils.CharCode_ = {AMPERSAND:38, EQUAL:61, HASH:35, QUESTION:63}; goog.uri.utils.buildFromEncodedParts = function(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) { var out = ""; if(opt_scheme) { out += opt_scheme + ":" } if(opt_domain) { out += "//"; if(opt_userInfo) { out += opt_userInfo + "@" } out += opt_domain; if(opt_port) { out += ":" + opt_port } } if(opt_path) { out += opt_path } if(opt_queryData) { out += "?" + opt_queryData } if(opt_fragment) { out += "#" + opt_fragment } return out }; goog.uri.utils.splitRe_ = new RegExp("^" + "(?:" + "([^:/?#.]+)" + ":)?" + "(?://" + "(?:([^/?#]*)@)?" + "([^/#?]*?)" + "(?::([0-9]+))?" + "(?\x3d[/#?]|$)" + ")?" + "([^?#]+)?" + "(?:\\?([^#]*))?" + "(?:#(.*))?" + "$"); goog.uri.utils.ComponentIndex = {SCHEME:1, USER_INFO:2, DOMAIN:3, PORT:4, PATH:5, QUERY_DATA:6, FRAGMENT:7}; goog.uri.utils.split = function(uri) { goog.uri.utils.phishingProtection_(); return(uri.match(goog.uri.utils.splitRe_)) }; goog.uri.utils.needsPhishingProtection_ = goog.userAgent.WEBKIT; goog.uri.utils.phishingProtection_ = function() { if(goog.uri.utils.needsPhishingProtection_) { goog.uri.utils.needsPhishingProtection_ = false; var location = goog.global["location"]; if(location) { var href = location["href"]; if(href) { var domain = goog.uri.utils.getDomain(href); if(domain && domain != location["hostname"]) { goog.uri.utils.needsPhishingProtection_ = true; throw Error(); } } } } }; goog.uri.utils.decodeIfPossible_ = function(uri) { return uri && decodeURIComponent(uri) }; goog.uri.utils.getComponentByIndex_ = function(componentIndex, uri) { return goog.uri.utils.split(uri)[componentIndex] || null }; goog.uri.utils.getScheme = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.SCHEME, uri) }; goog.uri.utils.getEffectiveScheme = function(uri) { var scheme = goog.uri.utils.getScheme(uri); if(!scheme && self.location) { var protocol = self.location.protocol; scheme = protocol.substr(0, protocol.length - 1) } return scheme ? scheme.toLowerCase() : "" }; goog.uri.utils.getUserInfoEncoded = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.USER_INFO, uri) }; goog.uri.utils.getUserInfo = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getUserInfoEncoded(uri)) }; goog.uri.utils.getDomainEncoded = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.DOMAIN, uri) }; goog.uri.utils.getDomain = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getDomainEncoded(uri)) }; goog.uri.utils.getPort = function(uri) { return Number(goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PORT, uri)) || null }; goog.uri.utils.getPathEncoded = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PATH, uri) }; goog.uri.utils.getPath = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getPathEncoded(uri)) }; goog.uri.utils.getQueryData = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.QUERY_DATA, uri) }; goog.uri.utils.getFragmentEncoded = function(uri) { var hashIndex = uri.indexOf("#"); return hashIndex < 0 ? null : uri.substr(hashIndex + 1) }; goog.uri.utils.setFragmentEncoded = function(uri, fragment) { return goog.uri.utils.removeFragment(uri) + (fragment ? "#" + fragment : "") }; goog.uri.utils.getFragment = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getFragmentEncoded(uri)) }; goog.uri.utils.getHost = function(uri) { var pieces = goog.uri.utils.split(uri); return goog.uri.utils.buildFromEncodedParts(pieces[goog.uri.utils.ComponentIndex.SCHEME], pieces[goog.uri.utils.ComponentIndex.USER_INFO], pieces[goog.uri.utils.ComponentIndex.DOMAIN], pieces[goog.uri.utils.ComponentIndex.PORT]) }; goog.uri.utils.getPathAndAfter = function(uri) { var pieces = goog.uri.utils.split(uri); return goog.uri.utils.buildFromEncodedParts(null, null, null, null, pieces[goog.uri.utils.ComponentIndex.PATH], pieces[goog.uri.utils.ComponentIndex.QUERY_DATA], pieces[goog.uri.utils.ComponentIndex.FRAGMENT]) }; goog.uri.utils.removeFragment = function(uri) { var hashIndex = uri.indexOf("#"); return hashIndex < 0 ? uri : uri.substr(0, hashIndex) }; goog.uri.utils.haveSameDomain = function(uri1, uri2) { var pieces1 = goog.uri.utils.split(uri1); var pieces2 = goog.uri.utils.split(uri2); return pieces1[goog.uri.utils.ComponentIndex.DOMAIN] == pieces2[goog.uri.utils.ComponentIndex.DOMAIN] && pieces1[goog.uri.utils.ComponentIndex.SCHEME] == pieces2[goog.uri.utils.ComponentIndex.SCHEME] && pieces1[goog.uri.utils.ComponentIndex.PORT] == pieces2[goog.uri.utils.ComponentIndex.PORT] }; goog.uri.utils.assertNoFragmentsOrQueries_ = function(uri) { if(goog.DEBUG && (uri.indexOf("#") >= 0 || uri.indexOf("?") >= 0)) { throw Error("goog.uri.utils: Fragment or query identifiers are not " + "supported: [" + uri + "]"); } }; goog.uri.utils.QueryValue; goog.uri.utils.QueryArray; goog.uri.utils.appendQueryData_ = function(buffer) { if(buffer[1]) { var baseUri = (buffer[0]); var hashIndex = baseUri.indexOf("#"); if(hashIndex >= 0) { buffer.push(baseUri.substr(hashIndex)); buffer[0] = baseUri = baseUri.substr(0, hashIndex) } var questionIndex = baseUri.indexOf("?"); if(questionIndex < 0) { buffer[1] = "?" }else { if(questionIndex == baseUri.length - 1) { buffer[1] = undefined } } } return buffer.join("") }; goog.uri.utils.appendKeyValuePairs_ = function(key, value, pairs) { if(goog.isArray(value)) { goog.asserts.assertArray(value); for(var j = 0;j < value.length;j++) { goog.uri.utils.appendKeyValuePairs_(key, String(value[j]), pairs) } }else { if(value != null) { pairs.push("\x26", key, value === "" ? "" : "\x3d", goog.string.urlEncode(value)) } } }; goog.uri.utils.buildQueryDataBuffer_ = function(buffer, keysAndValues, opt_startIndex) { goog.asserts.assert(Math.max(keysAndValues.length - (opt_startIndex || 0), 0) % 2 == 0, "goog.uri.utils: Key/value lists must be even in length."); for(var i = opt_startIndex || 0;i < keysAndValues.length;i += 2) { goog.uri.utils.appendKeyValuePairs_(keysAndValues[i], keysAndValues[i + 1], buffer) } return buffer }; goog.uri.utils.buildQueryData = function(keysAndValues, opt_startIndex) { var buffer = goog.uri.utils.buildQueryDataBuffer_([], keysAndValues, opt_startIndex); buffer[0] = ""; return buffer.join("") }; goog.uri.utils.buildQueryDataBufferFromMap_ = function(buffer, map) { for(var key in map) { goog.uri.utils.appendKeyValuePairs_(key, map[key], buffer) } return buffer }; goog.uri.utils.buildQueryDataFromMap = function(map) { var buffer = goog.uri.utils.buildQueryDataBufferFromMap_([], map); buffer[0] = ""; return buffer.join("") }; goog.uri.utils.appendParams = function(uri, var_args) { return goog.uri.utils.appendQueryData_(arguments.length == 2 ? goog.uri.utils.buildQueryDataBuffer_([uri], arguments[1], 0) : goog.uri.utils.buildQueryDataBuffer_([uri], arguments, 1)) }; goog.uri.utils.appendParamsFromMap = function(uri, map) { return goog.uri.utils.appendQueryData_(goog.uri.utils.buildQueryDataBufferFromMap_([uri], map)) }; goog.uri.utils.appendParam = function(uri, key, opt_value) { var paramArr = [uri, "\x26", key]; if(goog.isDefAndNotNull(opt_value)) { paramArr.push("\x3d", goog.string.urlEncode(opt_value)) } return goog.uri.utils.appendQueryData_(paramArr) }; goog.uri.utils.findParam_ = function(uri, startIndex, keyEncoded, hashOrEndIndex) { var index = startIndex; var keyLength = keyEncoded.length; while((index = uri.indexOf(keyEncoded, index)) >= 0 && index < hashOrEndIndex) { var precedingChar = uri.charCodeAt(index - 1); if(precedingChar == goog.uri.utils.CharCode_.AMPERSAND || precedingChar == goog.uri.utils.CharCode_.QUESTION) { var followingChar = uri.charCodeAt(index + keyLength); if(!followingChar || followingChar == goog.uri.utils.CharCode_.EQUAL || followingChar == goog.uri.utils.CharCode_.AMPERSAND || followingChar == goog.uri.utils.CharCode_.HASH) { return index } } index += keyLength + 1 } return-1 }; goog.uri.utils.hashOrEndRe_ = /#|$/; goog.uri.utils.hasParam = function(uri, keyEncoded) { return goog.uri.utils.findParam_(uri, 0, keyEncoded, uri.search(goog.uri.utils.hashOrEndRe_)) >= 0 }; goog.uri.utils.getParamValue = function(uri, keyEncoded) { var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_); var foundIndex = goog.uri.utils.findParam_(uri, 0, keyEncoded, hashOrEndIndex); if(foundIndex < 0) { return null }else { var endPosition = uri.indexOf("\x26", foundIndex); if(endPosition < 0 || endPosition > hashOrEndIndex) { endPosition = hashOrEndIndex } foundIndex += keyEncoded.length + 1; return goog.string.urlDecode(uri.substr(foundIndex, endPosition - foundIndex)) } }; goog.uri.utils.getParamValues = function(uri, keyEncoded) { var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_); var position = 0; var foundIndex; var result = []; while((foundIndex = goog.uri.utils.findParam_(uri, position, keyEncoded, hashOrEndIndex)) >= 0) { position = uri.indexOf("\x26", foundIndex); if(position < 0 || position > hashOrEndIndex) { position = hashOrEndIndex } foundIndex += keyEncoded.length + 1; result.push(goog.string.urlDecode(uri.substr(foundIndex, position - foundIndex))) } return result }; goog.uri.utils.trailingQueryPunctuationRe_ = /[?&]($|#)/; goog.uri.utils.removeParam = function(uri, keyEncoded) { var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_); var position = 0; var foundIndex; var buffer = []; while((foundIndex = goog.uri.utils.findParam_(uri, position, keyEncoded, hashOrEndIndex)) >= 0) { buffer.push(uri.substring(position, foundIndex)); position = Math.min(uri.indexOf("\x26", foundIndex) + 1 || hashOrEndIndex, hashOrEndIndex) } buffer.push(uri.substr(position)); return buffer.join("").replace(goog.uri.utils.trailingQueryPunctuationRe_, "$1") }; goog.uri.utils.setParam = function(uri, keyEncoded, value) { return goog.uri.utils.appendParam(goog.uri.utils.removeParam(uri, keyEncoded), keyEncoded, value) }; goog.uri.utils.appendPath = function(baseUri, path) { goog.uri.utils.assertNoFragmentsOrQueries_(baseUri); if(goog.string.endsWith(baseUri, "/")) { baseUri = baseUri.substr(0, baseUri.length - 1) } if(goog.string.startsWith(path, "/")) { path = path.substr(1) } return goog.string.buildString(baseUri, "/", path) }; goog.uri.utils.StandardQueryParam = {RANDOM:"zx"}; goog.uri.utils.makeUnique = function(uri) { return goog.uri.utils.setParam(uri, goog.uri.utils.StandardQueryParam.RANDOM, goog.string.getRandomString()) }; goog.provide("goog.Uri"); goog.provide("goog.Uri.QueryData"); goog.require("goog.array"); goog.require("goog.string"); goog.require("goog.structs"); goog.require("goog.structs.Map"); goog.require("goog.uri.utils"); goog.require("goog.uri.utils.ComponentIndex"); goog.require("goog.uri.utils.StandardQueryParam"); goog.Uri = function(opt_uri, opt_ignoreCase) { var m; if(opt_uri instanceof goog.Uri) { this.ignoreCase_ = goog.isDef(opt_ignoreCase) ? opt_ignoreCase : opt_uri.getIgnoreCase(); this.setScheme(opt_uri.getScheme()); this.setUserInfo(opt_uri.getUserInfo()); this.setDomain(opt_uri.getDomain()); this.setPort(opt_uri.getPort()); this.setPath(opt_uri.getPath()); this.setQueryData(opt_uri.getQueryData().clone()); this.setFragment(opt_uri.getFragment()) }else { if(opt_uri && (m = goog.uri.utils.split(String(opt_uri)))) { this.ignoreCase_ = !!opt_ignoreCase; this.setScheme(m[goog.uri.utils.ComponentIndex.SCHEME] || "", true); this.setUserInfo(m[goog.uri.utils.ComponentIndex.USER_INFO] || "", true); this.setDomain(m[goog.uri.utils.ComponentIndex.DOMAIN] || "", true); this.setPort(m[goog.uri.utils.ComponentIndex.PORT]); this.setPath(m[goog.uri.utils.ComponentIndex.PATH] || "", true); this.setQueryData(m[goog.uri.utils.ComponentIndex.QUERY_DATA] || "", true); this.setFragment(m[goog.uri.utils.ComponentIndex.FRAGMENT] || "", true) }else { this.ignoreCase_ = !!opt_ignoreCase; this.queryData_ = new goog.Uri.QueryData(null, null, this.ignoreCase_) } } }; goog.Uri.preserveParameterTypesCompatibilityFlag = false; goog.Uri.RANDOM_PARAM = goog.uri.utils.StandardQueryParam.RANDOM; goog.Uri.prototype.scheme_ = ""; goog.Uri.prototype.userInfo_ = ""; goog.Uri.prototype.domain_ = ""; goog.Uri.prototype.port_ = null; goog.Uri.prototype.path_ = ""; goog.Uri.prototype.queryData_; goog.Uri.prototype.fragment_ = ""; goog.Uri.prototype.isReadOnly_ = false; goog.Uri.prototype.ignoreCase_ = false; goog.Uri.prototype.toString = function() { var out = []; var scheme = this.getScheme(); if(scheme) { out.push(goog.Uri.encodeSpecialChars_(scheme, goog.Uri.reDisallowedInSchemeOrUserInfo_), ":") } var domain = this.getDomain(); if(domain) { out.push("//"); var userInfo = this.getUserInfo(); if(userInfo) { out.push(goog.Uri.encodeSpecialChars_(userInfo, goog.Uri.reDisallowedInSchemeOrUserInfo_), "@") } out.push(goog.string.urlEncode(domain)); var port = this.getPort(); if(port != null) { out.push(":", String(port)) } } var path = this.getPath(); if(path) { if(this.hasDomain() && path.charAt(0) != "/") { out.push("/") } out.push(goog.Uri.encodeSpecialChars_(path, path.charAt(0) == "/" ? goog.Uri.reDisallowedInAbsolutePath_ : goog.Uri.reDisallowedInRelativePath_)) } var query = this.getEncodedQuery(); if(query) { out.push("?", query) } var fragment = this.getFragment(); if(fragment) { out.push("#", goog.Uri.encodeSpecialChars_(fragment, goog.Uri.reDisallowedInFragment_)) } return out.join("") }; goog.Uri.prototype.resolve = function(relativeUri) { var absoluteUri = this.clone(); var overridden = relativeUri.hasScheme(); if(overridden) { absoluteUri.setScheme(relativeUri.getScheme()) }else { overridden = relativeUri.hasUserInfo() } if(overridden) { absoluteUri.setUserInfo(relativeUri.getUserInfo()) }else { overridden = relativeUri.hasDomain() } if(overridden) { absoluteUri.setDomain(relativeUri.getDomain()) }else { overridden = relativeUri.hasPort() } var path = relativeUri.getPath(); if(overridden) { absoluteUri.setPort(relativeUri.getPort()) }else { overridden = relativeUri.hasPath(); if(overridden) { if(path.charAt(0) != "/") { if(this.hasDomain() && !this.hasPath()) { path = "/" + path }else { var lastSlashIndex = absoluteUri.getPath().lastIndexOf("/"); if(lastSlashIndex != -1) { path = absoluteUri.getPath().substr(0, lastSlashIndex + 1) + path } } } path = goog.Uri.removeDotSegments(path) } } if(overridden) { absoluteUri.setPath(path) }else { overridden = relativeUri.hasQuery() } if(overridden) { absoluteUri.setQueryData(relativeUri.getDecodedQuery()) }else { overridden = relativeUri.hasFragment() } if(overridden) { absoluteUri.setFragment(relativeUri.getFragment()) } return absoluteUri }; goog.Uri.prototype.clone = function() { return new goog.Uri(this) }; goog.Uri.prototype.getScheme = function() { return this.scheme_ }; goog.Uri.prototype.setScheme = function(newScheme, opt_decode) { this.enforceReadOnly(); this.scheme_ = opt_decode ? goog.Uri.decodeOrEmpty_(newScheme) : newScheme; if(this.scheme_) { this.scheme_ = this.scheme_.replace(/:$/, "") } return this }; goog.Uri.prototype.hasScheme = function() { return!!this.scheme_ }; goog.Uri.prototype.getUserInfo = function() { return this.userInfo_ }; goog.Uri.prototype.setUserInfo = function(newUserInfo, opt_decode) { this.enforceReadOnly(); this.userInfo_ = opt_decode ? goog.Uri.decodeOrEmpty_(newUserInfo) : newUserInfo; return this }; goog.Uri.prototype.hasUserInfo = function() { return!!this.userInfo_ }; goog.Uri.prototype.getDomain = function() { return this.domain_ }; goog.Uri.prototype.setDomain = function(newDomain, opt_decode) { this.enforceReadOnly(); this.domain_ = opt_decode ? goog.Uri.decodeOrEmpty_(newDomain) : newDomain; return this }; goog.Uri.prototype.hasDomain = function() { return!!this.domain_ }; goog.Uri.prototype.getPort = function() { return this.port_ }; goog.Uri.prototype.setPort = function(newPort) { this.enforceReadOnly(); if(newPort) { newPort = Number(newPort); if(isNaN(newPort) || newPort < 0) { throw Error("Bad port number " + newPort); } this.port_ = newPort }else { this.port_ = null } return this }; goog.Uri.prototype.hasPort = function() { return this.port_ != null }; goog.Uri.prototype.getPath = function() { return this.path_ }; goog.Uri.prototype.setPath = function(newPath, opt_decode) { this.enforceReadOnly(); this.path_ = opt_decode ? goog.Uri.decodeOrEmpty_(newPath) : newPath; return this }; goog.Uri.prototype.hasPath = function() { return!!this.path_ }; goog.Uri.prototype.hasQuery = function() { return this.queryData_.toString() !== "" }; goog.Uri.prototype.setQueryData = function(queryData, opt_decode) { this.enforceReadOnly(); if(queryData instanceof goog.Uri.QueryData) { this.queryData_ = queryData; this.queryData_.setIgnoreCase(this.ignoreCase_) }else { if(!opt_decode) { queryData = goog.Uri.encodeSpecialChars_(queryData, goog.Uri.reDisallowedInQuery_) } this.queryData_ = new goog.Uri.QueryData(queryData, null, this.ignoreCase_) } return this }; goog.Uri.prototype.setQuery = function(newQuery, opt_decode) { return this.setQueryData(newQuery, opt_decode) }; goog.Uri.prototype.getEncodedQuery = function() { return this.queryData_.toString() }; goog.Uri.prototype.getDecodedQuery = function() { return this.queryData_.toDecodedString() }; goog.Uri.prototype.getQueryData = function() { return this.queryData_ }; goog.Uri.prototype.getQuery = function() { return this.getEncodedQuery() }; goog.Uri.prototype.setParameterValue = function(key, value) { this.enforceReadOnly(); this.queryData_.set(key, value); return this }; goog.Uri.prototype.setParameterValues = function(key, values) { this.enforceReadOnly(); if(!goog.isArray(values)) { values = [String(values)] } this.queryData_.setValues(key, (values)); return this }; goog.Uri.prototype.getParameterValues = function(name) { return this.queryData_.getValues(name) }; goog.Uri.prototype.getParameterValue = function(paramName) { return(this.queryData_.get(paramName)) }; goog.Uri.prototype.getFragment = function() { return this.fragment_ }; goog.Uri.prototype.setFragment = function(newFragment, opt_decode) { this.enforceReadOnly(); this.fragment_ = opt_decode ? goog.Uri.decodeOrEmpty_(newFragment) : newFragment; return this }; goog.Uri.prototype.hasFragment = function() { return!!this.fragment_ }; goog.Uri.prototype.hasSameDomainAs = function(uri2) { return(!this.hasDomain() && !uri2.hasDomain() || this.getDomain() == uri2.getDomain()) && (!this.hasPort() && !uri2.hasPort() || this.getPort() == uri2.getPort()) }; goog.Uri.prototype.makeUnique = function() { this.enforceReadOnly(); this.setParameterValue(goog.Uri.RANDOM_PARAM, goog.string.getRandomString()); return this }; goog.Uri.prototype.removeParameter = function(key) { this.enforceReadOnly(); this.queryData_.remove(key); return this }; goog.Uri.prototype.setReadOnly = function(isReadOnly) { this.isReadOnly_ = isReadOnly; return this }; goog.Uri.prototype.isReadOnly = function() { return this.isReadOnly_ }; goog.Uri.prototype.enforceReadOnly = function() { if(this.isReadOnly_) { throw Error("Tried to modify a read-only Uri"); } }; goog.Uri.prototype.setIgnoreCase = function(ignoreCase) { this.ignoreCase_ = ignoreCase; if(this.queryData_) { this.queryData_.setIgnoreCase(ignoreCase) } return this }; goog.Uri.prototype.getIgnoreCase = function() { return this.ignoreCase_ }; goog.Uri.parse = function(uri, opt_ignoreCase) { return uri instanceof goog.Uri ? uri.clone() : new goog.Uri(uri, opt_ignoreCase) }; goog.Uri.create = function(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_query, opt_fragment, opt_ignoreCase) { var uri = new goog.Uri(null, opt_ignoreCase); opt_scheme && uri.setScheme(opt_scheme); opt_userInfo && uri.setUserInfo(opt_userInfo); opt_domain && uri.setDomain(opt_domain); opt_port && uri.setPort(opt_port); opt_path && uri.setPath(opt_path); opt_query && uri.setQueryData(opt_query); opt_fragment && uri.setFragment(opt_fragment); return uri }; goog.Uri.resolve = function(base, rel) { if(!(base instanceof goog.Uri)) { base = goog.Uri.parse(base) } if(!(rel instanceof goog.Uri)) { rel = goog.Uri.parse(rel) } return base.resolve(rel) }; goog.Uri.removeDotSegments = function(path) { if(path == ".." || path == ".") { return"" }else { if(!goog.string.contains(path, "./") && !goog.string.contains(path, "/.")) { return path }else { var leadingSlash = goog.string.startsWith(path, "/"); var segments = path.split("/"); var out = []; for(var pos = 0;pos < segments.length;) { var segment = segments[pos++]; if(segment == ".") { if(leadingSlash && pos == segments.length) { out.push("") } }else { if(segment == "..") { if(out.length > 1 || out.length == 1 && out[0] != "") { out.pop() } if(leadingSlash && pos == segments.length) { out.push("") } }else { out.push(segment); leadingSlash = true } } } return out.join("/") } } }; goog.Uri.decodeOrEmpty_ = function(val) { return val ? decodeURIComponent(val) : "" }; goog.Uri.encodeSpecialChars_ = function(unescapedPart, extra) { if(goog.isString(unescapedPart)) { return encodeURI(unescapedPart).replace(extra, goog.Uri.encodeChar_) } return null }; goog.Uri.encodeChar_ = function(ch) { var n = ch.charCodeAt(0); return"%" + (n >> 4 & 15).toString(16) + (n & 15).toString(16) }; goog.Uri.reDisallowedInSchemeOrUserInfo_ = /[#\/\?@]/g; goog.Uri.reDisallowedInRelativePath_ = /[\#\?:]/g; goog.Uri.reDisallowedInAbsolutePath_ = /[\#\?]/g; goog.Uri.reDisallowedInQuery_ = /[\#\?@]/g; goog.Uri.reDisallowedInFragment_ = /#/g; goog.Uri.haveSameDomain = function(uri1String, uri2String) { var pieces1 = goog.uri.utils.split(uri1String); var pieces2 = goog.uri.utils.split(uri2String); return pieces1[goog.uri.utils.ComponentIndex.DOMAIN] == pieces2[goog.uri.utils.ComponentIndex.DOMAIN] && pieces1[goog.uri.utils.ComponentIndex.PORT] == pieces2[goog.uri.utils.ComponentIndex.PORT] }; goog.Uri.QueryData = function(opt_query, opt_uri, opt_ignoreCase) { this.encodedQuery_ = opt_query || null; this.ignoreCase_ = !!opt_ignoreCase }; goog.Uri.QueryData.prototype.ensureKeyMapInitialized_ = function() { if(!this.keyMap_) { this.keyMap_ = new goog.structs.Map; this.count_ = 0; if(this.encodedQuery_) { var pairs = this.encodedQuery_.split("\x26"); for(var i = 0;i < pairs.length;i++) { var indexOfEquals = pairs[i].indexOf("\x3d"); var name = null; var value = null; if(indexOfEquals >= 0) { name = pairs[i].substring(0, indexOfEquals); value = pairs[i].substring(indexOfEquals + 1) }else { name = pairs[i] } name = goog.string.urlDecode(name); name = this.getKeyName_(name); this.add(name, value ? goog.string.urlDecode(value) : "") } } } }; goog.Uri.QueryData.createFromMap = function(map, opt_uri, opt_ignoreCase) { var keys = goog.structs.getKeys(map); if(typeof keys == "undefined") { throw Error("Keys are undefined"); } var queryData = new goog.Uri.QueryData(null, null, opt_ignoreCase); var values = goog.structs.getValues(map); for(var i = 0;i < keys.length;i++) { var key = keys[i]; var value = values[i]; if(!goog.isArray(value)) { queryData.add(key, value) }else { queryData.setValues(key, value) } } return queryData }; goog.Uri.QueryData.createFromKeysValues = function(keys, values, opt_uri, opt_ignoreCase) { if(keys.length != values.length) { throw Error("Mismatched lengths for keys/values"); } var queryData = new goog.Uri.QueryData(null, null, opt_ignoreCase); for(var i = 0;i < keys.length;i++) { queryData.add(keys[i], values[i]) } return queryData }; goog.Uri.QueryData.prototype.keyMap_ = null; goog.Uri.QueryData.prototype.count_ = null; goog.Uri.QueryData.prototype.getCount = function() { this.ensureKeyMapInitialized_(); return this.count_ }; goog.Uri.QueryData.prototype.add = function(key, value) { this.ensureKeyMapInitialized_(); this.invalidateCache_(); key = this.getKeyName_(key); var values = this.keyMap_.get(key); if(!values) { this.keyMap_.set(key, values = []) } values.push(value); this.count_++; return this }; goog.Uri.QueryData.prototype.remove = function(key) { this.ensureKeyMapInitialized_(); key = this.getKeyName_(key); if(this.keyMap_.containsKey(key)) { this.invalidateCache_(); this.count_ -= this.keyMap_.get(key).length; return this.keyMap_.remove(key) } return false }; goog.Uri.QueryData.prototype.clear = function() { this.invalidateCache_(); this.keyMap_ = null; this.count_ = 0 }; goog.Uri.QueryData.prototype.isEmpty = function() { this.ensureKeyMapInitialized_(); return this.count_ == 0 }; goog.Uri.QueryData.prototype.containsKey = function(key) { this.ensureKeyMapInitialized_(); key = this.getKeyName_(key); return this.keyMap_.containsKey(key) }; goog.Uri.QueryData.prototype.containsValue = function(value) { var vals = this.getValues(); return goog.array.contains(vals, value) }; goog.Uri.QueryData.prototype.getKeys = function() { this.ensureKeyMapInitialized_(); var vals = (this.keyMap_.getValues()); var keys = this.keyMap_.getKeys(); var rv = []; for(var i = 0;i < keys.length;i++) { var val = vals[i]; for(var j = 0;j < val.length;j++) { rv.push(keys[i]) } } return rv }; goog.Uri.QueryData.prototype.getValues = function(opt_key) { this.ensureKeyMapInitialized_(); var rv = []; if(opt_key) { if(this.containsKey(opt_key)) { rv = goog.array.concat(rv, this.keyMap_.get(this.getKeyName_(opt_key))) } }else { var values = (this.keyMap_.getValues()); for(var i = 0;i < values.length;i++) { rv = goog.array.concat(rv, values[i]) } } return rv }; goog.Uri.QueryData.prototype.set = function(key, value) { this.ensureKeyMapInitialized_(); this.invalidateCache_(); key = this.getKeyName_(key); if(this.containsKey(key)) { this.count_ -= this.keyMap_.get(key).length } this.keyMap_.set(key, [value]); this.count_++; return this }; goog.Uri.QueryData.prototype.get = function(key, opt_default) { var values = key ? this.getValues(key) : []; if(goog.Uri.preserveParameterTypesCompatibilityFlag) { return values.length > 0 ? values[0] : opt_default }else { return values.length > 0 ? String(values[0]) : opt_default } }; goog.Uri.QueryData.prototype.setValues = function(key, values) { this.remove(key); if(values.length > 0) { this.invalidateCache_(); this.keyMap_.set(this.getKeyName_(key), goog.array.clone(values)); this.count_ += values.length } }; goog.Uri.QueryData.prototype.toString = function() { if(this.encodedQuery_) { return this.encodedQuery_ } if(!this.keyMap_) { return"" } var sb = []; var keys = this.keyMap_.getKeys(); for(var i = 0;i < keys.length;i++) { var key = keys[i]; var encodedKey = goog.string.urlEncode(key); var val = this.getValues(key); for(var j = 0;j < val.length;j++) { var param = encodedKey; if(val[j] !== "") { param += "\x3d" + goog.string.urlEncode(val[j]) } sb.push(param) } } return this.encodedQuery_ = sb.join("\x26") }; goog.Uri.QueryData.prototype.toDecodedString = function() { return goog.Uri.decodeOrEmpty_(this.toString()) }; goog.Uri.QueryData.prototype.invalidateCache_ = function() { this.encodedQuery_ = null }; goog.Uri.QueryData.prototype.filterKeys = function(keys) { this.ensureKeyMapInitialized_(); goog.structs.forEach(this.keyMap_, function(value, key, map) { if(!goog.array.contains(keys, key)) { this.remove(key) } }, this); return this }; goog.Uri.QueryData.prototype.clone = function() { var rv = new goog.Uri.QueryData; rv.encodedQuery_ = this.encodedQuery_; if(this.keyMap_) { rv.keyMap_ = this.keyMap_.clone(); rv.count_ = this.count_ } return rv }; goog.Uri.QueryData.prototype.getKeyName_ = function(arg) { var keyName = String(arg); if(this.ignoreCase_) { keyName = keyName.toLowerCase() } return keyName }; goog.Uri.QueryData.prototype.setIgnoreCase = function(ignoreCase) { var resetKeys = ignoreCase && !this.ignoreCase_; if(resetKeys) { this.ensureKeyMapInitialized_(); this.invalidateCache_(); goog.structs.forEach(this.keyMap_, function(value, key) { var lowerCase = key.toLowerCase(); if(key != lowerCase) { this.remove(key); this.setValues(lowerCase, value) } }, this) } this.ignoreCase_ = ignoreCase }; goog.Uri.QueryData.prototype.extend = function(var_args) { for(var i = 0;i < arguments.length;i++) { var data = arguments[i]; goog.structs.forEach(data, function(value, key) { this.add(key, value) }, this) } }; goog.provide("goog.async.AnimationDelay"); goog.require("goog.Disposable"); goog.require("goog.events"); goog.require("goog.functions"); goog.async.AnimationDelay = function(listener, opt_window, opt_handler) { goog.base(this); this.listener_ = listener; this.handler_ = opt_handler; this.win_ = opt_window || window; this.callback_ = goog.bind(this.doAction_, this) }; goog.inherits(goog.async.AnimationDelay, goog.Disposable); goog.async.AnimationDelay.prototype.id_ = null; goog.async.AnimationDelay.prototype.usingListeners_ = false; goog.async.AnimationDelay.TIMEOUT = 20; goog.async.AnimationDelay.MOZ_BEFORE_PAINT_EVENT_ = "MozBeforePaint"; goog.async.AnimationDelay.prototype.start = function() { this.stop(); this.usingListeners_ = false; var raf = this.getRaf_(); var cancelRaf = this.getCancelRaf_(); if(raf && !cancelRaf && this.win_.mozRequestAnimationFrame) { this.id_ = goog.events.listen(this.win_, goog.async.AnimationDelay.MOZ_BEFORE_PAINT_EVENT_, this.callback_); this.win_.mozRequestAnimationFrame(null); this.usingListeners_ = true }else { if(raf && cancelRaf) { this.id_ = raf.call(this.win_, this.callback_) }else { this.id_ = this.win_.setTimeout(goog.functions.lock(this.callback_), goog.async.AnimationDelay.TIMEOUT) } } }; goog.async.AnimationDelay.prototype.stop = function() { if(this.isActive()) { var raf = this.getRaf_(); var cancelRaf = this.getCancelRaf_(); if(raf && !cancelRaf && this.win_.mozRequestAnimationFrame) { goog.events.unlistenByKey(this.id_) }else { if(raf && cancelRaf) { cancelRaf.call(this.win_, (this.id_)) }else { this.win_.clearTimeout((this.id_)) } } } this.id_ = null }; goog.async.AnimationDelay.prototype.fire = function() { this.stop(); this.doAction_() }; goog.async.AnimationDelay.prototype.fireIfActive = function() { if(this.isActive()) { this.fire() } }; goog.async.AnimationDelay.prototype.isActive = function() { return this.id_ != null }; goog.async.AnimationDelay.prototype.doAction_ = function() { if(this.usingListeners_ && this.id_) { goog.events.unlistenByKey(this.id_) } this.id_ = null; this.listener_.call(this.handler_, goog.now()) }; goog.async.AnimationDelay.prototype.disposeInternal = function() { this.stop(); goog.base(this, "disposeInternal") }; goog.async.AnimationDelay.prototype.getRaf_ = function() { var win = this.win_; return win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || null }; goog.async.AnimationDelay.prototype.getCancelRaf_ = function() { var win = this.win_; return win.cancelRequestAnimationFrame || win.webkitCancelRequestAnimationFrame || win.mozCancelRequestAnimationFrame || win.oCancelRequestAnimationFrame || win.msCancelRequestAnimationFrame || null }; goog.provide("goog.Timer"); goog.require("goog.events.EventTarget"); goog.Timer = function(opt_interval, opt_timerObject) { goog.events.EventTarget.call(this); this.interval_ = opt_interval || 1; this.timerObject_ = opt_timerObject || goog.Timer.defaultTimerObject; this.boundTick_ = goog.bind(this.tick_, this); this.last_ = goog.now() }; goog.inherits(goog.Timer, goog.events.EventTarget); goog.Timer.MAX_TIMEOUT_ = 2147483647; goog.Timer.prototype.enabled = false; goog.Timer.defaultTimerObject = goog.global; goog.Timer.intervalScale = 0.8; goog.Timer.prototype.timer_ = null; goog.Timer.prototype.getInterval = function() { return this.interval_ }; goog.Timer.prototype.setInterval = function(interval) { this.interval_ = interval; if(this.timer_ && this.enabled) { this.stop(); this.start() }else { if(this.timer_) { this.stop() } } }; goog.Timer.prototype.tick_ = function() { if(this.enabled) { var elapsed = goog.now() - this.last_; if(elapsed > 0 && elapsed < this.interval_ * goog.Timer.intervalScale) { this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_ - elapsed); return } if(this.timer_) { this.timerObject_.clearTimeout(this.timer_); this.timer_ = null } this.dispatchTick(); if(this.enabled) { this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_); this.last_ = goog.now() } } }; goog.Timer.prototype.dispatchTick = function() { this.dispatchEvent(goog.Timer.TICK) }; goog.Timer.prototype.start = function() { this.enabled = true; if(!this.timer_) { this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_); this.last_ = goog.now() } }; goog.Timer.prototype.stop = function() { this.enabled = false; if(this.timer_) { this.timerObject_.clearTimeout(this.timer_); this.timer_ = null } }; goog.Timer.prototype.disposeInternal = function() { goog.Timer.superClass_.disposeInternal.call(this); this.stop(); delete this.timerObject_ }; goog.Timer.TICK = "tick"; goog.Timer.callOnce = function(listener, opt_delay, opt_handler) { if(goog.isFunction(listener)) { if(opt_handler) { listener = goog.bind(listener, opt_handler) } }else { if(listener && typeof listener.handleEvent == "function") { listener = goog.bind(listener.handleEvent, listener) }else { throw Error("Invalid listener argument"); } } if(opt_delay > goog.Timer.MAX_TIMEOUT_) { return-1 }else { return goog.Timer.defaultTimerObject.setTimeout(listener, opt_delay || 0) } }; goog.Timer.clear = function(timerId) { goog.Timer.defaultTimerObject.clearTimeout(timerId) }; goog.provide("goog.Delay"); goog.provide("goog.async.Delay"); goog.require("goog.Disposable"); goog.require("goog.Timer"); goog.async.Delay = function(listener, opt_interval, opt_handler) { goog.Disposable.call(this); this.listener_ = listener; this.interval_ = opt_interval || 0; this.handler_ = opt_handler; this.callback_ = goog.bind(this.doAction_, this) }; goog.inherits(goog.async.Delay, goog.Disposable); goog.Delay = goog.async.Delay; goog.async.Delay.prototype.id_ = 0; goog.async.Delay.prototype.disposeInternal = function() { goog.async.Delay.superClass_.disposeInternal.call(this); this.stop(); delete this.listener_; delete this.handler_ }; goog.async.Delay.prototype.start = function(opt_interval) { this.stop(); this.id_ = goog.Timer.callOnce(this.callback_, goog.isDef(opt_interval) ? opt_interval : this.interval_) }; goog.async.Delay.prototype.stop = function() { if(this.isActive()) { goog.Timer.clear(this.id_) } this.id_ = 0 }; goog.async.Delay.prototype.fire = function() { this.stop(); this.doAction_() }; goog.async.Delay.prototype.fireIfActive = function() { if(this.isActive()) { this.fire() } }; goog.async.Delay.prototype.isActive = function() { return this.id_ != 0 }; goog.async.Delay.prototype.doAction_ = function() { this.id_ = 0; if(this.listener_) { this.listener_.call(this.handler_) } }; goog.provide("goog.structs.Collection"); goog.structs.Collection = function() { }; goog.structs.Collection.prototype.add; goog.structs.Collection.prototype.remove; goog.structs.Collection.prototype.contains; goog.structs.Collection.prototype.getCount; goog.provide("goog.structs.Set"); goog.require("goog.structs"); goog.require("goog.structs.Collection"); goog.require("goog.structs.Map"); goog.structs.Set = function(opt_values) { this.map_ = new goog.structs.Map; if(opt_values) { this.addAll(opt_values) } }; goog.structs.Set.getKey_ = function(val) { var type = typeof val; if(type == "object" && val || type == "function") { return"o" + goog.getUid((val)) }else { return type.substr(0, 1) + val } }; goog.structs.Set.prototype.getCount = function() { return this.map_.getCount() }; goog.structs.Set.prototype.add = function(element) { this.map_.set(goog.structs.Set.getKey_(element), element) }; goog.structs.Set.prototype.addAll = function(col) { var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { this.add(values[i]) } }; goog.structs.Set.prototype.removeAll = function(col) { var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { this.remove(values[i]) } }; goog.structs.Set.prototype.remove = function(element) { return this.map_.remove(goog.structs.Set.getKey_(element)) }; goog.structs.Set.prototype.clear = function() { this.map_.clear() }; goog.structs.Set.prototype.isEmpty = function() { return this.map_.isEmpty() }; goog.structs.Set.prototype.contains = function(element) { return this.map_.containsKey(goog.structs.Set.getKey_(element)) }; goog.structs.Set.prototype.containsAll = function(col) { return goog.structs.every(col, this.contains, this) }; goog.structs.Set.prototype.intersection = function(col) { var result = new goog.structs.Set; var values = goog.structs.getValues(col); for(var i = 0;i < values.length;i++) { var value = values[i]; if(this.contains(value)) { result.add(value) } } return result }; goog.structs.Set.prototype.difference = function(col) { var result = this.clone(); result.removeAll(col); return result }; goog.structs.Set.prototype.getValues = function() { return this.map_.getValues() }; goog.structs.Set.prototype.clone = function() { return new goog.structs.Set(this) }; goog.structs.Set.prototype.equals = function(col) { return this.getCount() == goog.structs.getCount(col) && this.isSubsetOf(col) }; goog.structs.Set.prototype.isSubsetOf = function(col) { var colCount = goog.structs.getCount(col); if(this.getCount() > colCount) { return false } if(!(col instanceof goog.structs.Set) && colCount > 5) { col = new goog.structs.Set(col) } return goog.structs.every(this, function(value) { return goog.structs.contains(col, value) }) }; goog.structs.Set.prototype.__iterator__ = function(opt_keys) { return this.map_.__iterator__(false) }; goog.provide("goog.debug"); goog.require("goog.array"); goog.require("goog.string"); goog.require("goog.structs.Set"); goog.require("goog.userAgent"); goog.define("goog.debug.LOGGING_ENABLED", goog.DEBUG); goog.debug.catchErrors = function(logFunc, opt_cancel, opt_target) { var target = opt_target || goog.global; var oldErrorHandler = target.onerror; var retVal = !!opt_cancel; if(goog.userAgent.WEBKIT && !goog.userAgent.isVersionOrHigher("535.3")) { retVal = !retVal } target.onerror = function(message, url, line) { if(oldErrorHandler) { oldErrorHandler(message, url, line) } logFunc({message:message, fileName:url, line:line}); return retVal } }; goog.debug.expose = function(obj, opt_showFn) { if(typeof obj == "undefined") { return"undefined" } if(obj == null) { return"NULL" } var str = []; for(var x in obj) { if(!opt_showFn && goog.isFunction(obj[x])) { continue } var s = x + " \x3d "; try { s += obj[x] }catch(e) { s += "*** " + e + " ***" } str.push(s) } return str.join("\n") }; goog.debug.deepExpose = function(obj, opt_showFn) { var previous = new goog.structs.Set; var str = []; var helper = function(obj, space) { var nestspace = space + " "; var indentMultiline = function(str) { return str.replace(/\n/g, "\n" + space) }; try { if(!goog.isDef(obj)) { str.push("undefined") }else { if(goog.isNull(obj)) { str.push("NULL") }else { if(goog.isString(obj)) { str.push('"' + indentMultiline(obj) + '"') }else { if(goog.isFunction(obj)) { str.push(indentMultiline(String(obj))) }else { if(goog.isObject(obj)) { if(previous.contains(obj)) { str.push("*** reference loop detected ***") }else { previous.add(obj); str.push("{"); for(var x in obj) { if(!opt_showFn && goog.isFunction(obj[x])) { continue } str.push("\n"); str.push(nestspace); str.push(x + " \x3d "); helper(obj[x], nestspace) } str.push("\n" + space + "}") } }else { str.push(obj) } } } } } }catch(e) { str.push("*** " + e + " ***") } }; helper(obj, ""); return str.join("") }; goog.debug.exposeArray = function(arr) { var str = []; for(var i = 0;i < arr.length;i++) { if(goog.isArray(arr[i])) { str.push(goog.debug.exposeArray(arr[i])) }else { str.push(arr[i]) } } return"[ " + str.join(", ") + " ]" }; goog.debug.exposeException = function(err, opt_fn) { try { var e = goog.debug.normalizeErrorObject(err); var error = "Message: " + goog.string.htmlEscape(e.message) + '\nUrl: \x3ca href\x3d"view-source:' + e.fileName + '" target\x3d"_new"\x3e' + e.fileName + "\x3c/a\x3e\nLine: " + e.lineNumber + "\n\nBrowser stack:\n" + goog.string.htmlEscape(e.stack + "-\x3e ") + "[end]\n\nJS stack traversal:\n" + goog.string.htmlEscape(goog.debug.getStacktrace(opt_fn) + "-\x3e "); return error }catch(e2) { return"Exception trying to expose exception! You win, we lose. " + e2 } }; goog.debug.normalizeErrorObject = function(err) { var href = goog.getObjectByName("window.location.href"); if(goog.isString(err)) { return{"message":err, "name":"Unknown error", "lineNumber":"Not available", "fileName":href, "stack":"Not available"} } var lineNumber, fileName; var threwError = false; try { lineNumber = err.lineNumber || err.line || "Not available" }catch(e) { lineNumber = "Not available"; threwError = true } try { fileName = err.fileName || err.filename || err.sourceURL || goog.global["$googDebugFname"] || href }catch(e) { fileName = "Not available"; threwError = true } if(threwError || !err.lineNumber || !err.fileName || !err.stack || !err.message || !err.name) { return{"message":err.message || "Not available", "name":err.name || "UnknownError", "lineNumber":lineNumber, "fileName":fileName, "stack":err.stack || "Not available"} } return err }; goog.debug.enhanceError = function(err, opt_message) { var error = typeof err == "string" ? Error(err) : err; if(!error.stack) { error.stack = goog.debug.getStacktrace(arguments.callee.caller) } if(opt_message) { var x = 0; while(error["message" + x]) { ++x } error["message" + x] = String(opt_message) } return error }; goog.debug.getStacktraceSimple = function(opt_depth) { var sb = []; var fn = arguments.callee.caller; var depth = 0; while(fn && (!opt_depth || depth < opt_depth)) { sb.push(goog.debug.getFunctionName(fn)); sb.push("()\n"); try { fn = fn.caller }catch(e) { sb.push("[exception trying to get caller]\n"); break } depth++; if(depth >= goog.debug.MAX_STACK_DEPTH) { sb.push("[...long stack...]"); break } } if(opt_depth && depth >= opt_depth) { sb.push("[...reached max depth limit...]") }else { sb.push("[end]") } return sb.join("") }; goog.debug.MAX_STACK_DEPTH = 50; goog.debug.getStacktrace = function(opt_fn) { return goog.debug.getStacktraceHelper_(opt_fn || arguments.callee.caller, []) }; goog.debug.getStacktraceHelper_ = function(fn, visited) { var sb = []; if(goog.array.contains(visited, fn)) { sb.push("[...circular reference...]") }else { if(fn && visited.length < goog.debug.MAX_STACK_DEPTH) { sb.push(goog.debug.getFunctionName(fn) + "("); var args = fn.arguments; for(var i = 0;i < args.length;i++) { if(i > 0) { sb.push(", ") } var argDesc; var arg = args[i]; switch(typeof arg) { case "object": argDesc = arg ? "object" : "null"; break; case "string": argDesc = arg; break; case "number": argDesc = String(arg); break; case "boolean": argDesc = arg ? "true" : "false"; break; case "function": argDesc = goog.debug.getFunctionName(arg); argDesc = argDesc ? argDesc : "[fn]"; break; case "undefined": ; default: argDesc = typeof arg; break } if(argDesc.length > 40) { argDesc = argDesc.substr(0, 40) + "..." } sb.push(argDesc) } visited.push(fn); sb.push(")\n"); try { sb.push(goog.debug.getStacktraceHelper_(fn.caller, visited)) }catch(e) { sb.push("[exception trying to get caller]\n") } }else { if(fn) { sb.push("[...long stack...]") }else { sb.push("[end]") } } } return sb.join("") }; goog.debug.setFunctionResolver = function(resolver) { goog.debug.fnNameResolver_ = resolver }; goog.debug.getFunctionName = function(fn) { if(goog.debug.fnNameCache_[fn]) { return goog.debug.fnNameCache_[fn] } if(goog.debug.fnNameResolver_) { var name = goog.debug.fnNameResolver_(fn); if(name) { goog.debug.fnNameCache_[fn] = name; return name } } var functionSource = String(fn); if(!goog.debug.fnNameCache_[functionSource]) { var matches = /function ([^\(]+)/.exec(functionSource); if(matches) { var method = matches[1]; goog.debug.fnNameCache_[functionSource] = method }else { goog.debug.fnNameCache_[functionSource] = "[Anonymous]" } } return goog.debug.fnNameCache_[functionSource] }; goog.debug.makeWhitespaceVisible = function(string) { return string.replace(/ /g, "[_]").replace(/\f/g, "[f]").replace(/\n/g, "[n]\n").replace(/\r/g, "[r]").replace(/\t/g, "[t]") }; goog.debug.fnNameCache_ = {}; goog.debug.fnNameResolver_; goog.provide("goog.debug.LogRecord"); goog.debug.LogRecord = function(level, msg, loggerName, opt_time, opt_sequenceNumber) { this.reset(level, msg, loggerName, opt_time, opt_sequenceNumber) }; goog.debug.LogRecord.prototype.time_; goog.debug.LogRecord.prototype.level_; goog.debug.LogRecord.prototype.msg_; goog.debug.LogRecord.prototype.loggerName_; goog.debug.LogRecord.prototype.sequenceNumber_ = 0; goog.debug.LogRecord.prototype.exception_ = null; goog.debug.LogRecord.prototype.exceptionText_ = null; goog.define("goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS", true); goog.debug.LogRecord.nextSequenceNumber_ = 0; goog.debug.LogRecord.prototype.reset = function(level, msg, loggerName, opt_time, opt_sequenceNumber) { if(goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS) { this.sequenceNumber_ = typeof opt_sequenceNumber == "number" ? opt_sequenceNumber : goog.debug.LogRecord.nextSequenceNumber_++ } this.time_ = opt_time || goog.now(); this.level_ = level; this.msg_ = msg; this.loggerName_ = loggerName; delete this.exception_; delete this.exceptionText_ }; goog.debug.LogRecord.prototype.getLoggerName = function() { return this.loggerName_ }; goog.debug.LogRecord.prototype.getException = function() { return this.exception_ }; goog.debug.LogRecord.prototype.setException = function(exception) { this.exception_ = exception }; goog.debug.LogRecord.prototype.getExceptionText = function() { return this.exceptionText_ }; goog.debug.LogRecord.prototype.setExceptionText = function(text) { this.exceptionText_ = text }; goog.debug.LogRecord.prototype.setLoggerName = function(loggerName) { this.loggerName_ = loggerName }; goog.debug.LogRecord.prototype.getLevel = function() { return this.level_ }; goog.debug.LogRecord.prototype.setLevel = function(level) { this.level_ = level }; goog.debug.LogRecord.prototype.getMessage = function() { return this.msg_ }; goog.debug.LogRecord.prototype.setMessage = function(msg) { this.msg_ = msg }; goog.debug.LogRecord.prototype.getMillis = function() { return this.time_ }; goog.debug.LogRecord.prototype.setMillis = function(time) { this.time_ = time }; goog.debug.LogRecord.prototype.getSequenceNumber = function() { return this.sequenceNumber_ }; goog.provide("goog.debug.LogBuffer"); goog.require("goog.asserts"); goog.require("goog.debug.LogRecord"); goog.debug.LogBuffer = function() { goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(), "Cannot use goog.debug.LogBuffer without defining " + "goog.debug.LogBuffer.CAPACITY."); this.clear() }; goog.debug.LogBuffer.getInstance = function() { if(!goog.debug.LogBuffer.instance_) { goog.debug.LogBuffer.instance_ = new goog.debug.LogBuffer } return goog.debug.LogBuffer.instance_ }; goog.define("goog.debug.LogBuffer.CAPACITY", 0); goog.debug.LogBuffer.prototype.buffer_; goog.debug.LogBuffer.prototype.curIndex_; goog.debug.LogBuffer.prototype.isFull_; goog.debug.LogBuffer.prototype.addRecord = function(level, msg, loggerName) { var curIndex = (this.curIndex_ + 1) % goog.debug.LogBuffer.CAPACITY; this.curIndex_ = curIndex; if(this.isFull_) { var ret = this.buffer_[curIndex]; ret.reset(level, msg, loggerName); return ret } this.isFull_ = curIndex == goog.debug.LogBuffer.CAPACITY - 1; return this.buffer_[curIndex] = new goog.debug.LogRecord(level, msg, loggerName) }; goog.debug.LogBuffer.isBufferingEnabled = function() { return goog.debug.LogBuffer.CAPACITY > 0 }; goog.debug.LogBuffer.prototype.clear = function() { this.buffer_ = new Array(goog.debug.LogBuffer.CAPACITY); this.curIndex_ = -1; this.isFull_ = false }; goog.debug.LogBuffer.prototype.forEachRecord = function(func) { var buffer = this.buffer_; if(!buffer[0]) { return } var curIndex = this.curIndex_; var i = this.isFull_ ? curIndex : -1; do { i = (i + 1) % goog.debug.LogBuffer.CAPACITY; func((buffer[i])) }while(i != curIndex) }; goog.provide("goog.debug.LogManager"); goog.provide("goog.debug.Logger"); goog.provide("goog.debug.Logger.Level"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.debug"); goog.require("goog.debug.LogBuffer"); goog.require("goog.debug.LogRecord"); goog.debug.Logger = function(name) { this.name_ = name }; goog.debug.Logger.prototype.parent_ = null; goog.debug.Logger.prototype.level_ = null; goog.debug.Logger.prototype.children_ = null; goog.debug.Logger.prototype.handlers_ = null; goog.define("goog.debug.Logger.ENABLE_HIERARCHY", true); if(!goog.debug.Logger.ENABLE_HIERARCHY) { goog.debug.Logger.rootHandlers_ = []; goog.debug.Logger.rootLevel_ } goog.debug.Logger.Level = function(name, value) { this.name = name; this.value = value }; goog.debug.Logger.Level.prototype.toString = function() { return this.name }; goog.debug.Logger.Level.OFF = new goog.debug.Logger.Level("OFF", Infinity); goog.debug.Logger.Level.SHOUT = new goog.debug.Logger.Level("SHOUT", 1200); goog.debug.Logger.Level.SEVERE = new goog.debug.Logger.Level("SEVERE", 1E3); goog.debug.Logger.Level.WARNING = new goog.debug.Logger.Level("WARNING", 900); goog.debug.Logger.Level.INFO = new goog.debug.Logger.Level("INFO", 800); goog.debug.Logger.Level.CONFIG = new goog.debug.Logger.Level("CONFIG", 700); goog.debug.Logger.Level.FINE = new goog.debug.Logger.Level("FINE", 500); goog.debug.Logger.Level.FINER = new goog.debug.Logger.Level("FINER", 400); goog.debug.Logger.Level.FINEST = new goog.debug.Logger.Level("FINEST", 300); goog.debug.Logger.Level.ALL = new goog.debug.Logger.Level("ALL", 0); goog.debug.Logger.Level.PREDEFINED_LEVELS = [goog.debug.Logger.Level.OFF, goog.debug.Logger.Level.SHOUT, goog.debug.Logger.Level.SEVERE, goog.debug.Logger.Level.WARNING, goog.debug.Logger.Level.INFO, goog.debug.Logger.Level.CONFIG, goog.debug.Logger.Level.FINE, goog.debug.Logger.Level.FINER, goog.debug.Logger.Level.FINEST, goog.debug.Logger.Level.ALL]; goog.debug.Logger.Level.predefinedLevelsCache_ = null; goog.debug.Logger.Level.createPredefinedLevelsCache_ = function() { goog.debug.Logger.Level.predefinedLevelsCache_ = {}; for(var i = 0, level;level = goog.debug.Logger.Level.PREDEFINED_LEVELS[i];i++) { goog.debug.Logger.Level.predefinedLevelsCache_[level.value] = level; goog.debug.Logger.Level.predefinedLevelsCache_[level.name] = level } }; goog.debug.Logger.Level.getPredefinedLevel = function(name) { if(!goog.debug.Logger.Level.predefinedLevelsCache_) { goog.debug.Logger.Level.createPredefinedLevelsCache_() } return goog.debug.Logger.Level.predefinedLevelsCache_[name] || null }; goog.debug.Logger.Level.getPredefinedLevelByValue = function(value) { if(!goog.debug.Logger.Level.predefinedLevelsCache_) { goog.debug.Logger.Level.createPredefinedLevelsCache_() } if(value in goog.debug.Logger.Level.predefinedLevelsCache_) { return goog.debug.Logger.Level.predefinedLevelsCache_[value] } for(var i = 0;i < goog.debug.Logger.Level.PREDEFINED_LEVELS.length;++i) { var level = goog.debug.Logger.Level.PREDEFINED_LEVELS[i]; if(level.value <= value) { return level } } return null }; goog.debug.Logger.getLogger = function(name) { return goog.debug.LogManager.getLogger(name) }; goog.debug.Logger.logToProfilers = function(msg) { if(goog.global["console"]) { if(goog.global["console"]["timeStamp"]) { goog.global["console"]["timeStamp"](msg) }else { if(goog.global["console"]["markTimeline"]) { goog.global["console"]["markTimeline"](msg) } } } if(goog.global["msWriteProfilerMark"]) { goog.global["msWriteProfilerMark"](msg) } }; goog.debug.Logger.prototype.getName = function() { return this.name_ }; goog.debug.Logger.prototype.addHandler = function(handler) { if(goog.debug.LOGGING_ENABLED) { if(goog.debug.Logger.ENABLE_HIERARCHY) { if(!this.handlers_) { this.handlers_ = [] } this.handlers_.push(handler) }else { goog.asserts.assert(!this.name_, "Cannot call addHandler on a non-root logger when " + "goog.debug.Logger.ENABLE_HIERARCHY is false."); goog.debug.Logger.rootHandlers_.push(handler) } } }; goog.debug.Logger.prototype.removeHandler = function(handler) { if(goog.debug.LOGGING_ENABLED) { var handlers = goog.debug.Logger.ENABLE_HIERARCHY ? this.handlers_ : goog.debug.Logger.rootHandlers_; return!!handlers && goog.array.remove(handlers, handler) }else { return false } }; goog.debug.Logger.prototype.getParent = function() { return this.parent_ }; goog.debug.Logger.prototype.getChildren = function() { if(!this.children_) { this.children_ = {} } return this.children_ }; goog.debug.Logger.prototype.setLevel = function(level) { if(goog.debug.LOGGING_ENABLED) { if(goog.debug.Logger.ENABLE_HIERARCHY) { this.level_ = level }else { goog.asserts.assert(!this.name_, "Cannot call setLevel() on a non-root logger when " + "goog.debug.Logger.ENABLE_HIERARCHY is false."); goog.debug.Logger.rootLevel_ = level } } }; goog.debug.Logger.prototype.getLevel = function() { return goog.debug.LOGGING_ENABLED ? this.level_ : goog.debug.Logger.Level.OFF }; goog.debug.Logger.prototype.getEffectiveLevel = function() { if(!goog.debug.LOGGING_ENABLED) { return goog.debug.Logger.Level.OFF } if(!goog.debug.Logger.ENABLE_HIERARCHY) { return goog.debug.Logger.rootLevel_ } if(this.level_) { return this.level_ } if(this.parent_) { return this.parent_.getEffectiveLevel() } goog.asserts.fail("Root logger has no level set."); return null }; goog.debug.Logger.prototype.isLoggable = function(level) { return goog.debug.LOGGING_ENABLED && level.value >= this.getEffectiveLevel().value }; goog.debug.Logger.prototype.log = function(level, msg, opt_exception) { if(goog.debug.LOGGING_ENABLED && this.isLoggable(level)) { this.doLogRecord_(this.getLogRecord(level, msg, opt_exception)) } }; goog.debug.Logger.prototype.getLogRecord = function(level, msg, opt_exception) { if(goog.debug.LogBuffer.isBufferingEnabled()) { var logRecord = goog.debug.LogBuffer.getInstance().addRecord(level, msg, this.name_) }else { logRecord = new goog.debug.LogRecord(level, String(msg), this.name_) } if(opt_exception) { logRecord.setException(opt_exception); logRecord.setExceptionText(goog.debug.exposeException(opt_exception, arguments.callee.caller)) } return logRecord }; goog.debug.Logger.prototype.shout = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.SHOUT, msg, opt_exception) } }; goog.debug.Logger.prototype.severe = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.SEVERE, msg, opt_exception) } }; goog.debug.Logger.prototype.warning = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.WARNING, msg, opt_exception) } }; goog.debug.Logger.prototype.info = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.INFO, msg, opt_exception) } }; goog.debug.Logger.prototype.config = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.CONFIG, msg, opt_exception) } }; goog.debug.Logger.prototype.fine = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.FINE, msg, opt_exception) } }; goog.debug.Logger.prototype.finer = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.FINER, msg, opt_exception) } }; goog.debug.Logger.prototype.finest = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.FINEST, msg, opt_exception) } }; goog.debug.Logger.prototype.logRecord = function(logRecord) { if(goog.debug.LOGGING_ENABLED && this.isLoggable(logRecord.getLevel())) { this.doLogRecord_(logRecord) } }; goog.debug.Logger.prototype.doLogRecord_ = function(logRecord) { goog.debug.Logger.logToProfilers("log:" + logRecord.getMessage()); if(goog.debug.Logger.ENABLE_HIERARCHY) { var target = this; while(target) { target.callPublish_(logRecord); target = target.getParent() } }else { for(var i = 0, handler;handler = goog.debug.Logger.rootHandlers_[i++];) { handler(logRecord) } } }; goog.debug.Logger.prototype.callPublish_ = function(logRecord) { if(this.handlers_) { for(var i = 0, handler;handler = this.handlers_[i];i++) { handler(logRecord) } } }; goog.debug.Logger.prototype.setParent_ = function(parent) { this.parent_ = parent }; goog.debug.Logger.prototype.addChild_ = function(name, logger) { this.getChildren()[name] = logger }; goog.debug.LogManager = {}; goog.debug.LogManager.loggers_ = {}; goog.debug.LogManager.rootLogger_ = null; goog.debug.LogManager.initialize = function() { if(!goog.debug.LogManager.rootLogger_) { goog.debug.LogManager.rootLogger_ = new goog.debug.Logger(""); goog.debug.LogManager.loggers_[""] = goog.debug.LogManager.rootLogger_; goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG) } }; goog.debug.LogManager.getLoggers = function() { return goog.debug.LogManager.loggers_ }; goog.debug.LogManager.getRoot = function() { goog.debug.LogManager.initialize(); return(goog.debug.LogManager.rootLogger_) }; goog.debug.LogManager.getLogger = function(name) { goog.debug.LogManager.initialize(); var ret = goog.debug.LogManager.loggers_[name]; return ret || goog.debug.LogManager.createLogger_(name) }; goog.debug.LogManager.createFunctionForCatchErrors = function(opt_logger) { return function(info) { var logger = opt_logger || goog.debug.LogManager.getRoot(); logger.severe("Error: " + info.message + " (" + info.fileName + " @ Line: " + info.line + ")") } }; goog.debug.LogManager.createLogger_ = function(name) { var logger = new goog.debug.Logger(name); if(goog.debug.Logger.ENABLE_HIERARCHY) { var lastDotIndex = name.lastIndexOf("."); var parentName = name.substr(0, lastDotIndex); var leafName = name.substr(lastDotIndex + 1); var parentLogger = goog.debug.LogManager.getLogger(parentName); parentLogger.addChild_(leafName, logger); logger.setParent_(parentLogger) } goog.debug.LogManager.loggers_[name] = logger; return logger }; goog.provide("goog.debug.RelativeTimeProvider"); goog.debug.RelativeTimeProvider = function() { this.relativeTimeStart_ = goog.now() }; goog.debug.RelativeTimeProvider.defaultInstance_ = new goog.debug.RelativeTimeProvider; goog.debug.RelativeTimeProvider.prototype.set = function(timeStamp) { this.relativeTimeStart_ = timeStamp }; goog.debug.RelativeTimeProvider.prototype.reset = function() { this.set(goog.now()) }; goog.debug.RelativeTimeProvider.prototype.get = function() { return this.relativeTimeStart_ }; goog.debug.RelativeTimeProvider.getDefaultInstance = function() { return goog.debug.RelativeTimeProvider.defaultInstance_ }; goog.provide("goog.debug.Formatter"); goog.provide("goog.debug.HtmlFormatter"); goog.provide("goog.debug.TextFormatter"); goog.require("goog.debug.RelativeTimeProvider"); goog.require("goog.string"); goog.debug.Formatter = function(opt_prefix) { this.prefix_ = opt_prefix || ""; this.startTimeProvider_ = goog.debug.RelativeTimeProvider.getDefaultInstance() }; goog.debug.Formatter.prototype.showAbsoluteTime = true; goog.debug.Formatter.prototype.showRelativeTime = true; goog.debug.Formatter.prototype.showLoggerName = true; goog.debug.Formatter.prototype.showExceptionText = false; goog.debug.Formatter.prototype.showSeverityLevel = false; goog.debug.Formatter.prototype.formatRecord = goog.abstractMethod; goog.debug.Formatter.prototype.setStartTimeProvider = function(provider) { this.startTimeProvider_ = provider }; goog.debug.Formatter.prototype.getStartTimeProvider = function() { return this.startTimeProvider_ }; goog.debug.Formatter.prototype.resetRelativeTimeStart = function() { this.startTimeProvider_.reset() }; goog.debug.Formatter.getDateTimeStamp_ = function(logRecord) { var time = new Date(logRecord.getMillis()); return goog.debug.Formatter.getTwoDigitString_(time.getFullYear() - 2E3) + goog.debug.Formatter.getTwoDigitString_(time.getMonth() + 1) + goog.debug.Formatter.getTwoDigitString_(time.getDate()) + " " + goog.debug.Formatter.getTwoDigitString_(time.getHours()) + ":" + goog.debug.Formatter.getTwoDigitString_(time.getMinutes()) + ":" + goog.debug.Formatter.getTwoDigitString_(time.getSeconds()) + "." + goog.debug.Formatter.getTwoDigitString_(Math.floor(time.getMilliseconds() / 10)) }; goog.debug.Formatter.getTwoDigitString_ = function(n) { if(n < 10) { return"0" + n } return String(n) }; goog.debug.Formatter.getRelativeTime_ = function(logRecord, relativeTimeStart) { var ms = logRecord.getMillis() - relativeTimeStart; var sec = ms / 1E3; var str = sec.toFixed(3); var spacesToPrepend = 0; if(sec < 1) { spacesToPrepend = 2 }else { while(sec < 100) { spacesToPrepend++; sec *= 10 } } while(spacesToPrepend-- > 0) { str = " " + str } return str }; goog.debug.HtmlFormatter = function(opt_prefix) { goog.debug.Formatter.call(this, opt_prefix) }; goog.inherits(goog.debug.HtmlFormatter, goog.debug.Formatter); goog.debug.HtmlFormatter.prototype.showExceptionText = true; goog.debug.HtmlFormatter.prototype.formatRecord = function(logRecord) { var className; switch(logRecord.getLevel().value) { case goog.debug.Logger.Level.SHOUT.value: className = "dbg-sh"; break; case goog.debug.Logger.Level.SEVERE.value: className = "dbg-sev"; break; case goog.debug.Logger.Level.WARNING.value: className = "dbg-w"; break; case goog.debug.Logger.Level.INFO.value: className = "dbg-i"; break; case goog.debug.Logger.Level.FINE.value: ; default: className = "dbg-f"; break } var sb = []; sb.push(this.prefix_, " "); if(this.showAbsoluteTime) { sb.push("[", goog.debug.Formatter.getDateTimeStamp_(logRecord), "] ") } if(this.showRelativeTime) { sb.push("[", goog.string.whitespaceEscape(goog.debug.Formatter.getRelativeTime_(logRecord, this.startTimeProvider_.get())), "s] ") } if(this.showLoggerName) { sb.push("[", goog.string.htmlEscape(logRecord.getLoggerName()), "] ") } if(this.showSeverityLevel) { sb.push("[", goog.string.htmlEscape(logRecord.getLevel().name), "] ") } sb.push('\x3cspan class\x3d"', className, '"\x3e', goog.string.newLineToBr(goog.string.whitespaceEscape(goog.string.htmlEscape(logRecord.getMessage())))); if(this.showExceptionText && logRecord.getException()) { sb.push("\x3cbr\x3e", goog.string.newLineToBr(goog.string.whitespaceEscape(logRecord.getExceptionText() || ""))) } sb.push("\x3c/span\x3e\x3cbr\x3e"); return sb.join("") }; goog.debug.TextFormatter = function(opt_prefix) { goog.debug.Formatter.call(this, opt_prefix) }; goog.inherits(goog.debug.TextFormatter, goog.debug.Formatter); goog.debug.TextFormatter.prototype.formatRecord = function(logRecord) { var sb = []; sb.push(this.prefix_, " "); if(this.showAbsoluteTime) { sb.push("[", goog.debug.Formatter.getDateTimeStamp_(logRecord), "] ") } if(this.showRelativeTime) { sb.push("[", goog.debug.Formatter.getRelativeTime_(logRecord, this.startTimeProvider_.get()), "s] ") } if(this.showLoggerName) { sb.push("[", logRecord.getLoggerName(), "] ") } if(this.showSeverityLevel) { sb.push("[", logRecord.getLevel().name, "] ") } sb.push(logRecord.getMessage(), "\n"); if(this.showExceptionText && logRecord.getException()) { sb.push(logRecord.getExceptionText(), "\n") } return sb.join("") }; goog.provide("goog.debug.Console"); goog.require("goog.debug.LogManager"); goog.require("goog.debug.Logger.Level"); goog.require("goog.debug.TextFormatter"); goog.debug.Console = function() { this.publishHandler_ = goog.bind(this.addLogRecord, this); this.formatter_ = new goog.debug.TextFormatter; this.formatter_.showAbsoluteTime = false; this.formatter_.showExceptionText = false; this.isCapturing_ = false; this.logBuffer_ = ""; this.filteredLoggers_ = {} }; goog.debug.Console.prototype.getFormatter = function() { return this.formatter_ }; goog.debug.Console.prototype.setCapturing = function(capturing) { if(capturing == this.isCapturing_) { return } var rootLogger = goog.debug.LogManager.getRoot(); if(capturing) { rootLogger.addHandler(this.publishHandler_) }else { rootLogger.removeHandler(this.publishHandler_); this.logBuffer = "" } this.isCapturing_ = capturing }; goog.debug.Console.prototype.addLogRecord = function(logRecord) { if(this.filteredLoggers_[logRecord.getLoggerName()]) { return } var record = this.formatter_.formatRecord(logRecord); var console = goog.debug.Console.console_; if(console) { switch(logRecord.getLevel()) { case goog.debug.Logger.Level.SHOUT: goog.debug.Console.logToConsole_(console, "info", record); break; case goog.debug.Logger.Level.SEVERE: goog.debug.Console.logToConsole_(console, "error", record); break; case goog.debug.Logger.Level.WARNING: goog.debug.Console.logToConsole_(console, "warn", record); break; default: goog.debug.Console.logToConsole_(console, "debug", record); break } }else { if(window.opera) { window.opera["postError"](record) }else { this.logBuffer_ += record } } }; goog.debug.Console.prototype.addFilter = function(loggerName) { this.filteredLoggers_[loggerName] = true }; goog.debug.Console.prototype.removeFilter = function(loggerName) { delete this.filteredLoggers_[loggerName] }; goog.debug.Console.instance = null; goog.debug.Console.console_ = window.console; goog.debug.Console.setConsole = function(console) { goog.debug.Console.console_ = console }; goog.debug.Console.autoInstall = function() { if(!goog.debug.Console.instance) { goog.debug.Console.instance = new goog.debug.Console } if(window.location.href.indexOf("Debug\x3dtrue") != -1) { goog.debug.Console.instance.setCapturing(true) } }; goog.debug.Console.show = function() { alert(goog.debug.Console.instance.logBuffer_) }; goog.debug.Console.logToConsole_ = function(console, fnName, record) { if(console[fnName]) { console[fnName](record) }else { console.log(record) } }; goog.provide("goog.dom.BrowserFeature"); goog.require("goog.userAgent"); goog.dom.BrowserFeature = {CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO && !goog.userAgent.IE || goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9) || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9.1"), CAN_USE_INNER_TEXT:goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), CAN_USE_PARENT_ELEMENT_PROPERTY:goog.userAgent.IE || goog.userAgent.OPERA || goog.userAgent.WEBKIT, INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE}; goog.provide("goog.dom.TagName"); goog.dom.TagName = {A:"A", ABBR:"ABBR", ACRONYM:"ACRONYM", ADDRESS:"ADDRESS", APPLET:"APPLET", AREA:"AREA", ARTICLE:"ARTICLE", ASIDE:"ASIDE", AUDIO:"AUDIO", B:"B", BASE:"BASE", BASEFONT:"BASEFONT", BDI:"BDI", BDO:"BDO", BIG:"BIG", BLOCKQUOTE:"BLOCKQUOTE", BODY:"BODY", BR:"BR", BUTTON:"BUTTON", CANVAS:"CANVAS", CAPTION:"CAPTION", CENTER:"CENTER", CITE:"CITE", CODE:"CODE", COL:"COL", COLGROUP:"COLGROUP", COMMAND:"COMMAND", DATA:"DATA", DATALIST:"DATALIST", DD:"DD", DEL:"DEL", DETAILS:"DETAILS", DFN:"DFN", DIALOG:"DIALOG", DIR:"DIR", DIV:"DIV", DL:"DL", DT:"DT", EM:"EM", EMBED:"EMBED", FIELDSET:"FIELDSET", FIGCAPTION:"FIGCAPTION", FIGURE:"FIGURE", FONT:"FONT", FOOTER:"FOOTER", FORM:"FORM", FRAME:"FRAME", FRAMESET:"FRAMESET", H1:"H1", H2:"H2", H3:"H3", H4:"H4", H5:"H5", H6:"H6", HEAD:"HEAD", HEADER:"HEADER", HGROUP:"HGROUP", HR:"HR", HTML:"HTML", I:"I", IFRAME:"IFRAME", IMG:"IMG", INPUT:"INPUT", INS:"INS", ISINDEX:"ISINDEX", KBD:"KBD", KEYGEN:"KEYGEN", LABEL:"LABEL", LEGEND:"LEGEND", LI:"LI", LINK:"LINK", MAP:"MAP", MARK:"MARK", MATH:"MATH", MENU:"MENU", META:"META", METER:"METER", NAV:"NAV", NOFRAMES:"NOFRAMES", NOSCRIPT:"NOSCRIPT", OBJECT:"OBJECT", OL:"OL", OPTGROUP:"OPTGROUP", OPTION:"OPTION", OUTPUT:"OUTPUT", P:"P", PARAM:"PARAM", PRE:"PRE", PROGRESS:"PROGRESS", Q:"Q", RP:"RP", RT:"RT", RUBY:"RUBY", S:"S", SAMP:"SAMP", SCRIPT:"SCRIPT", SECTION:"SECTION", SELECT:"SELECT", SMALL:"SMALL", SOURCE:"SOURCE", SPAN:"SPAN", STRIKE:"STRIKE", STRONG:"STRONG", STYLE:"STYLE", SUB:"SUB", SUMMARY:"SUMMARY", SUP:"SUP", SVG:"SVG", TABLE:"TABLE", TBODY:"TBODY", TD:"TD", TEXTAREA:"TEXTAREA", TFOOT:"TFOOT", TH:"TH", THEAD:"THEAD", TIME:"TIME", TITLE:"TITLE", TR:"TR", TRACK:"TRACK", TT:"TT", U:"U", UL:"UL", VAR:"VAR", VIDEO:"VIDEO", WBR:"WBR"}; goog.provide("goog.dom.classes"); goog.require("goog.array"); goog.dom.classes.set = function(element, className) { element.className = className }; goog.dom.classes.get = function(element) { var className = element.className; return goog.isString(className) && className.match(/\S+/g) || [] }; goog.dom.classes.add = function(element, var_args) { var classes = goog.dom.classes.get(element); var args = goog.array.slice(arguments, 1); var expectedCount = classes.length + args.length; goog.dom.classes.add_(classes, args); goog.dom.classes.set(element, classes.join(" ")); return classes.length == expectedCount }; goog.dom.classes.remove = function(element, var_args) { var classes = goog.dom.classes.get(element); var args = goog.array.slice(arguments, 1); var newClasses = goog.dom.classes.getDifference_(classes, args); goog.dom.classes.set(element, newClasses.join(" ")); return newClasses.length == classes.length - args.length }; goog.dom.classes.add_ = function(classes, args) { for(var i = 0;i < args.length;i++) { if(!goog.array.contains(classes, args[i])) { classes.push(args[i]) } } }; goog.dom.classes.getDifference_ = function(arr1, arr2) { return goog.array.filter(arr1, function(item) { return!goog.array.contains(arr2, item) }) }; goog.dom.classes.swap = function(element, fromClass, toClass) { var classes = goog.dom.classes.get(element); var removed = false; for(var i = 0;i < classes.length;i++) { if(classes[i] == fromClass) { goog.array.splice(classes, i--, 1); removed = true } } if(removed) { classes.push(toClass); goog.dom.classes.set(element, classes.join(" ")) } return removed }; goog.dom.classes.addRemove = function(element, classesToRemove, classesToAdd) { var classes = goog.dom.classes.get(element); if(goog.isString(classesToRemove)) { goog.array.remove(classes, classesToRemove) }else { if(goog.isArray(classesToRemove)) { classes = goog.dom.classes.getDifference_(classes, classesToRemove) } } if(goog.isString(classesToAdd) && !goog.array.contains(classes, classesToAdd)) { classes.push(classesToAdd) }else { if(goog.isArray(classesToAdd)) { goog.dom.classes.add_(classes, classesToAdd) } } goog.dom.classes.set(element, classes.join(" ")) }; goog.dom.classes.has = function(element, className) { return goog.array.contains(goog.dom.classes.get(element), className) }; goog.dom.classes.enable = function(element, className, enabled) { if(enabled) { goog.dom.classes.add(element, className) }else { goog.dom.classes.remove(element, className) } }; goog.dom.classes.toggle = function(element, className) { var add = !goog.dom.classes.has(element, className); goog.dom.classes.enable(element, className, add); return add }; goog.provide("goog.math.Coordinate"); goog.require("goog.math"); goog.math.Coordinate = function(opt_x, opt_y) { this.x = goog.isDef(opt_x) ? opt_x : 0; this.y = goog.isDef(opt_y) ? opt_y : 0 }; goog.math.Coordinate.prototype.clone = function() { return new goog.math.Coordinate(this.x, this.y) }; if(goog.DEBUG) { goog.math.Coordinate.prototype.toString = function() { return"(" + this.x + ", " + this.y + ")" } } goog.math.Coordinate.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.x == b.x && a.y == b.y }; goog.math.Coordinate.distance = function(a, b) { var dx = a.x - b.x; var dy = a.y - b.y; return Math.sqrt(dx * dx + dy * dy) }; goog.math.Coordinate.magnitude = function(a) { return Math.sqrt(a.x * a.x + a.y * a.y) }; goog.math.Coordinate.azimuth = function(a) { return goog.math.angle(0, 0, a.x, a.y) }; goog.math.Coordinate.squaredDistance = function(a, b) { var dx = a.x - b.x; var dy = a.y - b.y; return dx * dx + dy * dy }; goog.math.Coordinate.difference = function(a, b) { return new goog.math.Coordinate(a.x - b.x, a.y - b.y) }; goog.math.Coordinate.sum = function(a, b) { return new goog.math.Coordinate(a.x + b.x, a.y + b.y) }; goog.math.Coordinate.prototype.ceil = function() { this.x = Math.ceil(this.x); this.y = Math.ceil(this.y); return this }; goog.math.Coordinate.prototype.floor = function() { this.x = Math.floor(this.x); this.y = Math.floor(this.y); return this }; goog.math.Coordinate.prototype.round = function() { this.x = Math.round(this.x); this.y = Math.round(this.y); return this }; goog.math.Coordinate.prototype.translate = function(tx, opt_ty) { if(tx instanceof goog.math.Coordinate) { this.x += tx.x; this.y += tx.y }else { this.x += tx; if(goog.isNumber(opt_ty)) { this.y += opt_ty } } return this }; goog.math.Coordinate.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.x *= sx; this.y *= sy; return this }; goog.provide("goog.math.Size"); goog.math.Size = function(width, height) { this.width = width; this.height = height }; goog.math.Size.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.width == b.width && a.height == b.height }; goog.math.Size.prototype.clone = function() { return new goog.math.Size(this.width, this.height) }; if(goog.DEBUG) { goog.math.Size.prototype.toString = function() { return"(" + this.width + " x " + this.height + ")" } } goog.math.Size.prototype.getLongest = function() { return Math.max(this.width, this.height) }; goog.math.Size.prototype.getShortest = function() { return Math.min(this.width, this.height) }; goog.math.Size.prototype.area = function() { return this.width * this.height }; goog.math.Size.prototype.perimeter = function() { return(this.width + this.height) * 2 }; goog.math.Size.prototype.aspectRatio = function() { return this.width / this.height }; goog.math.Size.prototype.isEmpty = function() { return!this.area() }; goog.math.Size.prototype.ceil = function() { this.width = Math.ceil(this.width); this.height = Math.ceil(this.height); return this }; goog.math.Size.prototype.fitsInside = function(target) { return this.width <= target.width && this.height <= target.height }; goog.math.Size.prototype.floor = function() { this.width = Math.floor(this.width); this.height = Math.floor(this.height); return this }; goog.math.Size.prototype.round = function() { this.width = Math.round(this.width); this.height = Math.round(this.height); return this }; goog.math.Size.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.width *= sx; this.height *= sy; return this }; goog.math.Size.prototype.scaleToFit = function(target) { var s = this.aspectRatio() > target.aspectRatio() ? target.width / this.width : target.height / this.height; return this.scale(s) }; goog.provide("goog.dom"); goog.provide("goog.dom.Appendable"); goog.provide("goog.dom.DomHelper"); goog.provide("goog.dom.NodeType"); goog.require("goog.array"); goog.require("goog.dom.BrowserFeature"); goog.require("goog.dom.TagName"); goog.require("goog.dom.classes"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Size"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.userAgent"); goog.define("goog.dom.ASSUME_QUIRKS_MODE", false); goog.define("goog.dom.ASSUME_STANDARDS_MODE", false); goog.dom.COMPAT_MODE_KNOWN_ = goog.dom.ASSUME_QUIRKS_MODE || goog.dom.ASSUME_STANDARDS_MODE; 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.dom.getDomHelper = function(opt_element) { return opt_element ? new goog.dom.DomHelper(goog.dom.getOwnerDocument(opt_element)) : goog.dom.defaultDomHelper_ || (goog.dom.defaultDomHelper_ = new goog.dom.DomHelper) }; goog.dom.defaultDomHelper_; goog.dom.getDocument = function() { return document }; goog.dom.getElement = function(element) { return goog.isString(element) ? document.getElementById(element) : element }; goog.dom.$ = goog.dom.getElement; goog.dom.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) { return goog.dom.getElementsByTagNameAndClass_(document, opt_tag, opt_class, opt_el) }; goog.dom.getElementsByClass = function(className, opt_el) { var parent = opt_el || document; if(goog.dom.canUseQuerySelector_(parent)) { return parent.querySelectorAll("." + className) }else { if(parent.getElementsByClassName) { return parent.getElementsByClassName(className) } } return goog.dom.getElementsByTagNameAndClass_(document, "*", className, opt_el) }; goog.dom.getElementByClass = function(className, opt_el) { var parent = opt_el || document; var retVal = null; if(goog.dom.canUseQuerySelector_(parent)) { retVal = parent.querySelector("." + className) }else { retVal = goog.dom.getElementsByClass(className, opt_el)[0] } return retVal || null }; goog.dom.canUseQuerySelector_ = function(parent) { return!!(parent.querySelectorAll && parent.querySelector) }; goog.dom.getElementsByTagNameAndClass_ = function(doc, opt_tag, opt_class, opt_el) { var parent = opt_el || doc; var tagName = opt_tag && opt_tag != "*" ? opt_tag.toUpperCase() : ""; if(goog.dom.canUseQuerySelector_(parent) && (tagName || opt_class)) { var query = tagName + (opt_class ? "." + opt_class : ""); return parent.querySelectorAll(query) } if(opt_class && parent.getElementsByClassName) { var els = parent.getElementsByClassName(opt_class); if(tagName) { var arrayLike = {}; var len = 0; for(var i = 0, el;el = els[i];i++) { if(tagName == el.nodeName) { arrayLike[len++] = el } } arrayLike.length = len; return arrayLike }else { return els } } var els = parent.getElementsByTagName(tagName || "*"); if(opt_class) { var arrayLike = {}; var len = 0; for(var i = 0, el;el = els[i];i++) { var className = el.className; if(typeof className.split == "function" && goog.array.contains(className.split(/\s+/), opt_class)) { arrayLike[len++] = el } } arrayLike.length = len; return arrayLike }else { return els } }; goog.dom.$$ = goog.dom.getElementsByTagNameAndClass; goog.dom.setProperties = function(element, properties) { goog.object.forEach(properties, function(val, key) { if(key == "style") { element.style.cssText = val }else { if(key == "class") { element.className = val }else { if(key == "for") { element.htmlFor = val }else { if(key in goog.dom.DIRECT_ATTRIBUTE_MAP_) { element.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[key], val) }else { if(goog.string.startsWith(key, "aria-") || goog.string.startsWith(key, "data-")) { element.setAttribute(key, val) }else { element[key] = val } } } } } }) }; goog.dom.DIRECT_ATTRIBUTE_MAP_ = {"cellpadding":"cellPadding", "cellspacing":"cellSpacing", "colspan":"colSpan", "frameborder":"frameBorder", "height":"height", "maxlength":"maxLength", "role":"role", "rowspan":"rowSpan", "type":"type", "usemap":"useMap", "valign":"vAlign", "width":"width"}; goog.dom.getViewportSize = function(opt_window) { return goog.dom.getViewportSize_(opt_window || window) }; goog.dom.getViewportSize_ = function(win) { var doc = win.document; var el = goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body; return new goog.math.Size(el.clientWidth, el.clientHeight) }; goog.dom.getDocumentHeight = function() { return goog.dom.getDocumentHeight_(window) }; goog.dom.getDocumentHeight_ = function(win) { var doc = win.document; var height = 0; if(doc) { var vh = goog.dom.getViewportSize_(win).height; var body = doc.body; var docEl = doc.documentElement; if(goog.dom.isCss1CompatMode_(doc) && docEl.scrollHeight) { height = docEl.scrollHeight != vh ? docEl.scrollHeight : docEl.offsetHeight }else { var sh = docEl.scrollHeight; var oh = docEl.offsetHeight; if(docEl.clientHeight != oh) { sh = body.scrollHeight; oh = body.offsetHeight } if(sh > vh) { height = sh > oh ? sh : oh }else { height = sh < oh ? sh : oh } } } return height }; goog.dom.getPageScroll = function(opt_window) { var win = opt_window || goog.global || window; return goog.dom.getDomHelper(win.document).getDocumentScroll() }; goog.dom.getDocumentScroll = function() { return goog.dom.getDocumentScroll_(document) }; goog.dom.getDocumentScroll_ = function(doc) { var el = goog.dom.getDocumentScrollElement_(doc); var win = goog.dom.getWindow_(doc); if(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("10") && win.pageYOffset != el.scrollTop) { return new goog.math.Coordinate(el.scrollLeft, el.scrollTop) } return new goog.math.Coordinate(win.pageXOffset || el.scrollLeft, win.pageYOffset || el.scrollTop) }; goog.dom.getDocumentScrollElement = function() { return goog.dom.getDocumentScrollElement_(document) }; goog.dom.getDocumentScrollElement_ = function(doc) { return!goog.userAgent.WEBKIT && goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body }; goog.dom.getWindow = function(opt_doc) { return opt_doc ? goog.dom.getWindow_(opt_doc) : window }; goog.dom.getWindow_ = function(doc) { return doc.parentWindow || doc.defaultView }; goog.dom.createDom = function(tagName, opt_attributes, var_args) { return goog.dom.createDom_(document, arguments) }; goog.dom.createDom_ = function(doc, args) { var tagName = args[0]; var attributes = args[1]; if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES && attributes && (attributes.name || attributes.type)) { var tagNameArr = ["\x3c", tagName]; if(attributes.name) { tagNameArr.push(' name\x3d"', goog.string.htmlEscape(attributes.name), '"') } if(attributes.type) { tagNameArr.push(' type\x3d"', goog.string.htmlEscape(attributes.type), '"'); var clone = {}; goog.object.extend(clone, attributes); delete clone["type"]; attributes = clone } tagNameArr.push("\x3e"); tagName = tagNameArr.join("") } var element = doc.createElement(tagName); if(attributes) { if(goog.isString(attributes)) { element.className = attributes }else { if(goog.isArray(attributes)) { goog.dom.classes.add.apply(null, [element].concat(attributes)) }else { goog.dom.setProperties(element, attributes) } } } if(args.length > 2) { goog.dom.append_(doc, element, args, 2) } return element }; goog.dom.append_ = function(doc, parent, args, startIndex) { function childHandler(child) { if(child) { parent.appendChild(goog.isString(child) ? doc.createTextNode(child) : child) } } for(var i = startIndex;i < args.length;i++) { var arg = args[i]; if(goog.isArrayLike(arg) && !goog.dom.isNodeLike(arg)) { goog.array.forEach(goog.dom.isNodeList(arg) ? goog.array.toArray(arg) : arg, childHandler) }else { childHandler(arg) } } }; goog.dom.$dom = goog.dom.createDom; goog.dom.createElement = function(name) { return document.createElement(name) }; goog.dom.createTextNode = function(content) { return document.createTextNode(String(content)) }; goog.dom.createTable = function(rows, columns, opt_fillWithNbsp) { return goog.dom.createTable_(document, rows, columns, !!opt_fillWithNbsp) }; goog.dom.createTable_ = function(doc, rows, columns, fillWithNbsp) { var rowHtml = ["\x3ctr\x3e"]; for(var i = 0;i < columns;i++) { rowHtml.push(fillWithNbsp ? "\x3ctd\x3e\x26nbsp;\x3c/td\x3e" : "\x3ctd\x3e\x3c/td\x3e") } rowHtml.push("\x3c/tr\x3e"); rowHtml = rowHtml.join(""); var totalHtml = ["\x3ctable\x3e"]; for(i = 0;i < rows;i++) { totalHtml.push(rowHtml) } totalHtml.push("\x3c/table\x3e"); var elem = doc.createElement(goog.dom.TagName.DIV); elem.innerHTML = totalHtml.join(""); return(elem.removeChild(elem.firstChild)) }; goog.dom.htmlToDocumentFragment = function(htmlString) { return goog.dom.htmlToDocumentFragment_(document, htmlString) }; goog.dom.htmlToDocumentFragment_ = function(doc, htmlString) { var tempDiv = doc.createElement("div"); if(goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT) { tempDiv.innerHTML = "\x3cbr\x3e" + htmlString; tempDiv.removeChild(tempDiv.firstChild) }else { tempDiv.innerHTML = htmlString } if(tempDiv.childNodes.length == 1) { return(tempDiv.removeChild(tempDiv.firstChild)) }else { var fragment = doc.createDocumentFragment(); while(tempDiv.firstChild) { fragment.appendChild(tempDiv.firstChild) } return fragment } }; goog.dom.getCompatMode = function() { return goog.dom.isCss1CompatMode() ? "CSS1Compat" : "BackCompat" }; goog.dom.isCss1CompatMode = function() { return goog.dom.isCss1CompatMode_(document) }; goog.dom.isCss1CompatMode_ = function(doc) { if(goog.dom.COMPAT_MODE_KNOWN_) { return goog.dom.ASSUME_STANDARDS_MODE } return doc.compatMode == "CSS1Compat" }; goog.dom.canHaveChildren = function(node) { if(node.nodeType != goog.dom.NodeType.ELEMENT) { return false } switch(node.tagName) { case goog.dom.TagName.APPLET: ; case goog.dom.TagName.AREA: ; case goog.dom.TagName.BASE: ; case goog.dom.TagName.BR: ; case goog.dom.TagName.COL: ; case goog.dom.TagName.COMMAND: ; case goog.dom.TagName.EMBED: ; case goog.dom.TagName.FRAME: ; case goog.dom.TagName.HR: ; case goog.dom.TagName.IMG: ; case goog.dom.TagName.INPUT: ; case goog.dom.TagName.IFRAME: ; case goog.dom.TagName.ISINDEX: ; case goog.dom.TagName.KEYGEN: ; case goog.dom.TagName.LINK: ; case goog.dom.TagName.NOFRAMES: ; case goog.dom.TagName.NOSCRIPT: ; case goog.dom.TagName.META: ; case goog.dom.TagName.OBJECT: ; case goog.dom.TagName.PARAM: ; case goog.dom.TagName.SCRIPT: ; case goog.dom.TagName.SOURCE: ; case goog.dom.TagName.STYLE: ; case goog.dom.TagName.TRACK: ; case goog.dom.TagName.WBR: return false } return true }; goog.dom.appendChild = function(parent, child) { parent.appendChild(child) }; goog.dom.append = function(parent, var_args) { goog.dom.append_(goog.dom.getOwnerDocument(parent), parent, arguments, 1) }; goog.dom.removeChildren = function(node) { var child; while(child = node.firstChild) { node.removeChild(child) } }; goog.dom.insertSiblingBefore = function(newNode, refNode) { if(refNode.parentNode) { refNode.parentNode.insertBefore(newNode, refNode) } }; goog.dom.insertSiblingAfter = function(newNode, refNode) { if(refNode.parentNode) { refNode.parentNode.insertBefore(newNode, refNode.nextSibling) } }; goog.dom.insertChildAt = function(parent, child, index) { parent.insertBefore(child, parent.childNodes[index] || null) }; goog.dom.removeNode = function(node) { return node && node.parentNode ? node.parentNode.removeChild(node) : null }; goog.dom.replaceNode = function(newNode, oldNode) { var parent = oldNode.parentNode; if(parent) { parent.replaceChild(newNode, oldNode) } }; goog.dom.flattenElement = function(element) { var child, parent = element.parentNode; if(parent && parent.nodeType != goog.dom.NodeType.DOCUMENT_FRAGMENT) { if(element.removeNode) { return(element.removeNode(false)) }else { while(child = element.firstChild) { parent.insertBefore(child, element) } return(goog.dom.removeNode(element)) } } }; goog.dom.getChildren = function(element) { if(goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE && element.children != undefined) { return element.children } return goog.array.filter(element.childNodes, function(node) { return node.nodeType == goog.dom.NodeType.ELEMENT }) }; goog.dom.getFirstElementChild = function(node) { if(node.firstElementChild != undefined) { return(node).firstElementChild } return goog.dom.getNextElementNode_(node.firstChild, true) }; goog.dom.getLastElementChild = function(node) { if(node.lastElementChild != undefined) { return(node).lastElementChild } return goog.dom.getNextElementNode_(node.lastChild, false) }; goog.dom.getNextElementSibling = function(node) { if(node.nextElementSibling != undefined) { return(node).nextElementSibling } return goog.dom.getNextElementNode_(node.nextSibling, true) }; goog.dom.getPreviousElementSibling = function(node) { if(node.previousElementSibling != undefined) { return(node).previousElementSibling } return goog.dom.getNextElementNode_(node.previousSibling, false) }; goog.dom.getNextElementNode_ = function(node, forward) { while(node && node.nodeType != goog.dom.NodeType.ELEMENT) { node = forward ? node.nextSibling : node.previousSibling } return(node) }; goog.dom.getNextNode = function(node) { if(!node) { return null } if(node.firstChild) { return node.firstChild } while(node && !node.nextSibling) { node = node.parentNode } return node ? node.nextSibling : null }; goog.dom.getPreviousNode = function(node) { if(!node) { return null } if(!node.previousSibling) { return node.parentNode } node = node.previousSibling; while(node && node.lastChild) { node = node.lastChild } return node }; goog.dom.isNodeLike = function(obj) { return goog.isObject(obj) && obj.nodeType > 0 }; goog.dom.isElement = function(obj) { return goog.isObject(obj) && obj.nodeType == goog.dom.NodeType.ELEMENT }; goog.dom.isWindow = function(obj) { return goog.isObject(obj) && obj["window"] == obj }; goog.dom.getParentElement = function(element) { if(goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY) { var isIe9 = goog.userAgent.IE && goog.userAgent.isVersionOrHigher("9") && !goog.userAgent.isVersionOrHigher("10"); if(!(isIe9 && goog.global["SVGElement"] && element instanceof goog.global["SVGElement"])) { return element.parentElement } } var parent = element.parentNode; return goog.dom.isElement(parent) ? (parent) : null }; goog.dom.contains = function(parent, descendant) { if(parent.contains && descendant.nodeType == goog.dom.NodeType.ELEMENT) { return parent == descendant || parent.contains(descendant) } if(typeof parent.compareDocumentPosition != "undefined") { return parent == descendant || Boolean(parent.compareDocumentPosition(descendant) & 16) } while(descendant && parent != descendant) { descendant = descendant.parentNode } return descendant == parent }; goog.dom.compareNodeOrder = function(node1, node2) { if(node1 == node2) { return 0 } if(node1.compareDocumentPosition) { return node1.compareDocumentPosition(node2) & 2 ? 1 : -1 } if(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) { if(node1.nodeType == goog.dom.NodeType.DOCUMENT) { return-1 } if(node2.nodeType == goog.dom.NodeType.DOCUMENT) { return 1 } } if("sourceIndex" in node1 || node1.parentNode && "sourceIndex" in node1.parentNode) { var isElement1 = node1.nodeType == goog.dom.NodeType.ELEMENT; var isElement2 = node2.nodeType == goog.dom.NodeType.ELEMENT; if(isElement1 && isElement2) { return node1.sourceIndex - node2.sourceIndex }else { var parent1 = node1.parentNode; var parent2 = node2.parentNode; if(parent1 == parent2) { return goog.dom.compareSiblingOrder_(node1, node2) } if(!isElement1 && goog.dom.contains(parent1, node2)) { return-1 * goog.dom.compareParentsDescendantNodeIe_(node1, node2) } if(!isElement2 && goog.dom.contains(parent2, node1)) { return goog.dom.compareParentsDescendantNodeIe_(node2, node1) } return(isElement1 ? node1.sourceIndex : parent1.sourceIndex) - (isElement2 ? node2.sourceIndex : parent2.sourceIndex) } } var doc = goog.dom.getOwnerDocument(node1); var range1, range2; range1 = doc.createRange(); range1.selectNode(node1); range1.collapse(true); range2 = doc.createRange(); range2.selectNode(node2); range2.collapse(true); return range1.compareBoundaryPoints(goog.global["Range"].START_TO_END, range2) }; goog.dom.compareParentsDescendantNodeIe_ = function(textNode, node) { var parent = textNode.parentNode; if(parent == node) { return-1 } var sibling = node; while(sibling.parentNode != parent) { sibling = sibling.parentNode } return goog.dom.compareSiblingOrder_(sibling, textNode) }; goog.dom.compareSiblingOrder_ = function(node1, node2) { var s = node2; while(s = s.previousSibling) { if(s == node1) { return-1 } } return 1 }; goog.dom.findCommonAncestor = function(var_args) { var i, count = arguments.length; if(!count) { return null }else { if(count == 1) { return arguments[0] } } var paths = []; var minLength = Infinity; for(i = 0;i < count;i++) { var ancestors = []; var node = arguments[i]; while(node) { ancestors.unshift(node); node = node.parentNode } paths.push(ancestors); minLength = Math.min(minLength, ancestors.length) } var output = null; for(i = 0;i < minLength;i++) { var first = paths[0][i]; for(var j = 1;j < count;j++) { if(first != paths[j][i]) { return output } } output = first } return output }; goog.dom.getOwnerDocument = function(node) { return(node.nodeType == goog.dom.NodeType.DOCUMENT ? node : node.ownerDocument || node.document) }; goog.dom.getFrameContentDocument = function(frame) { var doc = frame.contentDocument || frame.contentWindow.document; return doc }; goog.dom.getFrameContentWindow = function(frame) { return frame.contentWindow || goog.dom.getWindow_(goog.dom.getFrameContentDocument(frame)) }; goog.dom.setTextContent = function(element, text) { if("textContent" in element) { element.textContent = text }else { if(element.firstChild && element.firstChild.nodeType == goog.dom.NodeType.TEXT) { while(element.lastChild != element.firstChild) { element.removeChild(element.lastChild) } element.firstChild.data = text }else { goog.dom.removeChildren(element); var doc = goog.dom.getOwnerDocument(element); element.appendChild(doc.createTextNode(String(text))) } } }; goog.dom.getOuterHtml = function(element) { if("outerHTML" in element) { return element.outerHTML }else { var doc = goog.dom.getOwnerDocument(element); var div = doc.createElement("div"); div.appendChild(element.cloneNode(true)); return div.innerHTML } }; goog.dom.findNode = function(root, p) { var rv = []; var found = goog.dom.findNodes_(root, p, rv, true); return found ? rv[0] : undefined }; goog.dom.findNodes = function(root, p) { var rv = []; goog.dom.findNodes_(root, p, rv, false); return rv }; goog.dom.findNodes_ = function(root, p, rv, findOne) { if(root != null) { var child = root.firstChild; while(child) { if(p(child)) { rv.push(child); if(findOne) { return true } } if(goog.dom.findNodes_(child, p, rv, findOne)) { return true } child = child.nextSibling } } return false }; goog.dom.TAGS_TO_IGNORE_ = {"SCRIPT":1, "STYLE":1, "HEAD":1, "IFRAME":1, "OBJECT":1}; goog.dom.PREDEFINED_TAG_VALUES_ = {"IMG":" ", "BR":"\n"}; goog.dom.isFocusableTabIndex = function(element) { var attrNode = element.getAttributeNode("tabindex"); if(attrNode && attrNode.specified) { var index = element.tabIndex; return goog.isNumber(index) && index >= 0 && index < 32768 } return false }; goog.dom.setFocusableTabIndex = function(element, enable) { if(enable) { element.tabIndex = 0 }else { element.tabIndex = -1; element.removeAttribute("tabIndex") } }; goog.dom.getTextContent = function(node) { var textContent; if(goog.dom.BrowserFeature.CAN_USE_INNER_TEXT && "innerText" in node) { textContent = goog.string.canonicalizeNewlines(node.innerText) }else { var buf = []; goog.dom.getTextContent_(node, buf, true); textContent = buf.join("") } textContent = textContent.replace(/ \xAD /g, " ").replace(/\xAD/g, ""); textContent = textContent.replace(/\u200B/g, ""); if(!goog.dom.BrowserFeature.CAN_USE_INNER_TEXT) { textContent = textContent.replace(/ +/g, " ") } if(textContent != " ") { textContent = textContent.replace(/^\s*/, "") } return textContent }; goog.dom.getRawTextContent = function(node) { var buf = []; goog.dom.getTextContent_(node, buf, false); return buf.join("") }; goog.dom.getTextContent_ = function(node, buf, normalizeWhitespace) { if(node.nodeName in goog.dom.TAGS_TO_IGNORE_) { }else { if(node.nodeType == goog.dom.NodeType.TEXT) { if(normalizeWhitespace) { buf.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, "")) }else { buf.push(node.nodeValue) } }else { if(node.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) { buf.push(goog.dom.PREDEFINED_TAG_VALUES_[node.nodeName]) }else { var child = node.firstChild; while(child) { goog.dom.getTextContent_(child, buf, normalizeWhitespace); child = child.nextSibling } } } } }; goog.dom.getNodeTextLength = function(node) { return goog.dom.getTextContent(node).length }; goog.dom.getNodeTextOffset = function(node, opt_offsetParent) { var root = opt_offsetParent || goog.dom.getOwnerDocument(node).body; var buf = []; while(node && node != root) { var cur = node; while(cur = cur.previousSibling) { buf.unshift(goog.dom.getTextContent(cur)) } node = node.parentNode } return goog.string.trimLeft(buf.join("")).replace(/ +/g, " ").length }; goog.dom.getNodeAtOffset = function(parent, offset, opt_result) { var stack = [parent], pos = 0, cur = null; while(stack.length > 0 && pos < offset) { cur = stack.pop(); if(cur.nodeName in goog.dom.TAGS_TO_IGNORE_) { }else { if(cur.nodeType == goog.dom.NodeType.TEXT) { var text = cur.nodeValue.replace(/(\r\n|\r|\n)/g, "").replace(/ +/g, " "); pos += text.length }else { if(cur.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) { pos += goog.dom.PREDEFINED_TAG_VALUES_[cur.nodeName].length }else { for(var i = cur.childNodes.length - 1;i >= 0;i--) { stack.push(cur.childNodes[i]) } } } } } if(goog.isObject(opt_result)) { opt_result.remainder = cur ? cur.nodeValue.length + offset - pos - 1 : 0; opt_result.node = cur } return cur }; goog.dom.isNodeList = function(val) { if(val && typeof val.length == "number") { if(goog.isObject(val)) { return typeof val.item == "function" || typeof val.item == "string" }else { if(goog.isFunction(val)) { return typeof val.item == "function" } } } return false }; goog.dom.getAncestorByTagNameAndClass = function(element, opt_tag, opt_class) { if(!opt_tag && !opt_class) { return null } var tagName = opt_tag ? opt_tag.toUpperCase() : null; return(goog.dom.getAncestor(element, function(node) { return(!tagName || node.nodeName == tagName) && (!opt_class || goog.dom.classes.has(node, opt_class)) }, true)) }; goog.dom.getAncestorByClass = function(element, className) { return goog.dom.getAncestorByTagNameAndClass(element, null, className) }; goog.dom.getAncestor = function(element, matcher, opt_includeNode, opt_maxSearchSteps) { if(!opt_includeNode) { element = element.parentNode } var ignoreSearchSteps = opt_maxSearchSteps == null; var steps = 0; while(element && (ignoreSearchSteps || steps <= opt_maxSearchSteps)) { if(matcher(element)) { return element } element = element.parentNode; steps++ } return null }; goog.dom.getActiveElement = function(doc) { try { return doc && doc.activeElement }catch(e) { } return null }; goog.dom.DomHelper = function(opt_document) { this.document_ = opt_document || goog.global.document || document }; goog.dom.DomHelper.prototype.getDomHelper = goog.dom.getDomHelper; goog.dom.DomHelper.prototype.setDocument = function(document) { this.document_ = document }; goog.dom.DomHelper.prototype.getDocument = function() { return this.document_ }; goog.dom.DomHelper.prototype.getElement = function(element) { if(goog.isString(element)) { return this.document_.getElementById(element) }else { return element } }; goog.dom.DomHelper.prototype.$ = goog.dom.DomHelper.prototype.getElement; goog.dom.DomHelper.prototype.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) { return goog.dom.getElementsByTagNameAndClass_(this.document_, opt_tag, opt_class, opt_el) }; goog.dom.DomHelper.prototype.getElementsByClass = function(className, opt_el) { var doc = opt_el || this.document_; return goog.dom.getElementsByClass(className, doc) }; goog.dom.DomHelper.prototype.getElementByClass = function(className, opt_el) { var doc = opt_el || this.document_; return goog.dom.getElementByClass(className, doc) }; goog.dom.DomHelper.prototype.$$ = goog.dom.DomHelper.prototype.getElementsByTagNameAndClass; goog.dom.DomHelper.prototype.setProperties = goog.dom.setProperties; goog.dom.DomHelper.prototype.getViewportSize = function(opt_window) { return goog.dom.getViewportSize(opt_window || this.getWindow()) }; goog.dom.DomHelper.prototype.getDocumentHeight = function() { return goog.dom.getDocumentHeight_(this.getWindow()) }; goog.dom.Appendable; goog.dom.DomHelper.prototype.createDom = function(tagName, opt_attributes, var_args) { return goog.dom.createDom_(this.document_, arguments) }; goog.dom.DomHelper.prototype.$dom = goog.dom.DomHelper.prototype.createDom; goog.dom.DomHelper.prototype.createElement = function(name) { return this.document_.createElement(name) }; goog.dom.DomHelper.prototype.createTextNode = function(content) { return this.document_.createTextNode(String(content)) }; goog.dom.DomHelper.prototype.createTable = function(rows, columns, opt_fillWithNbsp) { return goog.dom.createTable_(this.document_, rows, columns, !!opt_fillWithNbsp) }; goog.dom.DomHelper.prototype.htmlToDocumentFragment = function(htmlString) { return goog.dom.htmlToDocumentFragment_(this.document_, htmlString) }; goog.dom.DomHelper.prototype.getCompatMode = function() { return this.isCss1CompatMode() ? "CSS1Compat" : "BackCompat" }; goog.dom.DomHelper.prototype.isCss1CompatMode = function() { return goog.dom.isCss1CompatMode_(this.document_) }; goog.dom.DomHelper.prototype.getWindow = function() { return goog.dom.getWindow_(this.document_) }; goog.dom.DomHelper.prototype.getDocumentScrollElement = function() { return goog.dom.getDocumentScrollElement_(this.document_) }; goog.dom.DomHelper.prototype.getDocumentScroll = function() { return goog.dom.getDocumentScroll_(this.document_) }; goog.dom.DomHelper.prototype.getActiveElement = function(opt_doc) { return goog.dom.getActiveElement(opt_doc || this.document_) }; goog.dom.DomHelper.prototype.appendChild = goog.dom.appendChild; goog.dom.DomHelper.prototype.append = goog.dom.append; goog.dom.DomHelper.prototype.canHaveChildren = goog.dom.canHaveChildren; goog.dom.DomHelper.prototype.removeChildren = goog.dom.removeChildren; goog.dom.DomHelper.prototype.insertSiblingBefore = goog.dom.insertSiblingBefore; goog.dom.DomHelper.prototype.insertSiblingAfter = goog.dom.insertSiblingAfter; goog.dom.DomHelper.prototype.insertChildAt = goog.dom.insertChildAt; goog.dom.DomHelper.prototype.removeNode = goog.dom.removeNode; goog.dom.DomHelper.prototype.replaceNode = goog.dom.replaceNode; goog.dom.DomHelper.prototype.flattenElement = goog.dom.flattenElement; goog.dom.DomHelper.prototype.getChildren = goog.dom.getChildren; goog.dom.DomHelper.prototype.getFirstElementChild = goog.dom.getFirstElementChild; goog.dom.DomHelper.prototype.getLastElementChild = goog.dom.getLastElementChild; goog.dom.DomHelper.prototype.getNextElementSibling = goog.dom.getNextElementSibling; goog.dom.DomHelper.prototype.getPreviousElementSibling = goog.dom.getPreviousElementSibling; goog.dom.DomHelper.prototype.getNextNode = goog.dom.getNextNode; goog.dom.DomHelper.prototype.getPreviousNode = goog.dom.getPreviousNode; goog.dom.DomHelper.prototype.isNodeLike = goog.dom.isNodeLike; goog.dom.DomHelper.prototype.isElement = goog.dom.isElement; goog.dom.DomHelper.prototype.isWindow = goog.dom.isWindow; goog.dom.DomHelper.prototype.getParentElement = goog.dom.getParentElement; goog.dom.DomHelper.prototype.contains = goog.dom.contains; goog.dom.DomHelper.prototype.compareNodeOrder = goog.dom.compareNodeOrder; goog.dom.DomHelper.prototype.findCommonAncestor = goog.dom.findCommonAncestor; goog.dom.DomHelper.prototype.getOwnerDocument = goog.dom.getOwnerDocument; goog.dom.DomHelper.prototype.getFrameContentDocument = goog.dom.getFrameContentDocument; goog.dom.DomHelper.prototype.getFrameContentWindow = goog.dom.getFrameContentWindow; goog.dom.DomHelper.prototype.setTextContent = goog.dom.setTextContent; goog.dom.DomHelper.prototype.getOuterHtml = goog.dom.getOuterHtml; goog.dom.DomHelper.prototype.findNode = goog.dom.findNode; goog.dom.DomHelper.prototype.findNodes = goog.dom.findNodes; goog.dom.DomHelper.prototype.isFocusableTabIndex = goog.dom.isFocusableTabIndex; goog.dom.DomHelper.prototype.setFocusableTabIndex = goog.dom.setFocusableTabIndex; goog.dom.DomHelper.prototype.getTextContent = goog.dom.getTextContent; goog.dom.DomHelper.prototype.getNodeTextLength = goog.dom.getNodeTextLength; goog.dom.DomHelper.prototype.getNodeTextOffset = goog.dom.getNodeTextOffset; goog.dom.DomHelper.prototype.getNodeAtOffset = goog.dom.getNodeAtOffset; goog.dom.DomHelper.prototype.isNodeList = goog.dom.isNodeList; goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass = goog.dom.getAncestorByTagNameAndClass; goog.dom.DomHelper.prototype.getAncestorByClass = goog.dom.getAncestorByClass; goog.dom.DomHelper.prototype.getAncestor = goog.dom.getAncestor; goog.provide("goog.dom.ViewportSizeMonitor"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.math.Size"); goog.dom.ViewportSizeMonitor = function(opt_window) { goog.events.EventTarget.call(this); this.window_ = opt_window || window; this.listenerKey_ = goog.events.listen(this.window_, goog.events.EventType.RESIZE, this.handleResize_, false, this); this.size_ = goog.dom.getViewportSize(this.window_) }; goog.inherits(goog.dom.ViewportSizeMonitor, goog.events.EventTarget); goog.dom.ViewportSizeMonitor.getInstanceForWindow = function(opt_window) { var currentWindow = opt_window || window; var uid = goog.getUid(currentWindow); return goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid] = goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid] || new goog.dom.ViewportSizeMonitor(currentWindow) }; goog.dom.ViewportSizeMonitor.removeInstanceForWindow = function(opt_window) { var uid = goog.getUid(opt_window || window); goog.dispose(goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid]); delete goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid] }; goog.dom.ViewportSizeMonitor.windowInstanceMap_ = {}; goog.dom.ViewportSizeMonitor.prototype.listenerKey_ = null; goog.dom.ViewportSizeMonitor.prototype.window_ = null; goog.dom.ViewportSizeMonitor.prototype.size_ = null; goog.dom.ViewportSizeMonitor.prototype.getSize = function() { return this.size_ ? this.size_.clone() : null }; goog.dom.ViewportSizeMonitor.prototype.disposeInternal = function() { goog.dom.ViewportSizeMonitor.superClass_.disposeInternal.call(this); if(this.listenerKey_) { goog.events.unlistenByKey(this.listenerKey_); this.listenerKey_ = null } this.window_ = null; this.size_ = null }; goog.dom.ViewportSizeMonitor.prototype.handleResize_ = function(event) { var size = goog.dom.getViewportSize(this.window_); if(!goog.math.Size.equals(size, this.size_)) { this.size_ = size; this.dispatchEvent(goog.events.EventType.RESIZE) } }; goog.provide("goog.events.KeyCodes"); goog.require("goog.userAgent"); goog.events.KeyCodes = {WIN_KEY_FF_LINUX:0, MAC_ENTER:3, BACKSPACE:8, TAB:9, NUM_CENTER:12, ENTER:13, SHIFT:16, CTRL:17, ALT:18, PAUSE:19, CAPS_LOCK:20, ESC:27, SPACE:32, PAGE_UP:33, PAGE_DOWN:34, END:35, HOME:36, LEFT:37, UP:38, RIGHT:39, DOWN:40, PRINT_SCREEN:44, INSERT:45, DELETE:46, ZERO:48, ONE:49, TWO:50, THREE:51, FOUR:52, FIVE:53, SIX:54, SEVEN:55, EIGHT:56, NINE:57, FF_SEMICOLON:59, FF_EQUALS:61, QUESTION_MARK:63, A:65, B:66, C:67, D:68, E:69, F:70, G:71, H:72, I:73, J:74, K:75, L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86, W:87, X:88, Y:89, Z:90, META:91, WIN_KEY_RIGHT:92, CONTEXT_MENU:93, NUM_ZERO:96, NUM_ONE:97, NUM_TWO:98, NUM_THREE:99, NUM_FOUR:100, NUM_FIVE:101, NUM_SIX:102, NUM_SEVEN:103, NUM_EIGHT:104, NUM_NINE:105, NUM_MULTIPLY:106, NUM_PLUS:107, NUM_MINUS:109, NUM_PERIOD:110, NUM_DIVISION:111, F1:112, F2:113, F3:114, F4:115, F5:116, F6:117, F7:118, F8:119, F9:120, F10:121, F11:122, F12:123, NUMLOCK:144, SCROLL_LOCK:145, FIRST_MEDIA_KEY:166, LAST_MEDIA_KEY:183, SEMICOLON:186, DASH:189, EQUALS:187, COMMA:188, PERIOD:190, SLASH:191, APOSTROPHE:192, TILDE:192, SINGLE_QUOTE:222, OPEN_SQUARE_BRACKET:219, BACKSLASH:220, CLOSE_SQUARE_BRACKET:221, WIN_KEY:224, MAC_FF_META:224, WIN_IME:229, PHANTOM:255}; goog.events.KeyCodes.isTextModifyingKeyEvent = function(e) { if(e.altKey && !e.ctrlKey || e.metaKey || e.keyCode >= goog.events.KeyCodes.F1 && e.keyCode <= goog.events.KeyCodes.F12) { return false } switch(e.keyCode) { case goog.events.KeyCodes.ALT: ; case goog.events.KeyCodes.CAPS_LOCK: ; case goog.events.KeyCodes.CONTEXT_MENU: ; case goog.events.KeyCodes.CTRL: ; case goog.events.KeyCodes.DOWN: ; case goog.events.KeyCodes.END: ; case goog.events.KeyCodes.ESC: ; case goog.events.KeyCodes.HOME: ; case goog.events.KeyCodes.INSERT: ; case goog.events.KeyCodes.LEFT: ; case goog.events.KeyCodes.MAC_FF_META: ; case goog.events.KeyCodes.META: ; case goog.events.KeyCodes.NUMLOCK: ; case goog.events.KeyCodes.NUM_CENTER: ; case goog.events.KeyCodes.PAGE_DOWN: ; case goog.events.KeyCodes.PAGE_UP: ; case goog.events.KeyCodes.PAUSE: ; case goog.events.KeyCodes.PHANTOM: ; case goog.events.KeyCodes.PRINT_SCREEN: ; case goog.events.KeyCodes.RIGHT: ; case goog.events.KeyCodes.SCROLL_LOCK: ; case goog.events.KeyCodes.SHIFT: ; case goog.events.KeyCodes.UP: ; case goog.events.KeyCodes.WIN_KEY: ; case goog.events.KeyCodes.WIN_KEY_RIGHT: return false; case goog.events.KeyCodes.WIN_KEY_FF_LINUX: return!goog.userAgent.GECKO; default: return e.keyCode < goog.events.KeyCodes.FIRST_MEDIA_KEY || e.keyCode > goog.events.KeyCodes.LAST_MEDIA_KEY } }; goog.events.KeyCodes.firesKeyPressEvent = function(keyCode, opt_heldKeyCode, opt_shiftKey, opt_ctrlKey, opt_altKey) { if(!goog.userAgent.IE && !(goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("525"))) { return true } if(goog.userAgent.MAC && opt_altKey) { return goog.events.KeyCodes.isCharacterKey(keyCode) } if(opt_altKey && !opt_ctrlKey) { return false } if(!opt_shiftKey && (opt_heldKeyCode == goog.events.KeyCodes.CTRL || opt_heldKeyCode == goog.events.KeyCodes.ALT || goog.userAgent.MAC && opt_heldKeyCode == goog.events.KeyCodes.META)) { return false } if(goog.userAgent.WEBKIT && opt_ctrlKey && opt_shiftKey) { switch(keyCode) { case goog.events.KeyCodes.BACKSLASH: ; case goog.events.KeyCodes.OPEN_SQUARE_BRACKET: ; case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET: ; case goog.events.KeyCodes.TILDE: ; case goog.events.KeyCodes.SEMICOLON: ; case goog.events.KeyCodes.DASH: ; case goog.events.KeyCodes.EQUALS: ; case goog.events.KeyCodes.COMMA: ; case goog.events.KeyCodes.PERIOD: ; case goog.events.KeyCodes.SLASH: ; case goog.events.KeyCodes.APOSTROPHE: ; case goog.events.KeyCodes.SINGLE_QUOTE: return false } } if(goog.userAgent.IE && opt_ctrlKey && opt_heldKeyCode == keyCode) { return false } switch(keyCode) { case goog.events.KeyCodes.ENTER: return!(goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9)); case goog.events.KeyCodes.ESC: return!goog.userAgent.WEBKIT } return goog.events.KeyCodes.isCharacterKey(keyCode) }; goog.events.KeyCodes.isCharacterKey = function(keyCode) { if(keyCode >= goog.events.KeyCodes.ZERO && keyCode <= goog.events.KeyCodes.NINE) { return true } if(keyCode >= goog.events.KeyCodes.NUM_ZERO && keyCode <= goog.events.KeyCodes.NUM_MULTIPLY) { return true } if(keyCode >= goog.events.KeyCodes.A && keyCode <= goog.events.KeyCodes.Z) { return true } if(goog.userAgent.WEBKIT && keyCode == 0) { return true } switch(keyCode) { case goog.events.KeyCodes.SPACE: ; case goog.events.KeyCodes.QUESTION_MARK: ; case goog.events.KeyCodes.NUM_PLUS: ; case goog.events.KeyCodes.NUM_MINUS: ; case goog.events.KeyCodes.NUM_PERIOD: ; case goog.events.KeyCodes.NUM_DIVISION: ; case goog.events.KeyCodes.SEMICOLON: ; case goog.events.KeyCodes.FF_SEMICOLON: ; case goog.events.KeyCodes.DASH: ; case goog.events.KeyCodes.EQUALS: ; case goog.events.KeyCodes.FF_EQUALS: ; case goog.events.KeyCodes.COMMA: ; case goog.events.KeyCodes.PERIOD: ; case goog.events.KeyCodes.SLASH: ; case goog.events.KeyCodes.APOSTROPHE: ; case goog.events.KeyCodes.SINGLE_QUOTE: ; case goog.events.KeyCodes.OPEN_SQUARE_BRACKET: ; case goog.events.KeyCodes.BACKSLASH: ; case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET: return true; default: return false } }; goog.events.KeyCodes.normalizeGeckoKeyCode = function(keyCode) { switch(keyCode) { case goog.events.KeyCodes.FF_EQUALS: return goog.events.KeyCodes.EQUALS; case goog.events.KeyCodes.FF_SEMICOLON: return goog.events.KeyCodes.SEMICOLON; case goog.events.KeyCodes.MAC_FF_META: return goog.events.KeyCodes.META; case goog.events.KeyCodes.WIN_KEY_FF_LINUX: return goog.events.KeyCodes.WIN_KEY; default: return keyCode } }; goog.provide("goog.events.KeyEvent"); goog.provide("goog.events.KeyHandler"); goog.provide("goog.events.KeyHandler.EventType"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.events.KeyCodes"); goog.require("goog.userAgent"); goog.events.KeyHandler = function(opt_element, opt_capture) { goog.events.EventTarget.call(this); if(opt_element) { this.attach(opt_element, opt_capture) } }; goog.inherits(goog.events.KeyHandler, goog.events.EventTarget); goog.events.KeyHandler.prototype.element_ = null; goog.events.KeyHandler.prototype.keyPressKey_ = null; goog.events.KeyHandler.prototype.keyDownKey_ = null; goog.events.KeyHandler.prototype.keyUpKey_ = null; goog.events.KeyHandler.prototype.lastKey_ = -1; goog.events.KeyHandler.prototype.keyCode_ = -1; goog.events.KeyHandler.prototype.altKey_ = false; goog.events.KeyHandler.EventType = {KEY:"key"}; goog.events.KeyHandler.safariKey_ = {3:goog.events.KeyCodes.ENTER, 12:goog.events.KeyCodes.NUMLOCK, 63232:goog.events.KeyCodes.UP, 63233:goog.events.KeyCodes.DOWN, 63234:goog.events.KeyCodes.LEFT, 63235:goog.events.KeyCodes.RIGHT, 63236:goog.events.KeyCodes.F1, 63237:goog.events.KeyCodes.F2, 63238:goog.events.KeyCodes.F3, 63239:goog.events.KeyCodes.F4, 63240:goog.events.KeyCodes.F5, 63241:goog.events.KeyCodes.F6, 63242:goog.events.KeyCodes.F7, 63243:goog.events.KeyCodes.F8, 63244:goog.events.KeyCodes.F9, 63245:goog.events.KeyCodes.F10, 63246:goog.events.KeyCodes.F11, 63247:goog.events.KeyCodes.F12, 63248:goog.events.KeyCodes.PRINT_SCREEN, 63272:goog.events.KeyCodes.DELETE, 63273:goog.events.KeyCodes.HOME, 63275:goog.events.KeyCodes.END, 63276:goog.events.KeyCodes.PAGE_UP, 63277:goog.events.KeyCodes.PAGE_DOWN, 63289:goog.events.KeyCodes.NUMLOCK, 63302:goog.events.KeyCodes.INSERT}; goog.events.KeyHandler.keyIdentifier_ = {"Up":goog.events.KeyCodes.UP, "Down":goog.events.KeyCodes.DOWN, "Left":goog.events.KeyCodes.LEFT, "Right":goog.events.KeyCodes.RIGHT, "Enter":goog.events.KeyCodes.ENTER, "F1":goog.events.KeyCodes.F1, "F2":goog.events.KeyCodes.F2, "F3":goog.events.KeyCodes.F3, "F4":goog.events.KeyCodes.F4, "F5":goog.events.KeyCodes.F5, "F6":goog.events.KeyCodes.F6, "F7":goog.events.KeyCodes.F7, "F8":goog.events.KeyCodes.F8, "F9":goog.events.KeyCodes.F9, "F10":goog.events.KeyCodes.F10, "F11":goog.events.KeyCodes.F11, "F12":goog.events.KeyCodes.F12, "U+007F":goog.events.KeyCodes.DELETE, "Home":goog.events.KeyCodes.HOME, "End":goog.events.KeyCodes.END, "PageUp":goog.events.KeyCodes.PAGE_UP, "PageDown":goog.events.KeyCodes.PAGE_DOWN, "Insert":goog.events.KeyCodes.INSERT}; goog.events.KeyHandler.USES_KEYDOWN_ = goog.userAgent.IE || goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("525"); goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_ = goog.userAgent.MAC && goog.userAgent.GECKO; goog.events.KeyHandler.prototype.handleKeyDown_ = function(e) { if(goog.userAgent.WEBKIT) { if(this.lastKey_ == goog.events.KeyCodes.CTRL && !e.ctrlKey || this.lastKey_ == goog.events.KeyCodes.ALT && !e.altKey || goog.userAgent.MAC && this.lastKey_ == goog.events.KeyCodes.META && !e.metaKey) { this.lastKey_ = -1; this.keyCode_ = -1 } } if(this.lastKey_ == -1) { if(e.ctrlKey && e.keyCode != goog.events.KeyCodes.CTRL) { this.lastKey_ = goog.events.KeyCodes.CTRL }else { if(e.altKey && e.keyCode != goog.events.KeyCodes.ALT) { this.lastKey_ = goog.events.KeyCodes.ALT }else { if(e.metaKey && e.keyCode != goog.events.KeyCodes.META) { this.lastKey_ = goog.events.KeyCodes.META } } } } if(goog.events.KeyHandler.USES_KEYDOWN_ && !goog.events.KeyCodes.firesKeyPressEvent(e.keyCode, this.lastKey_, e.shiftKey, e.ctrlKey, e.altKey)) { this.handleEvent(e) }else { this.keyCode_ = goog.userAgent.GECKO ? goog.events.KeyCodes.normalizeGeckoKeyCode(e.keyCode) : e.keyCode; if(goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_) { this.altKey_ = e.altKey } } }; goog.events.KeyHandler.prototype.resetState = function() { this.lastKey_ = -1; this.keyCode_ = -1 }; goog.events.KeyHandler.prototype.handleKeyup_ = function(e) { this.resetState(); this.altKey_ = e.altKey }; goog.events.KeyHandler.prototype.handleEvent = function(e) { var be = e.getBrowserEvent(); var keyCode, charCode; var altKey = be.altKey; if(goog.userAgent.IE && e.type == goog.events.EventType.KEYPRESS) { keyCode = this.keyCode_; charCode = keyCode != goog.events.KeyCodes.ENTER && keyCode != goog.events.KeyCodes.ESC ? be.keyCode : 0 }else { if(goog.userAgent.WEBKIT && e.type == goog.events.EventType.KEYPRESS) { keyCode = this.keyCode_; charCode = be.charCode >= 0 && be.charCode < 63232 && goog.events.KeyCodes.isCharacterKey(keyCode) ? be.charCode : 0 }else { if(goog.userAgent.OPERA) { keyCode = this.keyCode_; charCode = goog.events.KeyCodes.isCharacterKey(keyCode) ? be.keyCode : 0 }else { keyCode = be.keyCode || this.keyCode_; charCode = be.charCode || 0; if(goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_) { altKey = this.altKey_ } if(goog.userAgent.MAC && charCode == goog.events.KeyCodes.QUESTION_MARK && keyCode == goog.events.KeyCodes.WIN_KEY) { keyCode = goog.events.KeyCodes.SLASH } } } } var key = keyCode; var keyIdentifier = be.keyIdentifier; if(keyCode) { if(keyCode >= 63232 && keyCode in goog.events.KeyHandler.safariKey_) { key = goog.events.KeyHandler.safariKey_[keyCode] }else { if(keyCode == 25 && e.shiftKey) { key = 9 } } }else { if(keyIdentifier && keyIdentifier in goog.events.KeyHandler.keyIdentifier_) { key = goog.events.KeyHandler.keyIdentifier_[keyIdentifier] } } var repeat = key == this.lastKey_; this.lastKey_ = key; var event = new goog.events.KeyEvent(key, charCode, repeat, be); event.altKey = altKey; this.dispatchEvent(event) }; goog.events.KeyHandler.prototype.getElement = function() { return this.element_ }; goog.events.KeyHandler.prototype.attach = function(element, opt_capture) { if(this.keyUpKey_) { this.detach() } this.element_ = element; this.keyPressKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYPRESS, this, opt_capture); this.keyDownKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYDOWN, this.handleKeyDown_, opt_capture, this); this.keyUpKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYUP, this.handleKeyup_, opt_capture, this) }; goog.events.KeyHandler.prototype.detach = function() { if(this.keyPressKey_) { goog.events.unlistenByKey(this.keyPressKey_); goog.events.unlistenByKey(this.keyDownKey_); goog.events.unlistenByKey(this.keyUpKey_); this.keyPressKey_ = null; this.keyDownKey_ = null; this.keyUpKey_ = null } this.element_ = null; this.lastKey_ = -1; this.keyCode_ = -1 }; goog.events.KeyHandler.prototype.disposeInternal = function() { goog.events.KeyHandler.superClass_.disposeInternal.call(this); this.detach() }; goog.events.KeyEvent = function(keyCode, charCode, repeat, browserEvent) { goog.events.BrowserEvent.call(this, browserEvent); this.type = goog.events.KeyHandler.EventType.KEY; this.keyCode = keyCode; this.charCode = charCode; this.repeat = repeat }; goog.inherits(goog.events.KeyEvent, goog.events.BrowserEvent); goog.provide("goog.dom.vendor"); goog.require("goog.userAgent"); goog.dom.vendor.getVendorJsPrefix = function() { if(goog.userAgent.WEBKIT) { return"Webkit" }else { if(goog.userAgent.GECKO) { return"Moz" }else { if(goog.userAgent.IE) { return"ms" }else { if(goog.userAgent.OPERA) { return"O" } } } } return null }; goog.dom.vendor.getVendorPrefix = function() { if(goog.userAgent.WEBKIT) { return"-webkit" }else { if(goog.userAgent.GECKO) { return"-moz" }else { if(goog.userAgent.IE) { return"-ms" }else { if(goog.userAgent.OPERA) { return"-o" } } } } return null }; goog.provide("goog.math.Box"); goog.require("goog.math.Coordinate"); goog.math.Box = function(top, right, bottom, left) { this.top = top; this.right = right; this.bottom = bottom; this.left = left }; goog.math.Box.boundingBox = function(var_args) { var box = new goog.math.Box(arguments[0].y, arguments[0].x, arguments[0].y, arguments[0].x); for(var i = 1;i < arguments.length;i++) { var coord = arguments[i]; box.top = Math.min(box.top, coord.y); box.right = Math.max(box.right, coord.x); box.bottom = Math.max(box.bottom, coord.y); box.left = Math.min(box.left, coord.x) } return box }; goog.math.Box.prototype.clone = function() { return new goog.math.Box(this.top, this.right, this.bottom, this.left) }; if(goog.DEBUG) { goog.math.Box.prototype.toString = function() { return"(" + this.top + "t, " + this.right + "r, " + this.bottom + "b, " + this.left + "l)" } } goog.math.Box.prototype.contains = function(other) { return goog.math.Box.contains(this, other) }; goog.math.Box.prototype.expand = function(top, opt_right, opt_bottom, opt_left) { if(goog.isObject(top)) { this.top -= top.top; this.right += top.right; this.bottom += top.bottom; this.left -= top.left }else { this.top -= top; this.right += opt_right; this.bottom += opt_bottom; this.left -= opt_left } return this }; goog.math.Box.prototype.expandToInclude = function(box) { this.left = Math.min(this.left, box.left); this.top = Math.min(this.top, box.top); this.right = Math.max(this.right, box.right); this.bottom = Math.max(this.bottom, box.bottom) }; goog.math.Box.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.top == b.top && a.right == b.right && a.bottom == b.bottom && a.left == b.left }; goog.math.Box.contains = function(box, other) { if(!box || !other) { return false } if(other instanceof goog.math.Box) { return other.left >= box.left && other.right <= box.right && other.top >= box.top && other.bottom <= box.bottom } return other.x >= box.left && other.x <= box.right && other.y >= box.top && other.y <= box.bottom }; goog.math.Box.relativePositionX = function(box, coord) { if(coord.x < box.left) { return coord.x - box.left }else { if(coord.x > box.right) { return coord.x - box.right } } return 0 }; goog.math.Box.relativePositionY = function(box, coord) { if(coord.y < box.top) { return coord.y - box.top }else { if(coord.y > box.bottom) { return coord.y - box.bottom } } return 0 }; goog.math.Box.distance = function(box, coord) { var x = goog.math.Box.relativePositionX(box, coord); var y = goog.math.Box.relativePositionY(box, coord); return Math.sqrt(x * x + y * y) }; goog.math.Box.intersects = function(a, b) { return a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom }; goog.math.Box.intersectsWithPadding = function(a, b, padding) { return a.left <= b.right + padding && b.left <= a.right + padding && a.top <= b.bottom + padding && b.top <= a.bottom + padding }; goog.math.Box.prototype.ceil = function() { this.top = Math.ceil(this.top); this.right = Math.ceil(this.right); this.bottom = Math.ceil(this.bottom); this.left = Math.ceil(this.left); return this }; goog.math.Box.prototype.floor = function() { this.top = Math.floor(this.top); this.right = Math.floor(this.right); this.bottom = Math.floor(this.bottom); this.left = Math.floor(this.left); return this }; goog.math.Box.prototype.round = function() { this.top = Math.round(this.top); this.right = Math.round(this.right); this.bottom = Math.round(this.bottom); this.left = Math.round(this.left); return this }; goog.math.Box.prototype.translate = function(tx, opt_ty) { if(tx instanceof goog.math.Coordinate) { this.left += tx.x; this.right += tx.x; this.top += tx.y; this.bottom += tx.y }else { this.left += tx; this.right += tx; if(goog.isNumber(opt_ty)) { this.top += opt_ty; this.bottom += opt_ty } } return this }; goog.math.Box.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.left *= sx; this.right *= sx; this.top *= sy; this.bottom *= sy; return this }; goog.provide("goog.math.Rect"); goog.require("goog.math.Box"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Size"); goog.math.Rect = function(x, y, w, h) { this.left = x; this.top = y; this.width = w; this.height = h }; goog.math.Rect.prototype.clone = function() { return new goog.math.Rect(this.left, this.top, this.width, this.height) }; goog.math.Rect.prototype.toBox = function() { var right = this.left + this.width; var bottom = this.top + this.height; return new goog.math.Box(this.top, right, bottom, this.left) }; goog.math.Rect.createFromBox = function(box) { return new goog.math.Rect(box.left, box.top, box.right - box.left, box.bottom - box.top) }; if(goog.DEBUG) { goog.math.Rect.prototype.toString = function() { return"(" + this.left + ", " + this.top + " - " + this.width + "w x " + this.height + "h)" } } goog.math.Rect.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.left == b.left && a.width == b.width && a.top == b.top && a.height == b.height }; goog.math.Rect.prototype.intersection = function(rect) { var x0 = Math.max(this.left, rect.left); var x1 = Math.min(this.left + this.width, rect.left + rect.width); if(x0 <= x1) { var y0 = Math.max(this.top, rect.top); var y1 = Math.min(this.top + this.height, rect.top + rect.height); if(y0 <= y1) { this.left = x0; this.top = y0; this.width = x1 - x0; this.height = y1 - y0; return true } } return false }; goog.math.Rect.intersection = function(a, b) { var x0 = Math.max(a.left, b.left); var x1 = Math.min(a.left + a.width, b.left + b.width); if(x0 <= x1) { var y0 = Math.max(a.top, b.top); var y1 = Math.min(a.top + a.height, b.top + b.height); if(y0 <= y1) { return new goog.math.Rect(x0, y0, x1 - x0, y1 - y0) } } return null }; goog.math.Rect.intersects = function(a, b) { return a.left <= b.left + b.width && b.left <= a.left + a.width && a.top <= b.top + b.height && b.top <= a.top + a.height }; goog.math.Rect.prototype.intersects = function(rect) { return goog.math.Rect.intersects(this, rect) }; goog.math.Rect.difference = function(a, b) { var intersection = goog.math.Rect.intersection(a, b); if(!intersection || !intersection.height || !intersection.width) { return[a.clone()] } var result = []; var top = a.top; var height = a.height; var ar = a.left + a.width; var ab = a.top + a.height; var br = b.left + b.width; var bb = b.top + b.height; if(b.top > a.top) { result.push(new goog.math.Rect(a.left, a.top, a.width, b.top - a.top)); top = b.top; height -= b.top - a.top } if(bb < ab) { result.push(new goog.math.Rect(a.left, bb, a.width, ab - bb)); height = bb - top } if(b.left > a.left) { result.push(new goog.math.Rect(a.left, top, b.left - a.left, height)) } if(br < ar) { result.push(new goog.math.Rect(br, top, ar - br, height)) } return result }; goog.math.Rect.prototype.difference = function(rect) { return goog.math.Rect.difference(this, rect) }; goog.math.Rect.prototype.boundingRect = function(rect) { var right = Math.max(this.left + this.width, rect.left + rect.width); var bottom = Math.max(this.top + this.height, rect.top + rect.height); this.left = Math.min(this.left, rect.left); this.top = Math.min(this.top, rect.top); this.width = right - this.left; this.height = bottom - this.top }; goog.math.Rect.boundingRect = function(a, b) { if(!a || !b) { return null } var clone = a.clone(); clone.boundingRect(b); return clone }; goog.math.Rect.prototype.contains = function(another) { if(another instanceof goog.math.Rect) { return this.left <= another.left && this.left + this.width >= another.left + another.width && this.top <= another.top && this.top + this.height >= another.top + another.height }else { return another.x >= this.left && another.x <= this.left + this.width && another.y >= this.top && another.y <= this.top + this.height } }; goog.math.Rect.prototype.squaredDistance = function(point) { var dx = point.x < this.left ? this.left - point.x : Math.max(point.x - (this.left + this.width), 0); var dy = point.y < this.top ? this.top - point.y : Math.max(point.y - (this.top + this.height), 0); return dx * dx + dy * dy }; goog.math.Rect.prototype.distance = function(point) { return Math.sqrt(this.squaredDistance(point)) }; goog.math.Rect.prototype.getSize = function() { return new goog.math.Size(this.width, this.height) }; goog.math.Rect.prototype.getTopLeft = function() { return new goog.math.Coordinate(this.left, this.top) }; goog.math.Rect.prototype.getCenter = function() { return new goog.math.Coordinate(this.left + this.width / 2, this.top + this.height / 2) }; goog.math.Rect.prototype.getBottomRight = function() { return new goog.math.Coordinate(this.left + this.width, this.top + this.height) }; goog.math.Rect.prototype.ceil = function() { this.left = Math.ceil(this.left); this.top = Math.ceil(this.top); this.width = Math.ceil(this.width); this.height = Math.ceil(this.height); return this }; goog.math.Rect.prototype.floor = function() { this.left = Math.floor(this.left); this.top = Math.floor(this.top); this.width = Math.floor(this.width); this.height = Math.floor(this.height); return this }; goog.math.Rect.prototype.round = function() { this.left = Math.round(this.left); this.top = Math.round(this.top); this.width = Math.round(this.width); this.height = Math.round(this.height); return this }; goog.math.Rect.prototype.translate = function(tx, opt_ty) { if(tx instanceof goog.math.Coordinate) { this.left += tx.x; this.top += tx.y }else { this.left += tx; if(goog.isNumber(opt_ty)) { this.top += opt_ty } } return this }; goog.math.Rect.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.left *= sx; this.width *= sx; this.top *= sy; this.height *= sy; return this }; goog.provide("goog.style"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.NodeType"); goog.require("goog.dom.vendor"); goog.require("goog.math.Box"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Rect"); goog.require("goog.math.Size"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.userAgent"); goog.define("goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS", false); goog.style.setStyle = function(element, style, opt_value) { if(goog.isString(style)) { goog.style.setStyle_(element, opt_value, style) }else { goog.object.forEach(style, goog.partial(goog.style.setStyle_, element)) } }; goog.style.setStyle_ = function(element, value, style) { var propertyName = goog.style.getVendorJsStyleName_(element, style); if(propertyName) { element.style[propertyName] = value } }; goog.style.getVendorJsStyleName_ = function(element, style) { var camelStyle = goog.string.toCamelCase(style); if(element.style[camelStyle] === undefined) { var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(style); if(element.style[prefixedStyle] !== undefined) { return prefixedStyle } } return camelStyle }; goog.style.getVendorStyleName_ = function(element, style) { var camelStyle = goog.string.toCamelCase(style); if(element.style[camelStyle] === undefined) { var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(style); if(element.style[prefixedStyle] !== undefined) { return goog.dom.vendor.getVendorPrefix() + "-" + style } } return style }; goog.style.getStyle = function(element, property) { var styleValue = element.style[goog.string.toCamelCase(property)]; if(typeof styleValue !== "undefined") { return styleValue } return element.style[goog.style.getVendorJsStyleName_(element, property)] || "" }; goog.style.getComputedStyle = function(element, property) { var doc = goog.dom.getOwnerDocument(element); if(doc.defaultView && doc.defaultView.getComputedStyle) { var styles = doc.defaultView.getComputedStyle(element, null); if(styles) { return styles[property] || styles.getPropertyValue(property) || "" } } return"" }; goog.style.getCascadedStyle = function(element, style) { return element.currentStyle ? element.currentStyle[style] : null }; goog.style.getStyle_ = function(element, style) { return goog.style.getComputedStyle(element, style) || goog.style.getCascadedStyle(element, style) || element.style && element.style[style] }; goog.style.getComputedPosition = function(element) { return goog.style.getStyle_(element, "position") }; goog.style.getBackgroundColor = function(element) { return goog.style.getStyle_(element, "backgroundColor") }; goog.style.getComputedOverflowX = function(element) { return goog.style.getStyle_(element, "overflowX") }; goog.style.getComputedOverflowY = function(element) { return goog.style.getStyle_(element, "overflowY") }; goog.style.getComputedZIndex = function(element) { return goog.style.getStyle_(element, "zIndex") }; goog.style.getComputedTextAlign = function(element) { return goog.style.getStyle_(element, "textAlign") }; goog.style.getComputedCursor = function(element) { return goog.style.getStyle_(element, "cursor") }; goog.style.setPosition = function(el, arg1, opt_arg2) { var x, y; var buggyGeckoSubPixelPos = goog.userAgent.GECKO && (goog.userAgent.MAC || goog.userAgent.X11) && goog.userAgent.isVersionOrHigher("1.9"); if(arg1 instanceof goog.math.Coordinate) { x = arg1.x; y = arg1.y }else { x = arg1; y = opt_arg2 } el.style.left = goog.style.getPixelStyleValue_((x), buggyGeckoSubPixelPos); el.style.top = goog.style.getPixelStyleValue_((y), buggyGeckoSubPixelPos) }; goog.style.getPosition = function(element) { return new goog.math.Coordinate(element.offsetLeft, element.offsetTop) }; goog.style.getClientViewportElement = function(opt_node) { var doc; if(opt_node) { doc = goog.dom.getOwnerDocument(opt_node) }else { doc = goog.dom.getDocument() } if(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) && !goog.dom.getDomHelper(doc).isCss1CompatMode()) { return doc.body } return doc.documentElement }; goog.style.getViewportPageOffset = function(doc) { var body = doc.body; var documentElement = doc.documentElement; var scrollLeft = body.scrollLeft || documentElement.scrollLeft; var scrollTop = body.scrollTop || documentElement.scrollTop; return new goog.math.Coordinate(scrollLeft, scrollTop) }; goog.style.getBoundingClientRect_ = function(el) { var rect; try { rect = el.getBoundingClientRect() }catch(e) { return{"left":0, "top":0, "right":0, "bottom":0} } if(goog.userAgent.IE) { var doc = el.ownerDocument; rect.left -= doc.documentElement.clientLeft + doc.body.clientLeft; rect.top -= doc.documentElement.clientTop + doc.body.clientTop } return(rect) }; goog.style.getOffsetParent = function(element) { if(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(8)) { return element.offsetParent } var doc = goog.dom.getOwnerDocument(element); var positionStyle = goog.style.getStyle_(element, "position"); var skipStatic = positionStyle == "fixed" || positionStyle == "absolute"; for(var parent = element.parentNode;parent && parent != doc;parent = parent.parentNode) { positionStyle = goog.style.getStyle_((parent), "position"); skipStatic = skipStatic && positionStyle == "static" && parent != doc.documentElement && parent != doc.body; if(!skipStatic && (parent.scrollWidth > parent.clientWidth || parent.scrollHeight > parent.clientHeight || positionStyle == "fixed" || positionStyle == "absolute" || positionStyle == "relative")) { return(parent) } } return null }; goog.style.getVisibleRectForElement = function(element) { var visibleRect = new goog.math.Box(0, Infinity, Infinity, 0); var dom = goog.dom.getDomHelper(element); var body = dom.getDocument().body; var documentElement = dom.getDocument().documentElement; var scrollEl = dom.getDocumentScrollElement(); for(var el = element;el = goog.style.getOffsetParent(el);) { if((!goog.userAgent.IE || el.clientWidth != 0) && (!goog.userAgent.WEBKIT || el.clientHeight != 0 || el != body) && el != body && el != documentElement && goog.style.getStyle_(el, "overflow") != "visible") { var pos = goog.style.getPageOffset(el); var client = goog.style.getClientLeftTop(el); pos.x += client.x; pos.y += client.y; visibleRect.top = Math.max(visibleRect.top, pos.y); visibleRect.right = Math.min(visibleRect.right, pos.x + el.clientWidth); visibleRect.bottom = Math.min(visibleRect.bottom, pos.y + el.clientHeight); visibleRect.left = Math.max(visibleRect.left, pos.x) } } var scrollX = scrollEl.scrollLeft, scrollY = scrollEl.scrollTop; visibleRect.left = Math.max(visibleRect.left, scrollX); visibleRect.top = Math.max(visibleRect.top, scrollY); var winSize = dom.getViewportSize(); visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width); visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height); return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null }; goog.style.getContainerOffsetToScrollInto = function(element, container, opt_center) { var elementPos = goog.style.getPageOffset(element); var containerPos = goog.style.getPageOffset(container); var containerBorder = goog.style.getBorderBox(container); var relX = elementPos.x - containerPos.x - containerBorder.left; var relY = elementPos.y - containerPos.y - containerBorder.top; var spaceX = container.clientWidth - element.offsetWidth; var spaceY = container.clientHeight - element.offsetHeight; var scrollLeft = container.scrollLeft; var scrollTop = container.scrollTop; if(opt_center) { scrollLeft += relX - spaceX / 2; scrollTop += relY - spaceY / 2 }else { scrollLeft += Math.min(relX, Math.max(relX - spaceX, 0)); scrollTop += Math.min(relY, Math.max(relY - spaceY, 0)) } return new goog.math.Coordinate(scrollLeft, scrollTop) }; goog.style.scrollIntoContainerView = function(element, container, opt_center) { var offset = goog.style.getContainerOffsetToScrollInto(element, container, opt_center); container.scrollLeft = offset.x; container.scrollTop = offset.y }; goog.style.getClientLeftTop = function(el) { if(goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher("1.9")) { var left = parseFloat(goog.style.getComputedStyle(el, "borderLeftWidth")); if(goog.style.isRightToLeft(el)) { var scrollbarWidth = el.offsetWidth - el.clientWidth - left - parseFloat(goog.style.getComputedStyle(el, "borderRightWidth")); left += scrollbarWidth } return new goog.math.Coordinate(left, parseFloat(goog.style.getComputedStyle(el, "borderTopWidth"))) } return new goog.math.Coordinate(el.clientLeft, el.clientTop) }; goog.style.getPageOffset = function(el) { var box, doc = goog.dom.getOwnerDocument(el); var positionStyle = goog.style.getStyle_(el, "position"); goog.asserts.assertObject(el, "Parameter is required"); var BUGGY_GECKO_BOX_OBJECT = !goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS && goog.userAgent.GECKO && doc.getBoxObjectFor && !el.getBoundingClientRect && positionStyle == "absolute" && (box = doc.getBoxObjectFor(el)) && (box.screenX < 0 || box.screenY < 0); var pos = new goog.math.Coordinate(0, 0); var viewportElement = goog.style.getClientViewportElement(doc); if(el == viewportElement) { return pos } if(goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS || el.getBoundingClientRect) { box = goog.style.getBoundingClientRect_(el); var scrollCoord = goog.dom.getDomHelper(doc).getDocumentScroll(); pos.x = box.left + scrollCoord.x; pos.y = box.top + scrollCoord.y }else { if(doc.getBoxObjectFor && !BUGGY_GECKO_BOX_OBJECT) { box = doc.getBoxObjectFor(el); var vpBox = doc.getBoxObjectFor(viewportElement); pos.x = box.screenX - vpBox.screenX; pos.y = box.screenY - vpBox.screenY }else { var parent = el; do { pos.x += parent.offsetLeft; pos.y += parent.offsetTop; if(parent != el) { pos.x += parent.clientLeft || 0; pos.y += parent.clientTop || 0 } if(goog.userAgent.WEBKIT && goog.style.getComputedPosition(parent) == "fixed") { pos.x += doc.body.scrollLeft; pos.y += doc.body.scrollTop; break } parent = parent.offsetParent }while(parent && parent != el); if(goog.userAgent.OPERA || goog.userAgent.WEBKIT && positionStyle == "absolute") { pos.y -= doc.body.offsetTop } for(parent = el;(parent = goog.style.getOffsetParent(parent)) && parent != doc.body && parent != viewportElement;) { pos.x -= parent.scrollLeft; if(!goog.userAgent.OPERA || parent.tagName != "TR") { pos.y -= parent.scrollTop } } } } return pos }; goog.style.getPageOffsetLeft = function(el) { return goog.style.getPageOffset(el).x }; goog.style.getPageOffsetTop = function(el) { return goog.style.getPageOffset(el).y }; goog.style.getFramedPageOffset = function(el, relativeWin) { var position = new goog.math.Coordinate(0, 0); var currentWin = goog.dom.getWindow(goog.dom.getOwnerDocument(el)); var currentEl = el; do { var offset = currentWin == relativeWin ? goog.style.getPageOffset(currentEl) : goog.style.getClientPositionForElement_(goog.asserts.assert(currentEl)); position.x += offset.x; position.y += offset.y }while(currentWin && currentWin != relativeWin && (currentEl = currentWin.frameElement) && (currentWin = currentWin.parent)); return position }; goog.style.translateRectForAnotherFrame = function(rect, origBase, newBase) { if(origBase.getDocument() != newBase.getDocument()) { var body = origBase.getDocument().body; var pos = goog.style.getFramedPageOffset(body, newBase.getWindow()); pos = goog.math.Coordinate.difference(pos, goog.style.getPageOffset(body)); if(goog.userAgent.IE && !origBase.isCss1CompatMode()) { pos = goog.math.Coordinate.difference(pos, origBase.getDocumentScroll()) } rect.left += pos.x; rect.top += pos.y } }; goog.style.getRelativePosition = function(a, b) { var ap = goog.style.getClientPosition(a); var bp = goog.style.getClientPosition(b); return new goog.math.Coordinate(ap.x - bp.x, ap.y - bp.y) }; goog.style.getClientPositionForElement_ = function(el) { var pos; if(goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS || el.getBoundingClientRect) { var box = goog.style.getBoundingClientRect_(el); pos = new goog.math.Coordinate(box.left, box.top) }else { var scrollCoord = goog.dom.getDomHelper(el).getDocumentScroll(); var pageCoord = goog.style.getPageOffset(el); pos = new goog.math.Coordinate(pageCoord.x - scrollCoord.x, pageCoord.y - scrollCoord.y) } if(goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher(12)) { return goog.math.Coordinate.sum(pos, goog.style.getCssTranslation(el)) }else { return pos } }; goog.style.getClientPosition = function(el) { goog.asserts.assert(el); if(el.nodeType == goog.dom.NodeType.ELEMENT) { return goog.style.getClientPositionForElement_((el)) }else { var isAbstractedEvent = goog.isFunction(el.getBrowserEvent); var targetEvent = el; if(el.targetTouches) { targetEvent = el.targetTouches[0] }else { if(isAbstractedEvent && el.getBrowserEvent().targetTouches) { targetEvent = el.getBrowserEvent().targetTouches[0] } } return new goog.math.Coordinate(targetEvent.clientX, targetEvent.clientY) } }; goog.style.setPageOffset = function(el, x, opt_y) { var cur = goog.style.getPageOffset(el); if(x instanceof goog.math.Coordinate) { opt_y = x.y; x = x.x } var dx = x - cur.x; var dy = opt_y - cur.y; goog.style.setPosition(el, el.offsetLeft + dx, el.offsetTop + dy) }; goog.style.setSize = function(element, w, opt_h) { var h; if(w instanceof goog.math.Size) { h = w.height; w = w.width }else { if(opt_h == undefined) { throw Error("missing height argument"); } h = opt_h } goog.style.setWidth(element, (w)); goog.style.setHeight(element, (h)) }; goog.style.getPixelStyleValue_ = function(value, round) { if(typeof value == "number") { value = (round ? Math.round(value) : value) + "px" } return value }; goog.style.setHeight = function(element, height) { element.style.height = goog.style.getPixelStyleValue_(height, true) }; goog.style.setWidth = function(element, width) { element.style.width = goog.style.getPixelStyleValue_(width, true) }; goog.style.getSize = function(element) { return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_, (element)) }; goog.style.evaluateWithTemporaryDisplay_ = function(fn, element) { if(goog.style.getStyle_(element, "display") != "none") { return fn(element) } var style = element.style; var originalDisplay = style.display; var originalVisibility = style.visibility; var originalPosition = style.position; style.visibility = "hidden"; style.position = "absolute"; style.display = "inline"; var retVal = fn(element); style.display = originalDisplay; style.position = originalPosition; style.visibility = originalVisibility; return retVal }; goog.style.getSizeWithDisplay_ = function(element) { var offsetWidth = element.offsetWidth; var offsetHeight = element.offsetHeight; var webkitOffsetsZero = goog.userAgent.WEBKIT && !offsetWidth && !offsetHeight; if((!goog.isDef(offsetWidth) || webkitOffsetsZero) && element.getBoundingClientRect) { var clientRect = goog.style.getBoundingClientRect_(element); return new goog.math.Size(clientRect.right - clientRect.left, clientRect.bottom - clientRect.top) } return new goog.math.Size(offsetWidth, offsetHeight) }; goog.style.getTransformedSize = function(element) { if(!element.getBoundingClientRect) { return null } var clientRect = goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_, element); return new goog.math.Size(clientRect.right - clientRect.left, clientRect.bottom - clientRect.top) }; goog.style.getBounds = function(element) { var o = goog.style.getPageOffset(element); var s = goog.style.getSize(element); return new goog.math.Rect(o.x, o.y, s.width, s.height) }; goog.style.toCamelCase = function(selector) { return goog.string.toCamelCase(String(selector)) }; goog.style.toSelectorCase = function(selector) { return goog.string.toSelectorCase(selector) }; goog.style.getOpacity = function(el) { var style = el.style; var result = ""; if("opacity" in style) { result = style.opacity }else { if("MozOpacity" in style) { result = style.MozOpacity }else { if("filter" in style) { var match = style.filter.match(/alpha\(opacity=([\d.]+)\)/); if(match) { result = String(match[1] / 100) } } } } return result == "" ? result : Number(result) }; goog.style.setOpacity = function(el, alpha) { var style = el.style; if("opacity" in style) { style.opacity = alpha }else { if("MozOpacity" in style) { style.MozOpacity = alpha }else { if("filter" in style) { if(alpha === "") { style.filter = "" }else { style.filter = "alpha(opacity\x3d" + alpha * 100 + ")" } } } } }; goog.style.setTransparentBackgroundImage = function(el, src) { var style = el.style; if(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8")) { style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(" + 'src\x3d"' + src + '", sizingMethod\x3d"crop")' }else { style.backgroundImage = "url(" + src + ")"; style.backgroundPosition = "top left"; style.backgroundRepeat = "no-repeat" } }; goog.style.clearTransparentBackgroundImage = function(el) { var style = el.style; if("filter" in style) { style.filter = "" }else { style.backgroundImage = "none" } }; goog.style.showElement = function(el, display) { goog.style.setElementShown(el, display) }; goog.style.setElementShown = function(el, isShown) { el.style.display = isShown ? "" : "none" }; goog.style.isElementShown = function(el) { return el.style.display != "none" }; goog.style.installStyles = function(stylesString, opt_node) { var dh = goog.dom.getDomHelper(opt_node); var styleSheet = null; if(goog.userAgent.IE) { styleSheet = dh.getDocument().createStyleSheet(); goog.style.setStyles(styleSheet, stylesString) }else { var head = dh.getElementsByTagNameAndClass("head")[0]; if(!head) { var body = dh.getElementsByTagNameAndClass("body")[0]; head = dh.createDom("head"); body.parentNode.insertBefore(head, body) } styleSheet = dh.createDom("style"); goog.style.setStyles(styleSheet, stylesString); dh.appendChild(head, styleSheet) } return styleSheet }; goog.style.uninstallStyles = function(styleSheet) { var node = styleSheet.ownerNode || styleSheet.owningElement || (styleSheet); goog.dom.removeNode(node) }; goog.style.setStyles = function(element, stylesString) { if(goog.userAgent.IE) { element.cssText = stylesString }else { element.innerHTML = stylesString } }; goog.style.setPreWrap = function(el) { var style = el.style; if(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8")) { style.whiteSpace = "pre"; style.wordWrap = "break-word" }else { if(goog.userAgent.GECKO) { style.whiteSpace = "-moz-pre-wrap" }else { style.whiteSpace = "pre-wrap" } } }; goog.style.setInlineBlock = function(el) { var style = el.style; style.position = "relative"; if(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8")) { style.zoom = "1"; style.display = "inline" }else { if(goog.userAgent.GECKO) { style.display = goog.userAgent.isVersionOrHigher("1.9a") ? "inline-block" : "-moz-inline-box" }else { style.display = "inline-block" } } }; goog.style.isRightToLeft = function(el) { return"rtl" == goog.style.getStyle_(el, "direction") }; goog.style.unselectableStyle_ = goog.userAgent.GECKO ? "MozUserSelect" : goog.userAgent.WEBKIT ? "WebkitUserSelect" : null; goog.style.isUnselectable = function(el) { if(goog.style.unselectableStyle_) { return el.style[goog.style.unselectableStyle_].toLowerCase() == "none" }else { if(goog.userAgent.IE || goog.userAgent.OPERA) { return el.getAttribute("unselectable") == "on" } } return false }; goog.style.setUnselectable = function(el, unselectable, opt_noRecurse) { var descendants = !opt_noRecurse ? el.getElementsByTagName("*") : null; var name = goog.style.unselectableStyle_; if(name) { var value = unselectable ? "none" : ""; el.style[name] = value; if(descendants) { for(var i = 0, descendant;descendant = descendants[i];i++) { descendant.style[name] = value } } }else { if(goog.userAgent.IE || goog.userAgent.OPERA) { var value = unselectable ? "on" : ""; el.setAttribute("unselectable", value); if(descendants) { for(var i = 0, descendant;descendant = descendants[i];i++) { descendant.setAttribute("unselectable", value) } } } } }; goog.style.getBorderBoxSize = function(element) { return new goog.math.Size(element.offsetWidth, element.offsetHeight) }; goog.style.setBorderBoxSize = function(element, size) { var doc = goog.dom.getOwnerDocument(element); var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode(); if(goog.userAgent.IE && (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher("8"))) { var style = element.style; if(isCss1CompatMode) { var paddingBox = goog.style.getPaddingBox(element); var borderBox = goog.style.getBorderBox(element); style.pixelWidth = size.width - borderBox.left - paddingBox.left - paddingBox.right - borderBox.right; style.pixelHeight = size.height - borderBox.top - paddingBox.top - paddingBox.bottom - borderBox.bottom }else { style.pixelWidth = size.width; style.pixelHeight = size.height } }else { goog.style.setBoxSizingSize_(element, size, "border-box") } }; goog.style.getContentBoxSize = function(element) { var doc = goog.dom.getOwnerDocument(element); var ieCurrentStyle = goog.userAgent.IE && element.currentStyle; if(ieCurrentStyle && goog.dom.getDomHelper(doc).isCss1CompatMode() && ieCurrentStyle.width != "auto" && ieCurrentStyle.height != "auto" && !ieCurrentStyle.boxSizing) { var width = goog.style.getIePixelValue_(element, ieCurrentStyle.width, "width", "pixelWidth"); var height = goog.style.getIePixelValue_(element, ieCurrentStyle.height, "height", "pixelHeight"); return new goog.math.Size(width, height) }else { var borderBoxSize = goog.style.getBorderBoxSize(element); var paddingBox = goog.style.getPaddingBox(element); var borderBox = goog.style.getBorderBox(element); return new goog.math.Size(borderBoxSize.width - borderBox.left - paddingBox.left - paddingBox.right - borderBox.right, borderBoxSize.height - borderBox.top - paddingBox.top - paddingBox.bottom - borderBox.bottom) } }; goog.style.setContentBoxSize = function(element, size) { var doc = goog.dom.getOwnerDocument(element); var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode(); if(goog.userAgent.IE && (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher("8"))) { var style = element.style; if(isCss1CompatMode) { style.pixelWidth = size.width; style.pixelHeight = size.height }else { var paddingBox = goog.style.getPaddingBox(element); var borderBox = goog.style.getBorderBox(element); style.pixelWidth = size.width + borderBox.left + paddingBox.left + paddingBox.right + borderBox.right; style.pixelHeight = size.height + borderBox.top + paddingBox.top + paddingBox.bottom + borderBox.bottom } }else { goog.style.setBoxSizingSize_(element, size, "content-box") } }; goog.style.setBoxSizingSize_ = function(element, size, boxSizing) { var style = element.style; if(goog.userAgent.GECKO) { style.MozBoxSizing = boxSizing }else { if(goog.userAgent.WEBKIT) { style.WebkitBoxSizing = boxSizing }else { style.boxSizing = boxSizing } } style.width = Math.max(size.width, 0) + "px"; style.height = Math.max(size.height, 0) + "px" }; goog.style.getIePixelValue_ = function(element, value, name, pixelName) { if(/^\d+px?$/.test(value)) { return parseInt(value, 10) }else { var oldStyleValue = element.style[name]; var oldRuntimeValue = element.runtimeStyle[name]; element.runtimeStyle[name] = element.currentStyle[name]; element.style[name] = value; var pixelValue = element.style[pixelName]; element.style[name] = oldStyleValue; element.runtimeStyle[name] = oldRuntimeValue; return pixelValue } }; goog.style.getIePixelDistance_ = function(element, propName) { var value = goog.style.getCascadedStyle(element, propName); return value ? goog.style.getIePixelValue_(element, value, "left", "pixelLeft") : 0 }; goog.style.getBox_ = function(element, stylePrefix) { if(goog.userAgent.IE) { var left = goog.style.getIePixelDistance_(element, stylePrefix + "Left"); var right = goog.style.getIePixelDistance_(element, stylePrefix + "Right"); var top = goog.style.getIePixelDistance_(element, stylePrefix + "Top"); var bottom = goog.style.getIePixelDistance_(element, stylePrefix + "Bottom"); return new goog.math.Box(top, right, bottom, left) }else { var left = (goog.style.getComputedStyle(element, stylePrefix + "Left")); var right = (goog.style.getComputedStyle(element, stylePrefix + "Right")); var top = (goog.style.getComputedStyle(element, stylePrefix + "Top")); var bottom = (goog.style.getComputedStyle(element, stylePrefix + "Bottom")); return new goog.math.Box(parseFloat(top), parseFloat(right), parseFloat(bottom), parseFloat(left)) } }; goog.style.getPaddingBox = function(element) { return goog.style.getBox_(element, "padding") }; goog.style.getMarginBox = function(element) { return goog.style.getBox_(element, "margin") }; goog.style.ieBorderWidthKeywords_ = {"thin":2, "medium":4, "thick":6}; goog.style.getIePixelBorder_ = function(element, prop) { if(goog.style.getCascadedStyle(element, prop + "Style") == "none") { return 0 } var width = goog.style.getCascadedStyle(element, prop + "Width"); if(width in goog.style.ieBorderWidthKeywords_) { return goog.style.ieBorderWidthKeywords_[width] } return goog.style.getIePixelValue_(element, width, "left", "pixelLeft") }; goog.style.getBorderBox = function(element) { if(goog.userAgent.IE) { var left = goog.style.getIePixelBorder_(element, "borderLeft"); var right = goog.style.getIePixelBorder_(element, "borderRight"); var top = goog.style.getIePixelBorder_(element, "borderTop"); var bottom = goog.style.getIePixelBorder_(element, "borderBottom"); return new goog.math.Box(top, right, bottom, left) }else { var left = (goog.style.getComputedStyle(element, "borderLeftWidth")); var right = (goog.style.getComputedStyle(element, "borderRightWidth")); var top = (goog.style.getComputedStyle(element, "borderTopWidth")); var bottom = (goog.style.getComputedStyle(element, "borderBottomWidth")); return new goog.math.Box(parseFloat(top), parseFloat(right), parseFloat(bottom), parseFloat(left)) } }; goog.style.getFontFamily = function(el) { var doc = goog.dom.getOwnerDocument(el); var font = ""; if(doc.body.createTextRange) { var range = doc.body.createTextRange(); range.moveToElementText(el); try { font = range.queryCommandValue("FontName") }catch(e) { font = "" } } if(!font) { font = goog.style.getStyle_(el, "fontFamily") } var fontsArray = font.split(","); if(fontsArray.length > 1) { font = fontsArray[0] } return goog.string.stripQuotes(font, "\"'") }; goog.style.lengthUnitRegex_ = /[^\d]+$/; goog.style.getLengthUnits = function(value) { var units = value.match(goog.style.lengthUnitRegex_); return units && units[0] || null }; goog.style.ABSOLUTE_CSS_LENGTH_UNITS_ = {"cm":1, "in":1, "mm":1, "pc":1, "pt":1}; goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_ = {"em":1, "ex":1}; goog.style.getFontSize = function(el) { var fontSize = goog.style.getStyle_(el, "fontSize"); var sizeUnits = goog.style.getLengthUnits(fontSize); if(fontSize && "px" == sizeUnits) { return parseInt(fontSize, 10) } if(goog.userAgent.IE) { if(sizeUnits in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_) { return goog.style.getIePixelValue_(el, fontSize, "left", "pixelLeft") }else { if(el.parentNode && el.parentNode.nodeType == goog.dom.NodeType.ELEMENT && sizeUnits in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_) { var parentElement = (el.parentNode); var parentSize = goog.style.getStyle_(parentElement, "fontSize"); return goog.style.getIePixelValue_(parentElement, fontSize == parentSize ? "1em" : fontSize, "left", "pixelLeft") } } } var sizeElement = goog.dom.createDom("span", {"style":"visibility:hidden;position:absolute;" + "line-height:0;padding:0;margin:0;border:0;height:1em;"}); goog.dom.appendChild(el, sizeElement); fontSize = sizeElement.offsetHeight; goog.dom.removeNode(sizeElement); return fontSize }; goog.style.parseStyleAttribute = function(value) { var result = {}; goog.array.forEach(value.split(/\s*;\s*/), function(pair) { var keyValue = pair.split(/\s*:\s*/); if(keyValue.length == 2) { result[goog.string.toCamelCase(keyValue[0].toLowerCase())] = keyValue[1] } }); return result }; goog.style.toStyleAttribute = function(obj) { var buffer = []; goog.object.forEach(obj, function(value, key) { buffer.push(goog.string.toSelectorCase(key), ":", value, ";") }); return buffer.join("") }; goog.style.setFloat = function(el, value) { el.style[goog.userAgent.IE ? "styleFloat" : "cssFloat"] = value }; goog.style.getFloat = function(el) { return el.style[goog.userAgent.IE ? "styleFloat" : "cssFloat"] || "" }; goog.style.getScrollbarWidth = function(opt_className) { var outerDiv = goog.dom.createElement("div"); if(opt_className) { outerDiv.className = opt_className } outerDiv.style.cssText = "overflow:auto;" + "position:absolute;top:0;width:100px;height:100px"; var innerDiv = goog.dom.createElement("div"); goog.style.setSize(innerDiv, "200px", "200px"); outerDiv.appendChild(innerDiv); goog.dom.appendChild(goog.dom.getDocument().body, outerDiv); var width = outerDiv.offsetWidth - outerDiv.clientWidth; goog.dom.removeNode(outerDiv); return width }; goog.style.MATRIX_TRANSLATION_REGEX_ = new RegExp("matrix\\([0-9\\.\\-]+, [0-9\\.\\-]+, " + "[0-9\\.\\-]+, [0-9\\.\\-]+, " + "([0-9\\.\\-]+)p?x?, ([0-9\\.\\-]+)p?x?\\)"); goog.style.getCssTranslation = function(element) { var property; if(goog.userAgent.IE) { property = "-ms-transform" }else { if(goog.userAgent.WEBKIT) { property = "-webkit-transform" }else { if(goog.userAgent.OPERA) { property = "-o-transform" }else { if(goog.userAgent.GECKO) { property = "-moz-transform" } } } } var transform; if(property) { transform = goog.style.getStyle_(element, property) } if(!transform) { transform = goog.style.getStyle_(element, "transform") } if(!transform) { return new goog.math.Coordinate(0, 0) } var matches = transform.match(goog.style.MATRIX_TRANSLATION_REGEX_); if(!matches) { return new goog.math.Coordinate(0, 0) } return new goog.math.Coordinate(parseFloat(matches[1]), parseFloat(matches[2])) }; goog.provide("goog.events.MouseWheelEvent"); goog.provide("goog.events.MouseWheelHandler"); goog.provide("goog.events.MouseWheelHandler.EventType"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventTarget"); goog.require("goog.math"); goog.require("goog.style"); goog.require("goog.userAgent"); goog.events.MouseWheelHandler = function(element, opt_capture) { goog.events.EventTarget.call(this); this.element_ = element; var rtlElement = goog.dom.isElement(this.element_) ? (this.element_) : this.element_ ? (this.element_).body : null; this.isRtl_ = !!rtlElement && goog.style.isRightToLeft(rtlElement); var type = goog.userAgent.GECKO ? "DOMMouseScroll" : "mousewheel"; this.listenKey_ = goog.events.listen(this.element_, type, this, opt_capture) }; goog.inherits(goog.events.MouseWheelHandler, goog.events.EventTarget); goog.events.MouseWheelHandler.EventType = {MOUSEWHEEL:"mousewheel"}; goog.events.MouseWheelHandler.prototype.maxDeltaX_; goog.events.MouseWheelHandler.prototype.maxDeltaY_; goog.events.MouseWheelHandler.prototype.setMaxDeltaX = function(maxDeltaX) { this.maxDeltaX_ = maxDeltaX }; goog.events.MouseWheelHandler.prototype.setMaxDeltaY = function(maxDeltaY) { this.maxDeltaY_ = maxDeltaY }; goog.events.MouseWheelHandler.prototype.handleEvent = function(e) { var deltaX = 0; var deltaY = 0; var detail = 0; var be = e.getBrowserEvent(); if(be.type == "mousewheel") { var wheelDeltaScaleFactor = 1; if(goog.userAgent.IE || goog.userAgent.WEBKIT && (goog.userAgent.WINDOWS || goog.userAgent.isVersionOrHigher("532.0"))) { wheelDeltaScaleFactor = 40 } detail = goog.events.MouseWheelHandler.smartScale_(-be.wheelDelta, wheelDeltaScaleFactor); if(goog.isDef(be.wheelDeltaX)) { deltaX = goog.events.MouseWheelHandler.smartScale_(-be.wheelDeltaX, wheelDeltaScaleFactor); deltaY = goog.events.MouseWheelHandler.smartScale_(-be.wheelDeltaY, wheelDeltaScaleFactor) }else { deltaY = detail } }else { detail = be.detail; if(detail > 100) { detail = 3 }else { if(detail < -100) { detail = -3 } } if(goog.isDef(be.axis) && be.axis === be.HORIZONTAL_AXIS) { deltaX = detail }else { deltaY = detail } } if(goog.isNumber(this.maxDeltaX_)) { deltaX = goog.math.clamp(deltaX, -this.maxDeltaX_, this.maxDeltaX_) } if(goog.isNumber(this.maxDeltaY_)) { deltaY = goog.math.clamp(deltaY, -this.maxDeltaY_, this.maxDeltaY_) } if(this.isRtl_) { deltaX = -deltaX } var newEvent = new goog.events.MouseWheelEvent(detail, be, deltaX, deltaY); this.dispatchEvent(newEvent) }; goog.events.MouseWheelHandler.smartScale_ = function(mouseWheelDelta, scaleFactor) { if(goog.userAgent.WEBKIT && (goog.userAgent.MAC || goog.userAgent.LINUX) && mouseWheelDelta % scaleFactor != 0) { return mouseWheelDelta }else { return mouseWheelDelta / scaleFactor } }; goog.events.MouseWheelHandler.prototype.disposeInternal = function() { goog.events.MouseWheelHandler.superClass_.disposeInternal.call(this); goog.events.unlistenByKey(this.listenKey_); this.listenKey_ = null }; goog.events.MouseWheelEvent = function(detail, browserEvent, deltaX, deltaY) { goog.events.BrowserEvent.call(this, browserEvent); this.type = goog.events.MouseWheelHandler.EventType.MOUSEWHEEL; this.detail = detail; this.deltaX = deltaX; this.deltaY = deltaY }; goog.inherits(goog.events.MouseWheelEvent, goog.events.BrowserEvent); goog.provide("goog.log"); goog.provide("goog.log.Level"); goog.provide("goog.log.LogRecord"); goog.provide("goog.log.Logger"); goog.require("goog.debug"); goog.require("goog.debug.LogRecord"); goog.require("goog.debug.Logger"); goog.define("goog.log.ENABLED", goog.debug.LOGGING_ENABLED); goog.log.Logger = goog.debug.Logger; goog.log.Level = goog.debug.Logger.Level; goog.log.LogRecord = goog.debug.LogRecord; goog.log.getLogger = function(name, opt_level) { if(goog.log.ENABLED) { var logger = goog.debug.Logger.getLogger(name); if(opt_level && logger) { logger.setLevel(opt_level) } return logger }else { return null } }; goog.log.addHandler = function(logger, handler) { if(goog.log.ENABLED && logger) { logger.addHandler(handler) } }; goog.log.removeHandler = function(logger, handler) { if(goog.log.ENABLED && logger) { return logger.removeHandler(handler) }else { return false } }; goog.log.log = function(logger, level, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.log(level, msg, opt_exception) } }; goog.log.error = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.severe(msg, opt_exception) } }; goog.log.warning = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.warning(msg, opt_exception) } }; goog.log.info = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.info(msg, opt_exception) } }; goog.log.fine = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.fine(msg, opt_exception) } }; goog.provide("ol.MapEvent"); goog.provide("ol.MapEventType"); goog.require("goog.events.Event"); goog.require("ol.FrameState"); ol.MapEventType = {POSTRENDER:"postrender", MOVEEND:"moveend"}; ol.MapEvent = function(type, map, opt_frameState) { goog.base(this, type); this.map = map; this.frameState = goog.isDef(opt_frameState) ? opt_frameState : null }; goog.inherits(ol.MapEvent, goog.events.Event); goog.provide("ol.Pixel"); ol.Pixel; goog.provide("ol.MapBrowserEvent"); goog.provide("ol.MapBrowserEvent.EventType"); goog.provide("ol.MapBrowserEventHandler"); goog.require("goog.array"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.style"); goog.require("ol.BrowserFeature"); goog.require("ol.Coordinate"); goog.require("ol.FrameState"); goog.require("ol.MapEvent"); goog.require("ol.Pixel"); ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) { goog.base(this, type, map, opt_frameState); this.browserEvent = browserEvent; this.coordinate_ = null; this.pixel_ = null }; goog.inherits(ol.MapBrowserEvent, ol.MapEvent); ol.MapBrowserEvent.prototype.getCoordinate = function() { if(goog.isNull(this.coordinate_)) { this.coordinate_ = this.map.getCoordinateFromPixel(this.getPixel()) } return this.coordinate_ }; ol.MapBrowserEvent.prototype.getPixel = function() { if(goog.isNull(this.pixel_)) { var eventPosition = goog.style.getRelativePosition(this.browserEvent, this.map.getViewport()); this.pixel_ = [eventPosition.x, eventPosition.y] } return this.pixel_ }; ol.MapBrowserEvent.prototype.isMouseActionButton = function() { return ol.BrowserFeature.HAS_TOUCH || this.browserEvent.isMouseActionButton() }; ol.MapBrowserEvent.prototype.preventDefault = function() { goog.base(this, "preventDefault"); this.browserEvent.preventDefault() }; ol.MapBrowserEvent.prototype.stopPropagation = function() { goog.base(this, "stopPropagation"); this.browserEvent.stopPropagation() }; ol.MapBrowserEventHandler = function(map) { goog.base(this); this.map_ = map; this.dragged_ = false; this.timestamp_ = null; this.listenerKeys_ = null; this.dragListenerKeys_ = null; this.touchListenerKeys_ = null; this.down_ = null; var element = this.map_.getViewport(); this.listenerKeys_ = [goog.events.listen(element, [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK], this.click_, false, this), goog.events.listen(element, goog.events.EventType.MOUSEDOWN, this.handleMouseDown_, false, this), goog.events.listen(element, goog.events.EventType.MOUSEMOVE, this.relayEvent_, false, this), goog.events.listen(element, goog.events.EventType.MOUSEOUT, this.relayEvent_, false, this), goog.events.listen(element, goog.events.EventType.CONTEXTMENU, this.relayEvent_, false, this)]; this.touchListenerKeys_ = [goog.events.listen(element, [goog.events.EventType.TOUCHSTART, goog.events.EventType.MSPOINTERDOWN], this.handleTouchStart_, false, this), goog.events.listen(goog.global.document, [goog.events.EventType.TOUCHMOVE, goog.events.EventType.MSPOINTERMOVE], this.handleTouchMove_, false, this), goog.events.listen(goog.global.document, [goog.events.EventType.TOUCHEND, goog.events.EventType.MSPOINTERUP], this.handleTouchEnd_, false, this)] }; goog.inherits(ol.MapBrowserEventHandler, goog.events.EventTarget); ol.MapBrowserEventHandler.prototype.click_ = function(browserEvent) { if(!this.dragged_) { var newEvent; var type = browserEvent.type; if(this.timestamp_ === 0 || type == goog.events.EventType.DBLCLICK) { newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.DBLCLICK, this.map_, browserEvent); this.dispatchEvent(newEvent) }else { newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.CLICK, this.map_, browserEvent); this.dispatchEvent(newEvent) } } }; ol.MapBrowserEventHandler.prototype.handleMouseUp_ = function(browserEvent) { if(this.down_) { this.down_ = null; goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null; if(this.dragged_) { var newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.DRAGEND, this.map_, browserEvent); this.dispatchEvent(newEvent) } } }; ol.MapBrowserEventHandler.prototype.handleMouseDown_ = function(browserEvent) { var newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.DOWN, this.map_, browserEvent); this.dispatchEvent(newEvent); if(!this.down_) { this.down_ = browserEvent; this.dragged_ = false; this.dragListenerKeys_ = [goog.events.listen(goog.global.document, goog.events.EventType.MOUSEMOVE, this.handleMouseMove_, false, this), goog.events.listen(goog.global.document, goog.events.EventType.MOUSEUP, this.handleMouseUp_, false, this)]; browserEvent.preventDefault() } }; ol.MapBrowserEventHandler.prototype.handleMouseMove_ = function(browserEvent) { var newEvent; if(!this.dragged_) { this.dragged_ = true; newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.DRAGSTART, this.map_, this.down_); this.dispatchEvent(newEvent) } newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.DRAG, this.map_, browserEvent); this.dispatchEvent(newEvent) }; ol.MapBrowserEventHandler.prototype.relayEvent_ = function(browserEvent) { this.dispatchEvent(new ol.MapBrowserEvent(browserEvent.type, this.map_, browserEvent)) }; ol.MapBrowserEventHandler.prototype.handleTouchStart_ = function(browserEvent) { browserEvent.preventDefault(); this.down_ = browserEvent; this.dragged_ = false; var newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.TOUCHSTART, this.map_, browserEvent); this.dispatchEvent(newEvent) }; ol.MapBrowserEventHandler.prototype.handleTouchMove_ = function(browserEvent) { if(this.down_) { this.dragged_ = true; var newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.TOUCHMOVE, this.map_, browserEvent); this.dispatchEvent(newEvent) } }; ol.MapBrowserEventHandler.prototype.handleTouchEnd_ = function(browserEvent) { var newEvent = new ol.MapBrowserEvent(ol.MapBrowserEvent.EventType.TOUCHEND, this.map_, browserEvent); this.dispatchEvent(newEvent); if(!this.dragged_) { var now = goog.now(); if(!this.timestamp_ || now - this.timestamp_ > 250) { this.timestamp_ = now }else { this.timestamp_ = 0 } if(!goog.isNull(this.down_)) { this.click_(this.down_) } } this.down_ = null }; ol.MapBrowserEventHandler.prototype.disposeInternal = function() { if(!goog.isNull(this.listenerKeys_)) { goog.array.forEach(this.listenerKeys_, goog.events.unlistenByKey); this.listenerKeys_ = null } if(!goog.isNull(this.dragListenerKeys_)) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null } if(!goog.isNull(this.touchListenerKeys_)) { goog.array.forEach(this.touchListenerKeys_, goog.events.unlistenByKey); this.touchListenerKeys_ = null } goog.base(this, "disposeInternal") }; ol.MapBrowserEvent.EventType = {CLICK:goog.events.EventType.CLICK, DBLCLICK:goog.events.EventType.DBLCLICK, DOWN:"down", DRAGSTART:"dragstart", DRAG:"drag", DRAGEND:"dragend", TOUCHSTART:goog.events.EventType.TOUCHSTART, TOUCHMOVE:goog.events.EventType.TOUCHMOVE, TOUCHEND:goog.events.EventType.TOUCHEND, MOUSEMOVE:goog.events.EventType.MOUSEMOVE, MOUSEOUT:goog.events.EventType.MOUSEOUT, CONTEXTMENU:goog.events.EventType.CONTEXTMENU}; goog.provide("ol.View2D"); goog.provide("ol.View2DProperty"); goog.require("goog.asserts"); goog.require("ol.Constraints"); goog.require("ol.IView2D"); goog.require("ol.IView3D"); goog.require("ol.Projection"); goog.require("ol.ProjectionUnits"); goog.require("ol.ResolutionConstraint"); goog.require("ol.RotationConstraint"); goog.require("ol.RotationConstraintType"); goog.require("ol.Size"); goog.require("ol.View"); goog.require("ol.coordinate"); goog.require("ol.extent"); goog.require("ol.proj"); ol.View2DProperty = {CENTER:"center", PROJECTION:"projection", RESOLUTION:"resolution", ROTATION:"rotation"}; ol.View2D = function(opt_options) { goog.base(this); var options = opt_options || {}; var values = {}; values[ol.View2DProperty.CENTER] = goog.isDef(options.center) ? options.center : null; values[ol.View2DProperty.PROJECTION] = ol.proj.createProjection(options.projection, "EPSG:3857"); var resolutionConstraintInfo = ol.View2D.createResolutionConstraint_(options); this.maxResolution_ = resolutionConstraintInfo.maxResolution; this.minResolution_ = resolutionConstraintInfo.minResolution; var resolutionConstraint = resolutionConstraintInfo.constraint; var rotationConstraint = ol.View2D.createRotationConstraint_(options); this.constraints_ = new ol.Constraints(resolutionConstraint, rotationConstraint); if(goog.isDef(options.resolution)) { values[ol.View2DProperty.RESOLUTION] = options.resolution }else { if(goog.isDef(options.zoom)) { values[ol.View2DProperty.RESOLUTION] = this.constrainResolution(this.maxResolution_, options.zoom) } } values[ol.View2DProperty.ROTATION] = goog.isDef(options.rotation) ? options.rotation : 0; this.setValues(values) }; goog.inherits(ol.View2D, ol.View); ol.View2D.prototype.calculateCenterRotate = function(rotation, anchor) { var center; var currentCenter = this.getCenter(); if(goog.isDef(currentCenter)) { center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]]; ol.coordinate.rotate(center, rotation - this.getRotation()); ol.coordinate.add(center, anchor) } return center }; ol.View2D.prototype.calculateCenterZoom = function(resolution, anchor) { var center; var currentCenter = this.getCenter(); var currentResolution = this.getResolution(); if(goog.isDef(currentCenter) && goog.isDef(currentResolution)) { var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution; var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution; center = [x, y] } return center }; ol.View2D.prototype.constrainResolution = function(resolution, opt_delta, opt_direction) { var delta = opt_delta || 0; var direction = opt_direction || 0; return this.constraints_.resolution(resolution, delta, direction) }; ol.View2D.prototype.constrainRotation = function(rotation, opt_delta) { var delta = opt_delta || 0; return this.constraints_.rotation(rotation, delta) }; ol.View2D.prototype.getCenter = function() { return(this.get(ol.View2DProperty.CENTER)) }; goog.exportProperty(ol.View2D.prototype, "getCenter", ol.View2D.prototype.getCenter); ol.View2D.prototype.calculateExtent = function(size) { goog.asserts.assert(this.isDef()); var center = this.getCenter(); var resolution = this.getResolution(); var minX = center[0] - resolution * size[0] / 2; var maxX = center[0] + resolution * size[0] / 2; var minY = center[1] - resolution * size[1] / 2; var maxY = center[1] + resolution * size[1] / 2; return[minX, maxX, minY, maxY] }; ol.View2D.prototype.getProjection = function() { return(this.get(ol.View2DProperty.PROJECTION)) }; goog.exportProperty(ol.View2D.prototype, "getProjection", ol.View2D.prototype.getProjection); ol.View2D.prototype.getResolution = function() { return(this.get(ol.View2DProperty.RESOLUTION)) }; goog.exportProperty(ol.View2D.prototype, "getResolution", ol.View2D.prototype.getResolution); ol.View2D.prototype.getResolutionForExtent = function(extent, size) { var xResolution = (extent[1] - extent[0]) / size[0]; var yResolution = (extent[3] - extent[2]) / size[1]; return Math.max(xResolution, yResolution) }; ol.View2D.prototype.getResolutionForValueFunction = function(opt_power) { var power = opt_power || 2; var maxResolution = this.maxResolution_; var minResolution = this.minResolution_; var max = Math.log(maxResolution / minResolution) / Math.log(power); return function(value) { var resolution = maxResolution / Math.pow(power, value * max); goog.asserts.assert(resolution >= minResolution && resolution <= maxResolution); return resolution } }; ol.View2D.prototype.getRotation = function() { return(this.get(ol.View2DProperty.ROTATION)) }; goog.exportProperty(ol.View2D.prototype, "getRotation", ol.View2D.prototype.getRotation); ol.View2D.prototype.getValueForResolutionFunction = function(opt_power) { var power = opt_power || 2; var maxResolution = this.maxResolution_; var minResolution = this.minResolution_; var max = Math.log(maxResolution / minResolution) / Math.log(power); return function(resolution) { var value = Math.log(maxResolution / resolution) / Math.log(power) / max; goog.asserts.assert(value >= 0 && value <= 1); return value } }; ol.View2D.prototype.getView2D = function() { return this }; ol.View2D.prototype.getView2DState = function() { goog.asserts.assert(this.isDef()); var center = (this.getCenter()); var projection = this.getProjection(); var resolution = (this.getResolution()); var rotation = this.getRotation(); return{center:center.slice(), projection:goog.isDef(projection) ? projection : null, resolution:resolution, rotation:goog.isDef(rotation) ? rotation : 0} }; ol.View2D.prototype.getView3D = function() { }; ol.View2D.prototype.getZoom = function() { var zoom; var resolution = this.getResolution(); if(goog.isDef(resolution)) { var res, z = 0; do { res = this.constrainResolution(this.maxResolution_, z); if(res == resolution) { zoom = z; break } ++z }while(res > this.minResolution_) } return zoom }; ol.View2D.prototype.fitExtent = function(extent, size) { this.setCenter(ol.extent.getCenter(extent)); var resolution = this.getResolutionForExtent(extent, size); resolution = this.constrainResolution(resolution, 0, 0); this.setResolution(resolution) }; ol.View2D.prototype.isDef = function() { return goog.isDefAndNotNull(this.getCenter()) && goog.isDef(this.getResolution()) }; ol.View2D.prototype.setCenter = function(center) { this.set(ol.View2DProperty.CENTER, center) }; goog.exportProperty(ol.View2D.prototype, "setCenter", ol.View2D.prototype.setCenter); ol.View2D.prototype.setProjection = function(projection) { this.set(ol.View2DProperty.PROJECTION, projection) }; goog.exportProperty(ol.View2D.prototype, "setProjection", ol.View2D.prototype.setProjection); ol.View2D.prototype.setResolution = function(resolution) { this.set(ol.View2DProperty.RESOLUTION, resolution) }; goog.exportProperty(ol.View2D.prototype, "setResolution", ol.View2D.prototype.setResolution); ol.View2D.prototype.setRotation = function(rotation) { this.set(ol.View2DProperty.ROTATION, rotation) }; goog.exportProperty(ol.View2D.prototype, "setRotation", ol.View2D.prototype.setRotation); ol.View2D.prototype.setZoom = function(zoom) { var resolution = this.constrainResolution(this.maxResolution_, zoom, 0); this.setResolution(resolution) }; ol.View2D.createResolutionConstraint_ = function(options) { var resolutionConstraint; var maxResolution; var minResolution; if(goog.isDef(options.resolutions)) { var resolutions = options.resolutions; maxResolution = resolutions[0]; minResolution = resolutions[resolutions.length - 1]; resolutionConstraint = ol.ResolutionConstraint.createSnapToResolutions(resolutions) }else { maxResolution = options.maxResolution; if(!goog.isDef(maxResolution)) { var projection = options.projection; var projectionExtent = ol.proj.createProjection(projection, "EPSG:3857").getExtent(); var size = goog.isNull(projectionExtent) ? 360 * ol.METERS_PER_UNIT[ol.ProjectionUnits.DEGREES] / ol.METERS_PER_UNIT[projection.getUnits()] : Math.max(projectionExtent[1] - projectionExtent[0], projectionExtent[3] - projectionExtent[2]); maxResolution = size / ol.DEFAULT_TILE_SIZE } var maxZoom = options.maxZoom; if(!goog.isDef(maxZoom)) { maxZoom = 28 } var zoomFactor = options.zoomFactor; if(!goog.isDef(zoomFactor)) { zoomFactor = 2 } minResolution = maxResolution / Math.pow(zoomFactor, maxZoom); resolutionConstraint = ol.ResolutionConstraint.createSnapToPower(zoomFactor, maxResolution, maxZoom) } return{constraint:resolutionConstraint, maxResolution:maxResolution, minResolution:minResolution} }; ol.View2D.createRotationConstraint_ = function(options) { return ol.RotationConstraint.createSnapToZero() }; goog.provide("ol.control.Control"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("ol.MapEventType"); goog.require("ol.Object"); ol.control.Control = function(options) { goog.base(this); this.element = goog.isDef(options.element) ? options.element : null; this.target_ = options.target; this.map_ = null; this.listenerKeys = [] }; goog.inherits(ol.control.Control, ol.Object); ol.control.Control.prototype.disposeInternal = function() { goog.dom.removeNode(this.element); goog.base(this, "disposeInternal") }; ol.control.Control.prototype.getMap = function() { return this.map_ }; ol.control.Control.prototype.handleMapPostrender = goog.nullFunction; ol.control.Control.prototype.setMap = function(map) { if(!goog.isNull(this.map_)) { goog.dom.removeNode(this.element) } if(!goog.array.isEmpty(this.listenerKeys)) { goog.array.forEach(this.listenerKeys, goog.events.unlistenByKey); this.listenerKeys.length = 0 } this.map_ = map; if(!goog.isNull(this.map_)) { var target = goog.isDef(this.target_) ? this.target_ : map.getOverlayContainer(); goog.dom.appendChild(target, this.element); if(this.handleMapPostrender !== goog.nullFunction) { this.listenerKeys.push(goog.events.listen(map, ol.MapEventType.POSTRENDER, this.handleMapPostrender, false, this)) } } }; goog.provide("ol.css"); ol.css.CLASS_UNSELECTABLE = "ol-unselectable"; ol.css.CLASS_UNSUPPORTED = "ol-unsupported"; goog.provide("ol.control.Attribution"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.style"); goog.require("ol.Attribution"); goog.require("ol.FrameState"); goog.require("ol.control.Control"); goog.require("ol.css"); ol.control.Attribution = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.ulElement_ = goog.dom.createElement(goog.dom.TagName.UL); var className = goog.isDef(options.className) ? options.className : "ol-attribution"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}, this.ulElement_); goog.base(this, {element:element, target:options.target}); this.renderedVisible_ = true; this.attributionElements_ = {}; this.attributionElementRenderedVisible_ = {} }; goog.inherits(ol.control.Attribution, ol.control.Control); ol.control.Attribution.prototype.getSourceAttributions = function(frameState) { var i, ii, j, jj, tileRanges, source, sourceAttribution, sourceAttributionKey, sourceAttributions, sourceKey; var layers = frameState.layersArray; var attributions = goog.object.clone(frameState.attributions); var hiddenAttributions = {}; for(i = 0, ii = layers.length;i < ii;i++) { source = layers[i].getSource(); sourceKey = goog.getUid(source).toString(); sourceAttributions = source.getAttributions(); if(goog.isNull(sourceAttributions)) { continue } for(j = 0, jj = sourceAttributions.length;j < jj;j++) { sourceAttribution = sourceAttributions[j]; sourceAttributionKey = goog.getUid(sourceAttribution).toString(); if(sourceAttributionKey in attributions) { continue } tileRanges = frameState.usedTiles[sourceKey]; if(goog.isDef(tileRanges) && sourceAttribution.intersectsAnyTileRange(tileRanges)) { if(sourceAttributionKey in hiddenAttributions) { delete hiddenAttributions[sourceAttributionKey] } attributions[sourceAttributionKey] = sourceAttribution }else { hiddenAttributions[sourceAttributionKey] = sourceAttribution } } } return[attributions, hiddenAttributions] }; ol.control.Attribution.prototype.handleMapPostrender = function(mapEvent) { this.updateElement_(mapEvent.frameState) }; ol.control.Attribution.prototype.updateElement_ = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.element, false); this.renderedVisible_ = false } return } var attributions = this.getSourceAttributions(frameState); var visibleAttributions = attributions[0]; var hiddenAttributions = attributions[1]; var attributionElement, attributionKey; for(attributionKey in this.attributionElements_) { if(attributionKey in visibleAttributions) { if(!this.attributionElementRenderedVisible_[attributionKey]) { goog.style.setElementShown(this.attributionElements_[attributionKey], true); this.attributionElementRenderedVisible_[attributionKey] = true } delete visibleAttributions[attributionKey] }else { if(attributionKey in hiddenAttributions) { if(this.attributionElementRenderedVisible_[attributionKey]) { goog.style.setElementShown(this.attributionElements_[attributionKey], false); delete this.attributionElementRenderedVisible_[attributionKey] } delete hiddenAttributions[attributionKey] }else { goog.dom.removeNode(this.attributionElements_[attributionKey]); delete this.attributionElements_[attributionKey]; delete this.attributionElementRenderedVisible_[attributionKey] } } } for(attributionKey in visibleAttributions) { attributionElement = goog.dom.createElement(goog.dom.TagName.LI); attributionElement.innerHTML = visibleAttributions[attributionKey].getHTML(); goog.dom.appendChild(this.ulElement_, attributionElement); this.attributionElements_[attributionKey] = attributionElement; this.attributionElementRenderedVisible_[attributionKey] = true } for(attributionKey in hiddenAttributions) { attributionElement = goog.dom.createElement(goog.dom.TagName.LI); attributionElement.innerHTML = hiddenAttributions[attributionKey].getHTML(); goog.style.setElementShown(attributionElement, false); goog.dom.appendChild(this.ulElement_, attributionElement); this.attributionElements_[attributionKey] = attributionElement } var renderVisible = !goog.object.isEmpty(this.attributionElementRenderedVisible_); if(this.renderedVisible_ != renderVisible) { goog.style.setElementShown(this.element, renderVisible); this.renderedVisible_ = renderVisible } }; goog.provide("ol.control.Logo"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.style"); goog.require("ol.FrameState"); goog.require("ol.control.Control"); goog.require("ol.css"); ol.control.Logo = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.ulElement_ = goog.dom.createElement(goog.dom.TagName.UL); var className = goog.isDef(options.className) ? options.className : "ol-logo"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}, this.ulElement_); goog.base(this, {element:element, target:options.target}); this.renderedVisible_ = true; this.logoElements_ = {} }; goog.inherits(ol.control.Logo, ol.control.Control); ol.control.Logo.prototype.handleMapPostrender = function(mapEvent) { this.updateElement_(mapEvent.frameState) }; ol.control.Logo.prototype.updateElement_ = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.element, false); this.renderedVisible_ = false } return } var logo; var logos = frameState.logos; var logoElements = this.logoElements_; for(logo in logoElements) { if(!(logo in logos)) { goog.dom.removeNode(logoElements[logo]); delete logoElements[logo] } } var image, logoElement; for(logo in logos) { if(!(logo in logoElements)) { image = new Image; image.src = logo; logoElement = goog.dom.createElement(goog.dom.TagName.LI); logoElement.appendChild(image); goog.dom.appendChild(this.ulElement_, logoElement); logoElements[logo] = logoElement } } var renderVisible = !goog.object.isEmpty(logos); if(this.renderedVisible_ != renderVisible) { goog.style.setElementShown(this.element, renderVisible); this.renderedVisible_ = renderVisible } }; goog.provide("ol.control.Zoom"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.animation"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.easing"); ol.control.ZOOM_DURATION = 250; ol.control.Zoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var className = goog.isDef(options.className) ? options.className : "ol-zoom"; var delta = goog.isDef(options.delta) ? options.delta : 1; var inElement = goog.dom.createDom(goog.dom.TagName.A, {"href":"#zoomIn", "class":className + "-in"}); goog.events.listen(inElement, [goog.events.EventType.TOUCHEND, goog.events.EventType.CLICK], goog.partial(ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); var outElement = goog.dom.createDom(goog.dom.TagName.A, {"href":"#zoomOut", "class":className + "-out"}); goog.events.listen(outElement, [goog.events.EventType.TOUCHEND, goog.events.EventType.CLICK], goog.partial(ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); var cssClasses = className + " " + ol.css.CLASS_UNSELECTABLE; var element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, inElement, outElement); goog.base(this, {element:element, target:options.target}) }; goog.inherits(ol.control.Zoom, ol.control.Control); ol.control.Zoom.prototype.zoomByDelta_ = function(delta, browserEvent) { browserEvent.preventDefault(); var map = this.getMap(); var view = map.getView().getView2D(); var currentResolution = view.getResolution(); if(goog.isDef(currentResolution)) { map.beforeRender(ol.animation.zoom({resolution:currentResolution, duration:ol.control.ZOOM_DURATION, easing:ol.easing.easeOut})); var newResolution = view.constrainResolution(currentResolution, delta); view.setResolution(newResolution) } }; goog.provide("ol.control"); goog.require("ol.Collection"); goog.require("ol.control.Attribution"); goog.require("ol.control.Logo"); goog.require("ol.control.Zoom"); ol.control.defaults = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var controls = new ol.Collection; var attributionControl = goog.isDef(options.attribution) ? options.attribution : true; if(attributionControl) { var attributionControlOptions = goog.isDef(options.attributionOptions) ? options.attributionOptions : undefined; controls.push(new ol.control.Attribution(attributionControlOptions)) } var logoControl = goog.isDef(options.logo) ? options.logo : true; if(logoControl) { var logoControlOptions = goog.isDef(options.logoOptions) ? options.logoOptions : undefined; controls.push(new ol.control.Logo(logoControlOptions)) } var zoomControl = goog.isDef(options.zoom) ? options.zoom : true; if(zoomControl) { var zoomControlOptions = goog.isDef(options.zoomOptions) ? options.zoomOptions : undefined; controls.push(new ol.control.Zoom(zoomControlOptions)) } return controls }; goog.provide("ol.interaction.Interaction"); goog.require("ol.MapBrowserEvent"); goog.require("ol.animation"); goog.require("ol.easing"); ol.interaction.Interaction = function() { }; ol.interaction.Interaction.prototype.handleMapBrowserEvent = goog.abstractMethod; ol.interaction.Interaction.pan = function(map, view, delta, opt_duration) { var currentCenter = view.getCenter(); if(goog.isDef(currentCenter)) { if(goog.isDef(opt_duration)) { map.beforeRender(ol.animation.pan({source:currentCenter, duration:opt_duration, easing:ol.easing.linear})) } view.setCenter([currentCenter[0] + delta[0], currentCenter[1] + delta[1]]) } }; ol.interaction.Interaction.rotate = function(map, view, rotation, opt_anchor, opt_duration) { rotation = view.constrainRotation(rotation, 0); ol.interaction.Interaction.rotateWithoutConstraints(map, view, rotation, opt_anchor, opt_duration) }; ol.interaction.Interaction.rotateWithoutConstraints = function(map, view, rotation, opt_anchor, opt_duration) { if(goog.isDefAndNotNull(rotation)) { var currentRotation = view.getRotation(); var currentCenter = view.getCenter(); if(goog.isDef(currentRotation) && goog.isDef(currentCenter) && goog.isDef(opt_duration)) { map.beforeRender(ol.animation.rotate({rotation:currentRotation, duration:opt_duration, easing:ol.easing.easeOut})); if(goog.isDef(opt_anchor)) { map.beforeRender(ol.animation.pan({source:currentCenter, duration:opt_duration, easing:ol.easing.easeOut})) } } if(goog.isDefAndNotNull(opt_anchor)) { var center = view.calculateCenterRotate(rotation, opt_anchor); map.withFrozenRendering(function() { view.setCenter(center); view.setRotation(rotation) }) }else { view.setRotation(rotation) } } }; ol.interaction.Interaction.zoom = function(map, view, resolution, opt_anchor, opt_duration, opt_direction) { resolution = view.constrainResolution(resolution, 0, opt_direction); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution, opt_anchor, opt_duration) }; ol.interaction.Interaction.zoomByDelta = function(map, view, delta, opt_anchor, opt_duration) { var currentResolution = view.getResolution(); var resolution = view.constrainResolution(currentResolution, delta, 0); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution, opt_anchor, opt_duration) }; ol.interaction.Interaction.zoomWithoutConstraints = function(map, view, resolution, opt_anchor, opt_duration) { if(goog.isDefAndNotNull(resolution)) { var currentResolution = view.getResolution(); var currentCenter = view.getCenter(); if(goog.isDef(currentResolution) && goog.isDef(currentCenter) && goog.isDef(opt_duration)) { map.beforeRender(ol.animation.zoom({resolution:currentResolution, duration:opt_duration, easing:ol.easing.easeOut})); if(goog.isDef(opt_anchor)) { map.beforeRender(ol.animation.pan({source:currentCenter, duration:opt_duration, easing:ol.easing.easeOut})) } } if(goog.isDefAndNotNull(opt_anchor)) { var center = view.calculateCenterZoom(resolution, opt_anchor); map.withFrozenRendering(function() { view.setCenter(center); view.setResolution(resolution) }) }else { view.setResolution(resolution) } } }; goog.provide("ol.interaction.DoubleClickZoom"); goog.require("goog.asserts"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.interaction.Interaction"); ol.interaction.DOUBLECLICKZOOM_ANIMATION_DURATION = 250; ol.interaction.DoubleClickZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.delta_ = goog.isDef(options.delta) ? options.delta : 1; goog.base(this) }; goog.inherits(ol.interaction.DoubleClickZoom, ol.interaction.Interaction); ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; var browserEvent = mapBrowserEvent.browserEvent; if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DBLCLICK && mapBrowserEvent.isMouseActionButton()) { var map = mapBrowserEvent.map; var anchor = mapBrowserEvent.getCoordinate(); var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_; var view = map.getView().getView2D(); ol.interaction.Interaction.zoomByDelta(map, view, delta, anchor, ol.interaction.DOUBLECLICKZOOM_ANIMATION_DURATION); mapBrowserEvent.preventDefault(); stopEvent = true } return!stopEvent }; goog.provide("ol.interaction.ConditionType"); goog.provide("ol.interaction.condition"); goog.require("goog.dom.TagName"); goog.require("goog.events.EventType"); goog.require("goog.functions"); ol.interaction.ConditionType; ol.interaction.condition.altKeyOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return browserEvent.altKey && !browserEvent.platformModifierKey && !browserEvent.shiftKey }; ol.interaction.condition.altShiftKeysOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return browserEvent.altKey && !browserEvent.platformModifierKey && browserEvent.shiftKey }; ol.interaction.condition.always = goog.functions.TRUE; ol.interaction.condition.clickOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return browserEvent.type == goog.events.EventType.CLICK }; ol.interaction.condition.noModifierKeys = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return!browserEvent.altKey && !browserEvent.platformModifierKey && !browserEvent.shiftKey }; ol.interaction.condition.platformModifierKeyOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return!browserEvent.altKey && browserEvent.platformModifierKey && !browserEvent.shiftKey }; ol.interaction.condition.shiftKeyOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return!browserEvent.altKey && !browserEvent.platformModifierKey && browserEvent.shiftKey }; ol.interaction.condition.targetNotEditable = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var tagName = browserEvent.target.tagName; return tagName !== goog.dom.TagName.INPUT && tagName !== goog.dom.TagName.SELECT && tagName !== goog.dom.TagName.TEXTAREA }; goog.provide("ol.interaction.Drag"); goog.require("goog.asserts"); goog.require("goog.events.BrowserEvent"); goog.require("goog.functions"); goog.require("ol.Coordinate"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.ViewHint"); goog.require("ol.interaction.Interaction"); ol.interaction.Drag = function() { goog.base(this); this.dragging_ = false; this.interactingHint = 1; this.startX = 0; this.startY = 0; this.offsetX = 0; this.offsetY = 0; this.startCenter = null; this.startCoordinate = null }; goog.inherits(ol.interaction.Drag, ol.interaction.Interaction); ol.interaction.Drag.prototype.getDragging = function() { return this.dragging_ }; ol.interaction.Drag.prototype.handleDrag = goog.nullFunction; ol.interaction.Drag.prototype.handleDragEnd = goog.nullFunction; ol.interaction.Drag.prototype.handleDragStart = goog.functions.FALSE; ol.interaction.Drag.prototype.handleDown = goog.nullFunction; ol.interaction.Drag.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var map = mapBrowserEvent.map; if(!map.isDef()) { return true } var stopEvent = false; var view = map.getView(); var browserEvent = mapBrowserEvent.browserEvent; if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DOWN) { goog.asserts.assertInstanceof(browserEvent, goog.events.BrowserEvent); this.handleDown(mapBrowserEvent) } if(this.dragging_) { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DRAG) { goog.asserts.assertInstanceof(browserEvent, goog.events.BrowserEvent); this.deltaX = browserEvent.clientX - this.startX; this.deltaY = browserEvent.clientY - this.startY; this.handleDrag(mapBrowserEvent) }else { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DRAGEND) { goog.asserts.assertInstanceof(browserEvent, goog.events.BrowserEvent); this.deltaX = browserEvent.clientX - this.startX; this.deltaY = browserEvent.clientY - this.startY; this.handleDragEnd(mapBrowserEvent); view.setHint(ol.ViewHint.INTERACTING, -this.interactingHint); this.dragging_ = false } } }else { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DRAGSTART) { goog.asserts.assertInstanceof(browserEvent, goog.events.BrowserEvent); var view2DState = view.getView2D().getView2DState(); this.startX = browserEvent.clientX; this.startY = browserEvent.clientY; this.deltaX = 0; this.deltaY = 0; this.startCenter = view2DState.center; this.startCoordinate = (mapBrowserEvent.getCoordinate()); var handled = this.handleDragStart(mapBrowserEvent); if(handled) { view.setHint(ol.ViewHint.INTERACTING, this.interactingHint); this.dragging_ = true; mapBrowserEvent.preventDefault(); stopEvent = true } } } return!stopEvent }; goog.provide("ol.interaction.DragPan"); goog.require("goog.asserts"); goog.require("ol.Kinetic"); goog.require("ol.PreRenderFunction"); goog.require("ol.View2D"); goog.require("ol.coordinate"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Drag"); goog.require("ol.interaction.condition"); ol.interaction.DragPan = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : ol.interaction.condition.noModifierKeys; this.kinetic_ = options.kinetic; this.kineticPreRenderFn_ = null }; goog.inherits(ol.interaction.DragPan, ol.interaction.Drag); ol.interaction.DragPan.prototype.handleDrag = function(mapBrowserEvent) { if(this.kinetic_) { this.kinetic_.update(mapBrowserEvent.browserEvent.clientX, mapBrowserEvent.browserEvent.clientY) } var map = mapBrowserEvent.map; var view = map.getView(); goog.asserts.assertInstanceof(view, ol.View2D); var view2DState = view.getView2DState(); var newCenter = [-view2DState.resolution * this.deltaX, view2DState.resolution * this.deltaY]; ol.coordinate.rotate(newCenter, view2DState.rotation); ol.coordinate.add(newCenter, this.startCenter); map.requestRenderFrame(); view.setCenter(newCenter) }; ol.interaction.DragPan.prototype.handleDragEnd = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var view = map.getView().getView2D(); if(this.kinetic_ && this.kinetic_.end()) { var view2DState = view.getView2DState(); var distance = this.kinetic_.getDistance(); var angle = this.kinetic_.getAngle(); this.kineticPreRenderFn_ = this.kinetic_.pan(view2DState.center); map.beforeRender(this.kineticPreRenderFn_); var centerpx = map.getPixelFromCoordinate(view2DState.center); var dest = map.getCoordinateFromPixel([centerpx[0] - distance * Math.cos(angle), centerpx[1] - distance * Math.sin(angle)]); view.setCenter(dest) } map.requestRenderFrame() }; ol.interaction.DragPan.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; if(browserEvent.isMouseActionButton() && this.condition_(mapBrowserEvent)) { if(this.kinetic_) { this.kinetic_.begin(); this.kinetic_.update(browserEvent.clientX, browserEvent.clientY) } var map = mapBrowserEvent.map; map.requestRenderFrame(); return true }else { return false } }; ol.interaction.DragPan.prototype.handleDown = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var view = map.getView(); goog.asserts.assertInstanceof(view, ol.View2D); goog.asserts.assert(!goog.isNull(mapBrowserEvent.frameState)); if(!goog.isNull(this.kineticPreRenderFn_) && map.removePreRenderFunction(this.kineticPreRenderFn_)) { map.requestRenderFrame(); view.setCenter(mapBrowserEvent.frameState.view2DState.center); this.kineticPreRenderFn_ = null } }; goog.provide("ol.interaction.DragRotate"); goog.require("goog.asserts"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Drag"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.condition"); ol.interaction.DRAGROTATE_ANIMATION_DURATION = 250; ol.interaction.DragRotate = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.condition_ = goog.isDef(options.condition) ? options.condition : ol.interaction.condition.altShiftKeysOnly; this.lastAngle_ = undefined }; goog.inherits(ol.interaction.DragRotate, ol.interaction.Drag); ol.interaction.DragRotate.prototype.handleDrag = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var size = map.getSize(); var offset = mapBrowserEvent.getPixel(); var theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2); if(goog.isDef(this.lastAngle_)) { var delta = theta - this.lastAngle_; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); map.requestRenderFrame(); ol.interaction.Interaction.rotateWithoutConstraints(map, view, view2DState.rotation - delta) } this.lastAngle_ = theta }; ol.interaction.DragRotate.prototype.handleDragEnd = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); ol.interaction.Interaction.rotate(map, view, view2DState.rotation, undefined, ol.interaction.DRAGROTATE_ANIMATION_DURATION) }; ol.interaction.DragRotate.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; if(browserEvent.isMouseActionButton() && this.condition_(mapBrowserEvent)) { var map = mapBrowserEvent.map; map.requestRenderFrame(); this.lastAngle_ = undefined; return true }else { return false } }; goog.provide("ol.control.DragBox"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.math.Size"); goog.require("goog.style"); goog.require("ol.Coordinate"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.Pixel"); goog.require("ol.control.Control"); ol.control.DragBoxOptions; ol.control.DragBox = function(options) { var element = goog.dom.createDom(goog.dom.TagName.DIV, "ol-dragbox"); this.startPixel_ = null; this.startCoordinate_ = options.startCoordinate; goog.base(this, {element:element}) }; goog.inherits(ol.control.DragBox, ol.control.Control); ol.control.DragBox.prototype.setMap = function(map) { goog.base(this, "setMap", map); if(!goog.isNull(map)) { this.startPixel_ = map.getPixelFromCoordinate(this.startCoordinate_); goog.asserts.assert(goog.isDef(this.startPixel_)); goog.style.setPosition(this.element, this.startPixel_[0], this.startPixel_[1]); goog.style.setBorderBoxSize(this.element, new goog.math.Size(0, 0)); this.listenerKeys.push(goog.events.listen(map, ol.MapBrowserEvent.EventType.DRAG, this.updateBox_, false, this)) } }; ol.control.DragBox.prototype.updateBox_ = function(mapBrowserEvent) { var map = this.getMap(); var coordinate = mapBrowserEvent.getCoordinate(); goog.asserts.assert(goog.isDef(coordinate)); var currentPixel = map.getPixelFromCoordinate(coordinate); goog.style.setPosition(this.element, Math.min(currentPixel[0], this.startPixel_[0]), Math.min(currentPixel[1], this.startPixel_[1])); goog.style.setBorderBoxSize(this.element, new goog.math.Size(Math.abs(currentPixel[0] - this.startPixel_[0]), Math.abs(currentPixel[1] - this.startPixel_[1]))) }; goog.provide("ol.interaction.DragZoom"); goog.require("goog.asserts"); goog.require("ol.Size"); goog.require("ol.View2D"); goog.require("ol.control.DragBox"); goog.require("ol.extent"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Drag"); goog.require("ol.interaction.condition"); ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS = 8; ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED = ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS * ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS; ol.interaction.DragZoom = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : ol.interaction.condition.shiftKeyOnly; this.dragBox_ = null }; goog.inherits(ol.interaction.DragZoom, ol.interaction.Drag); ol.interaction.DragZoom.prototype.handleDragEnd = function(mapBrowserEvent) { this.dragBox_.setMap(null); this.dragBox_ = null; if(this.deltaX * this.deltaX + this.deltaY * this.deltaY >= ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED) { var map = mapBrowserEvent.map; var extent = ol.extent.boundingExtent([this.startCoordinate, mapBrowserEvent.getCoordinate()]); map.withFrozenRendering(function() { var view = map.getView(); goog.asserts.assertInstanceof(view, ol.View2D); var mapSize = (map.getSize()); view.fitExtent(extent, mapSize); view.setRotation(0) }) } }; ol.interaction.DragZoom.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; if(browserEvent.isMouseActionButton() && this.condition_(mapBrowserEvent)) { this.dragBox_ = new ol.control.DragBox({startCoordinate:this.startCoordinate}); this.dragBox_.setMap(mapBrowserEvent.map); return true }else { return false } }; goog.provide("ol.interaction.KeyboardPan"); goog.require("goog.asserts"); goog.require("goog.events.KeyCodes"); goog.require("goog.events.KeyHandler.EventType"); goog.require("goog.functions"); goog.require("ol.View2D"); goog.require("ol.coordinate"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.condition"); ol.interaction.KEYBOARD_PAN_DURATION = 100; ol.interaction.KeyboardPan = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : goog.functions.and(ol.interaction.condition.noModifierKeys, ol.interaction.condition.targetNotEditable); this.delta_ = goog.isDef(options.delta) ? options.delta : 128 }; goog.inherits(ol.interaction.KeyboardPan, ol.interaction.Interaction); ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; if(mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = (mapBrowserEvent.browserEvent); var keyCode = keyEvent.keyCode; if(this.condition_(mapBrowserEvent) && (keyCode == goog.events.KeyCodes.DOWN || keyCode == goog.events.KeyCodes.LEFT || keyCode == goog.events.KeyCodes.RIGHT || keyCode == goog.events.KeyCodes.UP)) { var map = mapBrowserEvent.map; var view = map.getView(); goog.asserts.assertInstanceof(view, ol.View2D); var view2DState = view.getView2DState(); var mapUnitsDelta = view2DState.resolution * this.delta_; var deltaX = 0, deltaY = 0; if(keyCode == goog.events.KeyCodes.DOWN) { deltaY = -mapUnitsDelta }else { if(keyCode == goog.events.KeyCodes.LEFT) { deltaX = -mapUnitsDelta }else { if(keyCode == goog.events.KeyCodes.RIGHT) { deltaX = mapUnitsDelta }else { deltaY = mapUnitsDelta } } } var delta = [deltaX, deltaY]; ol.coordinate.rotate(delta, view2DState.rotation); ol.interaction.Interaction.pan(map, view, delta, ol.interaction.KEYBOARD_PAN_DURATION); mapBrowserEvent.preventDefault(); stopEvent = true } } return!stopEvent }; goog.provide("ol.interaction.KeyboardZoom"); goog.require("goog.asserts"); goog.require("goog.events.KeyHandler.EventType"); goog.require("goog.functions"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.condition"); ol.interaction.KEYBOARD_ZOOM_DURATION = 100; ol.interaction.KeyboardZoom = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : goog.functions.and(ol.interaction.condition.noModifierKeys, ol.interaction.condition.targetNotEditable); this.delta_ = goog.isDef(options.delta) ? options.delta : 1 }; goog.inherits(ol.interaction.KeyboardZoom, ol.interaction.Interaction); ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; if(mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = (mapBrowserEvent.browserEvent); var charCode = keyEvent.charCode; if(this.condition_(mapBrowserEvent) && (charCode == "+".charCodeAt(0) || charCode == "-".charCodeAt(0))) { var map = mapBrowserEvent.map; var delta = charCode == "+".charCodeAt(0) ? this.delta_ : -this.delta_; map.requestRenderFrame(); var view = map.getView().getView2D(); ol.interaction.Interaction.zoomByDelta(map, view, delta, undefined, ol.interaction.KEYBOARD_ZOOM_DURATION); mapBrowserEvent.preventDefault(); stopEvent = true } } return!stopEvent }; goog.provide("ol.interaction.MouseWheelZoom"); goog.require("goog.asserts"); goog.require("goog.events.MouseWheelEvent"); goog.require("goog.events.MouseWheelHandler.EventType"); goog.require("goog.math"); goog.require("ol.Coordinate"); goog.require("ol.interaction.Interaction"); ol.interaction.MOUSEWHEELZOOM_ANIMATION_DURATION = 250; ol.interaction.MOUSEWHEELZOOM_MAXDELTA = 1; ol.interaction.MOUSEWHEELZOOM_TIMEOUT_DURATION = 80; ol.interaction.MouseWheelZoom = function() { goog.base(this); this.delta_ = 0; this.lastAnchor_ = null; this.startTime_ = undefined; this.timeoutId_ = undefined }; goog.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction); ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; if(mapBrowserEvent.type == goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { var map = mapBrowserEvent.map; var mouseWheelEvent = (mapBrowserEvent.browserEvent); goog.asserts.assertInstanceof(mouseWheelEvent, goog.events.MouseWheelEvent); this.lastAnchor_ = mapBrowserEvent.getCoordinate(); this.delta_ += mouseWheelEvent.deltaY / 3; if(!goog.isDef(this.startTime_)) { this.startTime_ = goog.now() } var duration = ol.interaction.MOUSEWHEELZOOM_TIMEOUT_DURATION; var timeLeft = Math.max(duration - (goog.now() - this.startTime_), 0); goog.global.clearTimeout(this.timeoutId_); this.timeoutId_ = goog.global.setTimeout(goog.bind(this.doZoom_, this, map), timeLeft); mapBrowserEvent.preventDefault(); stopEvent = true } return!stopEvent }; ol.interaction.MouseWheelZoom.prototype.doZoom_ = function(map) { var maxDelta = ol.interaction.MOUSEWHEELZOOM_MAXDELTA; var delta = goog.math.clamp(this.delta_, -maxDelta, maxDelta); var view = map.getView().getView2D(); map.requestRenderFrame(); ol.interaction.Interaction.zoomByDelta(map, view, -delta, this.lastAnchor_, ol.interaction.MOUSEWHEELZOOM_ANIMATION_DURATION); this.delta_ = 0; this.lastAnchor_ = null; this.startTime_ = undefined; this.timeoutId_ = undefined }; goog.provide("ol.interaction.Touch"); goog.require("goog.asserts"); goog.require("goog.functions"); goog.require("goog.object"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.Pixel"); goog.require("ol.ViewHint"); goog.require("ol.interaction.Interaction"); ol.interaction.Touch = function() { goog.base(this); this.handled_ = false; this.trackedTouches_ = {}; this.targetTouches = [] }; goog.inherits(ol.interaction.Touch, ol.interaction.Interaction); ol.interaction.Touch.centroid = function(touches) { var length = touches.length; var clientX = 0; var clientY = 0; for(var i = 0;i < length;i++) { clientX += touches[i].clientX; clientY += touches[i].clientY } return[clientX / length, clientY / length] }; ol.interaction.Touch.isTouchEvent_ = function(mapBrowserEvent) { var type = mapBrowserEvent.type; return type === ol.MapBrowserEvent.EventType.TOUCHSTART || type === ol.MapBrowserEvent.EventType.TOUCHMOVE || type === ol.MapBrowserEvent.EventType.TOUCHEND }; ol.interaction.Touch.prototype.updateTrackedTouches_ = function(mapBrowserEvent) { if(ol.interaction.Touch.isTouchEvent_(mapBrowserEvent)) { var event = mapBrowserEvent.browserEvent.getBrowserEvent(); if(goog.isDef(event.targetTouches)) { this.targetTouches = event.targetTouches }else { if(goog.isDef(event.pointerId)) { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.TOUCHEND) { delete this.trackedTouches_[event.pointerId] }else { this.trackedTouches_[event.pointerId] = event } this.targetTouches = goog.object.getValues(this.trackedTouches_) }else { goog.asserts.fail("unknown touch event model") } } } }; ol.interaction.Touch.prototype.handleTouchMove = goog.nullFunction; ol.interaction.Touch.prototype.handleTouchEnd = goog.functions.FALSE; ol.interaction.Touch.prototype.handleTouchStart = goog.functions.FALSE; ol.interaction.Touch.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var view = mapBrowserEvent.map.getView(); this.updateTrackedTouches_(mapBrowserEvent); if(this.handled_) { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.TOUCHMOVE) { this.handleTouchMove(mapBrowserEvent) }else { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.TOUCHEND) { this.handled_ = this.handleTouchEnd(mapBrowserEvent); if(!this.handled_) { view.setHint(ol.ViewHint.INTERACTING, -1) } } } } if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.TOUCHSTART) { var handled = this.handleTouchStart(mapBrowserEvent); if(!this.handled_ && handled) { view.setHint(ol.ViewHint.INTERACTING, 1) } this.handled_ = handled } return true }; goog.provide("ol.interaction.TouchPan"); goog.require("goog.asserts"); goog.require("ol.Kinetic"); goog.require("ol.Pixel"); goog.require("ol.PreRenderFunction"); goog.require("ol.coordinate"); goog.require("ol.interaction.Touch"); ol.interaction.TouchPan = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.kinetic_ = options.kinetic; this.kineticPreRenderFn_ = null; this.lastCentroid = null; this.noKinetic_ = false }; goog.inherits(ol.interaction.TouchPan, ol.interaction.Touch); ol.interaction.TouchPan.prototype.handleTouchMove = function(mapBrowserEvent) { goog.asserts.assert(this.targetTouches.length >= 1); var centroid = ol.interaction.Touch.centroid(this.targetTouches); if(!goog.isNull(this.lastCentroid)) { if(this.kinetic_) { this.kinetic_.update(centroid[0], centroid[1]) } var deltaX = this.lastCentroid[0] - centroid[0]; var deltaY = centroid[1] - this.lastCentroid[1]; var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); var center = [deltaX, deltaY]; ol.coordinate.scale(center, view2DState.resolution); ol.coordinate.rotate(center, view2DState.rotation); ol.coordinate.add(center, view2DState.center); map.requestRenderFrame(); view.setCenter(center) } this.lastCentroid = centroid }; ol.interaction.TouchPan.prototype.handleTouchEnd = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var view = map.getView(); if(this.targetTouches.length === 0) { if(!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) { var distance = this.kinetic_.getDistance(); var angle = this.kinetic_.getAngle(); var center = view.getCenter(); this.kineticPreRenderFn_ = this.kinetic_.pan(center); map.beforeRender(this.kineticPreRenderFn_); var centerpx = map.getPixelFromCoordinate(center); var dest = map.getCoordinateFromPixel([centerpx[0] - distance * Math.cos(angle), centerpx[1] - distance * Math.sin(angle)]); view.setCenter(dest) } map.requestRenderFrame(); return false }else { this.lastCentroid = null; return true } }; ol.interaction.TouchPan.prototype.handleTouchStart = function(mapBrowserEvent) { if(this.targetTouches.length > 0) { var map = mapBrowserEvent.map; var view = map.getView(); this.lastCentroid = null; map.requestRenderFrame(); if(!goog.isNull(this.kineticPreRenderFn_) && map.removePreRenderFunction(this.kineticPreRenderFn_)) { view.setCenter(mapBrowserEvent.frameState.view2DState.center); this.kineticPreRenderFn_ = null } if(this.kinetic_) { this.kinetic_.begin() } this.noKinetic_ = this.targetTouches.length > 1; return true }else { return false } }; goog.provide("ol.interaction.TouchRotate"); goog.require("goog.asserts"); goog.require("goog.style"); goog.require("ol.Coordinate"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.Touch"); ol.interaction.TOUCHROTATE_ANIMATION_DURATION = 250; ol.interaction.TouchRotate = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.anchor_ = null; this.lastAngle_ = undefined; this.rotating_ = false; this.rotationDelta_ = 0; this.threshold_ = goog.isDef(options.threshold) ? options.threshold : 0.3 }; goog.inherits(ol.interaction.TouchRotate, ol.interaction.Touch); ol.interaction.TouchRotate.prototype.handleTouchMove = function(mapBrowserEvent) { goog.asserts.assert(this.targetTouches.length >= 2); var rotationDelta = 0; var touch0 = this.targetTouches[0]; var touch1 = this.targetTouches[1]; var angle = Math.atan2(touch1.clientY - touch0.clientY, touch1.clientX - touch0.clientX); if(goog.isDef(this.lastAngle_)) { var delta = angle - this.lastAngle_; this.rotationDelta_ += delta; if(!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) { this.rotating_ = true } rotationDelta = delta } this.lastAngle_ = angle; var map = mapBrowserEvent.map; var viewportPosition = goog.style.getClientPosition(map.getViewport()); var centroid = ol.interaction.Touch.centroid(this.targetTouches); centroid[0] -= viewportPosition.x; centroid[1] -= viewportPosition.y; this.anchor_ = map.getCoordinateFromPixel(centroid); if(this.rotating_) { var view = map.getView().getView2D(); var view2DState = view.getView2DState(); map.requestRenderFrame(); ol.interaction.Interaction.rotateWithoutConstraints(map, view, view2DState.rotation + rotationDelta, this.anchor_) } }; ol.interaction.TouchRotate.prototype.handleTouchEnd = function(mapBrowserEvent) { if(this.targetTouches.length < 2) { var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); if(this.rotating_) { ol.interaction.Interaction.rotate(map, view, view2DState.rotation, this.anchor_, ol.interaction.TOUCHROTATE_ANIMATION_DURATION) } return false }else { return true } }; ol.interaction.TouchRotate.prototype.handleTouchStart = function(mapBrowserEvent) { if(this.targetTouches.length >= 2) { var map = mapBrowserEvent.map; this.anchor_ = null; this.lastAngle_ = undefined; this.rotating_ = false; this.rotationDelta_ = 0; map.requestRenderFrame(); return true }else { return false } }; goog.provide("ol.interaction.TouchZoom"); goog.require("goog.asserts"); goog.require("goog.style"); goog.require("ol.Coordinate"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.Touch"); ol.interaction.TOUCHZOOM_ANIMATION_DURATION = 400; ol.interaction.TouchZoom = function() { goog.base(this); this.anchor_ = null; this.lastDistance_ = undefined; this.lastScaleDelta_ = 1 }; goog.inherits(ol.interaction.TouchZoom, ol.interaction.Touch); ol.interaction.TouchZoom.prototype.handleTouchMove = function(mapBrowserEvent) { goog.asserts.assert(this.targetTouches.length >= 2); var scaleDelta = 1; var touch0 = this.targetTouches[0]; var touch1 = this.targetTouches[1]; var dx = touch0.clientX - touch1.clientX; var dy = touch0.clientY - touch1.clientY; var distance = Math.sqrt(dx * dx + dy * dy); if(goog.isDef(this.lastDistance_)) { scaleDelta = this.lastDistance_ / distance } this.lastDistance_ = distance; if(scaleDelta != 1) { this.lastScaleDelta_ = scaleDelta } var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); var viewportPosition = goog.style.getClientPosition(map.getViewport()); var centroid = ol.interaction.Touch.centroid(this.targetTouches); centroid[0] -= viewportPosition.x; centroid[1] -= viewportPosition.y; this.anchor_ = map.getCoordinateFromPixel(centroid); map.requestRenderFrame(); ol.interaction.Interaction.zoomWithoutConstraints(map, view, view2DState.resolution * scaleDelta, this.anchor_) }; ol.interaction.TouchZoom.prototype.handleTouchEnd = function(mapBrowserEvent) { if(this.targetTouches.length < 2) { var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); var direction = this.lastScaleDelta_ - 1; ol.interaction.Interaction.zoom(map, view, view2DState.resolution, this.anchor_, ol.interaction.TOUCHZOOM_ANIMATION_DURATION, direction); return false }else { return true } }; ol.interaction.TouchZoom.prototype.handleTouchStart = function(mapBrowserEvent) { if(this.targetTouches.length >= 2) { var map = mapBrowserEvent.map; this.anchor_ = null; this.lastDistance_ = undefined; this.lastScaleDelta_ = 1; map.requestRenderFrame(); return true }else { return false } }; goog.provide("ol.interaction"); goog.require("ol.Collection"); goog.require("ol.Kinetic"); goog.require("ol.interaction.DoubleClickZoom"); goog.require("ol.interaction.DragPan"); goog.require("ol.interaction.DragRotate"); goog.require("ol.interaction.DragZoom"); goog.require("ol.interaction.KeyboardPan"); goog.require("ol.interaction.KeyboardZoom"); goog.require("ol.interaction.MouseWheelZoom"); goog.require("ol.interaction.TouchPan"); goog.require("ol.interaction.TouchRotate"); goog.require("ol.interaction.TouchZoom"); ol.interaction.defaults = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var interactions = new ol.Collection; var kinetic = new ol.Kinetic(-0.005, 0.05, 100); var altShiftDragRotate = goog.isDef(options.altShiftDragRotate) ? options.altShiftDragRotate : true; if(altShiftDragRotate) { interactions.push(new ol.interaction.DragRotate) } var doubleClickZoom = goog.isDef(options.doubleClickZoom) ? options.doubleClickZoom : true; if(doubleClickZoom) { interactions.push(new ol.interaction.DoubleClickZoom({delta:options.zoomDelta})) } var touchPan = goog.isDef(options.touchPan) ? options.touchPan : true; if(touchPan) { interactions.push(new ol.interaction.TouchPan({kinetic:kinetic})) } var touchRotate = goog.isDef(options.touchRotate) ? options.touchRotate : true; if(touchRotate) { interactions.push(new ol.interaction.TouchRotate) } var touchZoom = goog.isDef(options.touchZoom) ? options.touchZoom : true; if(touchZoom) { interactions.push(new ol.interaction.TouchZoom) } var dragPan = goog.isDef(options.dragPan) ? options.dragPan : true; if(dragPan) { interactions.push(new ol.interaction.DragPan({kinetic:kinetic})) } var keyboard = goog.isDef(options.keyboard) ? options.keyboard : true; if(keyboard) { interactions.push(new ol.interaction.KeyboardPan); interactions.push(new ol.interaction.KeyboardZoom({delta:options.zoomDelta})) } var mouseWheelZoom = goog.isDef(options.mouseWheelZoom) ? options.mouseWheelZoom : true; if(mouseWheelZoom) { interactions.push(new ol.interaction.MouseWheelZoom) } var shiftDragZoom = goog.isDef(options.shiftDragZoom) ? options.shiftDragZoom : true; if(shiftDragZoom) { interactions.push(new ol.interaction.DragZoom) } return interactions }; goog.provide("ol.layer.Group"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.math"); goog.require("goog.object"); goog.require("ol.Collection"); goog.require("ol.CollectionEvent"); goog.require("ol.CollectionEventType"); goog.require("ol.Object"); goog.require("ol.layer.Base"); ol.layer.GroupProperty = {LAYERS:"layers"}; ol.layer.Group = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var baseOptions = (goog.object.clone(options)); delete baseOptions.layers; var layers = options.layers; goog.base(this, baseOptions); this.listenerKeys_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.layer.GroupProperty.LAYERS), this.handleLayersChanged_, false, this); if(goog.isDef(layers)) { if(goog.isArray(layers)) { layers = new ol.Collection(goog.array.clone(layers)) }else { goog.asserts.assertInstanceof(layers, ol.Collection); layers = layers } }else { layers = new ol.Collection } this.setLayers(layers) }; goog.inherits(ol.layer.Group, ol.layer.Base); ol.layer.Group.prototype.handleLayerChange = function() { if(this.getVisible()) { this.dispatchChangeEvent() } }; ol.layer.Group.prototype.handleLayerVisibleChange = function() { this.dispatchChangeEvent() }; ol.layer.Group.prototype.handleLayersChanged_ = function(event) { if(!goog.isNull(this.listenerKeys_)) { goog.array.forEach(goog.object.getValues(this.listenerKeys_), goog.events.unlistenByKey); this.listenerKeys_ = null } var layers = this.getLayers(); if(goog.isDefAndNotNull(layers)) { this.listenerKeys_ = {"add":goog.events.listen(layers, ol.CollectionEventType.ADD, this.handleLayersAdd_, false, this), "remove":goog.events.listen(layers, ol.CollectionEventType.REMOVE, this.handleLayersRemove_, false, this)}; var layersArray = layers.getArray(); var i, ii, layer; for(i = 0, ii = layersArray.length;i < ii;i++) { layer = layersArray[i]; this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(layer, goog.events.EventType.CHANGE, this.handleLayerChange, false, this) } } this.dispatchChangeEvent() }; ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) { var layer = (collectionEvent.getElement()); this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(layer, goog.events.EventType.CHANGE, this.handleLayerChange, false, this); this.dispatchChangeEvent() }; ol.layer.Group.prototype.handleLayersRemove_ = function(collectionEvent) { var layer = (collectionEvent.getElement()); var key = goog.getUid(layer).toString(); goog.events.unlistenByKey(this.listenerKeys_[key]); delete this.listenerKeys_[key]; this.dispatchChangeEvent() }; ol.layer.Group.prototype.getLayers = function() { return(this.get(ol.layer.GroupProperty.LAYERS)) }; goog.exportProperty(ol.layer.Group.prototype, "getLayers", ol.layer.Group.prototype.getLayers); ol.layer.Group.prototype.setLayers = function(layers) { this.set(ol.layer.GroupProperty.LAYERS, layers) }; goog.exportProperty(ol.layer.Group.prototype, "setLayers", ol.layer.Group.prototype.setLayers); ol.layer.Group.prototype.getLayersArray = function(opt_array) { var array = goog.isDef(opt_array) ? opt_array : []; this.getLayers().forEach(function(layer) { layer.getLayersArray(array) }); return array }; ol.layer.Group.prototype.getLayerStatesArray = function(opt_obj) { var obj = goog.isDef(opt_obj) ? opt_obj : {layers:[], layerStates:[]}; goog.asserts.assert(obj.layers.length === obj.layerStates.length); var pos = obj.layers.length; this.getLayers().forEach(function(layer) { layer.getLayerStatesArray(obj) }); var ownLayerState = this.getLayerState(); var i, ii, layerState; for(i = pos, ii = obj.layerStates.length;i < ii;i++) { layerState = obj.layerStates[i]; layerState.brightness = goog.math.clamp(layerState.brightness + ownLayerState.brightness, -1, 1); layerState.contrast *= ownLayerState.contrast; layerState.hue += ownLayerState.hue; layerState.opacity *= ownLayerState.opacity; layerState.saturation *= ownLayerState.saturation; layerState.visible = layerState.visible && ownLayerState.visible } return obj }; ol.layer.Group.prototype.isReady = function() { return null === goog.array.find(this.getLayers().getArray(), function(elt, index, array) { return!elt.isReady() }) }; goog.provide("ol.math"); goog.require("goog.asserts"); ol.math.cosh = function(x) { return(Math.exp(x) + Math.exp(-x)) / 2 }; ol.math.coth = function(x) { var expMinusTwoX = Math.exp(-2 * x); return(1 + expMinusTwoX) / (1 - expMinusTwoX) }; ol.math.csch = function(x) { return 2 / (Math.exp(x) - Math.exp(-x)) }; ol.math.roundUpToPowerOfTwo = function(x) { goog.asserts.assert(0 < x); return Math.pow(2, Math.ceil(Math.log(x) / Math.LN2)) }; ol.math.sech = function(x) { return 2 / (Math.exp(x) + Math.exp(-x)) }; ol.math.sinh = function(x) { return(Math.exp(x) - Math.exp(-x)) / 2 }; ol.math.tanh = function(x) { var expMinusTwoX = Math.exp(-2 * x); return(1 - expMinusTwoX) / (1 + expMinusTwoX) }; goog.provide("ol.proj.EPSG3857"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.Projection"); goog.require("ol.ProjectionUnits"); goog.require("ol.math"); goog.require("ol.proj"); ol.proj.EPSG3857 = function(code) { goog.base(this, {code:code, units:ol.ProjectionUnits.METERS, extent:ol.proj.EPSG3857.EXTENT, global:true}) }; goog.inherits(ol.proj.EPSG3857, ol.Projection); ol.proj.EPSG3857.RADIUS = 6378137; ol.proj.EPSG3857.HALF_SIZE = Math.PI * ol.proj.EPSG3857.RADIUS; ol.proj.EPSG3857.EXTENT = [-ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE, -ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE]; ol.proj.EPSG3857.CODES = ["EPSG:3857", "EPSG:102100", "EPSG:102113", "EPSG:900913", "urn:ogc:def:crs:EPSG:6.18:3:3857"]; ol.proj.EPSG3857.PROJECTIONS = goog.array.map(ol.proj.EPSG3857.CODES, function(code) { return new ol.proj.EPSG3857(code) }); ol.proj.EPSG3857.fromEPSG4326 = function(input, opt_output, opt_dimension) { var length = input.length, dimension = opt_dimension > 1 ? opt_dimension : 2, output = opt_output; if(!goog.isDef(output)) { if(dimension > 2) { output = input.slice() }else { output = new Array(length) } } goog.asserts.assert(output.length % dimension === 0); for(var i = 0;i < length;i += dimension) { output[i] = ol.proj.EPSG3857.RADIUS * Math.PI * input[i] / 180; output[i + 1] = ol.proj.EPSG3857.RADIUS * Math.log(Math.tan(Math.PI * (input[i + 1] + 90) / 360)) } return output }; ol.proj.EPSG3857.toEPSG4326 = function(input, opt_output, opt_dimension) { var length = input.length, dimension = opt_dimension > 1 ? opt_dimension : 2, output = opt_output; if(!goog.isDef(output)) { if(dimension > 2) { output = input.slice() }else { output = new Array(length) } } goog.asserts.assert(output.length % dimension === 0); for(var i = 0;i < length;i += dimension) { output[i] = 180 * input[i] / (ol.proj.EPSG3857.RADIUS * Math.PI); output[i + 1] = 360 * Math.atan(Math.exp(input[i + 1] / ol.proj.EPSG3857.RADIUS)) / Math.PI - 90 } return output }; ol.proj.EPSG3857.prototype.getPointResolution = function(resolution, point) { return resolution / ol.math.cosh(point[1] / ol.proj.EPSG3857.RADIUS) }; goog.provide("ol.proj.EPSG4326"); goog.require("ol.Projection"); goog.require("ol.ProjectionUnits"); goog.require("ol.proj"); ol.proj.EPSG4326 = function(code, opt_axisOrientation) { goog.base(this, {code:code, units:ol.ProjectionUnits.DEGREES, extent:ol.proj.EPSG4326.EXTENT, axisOrientation:opt_axisOrientation, global:true}) }; goog.inherits(ol.proj.EPSG4326, ol.Projection); ol.proj.EPSG4326.EXTENT = [-180, 180, -90, 90]; ol.proj.EPSG4326.PROJECTIONS = [new ol.proj.EPSG4326("CRS:84"), new ol.proj.EPSG4326("EPSG:4326", "neu"), new ol.proj.EPSG4326("urn:ogc:def:crs:EPSG:6.6:4326", "neu"), new ol.proj.EPSG4326("urn:ogc:def:crs:OGC:1.3:CRS84"), new ol.proj.EPSG4326("urn:ogc:def:crs:OGC:2:84"), new ol.proj.EPSG4326("http://www.opengis.net/gml/srs/epsg.xml#4326", "neu"), new ol.proj.EPSG4326("urn:x-ogc:def:crs:EPSG:4326", "neu")]; ol.proj.EPSG4326.prototype.getPointResolution = function(resolution, point) { return resolution }; goog.provide("ol.proj.common"); goog.require("ol.proj"); goog.require("ol.proj.EPSG3857"); goog.require("ol.proj.EPSG4326"); ol.proj.common.add = function() { ol.proj.addEquivalentProjections(ol.proj.EPSG3857.PROJECTIONS); ol.proj.addEquivalentProjections(ol.proj.EPSG4326.PROJECTIONS); ol.proj.addEquivalentTransforms(ol.proj.EPSG4326.PROJECTIONS, ol.proj.EPSG3857.PROJECTIONS, ol.proj.EPSG3857.fromEPSG4326, ol.proj.EPSG3857.toEPSG4326) }; goog.provide("ol.tilegrid.TileGrid"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.Coordinate"); goog.require("ol.Projection"); goog.require("ol.ProjectionUnits"); goog.require("ol.Size"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.array"); goog.require("ol.extent"); ol.DEFAULT_TILE_SIZE = 256; ol.DEFAULT_MAX_ZOOM = 42; ol.tilegrid.TileGrid = function(options) { this.minZoom = goog.isDef(options.minZoom) ? options.minZoom : 0; this.resolutions_ = options.resolutions; goog.asserts.assert(goog.array.isSorted(this.resolutions_, function(a, b) { return b - a }, true)); this.maxZoom = this.resolutions_.length - 1; this.origin_ = goog.isDef(options.origin) ? options.origin : null; this.origins_ = null; if(goog.isDef(options.origins)) { this.origins_ = options.origins; goog.asserts.assert(this.origins_.length == this.maxZoom + 1) } goog.asserts.assert(goog.isNull(this.origin_) && !goog.isNull(this.origins_) || !goog.isNull(this.origin_) && goog.isNull(this.origins_)); this.tileSizes_ = null; if(goog.isDef(options.tileSizes)) { this.tileSizes_ = options.tileSizes; goog.asserts.assert(this.tileSizes_.length == this.maxZoom + 1) } this.tileSize_ = goog.isDef(options.tileSize) ? options.tileSize : goog.isNull(this.tileSizes_) ? [ol.DEFAULT_TILE_SIZE, ol.DEFAULT_TILE_SIZE] : null; goog.asserts.assert(goog.isNull(this.tileSize_) && !goog.isNull(this.tileSizes_) || !goog.isNull(this.tileSize_) && goog.isNull(this.tileSizes_)) }; ol.tilegrid.TileGrid.tmpTileCoord_ = new ol.TileCoord(0, 0, 0); ol.tilegrid.TileGrid.prototype.createTileCoordTransform = goog.abstractMethod; ol.tilegrid.TileGrid.prototype.forEachTileCoordParentTileRange = function(tileCoord, callback, opt_obj, opt_tileRange, opt_extent) { var tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent); var z = tileCoord.z - 1; while(z >= this.minZoom) { if(callback.call(opt_obj, z, this.getTileRangeForExtentAndZ(tileCoordExtent, z, opt_tileRange))) { return true } --z } return false }; ol.tilegrid.TileGrid.prototype.getMaxZoom = function() { return this.maxZoom }; ol.tilegrid.TileGrid.prototype.getMinZoom = function() { return this.minZoom }; ol.tilegrid.TileGrid.prototype.getOrigin = function(z) { if(!goog.isNull(this.origin_)) { return this.origin_ }else { goog.asserts.assert(!goog.isNull(this.origins_)); goog.asserts.assert(this.minZoom <= z && z <= this.maxZoom); return this.origins_[z] } }; ol.tilegrid.TileGrid.prototype.getResolution = function(z) { goog.asserts.assert(this.minZoom <= z && z <= this.maxZoom); return this.resolutions_[z] }; ol.tilegrid.TileGrid.prototype.getResolutions = function() { return this.resolutions_ }; ol.tilegrid.TileGrid.prototype.getTileCoordChildTileRange = function(tileCoord, opt_tileRange, opt_extent) { if(tileCoord.z < this.maxZoom) { var tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent); return this.getTileRangeForExtentAndZ(tileCoordExtent, tileCoord.z + 1, opt_tileRange) }else { return null } }; ol.tilegrid.TileGrid.prototype.getTileRangeExtent = function(z, tileRange, opt_extent) { var origin = this.getOrigin(z); var resolution = this.getResolution(z); var tileSize = this.getTileSize(z); var minX = origin[0] + tileRange.minX * tileSize[0] * resolution; var maxX = origin[0] + (tileRange.maxX + 1) * tileSize[0] * resolution; var minY = origin[1] + tileRange.minY * tileSize[1] * resolution; var maxY = origin[1] + (tileRange.maxY + 1) * tileSize[1] * resolution; return ol.extent.createOrUpdate(minX, maxX, minY, maxY, opt_extent) }; ol.tilegrid.TileGrid.prototype.getTileRangeForExtentAndResolution = function(extent, resolution, opt_tileRange) { var tileCoord = ol.tilegrid.TileGrid.tmpTileCoord_; this.getTileCoordForXYAndResolution_(extent[0], extent[2], resolution, false, tileCoord); var minX = tileCoord.x; var minY = tileCoord.y; this.getTileCoordForXYAndResolution_(extent[1], extent[3], resolution, true, tileCoord); return ol.TileRange.createOrUpdate(minX, tileCoord.x, minY, tileCoord.y, opt_tileRange) }; ol.tilegrid.TileGrid.prototype.getTileRangeForExtentAndZ = function(extent, z, opt_tileRange) { var resolution = this.getResolution(z); return this.getTileRangeForExtentAndResolution(extent, resolution, opt_tileRange) }; ol.tilegrid.TileGrid.prototype.getTileCoordCenter = function(tileCoord) { var origin = this.getOrigin(tileCoord.z); var resolution = this.getResolution(tileCoord.z); var tileSize = this.getTileSize(tileCoord.z); return[origin[0] + (tileCoord.x + 0.5) * tileSize[0] * resolution, origin[1] + (tileCoord.y + 0.5) * tileSize[1] * resolution] }; ol.tilegrid.TileGrid.prototype.getTileCoordExtent = function(tileCoord, opt_extent) { var origin = this.getOrigin(tileCoord.z); var resolution = this.getResolution(tileCoord.z); var tileSize = this.getTileSize(tileCoord.z); var minX = origin[0] + tileCoord.x * tileSize[0] * resolution; var maxX = minX + tileSize[0] * resolution; var minY = origin[1] + tileCoord.y * tileSize[1] * resolution; var maxY = minY + tileSize[1] * resolution; return ol.extent.createOrUpdate(minX, maxX, minY, maxY, opt_extent) }; ol.tilegrid.TileGrid.prototype.getTileCoordForCoordAndResolution = function(coordinate, resolution, opt_tileCoord) { return this.getTileCoordForXYAndResolution_(coordinate[0], coordinate[1], resolution, false, opt_tileCoord) }; ol.tilegrid.TileGrid.prototype.getTileCoordForXYAndResolution_ = function(x, y, resolution, reverseIntersectionPolicy, opt_tileCoord) { var z = this.getZForResolution(resolution); var scale = resolution / this.getResolution(z); var origin = this.getOrigin(z); var tileSize = this.getTileSize(z); var tileCoordX = scale * (x - origin[0]) / (resolution * tileSize[0]); var tileCoordY = scale * (y - origin[1]) / (resolution * tileSize[1]); if(reverseIntersectionPolicy) { tileCoordX = Math.ceil(tileCoordX) - 1; tileCoordY = Math.ceil(tileCoordY) - 1 }else { tileCoordX = Math.floor(tileCoordX); tileCoordY = Math.floor(tileCoordY) } return ol.TileCoord.createOrUpdate(z, tileCoordX, tileCoordY, opt_tileCoord) }; ol.tilegrid.TileGrid.prototype.getTileCoordForCoordAndZ = function(coordinate, z, opt_tileCoord) { var resolution = this.getResolution(z); return this.getTileCoordForXYAndResolution_(coordinate[0], coordinate[1], resolution, false, opt_tileCoord) }; ol.tilegrid.TileGrid.prototype.getTileCoordResolution = function(tileCoord) { goog.asserts.assert(this.minZoom <= tileCoord.z && tileCoord.z <= this.maxZoom); return this.resolutions_[tileCoord.z] }; ol.tilegrid.TileGrid.prototype.getTileSize = function(z) { if(!goog.isNull(this.tileSize_)) { return this.tileSize_ }else { goog.asserts.assert(!goog.isNull(this.tileSizes_)); goog.asserts.assert(this.minZoom <= z && z <= this.maxZoom); return this.tileSizes_[z] } }; ol.tilegrid.TileGrid.prototype.getZForResolution = function(resolution) { return ol.array.linearFindNearest(this.resolutions_, resolution, 0) }; ol.tilegrid.getForProjection = function(projection) { var tileGrid = projection.getDefaultTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.createForProjection(projection); projection.setDefaultTileGrid(tileGrid) } return tileGrid }; ol.tilegrid.createForProjection = function(projection, opt_maxZoom, opt_tileSize) { var projectionExtent = projection.getExtent(); var size = goog.isNull(projectionExtent) ? 360 * ol.METERS_PER_UNIT[ol.ProjectionUnits.DEGREES] / projection.getMetersPerUnit() : Math.max(projectionExtent[1] - projectionExtent[0], projectionExtent[3] - projectionExtent[2]); var maxZoom = goog.isDef(opt_maxZoom) ? opt_maxZoom : ol.DEFAULT_MAX_ZOOM; var tileSize = goog.isDef(opt_tileSize) ? opt_tileSize : [ol.DEFAULT_TILE_SIZE, ol.DEFAULT_TILE_SIZE]; var resolutions = new Array(maxZoom + 1); var maxResolution = size / Math.max(tileSize[0], tileSize[1]); for(var z = 0, zz = resolutions.length;z < zz;++z) { resolutions[z] = maxResolution / Math.pow(2, z) } return new ol.tilegrid.TileGrid({origin:goog.isNull(projectionExtent) ? [0, 0] : ol.extent.getBottomLeft(projectionExtent), resolutions:resolutions, tileSize:tileSize}) }; goog.provide("ol.source.Tile"); goog.provide("ol.source.TileOptions"); goog.require("goog.functions"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.source.Source"); goog.require("ol.tilegrid.TileGrid"); ol.source.TileOptions; ol.source.Tile = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection}); this.opaque_ = goog.isDef(options.opaque) ? options.opaque : false; this.tileGrid = goog.isDef(options.tileGrid) ? options.tileGrid : null }; goog.inherits(ol.source.Tile, ol.source.Source); ol.source.Tile.prototype.canExpireCache = goog.functions.FALSE; ol.source.Tile.prototype.expireCache = goog.abstractMethod; ol.source.Tile.prototype.findLoadedTiles = function(loadedTilesByZ, getTileIfLoaded, z, tileRange) { var fullyCovered = true; var tile, tileCoordKey, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tileCoordKey = this.getKeyZXY(z, x, y); if(loadedTilesByZ[z] && loadedTilesByZ[z][tileCoordKey]) { continue } tile = getTileIfLoaded(z, x, y); if(!goog.isNull(tile)) { if(!loadedTilesByZ[z]) { loadedTilesByZ[z] = {} } loadedTilesByZ[z][tileCoordKey] = tile }else { fullyCovered = false } } } return fullyCovered }; ol.source.Tile.prototype.getKeyZXY = function(z, x, y) { return ol.TileCoord.getKeyZXY(z, x, y) }; ol.source.Tile.prototype.getOpaque = function() { return this.opaque_ }; ol.source.Tile.prototype.getResolutions = function() { return this.tileGrid.getResolutions() }; ol.source.Tile.prototype.getTile = goog.abstractMethod; ol.source.Tile.prototype.getTileGrid = function() { return this.tileGrid }; ol.source.Tile.prototype.useTile = goog.nullFunction; goog.provide("ol.renderer.Layer"); goog.require("goog.Disposable"); goog.require("ol.FrameState"); goog.require("ol.Image"); goog.require("ol.ImageState"); goog.require("ol.Tile"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.layer.Layer"); goog.require("ol.layer.LayerState"); goog.require("ol.source.Source"); goog.require("ol.source.Tile"); ol.renderer.Layer = function(mapRenderer, layer) { goog.base(this); this.mapRenderer_ = mapRenderer; this.layer_ = layer }; goog.inherits(ol.renderer.Layer, goog.Disposable); ol.renderer.Layer.prototype.getFeatureInfoForPixel = function(pixel, success, opt_error) { var layer = this.getLayer(); var source = layer.getSource(); if(goog.isFunction(source.getFeatureInfoForPixel)) { var callback = function(layerFeatureInfo) { success(layerFeatureInfo, layer) }; source.getFeatureInfoForPixel(pixel, this.getMap(), callback, opt_error) } }; ol.renderer.Layer.prototype.getLayer = function() { return this.layer_ }; ol.renderer.Layer.prototype.getMap = function() { return this.mapRenderer_.getMap() }; ol.renderer.Layer.prototype.getMapRenderer = function() { return this.mapRenderer_ }; ol.renderer.Layer.prototype.handleImageChange = function(event) { var image = (event.target); if(image.getState() === ol.ImageState.LOADED) { this.renderIfReadyAndVisible() } }; ol.renderer.Layer.prototype.renderFrame = goog.abstractMethod; ol.renderer.Layer.prototype.renderIfReadyAndVisible = function() { var layer = this.getLayer(); if(layer.getVisible() && layer.isReady()) { this.getMap().render() } }; ol.renderer.Layer.prototype.scheduleExpireCache = function(frameState, tileSource) { if(tileSource.canExpireCache()) { frameState.postRenderFunctions.push(goog.partial(function(tileSource, map, frameState) { var tileSourceKey = goog.getUid(tileSource).toString(); tileSource.expireCache(frameState.usedTiles[tileSourceKey]) }, tileSource)) } }; ol.renderer.Layer.prototype.updateAttributions = function(attributionsSet, attributions) { if(goog.isDefAndNotNull(attributions)) { var attribution, i, ii; for(i = 0, ii = attributions.length;i < ii;++i) { attribution = attributions[i]; attributionsSet[goog.getUid(attribution).toString()] = attribution } } }; ol.renderer.Layer.prototype.updateLogos = function(frameState, source) { var logo = source.getLogo(); if(goog.isDef(logo)) { frameState.logos[logo] = true } }; ol.renderer.Layer.prototype.updateUsedTiles = function(usedTiles, tileSource, z, tileRange) { var tileSourceKey = goog.getUid(tileSource).toString(); var zKey = z.toString(); if(tileSourceKey in usedTiles) { if(zKey in usedTiles[tileSourceKey]) { usedTiles[tileSourceKey][zKey].extend(tileRange) }else { usedTiles[tileSourceKey][zKey] = tileRange } }else { usedTiles[tileSourceKey] = {}; usedTiles[tileSourceKey][zKey] = tileRange } }; ol.renderer.Layer.prototype.createGetTileIfLoadedFunction = function(isLoadedFunction, tileSource, projection) { return function(z, x, y) { var tile = tileSource.getTile(z, x, y, projection); return isLoadedFunction(tile) ? tile : null } }; ol.renderer.Layer.prototype.snapCenterToPixel = function(center, resolution, size) { return[resolution * (Math.round(center[0] / resolution) + size[0] % 2 / 2), resolution * (Math.round(center[1] / resolution) + size[1] % 2 / 2)] }; ol.renderer.Layer.prototype.manageTilePyramid = function(frameState, tileSource, tileGrid, projection, extent, currentZ, preload, opt_tileCallback, opt_obj) { var tileSourceKey = goog.getUid(tileSource).toString(); if(!(tileSourceKey in frameState.wantedTiles)) { frameState.wantedTiles[tileSourceKey] = {} } var wantedTiles = frameState.wantedTiles[tileSourceKey]; var tileQueue = frameState.tileQueue; var minZoom = tileGrid.getMinZoom(); var tile, tileRange, tileResolution, x, y, z; for(z = currentZ;z >= minZoom;--z) { tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); tileResolution = tileGrid.getResolution(z); for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { if(currentZ - z <= preload) { tile = tileSource.getTile(z, x, y, projection); if(tile.getState() == ol.TileState.IDLE) { wantedTiles[tile.tileCoord.toString()] = true; if(!tileQueue.isKeyQueued(tile.getKey())) { tileQueue.enqueue([tile, tileSourceKey, tileGrid.getTileCoordCenter(tile.tileCoord), tileResolution]) } } if(goog.isDef(opt_tileCallback)) { opt_tileCallback.call(opt_obj, tile) } }else { tileSource.useTile(z, x, y) } } } } }; goog.provide("ol.renderer.Map"); goog.require("goog.Disposable"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dispose"); goog.require("goog.functions"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.FrameState"); goog.require("ol.layer.Layer"); goog.require("ol.renderer.Layer"); ol.renderer.Map = function(container, map) { goog.base(this); this.map_ = map; this.layerRenderers_ = {} }; goog.inherits(ol.renderer.Map, goog.Disposable); ol.renderer.Map.prototype.calculateMatrices2D = function(frameState) { var view2DState = frameState.view2DState; var coordinateToPixelMatrix = frameState.coordinateToPixelMatrix; goog.vec.Mat4.makeIdentity(coordinateToPixelMatrix); goog.vec.Mat4.translate(coordinateToPixelMatrix, frameState.size[0] / 2, frameState.size[1] / 2, 0); goog.vec.Mat4.scale(coordinateToPixelMatrix, 1 / view2DState.resolution, -1 / view2DState.resolution, 1); goog.vec.Mat4.rotateZ(coordinateToPixelMatrix, -view2DState.rotation); goog.vec.Mat4.translate(coordinateToPixelMatrix, -view2DState.center[0], -view2DState.center[1], 0); var inverted = goog.vec.Mat4.invert(coordinateToPixelMatrix, frameState.pixelToCoordinateMatrix); goog.asserts.assert(inverted) }; ol.renderer.Map.prototype.createLayerRenderer = function(layer) { return new ol.renderer.Layer(this, layer) }; ol.renderer.Map.prototype.disposeInternal = function() { goog.object.forEach(this.layerRenderers_, function(layerRenderer) { goog.dispose(layerRenderer) }); goog.base(this, "disposeInternal") }; ol.renderer.Map.prototype.getCanvas = goog.functions.NULL; ol.renderer.Map.prototype.getFeatureInfoForPixel = function(pixel, layers, success, opt_error) { var numLayers = layers.length; var featureInfo = new Array(numLayers); var callback = function(layerFeatureInfo, layer) { featureInfo[goog.array.indexOf(layers, layer)] = layerFeatureInfo; --numLayers; if(!numLayers) { success(featureInfo) } }; var layer, layerRenderer; for(var i = 0;i < numLayers;++i) { layer = layers[i]; layerRenderer = this.getLayerRenderer(layer); if(goog.isFunction(layerRenderer.getFeatureInfoForPixel)) { layerRenderer.getFeatureInfoForPixel(pixel, callback, opt_error) }else { --numLayers } } }; ol.renderer.Map.prototype.getFeaturesForPixel = function(pixel, layers, success, opt_error) { var numLayers = layers.length; var features = new Array(numLayers); var callback = function(layerFeatures, layer) { features[goog.array.indexOf(layers, layer)] = layerFeatures; --numLayers; if(!numLayers) { success(features) } }; var layer, layerRenderer; for(var i = 0;i < numLayers;++i) { layer = layers[i]; layerRenderer = this.getLayerRenderer(layer); if(goog.isFunction(layerRenderer.getFeaturesForPixel)) { layerRenderer.getFeaturesForPixel(pixel, callback, opt_error) }else { --numLayers } } }; ol.renderer.Map.prototype.getLayerRenderer = function(layer) { var layerKey = goog.getUid(layer).toString(); if(layerKey in this.layerRenderers_) { return this.layerRenderers_[layerKey] }else { var layerRenderer = this.createLayerRenderer(layer); this.layerRenderers_[layerKey] = layerRenderer; return layerRenderer } }; ol.renderer.Map.prototype.getLayerRendererByKey = function(layerKey) { goog.asserts.assert(layerKey in this.layerRenderers_); return this.layerRenderers_[layerKey] }; ol.renderer.Map.prototype.getLayerRenderers = function() { return this.layerRenderers_ }; ol.renderer.Map.prototype.getMap = function() { return this.map_ }; ol.renderer.Map.prototype.removeLayerRendererByKey_ = function(layerKey) { goog.asserts.assert(layerKey in this.layerRenderers_); var layerRenderer = this.layerRenderers_[layerKey]; delete this.layerRenderers_[layerKey]; return layerRenderer }; ol.renderer.Map.prototype.renderFrame = goog.nullFunction; ol.renderer.Map.prototype.removeUnusedLayerRenderers_ = function(map, frameState) { var layerKey; for(layerKey in this.layerRenderers_) { if(goog.isNull(frameState) || !(layerKey in frameState.layerStates)) { goog.dispose(this.removeLayerRendererByKey_(layerKey)) } } }; ol.renderer.Map.prototype.scheduleRemoveUnusedLayerRenderers = function(frameState) { var layerKey; for(layerKey in this.layerRenderers_) { if(!(layerKey in frameState.layerStates)) { frameState.postRenderFunctions.push(goog.bind(this.removeUnusedLayerRenderers_, this)); return } } }; goog.provide("ol.source.Image"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.Image"); goog.require("ol.ImageUrlFunction"); goog.require("ol.ImageUrlFunctionType"); goog.require("ol.Projection"); goog.require("ol.Size"); goog.require("ol.array"); goog.require("ol.source.Source"); ol.source.ImageOptions; ol.source.Image = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection}); this.imageUrlFunction = goog.isDef(options.imageUrlFunction) ? options.imageUrlFunction : ol.ImageUrlFunction.nullImageUrlFunction; this.crossOrigin_ = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; this.resolutions_ = goog.isDef(options.resolutions) ? options.resolutions : null; goog.asserts.assert(goog.isNull(this.resolutions_) || goog.array.isSorted(this.resolutions_, function(a, b) { return b - a }, true)) }; goog.inherits(ol.source.Image, ol.source.Source); ol.source.Image.prototype.createImage = function(extent, resolution, size, projection) { var image = null; var imageUrl = this.imageUrlFunction(extent, size, projection); if(goog.isDef(imageUrl)) { image = new ol.Image(extent, resolution, imageUrl, this.crossOrigin_, this.getAttributions()) } return image }; ol.source.Image.prototype.findNearestResolution = function(resolution) { if(!goog.isNull(this.resolutions_)) { var idx = ol.array.linearFindNearest(this.resolutions_, resolution, 0); resolution = this.resolutions_[idx] } return resolution }; ol.source.Image.prototype.getImage = goog.abstractMethod; goog.provide("ol.layer.Image"); goog.require("ol.layer.Layer"); goog.require("ol.source.Image"); ol.layer.Image = function(options) { goog.base(this, options) }; goog.inherits(ol.layer.Image, ol.layer.Layer); ol.layer.Image.prototype.getImageSource = function() { return(this.getSource()) }; goog.provide("ol.layer.Tile"); goog.require("ol.layer.Layer"); goog.require("ol.source.Tile"); ol.layer.TileProperty = {PRELOAD:"preload"}; ol.layer.Tile = function(options) { goog.base(this, options); this.setPreload(goog.isDef(options.preload) ? options.preload : 0) }; goog.inherits(ol.layer.Tile, ol.layer.Layer); ol.layer.Tile.prototype.getPreload = function() { return(this.get(ol.layer.TileProperty.PRELOAD)) }; goog.exportProperty(ol.layer.Tile.prototype, "getPreload", ol.layer.Tile.prototype.getPreload); ol.layer.Tile.prototype.getTileSource = function() { return(this.getSource()) }; ol.layer.Tile.prototype.setPreload = function(preload) { this.set(ol.layer.TileProperty.PRELOAD, preload) }; goog.exportProperty(ol.layer.Tile.prototype, "setPreload", ol.layer.Tile.prototype.setPreload); goog.provide("ol.expr.Call"); goog.provide("ol.expr.Comparison"); goog.provide("ol.expr.ComparisonOp"); goog.provide("ol.expr.Expression"); goog.provide("ol.expr.Identifier"); goog.provide("ol.expr.Literal"); goog.provide("ol.expr.Logical"); goog.provide("ol.expr.LogicalOp"); goog.provide("ol.expr.Math"); goog.provide("ol.expr.MathOp"); goog.provide("ol.expr.Member"); goog.provide("ol.expr.Not"); ol.expr.Expression = function() { }; ol.expr.Expression.prototype.evaluate = goog.abstractMethod; ol.expr.Call = function(callee, args) { this.callee_ = callee; this.args_ = args }; goog.inherits(ol.expr.Call, ol.expr.Expression); ol.expr.Call.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { var fnScope = goog.isDefAndNotNull(opt_fns) ? opt_fns : opt_scope; var fn = this.callee_.evaluate(fnScope); if(!fn || !goog.isFunction(fn)) { throw new Error("Expected function but found " + fn); } var thisArg = goog.isDef(opt_this) ? opt_this : {}; var len = this.args_.length; var values = new Array(len); for(var i = 0;i < len;++i) { values[i] = this.args_[i].evaluate(opt_scope, opt_fns, opt_this) } return fn.apply(thisArg, values) }; ol.expr.Call.prototype.getArgs = function() { return this.args_ }; ol.expr.Call.prototype.getCallee = function() { return this.callee_ }; ol.expr.ComparisonOp = {EQ:"\x3d\x3d", NEQ:"!\x3d", STRICT_EQ:"\x3d\x3d\x3d", STRICT_NEQ:"!\x3d\x3d", GT:"\x3e", LT:"\x3c", GTE:"\x3e\x3d", LTE:"\x3c\x3d"}; ol.expr.Comparison = function(operator, left, right) { this.operator_ = operator; this.left_ = left; this.right_ = right }; goog.inherits(ol.expr.Comparison, ol.expr.Expression); ol.expr.Comparison.isValidOp = function() { var valid = {}; for(var key in ol.expr.ComparisonOp) { valid[ol.expr.ComparisonOp[key]] = true } return function isValidOp(candidate) { return!!valid[candidate] } }(); ol.expr.Comparison.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { var result; var rightVal = this.right_.evaluate(opt_scope, opt_fns, opt_this); var leftVal = this.left_.evaluate(opt_scope, opt_fns, opt_this); var op = this.operator_; if(op === ol.expr.ComparisonOp.EQ) { result = leftVal == rightVal }else { if(op === ol.expr.ComparisonOp.NEQ) { result = leftVal != rightVal }else { if(op === ol.expr.ComparisonOp.STRICT_EQ) { result = leftVal === rightVal }else { if(op === ol.expr.ComparisonOp.STRICT_NEQ) { result = leftVal !== rightVal }else { if(op === ol.expr.ComparisonOp.GT) { result = leftVal > rightVal }else { if(op === ol.expr.ComparisonOp.LT) { result = leftVal < rightVal }else { if(op === ol.expr.ComparisonOp.GTE) { result = leftVal >= rightVal }else { if(op === ol.expr.ComparisonOp.LTE) { result = leftVal <= rightVal }else { throw new Error("Unsupported comparison operator: " + this.operator_); } } } } } } } } return result }; ol.expr.Comparison.prototype.getOperator = function() { return this.operator_ }; ol.expr.Comparison.prototype.getLeft = function() { return this.left_ }; ol.expr.Comparison.prototype.getRight = function() { return this.right_ }; ol.expr.Identifier = function(name) { this.name_ = name }; goog.inherits(ol.expr.Identifier, ol.expr.Expression); ol.expr.Identifier.prototype.evaluate = function(opt_scope) { if(!goog.isDefAndNotNull(opt_scope)) { throw new Error("Attempt to evaluate identifier with no scope"); } return opt_scope[this.name_] }; ol.expr.Identifier.prototype.getName = function() { return this.name_ }; ol.expr.Literal = function(value) { this.value_ = value }; goog.inherits(ol.expr.Literal, ol.expr.Expression); ol.expr.Literal.prototype.evaluate = function() { return this.value_ }; ol.expr.Literal.prototype.getValue = function() { return this.value_ }; ol.expr.LogicalOp = {AND:"\x26\x26", OR:"||"}; ol.expr.Logical = function(operator, left, right) { this.operator_ = operator; this.left_ = left; this.right_ = right }; goog.inherits(ol.expr.Logical, ol.expr.Expression); ol.expr.Logical.isValidOp = function() { var valid = {}; for(var key in ol.expr.LogicalOp) { valid[ol.expr.LogicalOp[key]] = true } return function isValidOp(candidate) { return!!valid[candidate] } }(); ol.expr.Logical.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { var result; var rightVal = this.right_.evaluate(opt_scope, opt_fns, opt_this); var leftVal = this.left_.evaluate(opt_scope, opt_fns, opt_this); if(this.operator_ === ol.expr.LogicalOp.AND) { result = leftVal && rightVal }else { if(this.operator_ === ol.expr.LogicalOp.OR) { result = leftVal || rightVal }else { throw new Error("Unsupported logical operator: " + this.operator_); } } return result }; ol.expr.Logical.prototype.getOperator = function() { return this.operator_ }; ol.expr.Logical.prototype.getLeft = function() { return this.left_ }; ol.expr.Logical.prototype.getRight = function() { return this.right_ }; ol.expr.MathOp = {ADD:"+", SUBTRACT:"-", MULTIPLY:"*", DIVIDE:"/", MOD:"%"}; ol.expr.Math = function(operator, left, right) { this.operator_ = operator; this.left_ = left; this.right_ = right }; goog.inherits(ol.expr.Math, ol.expr.Expression); ol.expr.Math.isValidOp = function() { var valid = {}; for(var key in ol.expr.MathOp) { valid[ol.expr.MathOp[key]] = true } return function isValidOp(candidate) { return!!valid[candidate] } }(); ol.expr.Math.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { var result; var rightVal = this.right_.evaluate(opt_scope, opt_fns, opt_this); var leftVal = this.left_.evaluate(opt_scope, opt_fns, opt_this); var op = this.operator_; if(op === ol.expr.MathOp.ADD) { result = leftVal + rightVal }else { if(op === ol.expr.MathOp.SUBTRACT) { result = Number(leftVal) - Number(rightVal) }else { if(op === ol.expr.MathOp.MULTIPLY) { result = Number(leftVal) * Number(rightVal) }else { if(op === ol.expr.MathOp.DIVIDE) { result = Number(leftVal) / Number(rightVal) }else { if(op === ol.expr.MathOp.MOD) { result = Number(leftVal) % Number(rightVal) }else { throw new Error("Unsupported math operator: " + this.operator_); } } } } } return result }; ol.expr.Math.prototype.getOperator = function() { return this.operator_ }; ol.expr.Math.prototype.getLeft = function() { return this.left_ }; ol.expr.Math.prototype.getRight = function() { return this.right_ }; ol.expr.Member = function(object, property) { this.object_ = object; this.property_ = property }; goog.inherits(ol.expr.Member, ol.expr.Expression); ol.expr.Member.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { var obj = this.object_.evaluate(opt_scope, opt_fns, opt_this); if(!goog.isObject(obj)) { throw new Error("Expected member expression to evaluate to an object " + "but got " + obj); } return this.property_.evaluate((obj)) }; ol.expr.Member.prototype.getObject = function() { return this.object_ }; ol.expr.Member.prototype.getProperty = function() { return this.property_ }; ol.expr.Not = function(argument) { this.argument_ = argument }; goog.inherits(ol.expr.Not, ol.expr.Expression); ol.expr.Not.prototype.evaluate = function(opt_scope, opt_fns, opt_this) { return!this.argument_.evaluate(opt_scope, opt_fns, opt_this) }; ol.expr.Not.prototype.getArgument = function() { return this.argument_ }; goog.provide("ol.expr.Char"); goog.provide("ol.expr.Lexer"); goog.provide("ol.expr.Token"); goog.provide("ol.expr.TokenType"); goog.provide("ol.expr.UnexpectedToken"); goog.require("goog.asserts"); goog.require("goog.debug.Error"); ol.expr.Char = {AMPERSAND:38, BACKSLASH:92, BANG:33, CARRIAGE_RETURN:13, COMMA:44, DIGIT_0:48, DIGIT_7:55, DIGIT_9:57, DOLLAR:36, DOUBLE_QUOTE:34, DOT:46, EQUAL:61, FORM_FEED:12, GREATER:62, LEFT_PAREN:40, LESS:60, LINE_FEED:10, LINE_SEPARATOR:8232, LOWER_A:97, LOWER_E:101, LOWER_F:102, LOWER_X:120, LOWER_Z:122, MINUS:45, NONBREAKING_SPACE:160, PARAGRAPH_SEPARATOR:8233, PERCENT:37, PIPE:124, PLUS:43, RIGHT_PAREN:41, SINGLE_QUOTE:39, SLASH:47, SPACE:32, STAR:42, TAB:9, TILDE:126, UNDERSCORE:95, UPPER_A:65, UPPER_E:69, UPPER_F:70, UPPER_X:88, UPPER_Z:90, VERTICAL_TAB:11}; ol.expr.TokenType = {BOOLEAN_LITERAL:"Boolean", EOF:"\x3cend\x3e", IDENTIFIER:"Identifier", KEYWORD:"Keyword", NULL_LITERAL:"Null", NUMERIC_LITERAL:"Numeric", PUNCTUATOR:"Punctuator", STRING_LITERAL:"String", UNKNOWN:"Unknown"}; ol.expr.Token; ol.expr.Lexer = function(source) { this.source_ = source; this.length_ = source.length; this.index_ = 0; this.nextIndex_ = 0 }; ol.expr.Lexer.prototype.expect = function(value) { var match = this.match(value); if(!match) { throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:this.getCurrentChar_(), index:this.index_}); } this.skip() }; ol.expr.Lexer.prototype.increment_ = function(delta) { this.index_ += delta }; ol.expr.Lexer.prototype.isDecimalDigit_ = function(code) { return code >= ol.expr.Char.DIGIT_0 && code <= ol.expr.Char.DIGIT_9 }; ol.expr.Lexer.prototype.isFutureReservedWord_ = function(id) { return id === "class" || id === "enum" || id === "export" || id === "extends" || id === "import" || id === "super" }; ol.expr.Lexer.prototype.isHexDigit_ = function(code) { return this.isDecimalDigit_(code) || code >= ol.expr.Char.LOWER_A && code <= ol.expr.Char.LOWER_F || code >= ol.expr.Char.UPPER_A && code <= ol.expr.Char.UPPER_F }; ol.expr.Lexer.prototype.isIdentifierPart_ = function(code) { return this.isIdentifierStart_(code) || code >= ol.expr.Char.DIGIT_0 && code <= ol.expr.Char.DIGIT_9 }; ol.expr.Lexer.prototype.isIdentifierStart_ = function(code) { return code === ol.expr.Char.DOLLAR || code === ol.expr.Char.UNDERSCORE || code >= ol.expr.Char.UPPER_A && code <= ol.expr.Char.UPPER_Z || code >= ol.expr.Char.LOWER_A && code <= ol.expr.Char.LOWER_Z }; ol.expr.Lexer.prototype.isKeyword_ = function(id) { return id === "break" || id === "case" || id === "catch" || id === "continue" || id === "debugger" || id === "default" || id === "delete" || id === "do" || id === "else" || id === "finally" || id === "for" || id === "function" || id === "if" || id === "in" || id === "instanceof" || id === "new" || id === "return" || id === "switch" || id === "this" || id === "throw" || id === "try" || id === "typeof" || id === "var" || id === "void" || id === "while" || id === "with" }; ol.expr.Lexer.prototype.isLineTerminator_ = function(code) { return code === ol.expr.Char.LINE_FEED || code === ol.expr.Char.CARRIAGE_RETURN || code === ol.expr.Char.LINE_SEPARATOR || code === ol.expr.Char.PARAGRAPH_SEPARATOR }; ol.expr.Lexer.prototype.isOctalDigit_ = function(code) { return code >= ol.expr.Char.DIGIT_0 && code <= ol.expr.Char.DIGIT_7 }; ol.expr.Lexer.prototype.isWhitespace_ = function(code) { return code === ol.expr.Char.SPACE || code === ol.expr.Char.TAB || code === ol.expr.Char.VERTICAL_TAB || code === ol.expr.Char.FORM_FEED || code === ol.expr.Char.NONBREAKING_SPACE || code >= 5760 && "\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005" + "\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff".indexOf(String.fromCharCode(code)) > 0 }; ol.expr.Lexer.prototype.getCharCode_ = function(delta) { return this.source_.charCodeAt(this.index_ + delta) }; ol.expr.Lexer.prototype.getCurrentChar_ = function() { return this.source_[this.index_] }; ol.expr.Lexer.prototype.getCurrentCharCode_ = function() { return this.getCharCode_(0) }; ol.expr.Lexer.prototype.match = function(value) { var token = this.peek(); return token.type === ol.expr.TokenType.PUNCTUATOR && token.value === value }; ol.expr.Lexer.prototype.next = function() { var code = this.skipWhitespace_(); if(this.index_ >= this.length_) { return{type:ol.expr.TokenType.EOF, value:null, index:this.index_} } if(code === ol.expr.Char.LEFT_PAREN || code === ol.expr.Char.RIGHT_PAREN) { return this.scanPunctuator_(code) } if(code === ol.expr.Char.SINGLE_QUOTE || code === ol.expr.Char.DOUBLE_QUOTE) { return this.scanStringLiteral_(code) } if(this.isIdentifierStart_(code)) { return this.scanIdentifier_(code) } if(code === ol.expr.Char.DOT) { if(this.isDecimalDigit_(this.getCharCode_(1))) { return this.scanNumericLiteral_(code) } return this.scanPunctuator_(code) } if(this.isDecimalDigit_(code)) { return this.scanNumericLiteral_(code) } return this.scanPunctuator_(code) }; ol.expr.Lexer.prototype.peek = function() { var currentIndex = this.index_; var token = this.next(); this.nextIndex_ = this.index_; this.index_ = currentIndex; return token }; ol.expr.Lexer.prototype.scanHexLiteral_ = function(code) { var str = ""; var start = this.index_ - 2; while(this.index_ < this.length_) { if(!this.isHexDigit_(code)) { break } str += String.fromCharCode(code); this.increment_(1); code = this.getCurrentCharCode_() } if(str.length === 0 || this.isIdentifierStart_(code)) { throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:String.fromCharCode(code), index:this.index_}); } goog.asserts.assert(!isNaN(parseInt("0x" + str, 16)), "Valid hex: " + str); return{type:ol.expr.TokenType.NUMERIC_LITERAL, value:parseInt("0x" + str, 16), index:start} }; ol.expr.Lexer.prototype.scanIdentifier_ = function(code) { goog.asserts.assert(this.isIdentifierStart_(code), "Must be called with a valid identifier"); var start = this.index_; this.increment_(1); while(this.index_ < this.length_) { code = this.getCurrentCharCode_(); if(this.isIdentifierPart_(code)) { this.increment_(1) }else { break } } var id = this.source_.slice(start, this.index_); var type; if(id.length === 1) { type = ol.expr.TokenType.IDENTIFIER }else { if(this.isKeyword_(id)) { type = ol.expr.TokenType.KEYWORD }else { if(id === "null") { type = ol.expr.TokenType.NULL_LITERAL }else { if(id === "true" || id === "false") { type = ol.expr.TokenType.BOOLEAN_LITERAL }else { type = ol.expr.TokenType.IDENTIFIER } } } } return{type:type, value:id, index:start} }; ol.expr.Lexer.prototype.scanNumericLiteral_ = function(code) { goog.asserts.assert(code === ol.expr.Char.DOT || this.isDecimalDigit_(code), "Valid start for numeric literal: " + String.fromCharCode(code)); var str = ""; var start = this.index_; if(code !== ol.expr.Char.DOT) { if(code === ol.expr.Char.DIGIT_0) { var nextCode = this.getCharCode_(1); if(nextCode === ol.expr.Char.UPPER_X || nextCode === ol.expr.Char.LOWER_X) { this.increment_(2); return this.scanHexLiteral_(this.getCurrentCharCode_()) } if(this.isOctalDigit_(nextCode)) { this.increment_(1); return this.scanOctalLiteral_(nextCode) } if(this.isDecimalDigit_(nextCode)) { throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:String.fromCharCode(nextCode), index:this.index_}); } } while(this.isDecimalDigit_(code)) { str += String.fromCharCode(code); this.increment_(1); code = this.getCurrentCharCode_() } } if(code === ol.expr.Char.DOT) { str += String.fromCharCode(code); this.increment_(1); code = this.getCurrentCharCode_(); while(this.isDecimalDigit_(code)) { str += String.fromCharCode(code); this.increment_(1); code = this.getCurrentCharCode_() } } if(code === ol.expr.Char.UPPER_E || code === ol.expr.Char.LOWER_E) { str += "E"; this.increment_(1); code = this.getCurrentCharCode_(); if(code === ol.expr.Char.PLUS || code === ol.expr.Char.MINUS) { str += String.fromCharCode(code); this.increment_(1); code = this.getCurrentCharCode_() } if(!this.isDecimalDigit_(code)) { throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:String.fromCharCode(code), index:this.index_}); } while(this.isDecimalDigit_(code)) { str += String.fromCharCode(code); this.increment_(1); code = this.getCurrentCharCode_() } } if(this.isIdentifierStart_(code)) { throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:String.fromCharCode(code), index:this.index_}); } goog.asserts.assert(!isNaN(parseFloat(str)), "Valid number: " + str); return{type:ol.expr.TokenType.NUMERIC_LITERAL, value:parseFloat(str), index:start} }; ol.expr.Lexer.prototype.scanOctalLiteral_ = function(code) { goog.asserts.assert(this.isOctalDigit_(code)); var str = "0" + String.fromCharCode(code); var start = this.index_ - 1; this.increment_(1); while(this.index_ < this.length_) { code = this.getCurrentCharCode_(); if(!this.isOctalDigit_(code)) { break } str += String.fromCharCode(code); this.increment_(1) } code = this.getCurrentCharCode_(); if(this.isIdentifierStart_(code) || this.isDecimalDigit_(code)) { throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:String.fromCharCode(code), index:this.index_}); } goog.asserts.assert(!isNaN(parseInt(str, 8)), "Valid octal: " + str); return{type:ol.expr.TokenType.NUMERIC_LITERAL, value:parseInt(str, 8), index:start} }; ol.expr.Lexer.prototype.scanPunctuator_ = function(code) { var start = this.index_; if(code === ol.expr.Char.DOT || code === ol.expr.Char.LEFT_PAREN || code === ol.expr.Char.RIGHT_PAREN || code === ol.expr.Char.COMMA || code === ol.expr.Char.PLUS || code === ol.expr.Char.MINUS || code === ol.expr.Char.STAR || code === ol.expr.Char.SLASH || code === ol.expr.Char.PERCENT || code === ol.expr.Char.TILDE) { this.increment_(1); return{type:ol.expr.TokenType.PUNCTUATOR, value:String.fromCharCode(code), index:start} } var nextCode = this.getCharCode_(1); if(nextCode === ol.expr.Char.EQUAL) { if(code === ol.expr.Char.BANG || code === ol.expr.Char.EQUAL) { this.increment_(2); if(this.getCurrentCharCode_() === ol.expr.Char.EQUAL) { this.increment_(1); return{type:ol.expr.TokenType.PUNCTUATOR, value:String.fromCharCode(code) + "\x3d\x3d", index:start} }else { return{type:ol.expr.TokenType.PUNCTUATOR, value:String.fromCharCode(code) + "\x3d", index:start} } } if(code === ol.expr.Char.GREATER || code === ol.expr.Char.LESS) { this.increment_(2); return{type:ol.expr.TokenType.PUNCTUATOR, value:String.fromCharCode(code) + "\x3d", index:start} } } if(code === nextCode && (code === ol.expr.Char.PIPE || code === ol.expr.Char.AMPERSAND)) { this.increment_(2); var str = String.fromCharCode(code); return{type:ol.expr.TokenType.PUNCTUATOR, value:str + str, index:start} } if(code === ol.expr.Char.GREATER || code === ol.expr.Char.LESS || code === ol.expr.Char.BANG || code === ol.expr.Char.AMPERSAND || code === ol.expr.Char.PIPE) { this.increment_(1); return{type:ol.expr.TokenType.PUNCTUATOR, value:String.fromCharCode(code), index:start} } throw new ol.expr.UnexpectedToken({type:ol.expr.TokenType.UNKNOWN, value:String.fromCharCode(code), index:this.index_}); }; ol.expr.Lexer.prototype.scanStringLiteral_ = function(quote) { goog.asserts.assert(quote === ol.expr.Char.SINGLE_QUOTE || quote === ol.expr.Char.DOUBLE_QUOTE, "Strings must start with a quote: " + String.fromCharCode(quote)); var start = this.index_; this.increment_(1); var str = ""; var code; while(this.index_ < this.length_) { code = this.getCurrentCharCode_(); this.increment_(1); if(code === quote) { quote = 0; break } if(code === ol.expr.Char.BACKSLASH) { str += this.getCurrentChar_(); this.increment_(1) }else { str += String.fromCharCode(code) } } if(quote !== 0) { throw new ol.expr.UnexpectedToken(this.peek()); } return{type:ol.expr.TokenType.STRING_LITERAL, value:str, index:start} }; ol.expr.Lexer.prototype.skip = function() { this.index_ = this.nextIndex_ }; ol.expr.Lexer.prototype.skipWhitespace_ = function() { var code = NaN; while(this.index_ < this.length_) { code = this.getCurrentCharCode_(); if(this.isWhitespace_(code)) { this.increment_(1) }else { break } } return code }; ol.expr.UnexpectedToken = function(token, opt_message) { var message = goog.isDef(opt_message) ? opt_message : "Unexpected token " + token.value + " at index " + token.index; goog.debug.Error.call(this, message); this.token = token }; goog.inherits(ol.expr.UnexpectedToken, goog.debug.Error); ol.expr.UnexpectedToken.prototype.name = "UnexpectedToken"; goog.provide("ol.expr.Parser"); goog.require("goog.asserts"); goog.require("ol.expr.Call"); goog.require("ol.expr.Comparison"); goog.require("ol.expr.ComparisonOp"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Lexer"); goog.require("ol.expr.Literal"); goog.require("ol.expr.Logical"); goog.require("ol.expr.LogicalOp"); goog.require("ol.expr.Math"); goog.require("ol.expr.MathOp"); goog.require("ol.expr.Member"); goog.require("ol.expr.Not"); goog.require("ol.expr.Token"); goog.require("ol.expr.TokenType"); goog.require("ol.expr.UnexpectedToken"); ol.expr.Parser = function() { }; ol.expr.Parser.prototype.binaryPrecedence_ = function(token) { var precedence = 0; if(token.type !== ol.expr.TokenType.PUNCTUATOR) { return precedence } switch(token.value) { case ol.expr.LogicalOp.OR: precedence = 1; break; case ol.expr.LogicalOp.AND: precedence = 2; break; case ol.expr.ComparisonOp.EQ: ; case ol.expr.ComparisonOp.NEQ: ; case ol.expr.ComparisonOp.STRICT_EQ: ; case ol.expr.ComparisonOp.STRICT_NEQ: precedence = 3; break; case ol.expr.ComparisonOp.GT: ; case ol.expr.ComparisonOp.LT: ; case ol.expr.ComparisonOp.GTE: ; case ol.expr.ComparisonOp.LTE: precedence = 4; break; case ol.expr.MathOp.ADD: ; case ol.expr.MathOp.SUBTRACT: precedence = 5; break; case ol.expr.MathOp.MULTIPLY: ; case ol.expr.MathOp.DIVIDE: ; case ol.expr.MathOp.MOD: precedence = 6; break; default: break } return precedence }; ol.expr.Parser.prototype.createBinaryExpression_ = function(operator, left, right) { var expr; if(ol.expr.Comparison.isValidOp(operator)) { expr = new ol.expr.Comparison((operator), left, right) }else { if(ol.expr.Logical.isValidOp(operator)) { expr = new ol.expr.Logical((operator), left, right) }else { if(ol.expr.Math.isValidOp(operator)) { expr = new ol.expr.Math((operator), left, right) }else { throw new Error("Unsupported binary operator: " + operator); } } } return expr }; ol.expr.Parser.prototype.createCallExpression_ = function(callee, args) { return new ol.expr.Call(callee, args) }; ol.expr.Parser.prototype.createIdentifier_ = function(name) { return new ol.expr.Identifier(name) }; ol.expr.Parser.prototype.createLiteral_ = function(value) { return new ol.expr.Literal(value) }; ol.expr.Parser.prototype.createMemberExpression_ = function(object, property) { return new ol.expr.Member(object, property) }; ol.expr.Parser.prototype.createUnaryExpression_ = function(op, argument) { goog.asserts.assert(op.value === "!" || op.value === "+" || op.value === "-"); var expr; if(op.value === "!") { expr = new ol.expr.Not(argument) }else { if(!(argument instanceof ol.expr.Literal)) { throw new ol.expr.UnexpectedToken(op); }else { if(op.value === "+") { expr = this.createLiteral_(+(argument.evaluate())) }else { expr = this.createLiteral_(-(argument.evaluate())) } } } return expr }; ol.expr.Parser.prototype.parse = function(source) { var lexer = new ol.expr.Lexer(source); var expr = this.parseExpression_(lexer); var token = lexer.peek(); if(token.type !== ol.expr.TokenType.EOF) { throw new ol.expr.UnexpectedToken(token); } return expr }; ol.expr.Parser.prototype.parseArguments_ = function(lexer) { var args = []; lexer.expect("("); if(!lexer.match(")")) { while(true) { args.push(this.parseBinaryExpression_(lexer)); if(lexer.match(")")) { break } lexer.expect(",") } } lexer.skip(); return args }; ol.expr.Parser.prototype.parseBinaryExpression_ = function(lexer) { var left = this.parseUnaryExpression_(lexer); var operator = lexer.peek(); var precedence = this.binaryPrecedence_(operator); if(precedence === 0) { return left } lexer.skip(); var right = this.parseUnaryExpression_(lexer); var stack = [left, operator, right]; precedence = this.binaryPrecedence_(lexer.peek()); while(precedence > 0) { while(stack.length > 2 && precedence <= this.binaryPrecedence_(stack[stack.length - 2])) { right = stack.pop(); operator = stack.pop(); left = stack.pop(); stack.push(this.createBinaryExpression_(operator.value, left, right)) } stack.push(lexer.next()); stack.push(this.parseUnaryExpression_(lexer)); precedence = this.binaryPrecedence_(lexer.peek()) } var i = stack.length - 1; var expr = stack[i]; while(i > 1) { expr = this.createBinaryExpression_(stack[i - 1].value, stack[i - 2], expr); i -= 2 } return expr }; ol.expr.Parser.prototype.parseGroupExpression_ = function(lexer) { lexer.expect("("); var expr = this.parseExpression_(lexer); lexer.expect(")"); return expr }; ol.expr.Parser.prototype.parseLeftHandSideExpression_ = function(lexer) { var expr = this.parsePrimaryExpression_(lexer); var token = lexer.peek(); if(token.value === "(") { if(!(expr instanceof ol.expr.Identifier)) { throw new ol.expr.UnexpectedToken(token); } var args = this.parseArguments_(lexer); expr = this.createCallExpression_(expr, args) }else { while(token.value === ".") { var property = this.parseNonComputedMember_(lexer); expr = this.createMemberExpression_(expr, property); token = lexer.peek() } } return expr }; ol.expr.Parser.prototype.parseNonComputedMember_ = function(lexer) { lexer.expect("."); var token = lexer.next(); if(token.type !== ol.expr.TokenType.IDENTIFIER && token.type !== ol.expr.TokenType.KEYWORD && token.type !== ol.expr.TokenType.BOOLEAN_LITERAL && token.type !== ol.expr.TokenType.NULL_LITERAL) { throw new ol.expr.UnexpectedToken(token); } return this.createIdentifier_(String(token.value)) }; ol.expr.Parser.prototype.parsePrimaryExpression_ = function(lexer) { var token = lexer.peek(); if(token.value === "(") { return this.parseGroupExpression_(lexer) } lexer.skip(); var expr; var type = token.type; if(type === ol.expr.TokenType.IDENTIFIER) { expr = this.createIdentifier_((token.value)) }else { if(type === ol.expr.TokenType.STRING_LITERAL || type === ol.expr.TokenType.NUMERIC_LITERAL) { expr = this.createLiteral_(token.value) }else { if(type === ol.expr.TokenType.BOOLEAN_LITERAL) { expr = this.createLiteral_(token.value === "true") }else { if(type === ol.expr.TokenType.NULL_LITERAL) { expr = this.createLiteral_(null) }else { throw new ol.expr.UnexpectedToken(token); } } } } return expr }; ol.expr.Parser.prototype.parseUnaryExpression_ = function(lexer) { var expr; var operator = lexer.peek(); if(operator.type !== ol.expr.TokenType.PUNCTUATOR) { expr = this.parseLeftHandSideExpression_(lexer) }else { if(operator.value === "!" || operator.value === "-" || operator.value === "+") { lexer.skip(); expr = this.parseUnaryExpression_(lexer); expr = this.createUnaryExpression_(operator, expr) }else { expr = this.parseLeftHandSideExpression_(lexer) } } return expr }; ol.expr.Parser.prototype.parseExpression_ = function(lexer) { return this.parseBinaryExpression_(lexer) }; goog.provide("ol.expr"); goog.provide("ol.expr.functions"); goog.require("ol.Extent"); goog.require("ol.Feature"); goog.require("ol.expr.Call"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Parser"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); ol.expr.evaluateFeature = function(expr, opt_feature) { var result; if(goog.isDef(opt_feature)) { result = expr.evaluate(opt_feature.getAttributes(), ol.expr.lib, opt_feature) }else { result = expr.evaluate() } return result }; ol.expr.parse = function(source) { var parser = new ol.expr.Parser; return parser.parse(source) }; ol.expr.register = function(name, func) { ol.expr.lib[name] = func }; ol.expr.isLibCall = function(expr) { var name; if(expr instanceof ol.expr.Call) { var callee = expr.getCallee(); if(callee instanceof ol.expr.Identifier) { name = callee.getName(); if(!ol.expr.lib.hasOwnProperty(name)) { name = undefined } } } return name }; ol.expr.lib = {}; ol.expr.functions = {CONCAT:"concat", EXTENT:"extent", FID:"fid", GEOMETRY_TYPE:"geometryType", RENDER_INTENT:"renderIntent", INTERSECTS:"intersects", CONTAINS:"contains", DWITHIN:"dwithin", WITHIN:"within", LIKE:"like", IEQ:"ieq", INEQ:"ineq"}; ol.expr.lib[ol.expr.functions.CONCAT] = function(var_args) { var str = ""; for(var i = 0, ii = arguments.length;i < ii;++i) { str += String(arguments[i]) } return str }; ol.expr.lib[ol.expr.functions.EXTENT] = function(minX, maxX, minY, maxY, opt_projection, opt_attribute) { var intersects = false; var geometry = goog.isDef(opt_attribute) ? this.get(opt_attribute) : this.getGeometry(); if(geometry) { intersects = ol.extent.intersects(geometry.getBounds(), [minX, maxX, minY, maxY]) } return intersects }; ol.expr.lib[ol.expr.functions.FID] = function(var_args) { var matches = false; var id = this.getFeatureId(); if(goog.isDef(id)) { for(var i = 0, ii = arguments.length;i < ii;++i) { if(arguments[i] === id) { matches = true; break } } } return matches }; ol.expr.lib[ol.expr.functions.LIKE] = function(value, pattern, wildCard, singleChar, escapeChar, matchCase) { if(wildCard == ".") { throw new Error('"." is an unsupported wildCard character for ' + 'the "like" function'); } wildCard = goog.isDef(wildCard) ? wildCard : "*"; singleChar = goog.isDef(singleChar) ? singleChar : "."; escapeChar = goog.isDef(escapeChar) ? escapeChar : "!"; pattern = pattern.replace(new RegExp("\\" + escapeChar + "(.|$)", "g"), "\\$1"); pattern = pattern.replace(new RegExp("\\" + singleChar, "g"), "."); pattern = pattern.replace(new RegExp("\\" + wildCard, "g"), ".*"); pattern = pattern.replace(new RegExp("\\\\.\\*", "g"), "\\" + wildCard); pattern = pattern.replace(new RegExp("\\\\\\.", "g"), "\\" + singleChar); var modifiers = matchCase === false ? "gi" : "g"; return(new RegExp(pattern, modifiers)).test(value) }; ol.expr.lib[ol.expr.functions.IEQ] = function(first, second) { if(goog.isString(first) && goog.isString(second)) { return first.toUpperCase() == second.toUpperCase() }else { return first == second } }; ol.expr.lib[ol.expr.functions.INEQ] = function(first, second) { if(goog.isString(first) && goog.isString(second)) { return first.toUpperCase() != second.toUpperCase() }else { return first != second } }; ol.expr.lib[ol.expr.functions.GEOMETRY_TYPE] = function(type) { var same = false; var geometry = this.getGeometry(); if(geometry) { same = geometry.getType() === type } return same }; ol.expr.lib[ol.expr.functions.RENDER_INTENT] = function(renderIntent) { return this.renderIntent == renderIntent }; ol.expr.lib[ol.expr.functions.INTERSECTS] = function(geom, opt_projection, opt_attribute) { throw new Error("Spatial function not implemented: " + ol.expr.functions.INTERSECTS); }; ol.expr.lib[ol.expr.functions.WITHIN] = function(geom, opt_projection, opt_attribute) { throw new Error("Spatial function not implemented: " + ol.expr.functions.WITHIN); }; ol.expr.lib[ol.expr.functions.CONTAINS] = function(geom, opt_projeciton, opt_attribute) { throw new Error("Spatial function not implemented: " + ol.expr.functions.CONTAINS); }; ol.expr.lib[ol.expr.functions.DWITHIN] = function(geom, distance, units, opt_projection, opt_attribute) { throw new Error("Spatial function not implemented: " + ol.expr.functions.DWITHIN); }; goog.provide("goog.json"); goog.provide("goog.json.Serializer"); goog.json.isValid_ = function(s) { if(/^\s*$/.test(s)) { return false } var backslashesRe = /\\["\\\/bfnrtu]/g; var simpleValuesRe = /"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; var openBracketsRe = /(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g; var remainderRe = /^[\],:{}\s\u2028\u2029]*$/; return remainderRe.test(s.replace(backslashesRe, "@").replace(simpleValuesRe, "]").replace(openBracketsRe, "")) }; goog.json.parse = function(s) { var o = String(s); if(goog.json.isValid_(o)) { try { return(eval("(" + o + ")")) }catch(ex) { } } throw Error("Invalid JSON string: " + o); }; goog.json.unsafeParse = function(s) { return(eval("(" + s + ")")) }; goog.json.Replacer; goog.json.Reviver; goog.json.serialize = function(object, opt_replacer) { return(new goog.json.Serializer(opt_replacer)).serialize(object) }; goog.json.Serializer = function(opt_replacer) { this.replacer_ = opt_replacer }; goog.json.Serializer.prototype.serialize = function(object) { var sb = []; this.serialize_(object, sb); return sb.join("") }; goog.json.Serializer.prototype.serialize_ = function(object, sb) { switch(typeof object) { case "string": this.serializeString_((object), sb); break; case "number": this.serializeNumber_((object), sb); break; case "boolean": sb.push(object); break; case "undefined": sb.push("null"); break; case "object": if(object == null) { sb.push("null"); break } if(goog.isArray(object)) { this.serializeArray((object), sb); break } this.serializeObject_((object), sb); break; case "function": break; default: throw Error("Unknown type: " + typeof object); } }; goog.json.Serializer.charToJsonCharCache_ = {'"':'\\"', "\\":"\\\\", "/":"\\/", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\x0B":"\\u000b"}; goog.json.Serializer.charsToReplace_ = /\uffff/.test("\uffff") ? /[\\\"\x00-\x1f\x7f-\uffff]/g : /[\\\"\x00-\x1f\x7f-\xff]/g; goog.json.Serializer.prototype.serializeString_ = function(s, sb) { sb.push('"', s.replace(goog.json.Serializer.charsToReplace_, function(c) { if(c in goog.json.Serializer.charToJsonCharCache_) { return goog.json.Serializer.charToJsonCharCache_[c] } var cc = c.charCodeAt(0); var rv = "\\u"; if(cc < 16) { rv += "000" }else { if(cc < 256) { rv += "00" }else { if(cc < 4096) { rv += "0" } } } return goog.json.Serializer.charToJsonCharCache_[c] = rv + cc.toString(16) }), '"') }; goog.json.Serializer.prototype.serializeNumber_ = function(n, sb) { sb.push(isFinite(n) && !isNaN(n) ? n : "null") }; goog.json.Serializer.prototype.serializeArray = function(arr, sb) { var l = arr.length; sb.push("["); var sep = ""; for(var i = 0;i < l;i++) { sb.push(sep); var value = arr[i]; this.serialize_(this.replacer_ ? this.replacer_.call(arr, String(i), value) : value, sb); sep = "," } sb.push("]") }; goog.json.Serializer.prototype.serializeObject_ = function(obj, sb) { sb.push("{"); var sep = ""; for(var key in obj) { if(Object.prototype.hasOwnProperty.call(obj, key)) { var value = obj[key]; if(typeof value != "function") { sb.push(sep); this.serializeString_(key, sb); sb.push(":"); this.serialize_(this.replacer_ ? this.replacer_.call(obj, key, value) : value, sb); sep = "," } } } sb.push("}") }; goog.provide("goog.net.ErrorCode"); goog.net.ErrorCode = {NO_ERROR:0, ACCESS_DENIED:1, FILE_NOT_FOUND:2, FF_SILENT_ERROR:3, CUSTOM_ERROR:4, EXCEPTION:5, HTTP_ERROR:6, ABORT:7, TIMEOUT:8, OFFLINE:9}; goog.net.ErrorCode.getDebugMessage = function(errorCode) { switch(errorCode) { case goog.net.ErrorCode.NO_ERROR: return"No Error"; case goog.net.ErrorCode.ACCESS_DENIED: return"Access denied to content document"; case goog.net.ErrorCode.FILE_NOT_FOUND: return"File not found"; case goog.net.ErrorCode.FF_SILENT_ERROR: return"Firefox silently errored"; case goog.net.ErrorCode.CUSTOM_ERROR: return"Application custom error"; case goog.net.ErrorCode.EXCEPTION: return"An exception occurred"; case goog.net.ErrorCode.HTTP_ERROR: return"Http response at 400 or 500 level"; case goog.net.ErrorCode.ABORT: return"Request was aborted"; case goog.net.ErrorCode.TIMEOUT: return"Request timed out"; case goog.net.ErrorCode.OFFLINE: return"The resource is not available offline"; default: return"Unrecognized error code" } }; goog.provide("goog.net.EventType"); goog.net.EventType = {COMPLETE:"complete", SUCCESS:"success", ERROR:"error", ABORT:"abort", READY:"ready", READY_STATE_CHANGE:"readystatechange", TIMEOUT:"timeout", INCREMENTAL_DATA:"incrementaldata", PROGRESS:"progress"}; goog.provide("goog.net.HttpStatus"); goog.net.HttpStatus = {CONTINUE:100, SWITCHING_PROTOCOLS:101, OK:200, CREATED:201, ACCEPTED:202, NON_AUTHORITATIVE_INFORMATION:203, NO_CONTENT:204, RESET_CONTENT:205, PARTIAL_CONTENT:206, MULTIPLE_CHOICES:300, MOVED_PERMANENTLY:301, FOUND:302, SEE_OTHER:303, NOT_MODIFIED:304, USE_PROXY:305, TEMPORARY_REDIRECT:307, BAD_REQUEST:400, UNAUTHORIZED:401, PAYMENT_REQUIRED:402, FORBIDDEN:403, NOT_FOUND:404, METHOD_NOT_ALLOWED:405, NOT_ACCEPTABLE:406, PROXY_AUTHENTICATION_REQUIRED:407, REQUEST_TIMEOUT:408, CONFLICT:409, GONE:410, LENGTH_REQUIRED:411, PRECONDITION_FAILED:412, REQUEST_ENTITY_TOO_LARGE:413, REQUEST_URI_TOO_LONG:414, UNSUPPORTED_MEDIA_TYPE:415, REQUEST_RANGE_NOT_SATISFIABLE:416, EXPECTATION_FAILED:417, INTERNAL_SERVER_ERROR:500, NOT_IMPLEMENTED:501, BAD_GATEWAY:502, SERVICE_UNAVAILABLE:503, GATEWAY_TIMEOUT:504, HTTP_VERSION_NOT_SUPPORTED:505, QUIRK_IE_NO_CONTENT:1223}; goog.net.HttpStatus.isSuccess = function(status) { switch(status) { case goog.net.HttpStatus.OK: ; case goog.net.HttpStatus.CREATED: ; case goog.net.HttpStatus.ACCEPTED: ; case goog.net.HttpStatus.NO_CONTENT: ; case goog.net.HttpStatus.PARTIAL_CONTENT: ; case goog.net.HttpStatus.NOT_MODIFIED: ; case goog.net.HttpStatus.QUIRK_IE_NO_CONTENT: return true; default: return false } }; goog.provide("goog.net.XmlHttpFactory"); goog.net.XmlHttpFactory = function() { }; goog.net.XmlHttpFactory.prototype.cachedOptions_ = null; goog.net.XmlHttpFactory.prototype.createInstance = goog.abstractMethod; goog.net.XmlHttpFactory.prototype.getOptions = function() { return this.cachedOptions_ || (this.cachedOptions_ = this.internalGetOptions()) }; goog.net.XmlHttpFactory.prototype.internalGetOptions = goog.abstractMethod; goog.provide("goog.net.WrapperXmlHttpFactory"); goog.require("goog.net.XmlHttpFactory"); goog.net.WrapperXmlHttpFactory = function(xhrFactory, optionsFactory) { goog.net.XmlHttpFactory.call(this); this.xhrFactory_ = xhrFactory; this.optionsFactory_ = optionsFactory }; goog.inherits(goog.net.WrapperXmlHttpFactory, goog.net.XmlHttpFactory); goog.net.WrapperXmlHttpFactory.prototype.createInstance = function() { return this.xhrFactory_() }; goog.net.WrapperXmlHttpFactory.prototype.getOptions = function() { return this.optionsFactory_() }; goog.provide("goog.net.DefaultXmlHttpFactory"); goog.provide("goog.net.XmlHttp"); goog.provide("goog.net.XmlHttp.OptionType"); goog.provide("goog.net.XmlHttp.ReadyState"); goog.require("goog.net.WrapperXmlHttpFactory"); goog.require("goog.net.XmlHttpFactory"); goog.net.XmlHttp = function() { return goog.net.XmlHttp.factory_.createInstance() }; goog.define("goog.net.XmlHttp.ASSUME_NATIVE_XHR", false); goog.net.XmlHttp.getOptions = function() { return goog.net.XmlHttp.factory_.getOptions() }; goog.net.XmlHttp.OptionType = {USE_NULL_FUNCTION:0, LOCAL_REQUEST_ERROR:1}; goog.net.XmlHttp.ReadyState = {UNINITIALIZED:0, LOADING:1, LOADED:2, INTERACTIVE:3, COMPLETE:4}; goog.net.XmlHttp.factory_; goog.net.XmlHttp.setFactory = function(factory, optionsFactory) { goog.net.XmlHttp.setGlobalFactory(new goog.net.WrapperXmlHttpFactory((factory), (optionsFactory))) }; goog.net.XmlHttp.setGlobalFactory = function(factory) { goog.net.XmlHttp.factory_ = factory }; goog.net.DefaultXmlHttpFactory = function() { goog.net.XmlHttpFactory.call(this) }; goog.inherits(goog.net.DefaultXmlHttpFactory, goog.net.XmlHttpFactory); goog.net.DefaultXmlHttpFactory.prototype.createInstance = function() { var progId = this.getProgId_(); if(progId) { return new ActiveXObject(progId) }else { return new XMLHttpRequest } }; goog.net.DefaultXmlHttpFactory.prototype.internalGetOptions = function() { var progId = this.getProgId_(); var options = {}; if(progId) { options[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] = true; options[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] = true } return options }; goog.net.DefaultXmlHttpFactory.prototype.ieProgId_; goog.net.DefaultXmlHttpFactory.prototype.getProgId_ = function() { if(goog.net.XmlHttp.ASSUME_NATIVE_XHR) { return"" } if(!this.ieProgId_ && typeof XMLHttpRequest == "undefined" && typeof ActiveXObject != "undefined") { var ACTIVE_X_IDENTS = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for(var i = 0;i < ACTIVE_X_IDENTS.length;i++) { var candidate = ACTIVE_X_IDENTS[i]; try { new ActiveXObject(candidate); this.ieProgId_ = candidate; return candidate }catch(e) { } } throw Error("Could not create ActiveXObject. ActiveX might be disabled," + " or MSXML might not be installed"); } return(this.ieProgId_) }; goog.net.XmlHttp.setGlobalFactory(new goog.net.DefaultXmlHttpFactory); goog.provide("goog.net.XhrIo"); goog.provide("goog.net.XhrIo.ResponseType"); goog.require("goog.Timer"); goog.require("goog.array"); goog.require("goog.debug.entryPointRegistry"); goog.require("goog.events.EventTarget"); goog.require("goog.json"); goog.require("goog.log"); goog.require("goog.net.ErrorCode"); goog.require("goog.net.EventType"); goog.require("goog.net.HttpStatus"); goog.require("goog.net.XmlHttp"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.structs"); goog.require("goog.structs.Map"); goog.require("goog.uri.utils"); goog.require("goog.userAgent"); goog.net.XhrIo = function(opt_xmlHttpFactory) { goog.base(this); this.headers = new goog.structs.Map; this.xmlHttpFactory_ = opt_xmlHttpFactory || null; this.active_ = false; this.xhr_ = null; this.xhrOptions_ = null; this.lastUri_ = ""; this.lastMethod_ = ""; this.lastErrorCode_ = goog.net.ErrorCode.NO_ERROR; this.lastError_ = ""; this.errorDispatched_ = false; this.inSend_ = false; this.inOpen_ = false; this.inAbort_ = false; this.timeoutInterval_ = 0; this.timeoutId_ = null; this.responseType_ = goog.net.XhrIo.ResponseType.DEFAULT; this.withCredentials_ = false; this.useXhr2Timeout_ = false }; goog.inherits(goog.net.XhrIo, goog.events.EventTarget); goog.net.XhrIo.ResponseType = {DEFAULT:"", TEXT:"text", DOCUMENT:"document", BLOB:"blob", ARRAY_BUFFER:"arraybuffer"}; goog.net.XhrIo.prototype.logger_ = goog.log.getLogger("goog.net.XhrIo"); goog.net.XhrIo.CONTENT_TYPE_HEADER = "Content-Type"; goog.net.XhrIo.HTTP_SCHEME_PATTERN = /^https?$/i; goog.net.XhrIo.METHODS_WITH_FORM_DATA = ["POST", "PUT"]; goog.net.XhrIo.FORM_CONTENT_TYPE = "application/x-www-form-urlencoded;charset\x3dutf-8"; goog.net.XhrIo.XHR2_TIMEOUT_ = "timeout"; goog.net.XhrIo.XHR2_ON_TIMEOUT_ = "ontimeout"; goog.net.XhrIo.sendInstances_ = []; goog.net.XhrIo.send = function(url, opt_callback, opt_method, opt_content, opt_headers, opt_timeoutInterval, opt_withCredentials) { var x = new goog.net.XhrIo; goog.net.XhrIo.sendInstances_.push(x); if(opt_callback) { x.listen(goog.net.EventType.COMPLETE, opt_callback) } x.listenOnce(goog.net.EventType.READY, x.cleanupSend_); if(opt_timeoutInterval) { x.setTimeoutInterval(opt_timeoutInterval) } if(opt_withCredentials) { x.setWithCredentials(opt_withCredentials) } x.send(url, opt_method, opt_content, opt_headers) }; goog.net.XhrIo.cleanup = function() { var instances = goog.net.XhrIo.sendInstances_; while(instances.length) { instances.pop().dispose() } }; goog.net.XhrIo.protectEntryPoints = function(errorHandler) { goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = errorHandler.protectEntryPoint(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_) }; goog.net.XhrIo.prototype.cleanupSend_ = function() { this.dispose(); goog.array.remove(goog.net.XhrIo.sendInstances_, this) }; goog.net.XhrIo.prototype.getTimeoutInterval = function() { return this.timeoutInterval_ }; goog.net.XhrIo.prototype.setTimeoutInterval = function(ms) { this.timeoutInterval_ = Math.max(0, ms) }; goog.net.XhrIo.prototype.setResponseType = function(type) { this.responseType_ = type }; goog.net.XhrIo.prototype.getResponseType = function() { return this.responseType_ }; goog.net.XhrIo.prototype.setWithCredentials = function(withCredentials) { this.withCredentials_ = withCredentials }; goog.net.XhrIo.prototype.getWithCredentials = function() { return this.withCredentials_ }; goog.net.XhrIo.prototype.send = function(url, opt_method, opt_content, opt_headers) { if(this.xhr_) { throw Error("[goog.net.XhrIo] Object is active with another request\x3d" + this.lastUri_ + "; newUri\x3d" + url); } var method = opt_method ? opt_method.toUpperCase() : "GET"; this.lastUri_ = url; this.lastError_ = ""; this.lastErrorCode_ = goog.net.ErrorCode.NO_ERROR; this.lastMethod_ = method; this.errorDispatched_ = false; this.active_ = true; this.xhr_ = this.createXhr(); this.xhrOptions_ = this.xmlHttpFactory_ ? this.xmlHttpFactory_.getOptions() : goog.net.XmlHttp.getOptions(); this.xhr_.onreadystatechange = goog.bind(this.onReadyStateChange_, this); try { goog.log.fine(this.logger_, this.formatMsg_("Opening Xhr")); this.inOpen_ = true; this.xhr_.open(method, url, true); this.inOpen_ = false }catch(err) { goog.log.fine(this.logger_, this.formatMsg_("Error opening Xhr: " + err.message)); this.error_(goog.net.ErrorCode.EXCEPTION, err); return } var content = opt_content || ""; var headers = this.headers.clone(); if(opt_headers) { goog.structs.forEach(opt_headers, function(value, key) { headers.set(key, value) }) } var contentTypeKey = goog.array.find(headers.getKeys(), goog.net.XhrIo.isContentTypeHeader_); var contentIsFormData = goog.global["FormData"] && content instanceof goog.global["FormData"]; if(goog.array.contains(goog.net.XhrIo.METHODS_WITH_FORM_DATA, method) && !contentTypeKey && !contentIsFormData) { headers.set(goog.net.XhrIo.CONTENT_TYPE_HEADER, goog.net.XhrIo.FORM_CONTENT_TYPE) } goog.structs.forEach(headers, function(value, key) { this.xhr_.setRequestHeader(key, value) }, this); if(this.responseType_) { this.xhr_.responseType = this.responseType_ } if(goog.object.containsKey(this.xhr_, "withCredentials")) { this.xhr_.withCredentials = this.withCredentials_ } try { this.cleanUpTimeoutTimer_(); if(this.timeoutInterval_ > 0) { this.useXhr2Timeout_ = goog.net.XhrIo.shouldUseXhr2Timeout_(this.xhr_); goog.log.fine(this.logger_, this.formatMsg_("Will abort after " + this.timeoutInterval_ + "ms if incomplete, xhr2 " + this.useXhr2Timeout_)); if(this.useXhr2Timeout_) { this.xhr_[goog.net.XhrIo.XHR2_TIMEOUT_] = this.timeoutInterval_; this.xhr_[goog.net.XhrIo.XHR2_ON_TIMEOUT_] = goog.bind(this.timeout_, this) }else { this.timeoutId_ = goog.Timer.callOnce(this.timeout_, this.timeoutInterval_, this) } } goog.log.fine(this.logger_, this.formatMsg_("Sending request")); this.inSend_ = true; this.xhr_.send(content); this.inSend_ = false }catch(err) { goog.log.fine(this.logger_, this.formatMsg_("Send error: " + err.message)); this.error_(goog.net.ErrorCode.EXCEPTION, err) } }; goog.net.XhrIo.shouldUseXhr2Timeout_ = function(xhr) { return goog.userAgent.IE && goog.userAgent.isVersionOrHigher(9) && goog.isNumber(xhr[goog.net.XhrIo.XHR2_TIMEOUT_]) && goog.isDef(xhr[goog.net.XhrIo.XHR2_ON_TIMEOUT_]) }; goog.net.XhrIo.isContentTypeHeader_ = function(header) { return goog.string.caseInsensitiveEquals(goog.net.XhrIo.CONTENT_TYPE_HEADER, header) }; goog.net.XhrIo.prototype.createXhr = function() { return this.xmlHttpFactory_ ? this.xmlHttpFactory_.createInstance() : goog.net.XmlHttp() }; goog.net.XhrIo.prototype.timeout_ = function() { if(typeof goog == "undefined") { }else { if(this.xhr_) { this.lastError_ = "Timed out after " + this.timeoutInterval_ + "ms, aborting"; this.lastErrorCode_ = goog.net.ErrorCode.TIMEOUT; goog.log.fine(this.logger_, this.formatMsg_(this.lastError_)); this.dispatchEvent(goog.net.EventType.TIMEOUT); this.abort(goog.net.ErrorCode.TIMEOUT) } } }; goog.net.XhrIo.prototype.error_ = function(errorCode, err) { this.active_ = false; if(this.xhr_) { this.inAbort_ = true; this.xhr_.abort(); this.inAbort_ = false } this.lastError_ = err; this.lastErrorCode_ = errorCode; this.dispatchErrors_(); this.cleanUpXhr_() }; goog.net.XhrIo.prototype.dispatchErrors_ = function() { if(!this.errorDispatched_) { this.errorDispatched_ = true; this.dispatchEvent(goog.net.EventType.COMPLETE); this.dispatchEvent(goog.net.EventType.ERROR) } }; goog.net.XhrIo.prototype.abort = function(opt_failureCode) { if(this.xhr_ && this.active_) { goog.log.fine(this.logger_, this.formatMsg_("Aborting")); this.active_ = false; this.inAbort_ = true; this.xhr_.abort(); this.inAbort_ = false; this.lastErrorCode_ = opt_failureCode || goog.net.ErrorCode.ABORT; this.dispatchEvent(goog.net.EventType.COMPLETE); this.dispatchEvent(goog.net.EventType.ABORT); this.cleanUpXhr_() } }; goog.net.XhrIo.prototype.disposeInternal = function() { if(this.xhr_) { if(this.active_) { this.active_ = false; this.inAbort_ = true; this.xhr_.abort(); this.inAbort_ = false } this.cleanUpXhr_(true) } goog.base(this, "disposeInternal") }; goog.net.XhrIo.prototype.onReadyStateChange_ = function() { if(this.isDisposed()) { return } if(!this.inOpen_ && !this.inSend_ && !this.inAbort_) { this.onReadyStateChangeEntryPoint_() }else { this.onReadyStateChangeHelper_() } }; goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = function() { this.onReadyStateChangeHelper_() }; goog.net.XhrIo.prototype.onReadyStateChangeHelper_ = function() { if(!this.active_) { return } if(typeof goog == "undefined") { }else { if(this.xhrOptions_[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] && this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE && this.getStatus() == 2) { goog.log.fine(this.logger_, this.formatMsg_("Local request error detected and ignored")) }else { if(this.inSend_ && this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE) { goog.Timer.callOnce(this.onReadyStateChange_, 0, this); return } this.dispatchEvent(goog.net.EventType.READY_STATE_CHANGE); if(this.isComplete()) { goog.log.fine(this.logger_, this.formatMsg_("Request complete")); this.active_ = false; try { if(this.isSuccess()) { this.dispatchEvent(goog.net.EventType.COMPLETE); this.dispatchEvent(goog.net.EventType.SUCCESS) }else { this.lastErrorCode_ = goog.net.ErrorCode.HTTP_ERROR; this.lastError_ = this.getStatusText() + " [" + this.getStatus() + "]"; this.dispatchErrors_() } }finally { this.cleanUpXhr_() } } } } }; goog.net.XhrIo.prototype.cleanUpXhr_ = function(opt_fromDispose) { if(this.xhr_) { this.cleanUpTimeoutTimer_(); var xhr = this.xhr_; var clearedOnReadyStateChange = this.xhrOptions_[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] ? goog.nullFunction : null; this.xhr_ = null; this.xhrOptions_ = null; if(!opt_fromDispose) { this.dispatchEvent(goog.net.EventType.READY) } try { xhr.onreadystatechange = clearedOnReadyStateChange }catch(e) { goog.log.error(this.logger_, "Problem encountered resetting onreadystatechange: " + e.message) } } }; goog.net.XhrIo.prototype.cleanUpTimeoutTimer_ = function() { if(this.xhr_ && this.useXhr2Timeout_) { this.xhr_[goog.net.XhrIo.XHR2_ON_TIMEOUT_] = null } if(goog.isNumber(this.timeoutId_)) { goog.Timer.clear(this.timeoutId_); this.timeoutId_ = null } }; goog.net.XhrIo.prototype.isActive = function() { return!!this.xhr_ }; goog.net.XhrIo.prototype.isComplete = function() { return this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE }; goog.net.XhrIo.prototype.isSuccess = function() { var status = this.getStatus(); return goog.net.HttpStatus.isSuccess(status) || status === 0 && !this.isLastUriEffectiveSchemeHttp_() }; goog.net.XhrIo.prototype.isLastUriEffectiveSchemeHttp_ = function() { var scheme = goog.uri.utils.getEffectiveScheme(String(this.lastUri_)); return goog.net.XhrIo.HTTP_SCHEME_PATTERN.test(scheme) }; goog.net.XhrIo.prototype.getReadyState = function() { return this.xhr_ ? (this.xhr_.readyState) : goog.net.XmlHttp.ReadyState.UNINITIALIZED }; goog.net.XhrIo.prototype.getStatus = function() { try { return this.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.status : -1 }catch(e) { goog.log.warning(this.logger_, "Can not get status: " + e.message); return-1 } }; goog.net.XhrIo.prototype.getStatusText = function() { try { return this.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.statusText : "" }catch(e) { goog.log.fine(this.logger_, "Can not get status: " + e.message); return"" } }; goog.net.XhrIo.prototype.getLastUri = function() { return String(this.lastUri_) }; goog.net.XhrIo.prototype.getResponseText = function() { try { return this.xhr_ ? this.xhr_.responseText : "" }catch(e) { goog.log.fine(this.logger_, "Can not get responseText: " + e.message); return"" } }; goog.net.XhrIo.prototype.getResponseBody = function() { try { if(this.xhr_ && "responseBody" in this.xhr_) { return this.xhr_["responseBody"] } }catch(e) { goog.log.fine(this.logger_, "Can not get responseBody: " + e.message) } return null }; goog.net.XhrIo.prototype.getResponseXml = function() { try { return this.xhr_ ? this.xhr_.responseXML : null }catch(e) { goog.log.fine(this.logger_, "Can not get responseXML: " + e.message); return null } }; goog.net.XhrIo.prototype.getResponseJson = function(opt_xssiPrefix) { if(!this.xhr_) { return undefined } var responseText = this.xhr_.responseText; if(opt_xssiPrefix && responseText.indexOf(opt_xssiPrefix) == 0) { responseText = responseText.substring(opt_xssiPrefix.length) } return goog.json.parse(responseText) }; goog.net.XhrIo.prototype.getResponse = function() { try { if(!this.xhr_) { return null } if("response" in this.xhr_) { return this.xhr_.response } switch(this.responseType_) { case goog.net.XhrIo.ResponseType.DEFAULT: ; case goog.net.XhrIo.ResponseType.TEXT: return this.xhr_.responseText; case goog.net.XhrIo.ResponseType.ARRAY_BUFFER: if("mozResponseArrayBuffer" in this.xhr_) { return this.xhr_.mozResponseArrayBuffer } } goog.log.error(this.logger_, "Response type " + this.responseType_ + " is not " + "supported on this browser"); return null }catch(e) { goog.log.fine(this.logger_, "Can not get response: " + e.message); return null } }; goog.net.XhrIo.prototype.getResponseHeader = function(key) { return this.xhr_ && this.isComplete() ? this.xhr_.getResponseHeader(key) : undefined }; goog.net.XhrIo.prototype.getAllResponseHeaders = function() { return this.xhr_ && this.isComplete() ? this.xhr_.getAllResponseHeaders() : "" }; goog.net.XhrIo.prototype.getLastErrorCode = function() { return this.lastErrorCode_ }; goog.net.XhrIo.prototype.getLastError = function() { return goog.isString(this.lastError_) ? this.lastError_ : String(this.lastError_) }; goog.net.XhrIo.prototype.formatMsg_ = function(msg) { return msg + " [" + this.lastMethod_ + " " + this.lastUri_ + " " + this.getStatus() + "]" }; goog.debug.entryPointRegistry.register(function(transformer) { goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = transformer(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_) }); goog.provide("ol.source.Vector"); goog.require("goog.asserts"); goog.require("goog.net.XhrIo"); goog.require("ol.source.Source"); ol.source.VectorLoadState = {IDLE:0, LOADING:1, LOADED:2, ERROR:3}; ol.source.Vector = function(options) { this.data_ = goog.isDef(options.data) ? options.data : null; this.loadState_ = ol.source.VectorLoadState.IDLE; this.parser_ = goog.isDef(options.parser) ? options.parser : null; this.url_ = options.url; goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection}) }; goog.inherits(ol.source.Vector, ol.source.Source); ol.source.Vector.prototype.prepareFeatures = function(layer, extent, projection, opt_callback) { if(goog.isDef(this.url_) && this.loadState_ == ol.source.VectorLoadState.IDLE) { this.loadState_ = ol.source.VectorLoadState.LOADING; goog.net.XhrIo.send(this.url_, goog.bind(function(event) { var xhr = event.target; if(xhr.isSuccess()) { layer.parseFeatures(xhr.getResponseText(), this.parser_, projection); this.loadState_ = ol.source.VectorLoadState.LOADED; if(goog.isDef(opt_callback)) { opt_callback() } }else { this.loadState_ = ol.source.VectorLoadState.ERROR } }, this)) }else { if(!goog.isNull(this.data_)) { layer.parseFeatures(this.data_, this.parser_, projection); this.data_ = null; this.loadState_ = ol.source.VectorLoadState.LOADED } } return this.loadState_ }; goog.provide("ol.structs.RTree"); goog.require("goog.array"); goog.require("ol.extent"); ol.structs.RTreeNode; ol.structs.RTree = function(opt_maxWidth) { this.maxWidth_ = goog.isDef(opt_maxWidth) ? opt_maxWidth : 6; this.minWidth_ = Math.floor(this.maxWidth_ / 2); this.rootTree_ = ({extent:ol.extent.createEmpty(), nodes:[]}) }; ol.structs.RTree.recalculateExtent_ = function(node) { var n = node.nodes.length; var extent = node.extent; if(n === 0) { ol.extent.empty(extent) }else { var firstNodeExtent = node.nodes[0].extent; extent[0] = firstNodeExtent[0]; extent[1] = firstNodeExtent[1]; extent[2] = firstNodeExtent[2]; extent[3] = firstNodeExtent[3]; var i; for(i = 1;i < n;++i) { ol.extent.extend(extent, node.nodes[i].extent) } } }; ol.structs.RTree.squarifiedRatio_ = function(l, w, fill) { var peri = (l + w) / 2; var area = l * w; var geo = area / (peri * peri); return area * fill / geo }; ol.structs.RTree.prototype.chooseLeafSubtree_ = function(rect, root) { var bestChoiceIndex = -1; var bestChoiceStack = []; var bestChoiceArea; bestChoiceStack.push(root); var nodes = root.nodes; do { if(bestChoiceIndex != -1) { bestChoiceStack.push(nodes[bestChoiceIndex]); nodes = nodes[bestChoiceIndex].nodes; bestChoiceIndex = -1 } for(var i = nodes.length - 1;i >= 0;--i) { var lTree = nodes[i]; if(goog.isDef(lTree.leaf)) { bestChoiceIndex = -1; break } var oldLRatio = ol.structs.RTree.squarifiedRatio_(lTree.extent[1] - lTree.extent[0], lTree.extent[3] - lTree.extent[2], lTree.nodes.length + 1); var nw = (lTree.extent[1] > rect.extent[1] ? lTree.extent[1] : rect.extent[1]) - (lTree.extent[0] < rect.extent[0] ? lTree.extent[0] : rect.extent[0]); var nh = (lTree.extent[3] > rect.extent[3] ? lTree.extent[3] : rect.extent[3]) - (lTree.extent[2] < rect.extent[2] ? lTree.extent[2] : rect.extent[2]); var lRatio = ol.structs.RTree.squarifiedRatio_(nw, nh, lTree.nodes.length + 2); if(bestChoiceIndex < 0 || Math.abs(lRatio - oldLRatio) < bestChoiceArea) { bestChoiceArea = Math.abs(lRatio - oldLRatio); bestChoiceIndex = i } } }while(bestChoiceIndex != -1); return bestChoiceStack }; ol.structs.RTree.prototype.insert = function(extent, obj, opt_type) { var node = ({extent:extent, leaf:obj}); if(goog.isDef(opt_type)) { node.type = opt_type } this.insertSubtree_(node, this.rootTree_) }; ol.structs.RTree.prototype.insertSubtree_ = function(node, root) { var bc; if(root.nodes.length === 0) { root.extent = node.extent.concat(); root.nodes.push(node); return } var treeStack = this.chooseLeafSubtree_(node, root); var workingObject = node; do { if(bc && goog.isDef(bc.nodes) && bc.nodes.length === 0) { var pbc = bc; bc = treeStack.pop(); for(var t = 0, tt = bc.nodes.length;t < tt;++t) { if(bc.nodes[t] === pbc || bc.nodes[t].nodes.length === 0) { bc.nodes.splice(t, 1); break } } }else { bc = treeStack.pop() } var isArray = goog.isArray(workingObject); if(goog.isDef(workingObject.leaf) || goog.isDef(workingObject.nodes) || isArray) { if(isArray) { for(var ai = 0, aii = workingObject.length;ai < aii;++ai) { ol.extent.extend(bc.extent, workingObject[ai].extent) } bc.nodes = bc.nodes.concat(workingObject) }else { ol.extent.extend(bc.extent, workingObject.extent); bc.nodes.push(workingObject) } if(bc.nodes.length <= this.maxWidth_) { workingObject = {extent:bc.extent.concat()} }else { var a = this.linearSplit_(bc.nodes); workingObject = a; if(treeStack.length < 1) { bc.nodes.push(a[0]); treeStack.push(bc); workingObject = a[1] } } }else { ol.extent.extend(bc.extent, workingObject.extent); workingObject = {extent:bc.extent.concat()} } }while(treeStack.length > 0) }; ol.structs.RTree.prototype.linearSplit_ = function(nodes) { var n = this.pickLinear_(nodes); while(nodes.length > 0) { this.pickNext_(nodes, n[0], n[1]) } return n }; ol.structs.RTree.prototype.pickLinear_ = function(nodes) { var lowestHighX = nodes.length - 1; var highestLowX = 0; var lowestHighY = nodes.length - 1; var highestLowY = 0; var t1, t2; for(var i = nodes.length - 2;i >= 0;--i) { var l = nodes[i]; if(l.extent[0] > nodes[highestLowX].extent[0]) { highestLowX = i }else { if(l.extent[1] < nodes[lowestHighX].extent[2]) { lowestHighX = i } } if(l.extent[2] > nodes[highestLowY].extent[2]) { highestLowY = i }else { if(l.extent[3] < nodes[lowestHighY].extent[3]) { lowestHighY = i } } } var dx = Math.abs(nodes[lowestHighX].extent[1] - nodes[highestLowX].extent[0]); var dy = Math.abs(nodes[lowestHighY].extent[3] - nodes[highestLowY].extent[2]); if(dx > dy) { if(lowestHighX > highestLowX) { t1 = nodes.splice(lowestHighX, 1)[0]; t2 = nodes.splice(highestLowX, 1)[0] }else { t2 = nodes.splice(highestLowX, 1)[0]; t1 = nodes.splice(lowestHighX, 1)[0] } }else { if(lowestHighY > highestLowY) { t1 = nodes.splice(lowestHighY, 1)[0]; t2 = nodes.splice(highestLowY, 1)[0] }else { t2 = nodes.splice(highestLowY, 1)[0]; t1 = nodes.splice(lowestHighY, 1)[0] } } return[({extent:t1.extent.concat(), nodes:[t1]}), ({extent:t2.extent.concat(), nodes:[t2]})] }; ol.structs.RTree.prototype.pickNext_ = function(nodes, a, b) { var areaA = ol.structs.RTree.squarifiedRatio_(a.extent[1] - a.extent[0], a.extent[3] - a.extent[2], a.nodes.length + 1); var areaB = ol.structs.RTree.squarifiedRatio_(b.extent[1] - b.extent[0], b.extent[3] - b.extent[2], b.nodes.length + 1); var highAreaDelta; var highAreaNode; var lowestGrowthGroup; for(var i = nodes.length - 1;i >= 0;--i) { var l = nodes[i]; var newAreaA = [a.extent[0] < l.extent[0] ? a.extent[0] : l.extent[0], a.extent[1] > l.extent[1] ? a.extent[1] : l.extent[1], a.extent[2] < l.extent[2] ? a.extent[2] : l.extent[2], a.extent[3] > l.extent[3] ? a.extent[3] : l.extent[3]]; var changeNewAreaA = Math.abs(ol.structs.RTree.squarifiedRatio_(newAreaA[1] - newAreaA[0], newAreaA[3] - newAreaA[2], a.nodes.length + 2) - areaA); var newAreaB = [b.extent[0] < l.extent[0] ? b.extent[0] : l.extent[0], b.extent[1] > l.extent[1] ? b.extent[1] : l.extent[1], b.extent[2] < l.extent[2] ? b.extent[2] : l.extent[2], b.extent[3] > l.extent[3] ? b.extent[3] : l.extent[3]]; var changeNewAreaB = Math.abs(ol.structs.RTree.squarifiedRatio_(newAreaB[1] - newAreaB[0], newAreaB[3] - newAreaB[2], b.nodes.length + 2) - areaB); var changeNewAreaDelta = Math.abs(changeNewAreaB - changeNewAreaA); if(!highAreaNode || !highAreaDelta || changeNewAreaDelta < highAreaDelta) { highAreaNode = i; highAreaDelta = changeNewAreaDelta; lowestGrowthGroup = changeNewAreaB < changeNewAreaA ? b : a } } var tempNode = nodes.splice(highAreaNode, 1)[0]; if(a.nodes.length + nodes.length + 1 <= this.minWidth_) { a.nodes.push(tempNode); ol.extent.extend(a.extent, tempNode.extent) }else { if(b.nodes.length + nodes.length + 1 <= this.minWidth_) { b.nodes.push(tempNode); ol.extent.extend(b.extent, tempNode.extent) }else { lowestGrowthGroup.nodes.push(tempNode); ol.extent.extend(lowestGrowthGroup.extent, tempNode.extent) } } }; ol.structs.RTree.prototype.remove = function(extent, opt_obj) { arguments[0] = ({extent:extent}); switch(arguments.length) { case 1: arguments[1] = false; case 2: arguments[2] = this.rootTree_; default: arguments.length = 3 } if(arguments[1] === false) { var numberDeleted = 0; var result = []; do { numberDeleted = result.length; result = result.concat(this.removeSubtree_.apply(this, arguments)) }while(numberDeleted != result.length); return result }else { return this.removeSubtree_.apply(this, arguments) } }; ol.structs.RTree.prototype.removeSubtree_ = function(rect, obj, root) { var hitStack = []; var countStack = []; var returnArray = []; var currentDepth = 1; if(!rect || !ol.extent.intersects(rect.extent, root.extent)) { return returnArray } var workingObject = ({extent:rect.extent.concat(), target:obj}); countStack.push(root.nodes.length); hitStack.push(root); do { var tree = hitStack.pop(); var i = countStack.pop() - 1; if(goog.isDef(workingObject.target)) { while(i >= 0) { var lTree = tree.nodes[i]; if(ol.extent.intersects(workingObject.extent, lTree.extent)) { if(workingObject.target && goog.isDef(lTree.leaf) && lTree.leaf === workingObject.target || !workingObject.target && (goog.isDef(lTree.leaf) || ol.extent.containsExtent(workingObject.extent, lTree.extent))) { if(goog.isDef(lTree.nodes)) { returnArray = this.searchSubtree_(lTree, true, [], lTree); tree.nodes.splice(i, 1) }else { returnArray = tree.nodes.splice(i, 1) } ol.structs.RTree.recalculateExtent_(tree); workingObject.target = undefined; if(tree.nodes.length < this.minWidth_) { workingObject.nodes = (this.searchSubtree_(tree, true, [], tree)) } break }else { if(goog.isDef(lTree.nodes)) { currentDepth += 1; countStack.push(i); hitStack.push(tree); tree = lTree; i = lTree.nodes.length } } } i -= 1 } }else { if(goog.isDef(workingObject.nodes)) { tree.nodes.splice(i + 1, 1); if(tree.nodes.length > 0) { ol.structs.RTree.recalculateExtent_(tree) } for(var t = 0, tt = workingObject.nodes.length;t < tt;++t) { this.insertSubtree_(workingObject.nodes[t], tree) } workingObject.nodes.length = 0; if(hitStack.length === 0 && tree.nodes.length <= 1) { workingObject.nodes = (this.searchSubtree_(tree, true, workingObject.nodes, tree)); tree.nodes.length = 0; hitStack.push(tree); countStack.push(1) }else { if(hitStack.length > 0 && tree.nodes.length < this.minWidth_) { workingObject.nodes = (this.searchSubtree_(tree, true, workingObject.nodes, tree)); tree.nodes.length = 0 }else { workingObject.nodes = undefined } } }else { ol.structs.RTree.recalculateExtent_(tree) } } currentDepth -= 1 }while(hitStack.length > 0); return returnArray }; ol.structs.RTree.prototype.search = function(extent, opt_type) { var rect = ({extent:extent}); return(this.searchSubtree_(rect, false, [], this.rootTree_, opt_type)) }; ol.structs.RTree.prototype.searchReturningObject = function(extent, opt_type) { var rect = ({extent:extent}); return(this.searchSubtree_(rect, false, [], this.rootTree_, opt_type, true)) }; ol.structs.RTree.prototype.searchSubtree_ = function(rect, returnNode, result, root, opt_type, opt_resultAsObject) { var resultObject = {}; var hitStack = []; if(!ol.extent.intersects(rect.extent, root.extent)) { return result } hitStack.push(root.nodes); do { var nodes = hitStack.pop(); for(var i = nodes.length - 1;i >= 0;--i) { var lTree = nodes[i]; if(ol.extent.intersects(rect.extent, lTree.extent)) { if(goog.isDef(lTree.nodes)) { hitStack.push(lTree.nodes) }else { if(goog.isDef(lTree.leaf)) { if(!returnNode) { if(!goog.isDef(opt_type) || lTree.type == opt_type) { var obj = lTree.leaf; if(goog.isDef(opt_resultAsObject)) { resultObject[goog.getUid(obj).toString()] = obj }else { result.push(obj) } } }else { result.push(lTree) } } } } } }while(hitStack.length > 0); if(goog.isDef(opt_resultAsObject)) { return resultObject }else { return result } }; goog.provide("ol.style.Literal"); ol.style.Literal = function() { }; ol.style.Literal.prototype.equals = goog.abstractMethod; goog.provide("ol.style.PolygonLiteral"); goog.require("goog.asserts"); goog.require("ol.style.Literal"); ol.style.PolygonLiteralOptions; ol.style.PolygonLiteral = function(options) { goog.base(this); this.fillColor = options.fillColor; if(goog.isDef(options.fillColor)) { goog.asserts.assertString(options.fillColor, "fillColor must be a string") } this.fillOpacity = options.fillOpacity; if(goog.isDef(options.fillOpacity)) { goog.asserts.assertNumber(options.fillOpacity, "fillOpacity must be a number") } this.strokeColor = options.strokeColor; if(goog.isDef(this.strokeColor)) { goog.asserts.assertString(this.strokeColor, "strokeColor must be a string") } this.strokeOpacity = options.strokeOpacity; if(goog.isDef(this.strokeOpacity)) { goog.asserts.assertNumber(this.strokeOpacity, "strokeOpacity must be a number") } this.strokeWidth = options.strokeWidth; if(goog.isDef(this.strokeWidth)) { goog.asserts.assertNumber(this.strokeWidth, "strokeWidth must be a number") } var fillDef = goog.isDef(this.fillColor) && goog.isDef(this.fillOpacity); var strokeDef = goog.isDef(this.strokeColor) && goog.isDef(this.strokeOpacity) && goog.isDef(this.strokeWidth); goog.asserts.assert(fillDef || strokeDef, "Either fillColor and fillOpacity or " + "strokeColor and strokeOpacity and strokeWidth must be set") }; goog.inherits(ol.style.PolygonLiteral, ol.style.Literal); ol.style.PolygonLiteral.prototype.equals = function(polygonLiteral) { return this.fillColor == polygonLiteral.fillColor && this.fillOpacity == polygonLiteral.fillOpacity && this.strokeColor == polygonLiteral.strokeColor && this.strokeOpacity == polygonLiteral.strokeOpacity && this.strokeWidth == polygonLiteral.strokeWidth }; goog.provide("ol.style.Symbolizer"); goog.require("ol.Feature"); goog.require("ol.style.Literal"); ol.style.Symbolizer = function() { }; ol.style.Symbolizer.prototype.createLiteral = goog.abstractMethod; goog.provide("ol.style.Fill"); goog.require("goog.asserts"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Literal"); goog.require("ol.geom.GeometryType"); goog.require("ol.style.PolygonLiteral"); goog.require("ol.style.Symbolizer"); ol.style.Fill = function(opt_options) { goog.base(this); var options = opt_options || {}; this.color_ = !goog.isDefAndNotNull(options.color) ? new ol.expr.Literal(ol.style.FillDefaults.color) : options.color instanceof ol.expr.Expression ? options.color : new ol.expr.Literal(options.color); this.opacity_ = !goog.isDefAndNotNull(options.opacity) ? new ol.expr.Literal(ol.style.FillDefaults.opacity) : options.opacity instanceof ol.expr.Expression ? options.opacity : new ol.expr.Literal(options.opacity) }; goog.inherits(ol.style.Fill, ol.style.Symbolizer); ol.style.Fill.prototype.createLiteral = function(featureOrType) { var feature, type; if(featureOrType instanceof ol.Feature) { feature = featureOrType; var geometry = feature.getGeometry(); type = geometry ? geometry.getType() : null }else { type = featureOrType } var literal = null; if(type === ol.geom.GeometryType.POLYGON || type === ol.geom.GeometryType.MULTIPOLYGON) { var color = ol.expr.evaluateFeature(this.color_, feature); goog.asserts.assertString(color, "color must be a string"); var opacity = Number(ol.expr.evaluateFeature(this.opacity_, feature)); goog.asserts.assert(!isNaN(opacity), "opacity must be a number"); literal = new ol.style.PolygonLiteral({fillColor:color, fillOpacity:opacity}) } return literal }; ol.style.Fill.prototype.getColor = function() { return this.color_ }; ol.style.Fill.prototype.getOpacity = function() { return this.opacity_ }; ol.style.Fill.prototype.setColor = function(color) { goog.asserts.assertInstanceof(color, ol.expr.Expression); this.color_ = color }; ol.style.Fill.prototype.setOpacity = function(opacity) { goog.asserts.assertInstanceof(opacity, ol.expr.Expression); this.opacity_ = opacity }; ol.style.FillDefaults = {color:"#ffffff", opacity:0.4}; goog.provide("ol.style.Rule"); goog.require("goog.asserts"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Expression"); goog.require("ol.style.Symbolizer"); ol.style.Rule = function(options) { var filter = null; if(goog.isDef(options.filter)) { if(goog.isString(options.filter)) { filter = ol.expr.parse(options.filter) }else { goog.asserts.assert(options.filter instanceof ol.expr.Expression); filter = options.filter } } this.filter_ = filter; this.symbolizers_ = goog.isDef(options.symbolizers) ? options.symbolizers : [] }; ol.style.Rule.prototype.applies = function(feature) { return goog.isNull(this.filter_) ? true : !!ol.expr.evaluateFeature(this.filter_, feature) }; ol.style.Rule.prototype.getSymbolizers = function() { return this.symbolizers_ }; goog.provide("ol.style.Point"); goog.require("ol.style.Symbolizer"); ol.style.Point = function() { goog.base(this) }; goog.inherits(ol.style.Point, ol.style.Symbolizer); ol.style.Point.prototype.createLiteral = goog.abstractMethod; goog.provide("ol.style.PointLiteral"); goog.require("ol.style.Literal"); ol.style.PointLiteral = function() { goog.base(this) }; goog.inherits(ol.style.PointLiteral, ol.style.Literal); goog.provide("ol.style.ShapeLiteral"); goog.provide("ol.style.ShapeType"); goog.require("goog.asserts"); goog.require("ol.style.PointLiteral"); ol.style.ShapeType = {CIRCLE:"circle"}; ol.style.ShapeLiteralOptions; ol.style.ShapeLiteral = function(options) { goog.asserts.assertString(options.type, "type must be a string"); this.type = options.type; goog.asserts.assertNumber(options.size, "size must be a number"); this.size = options.size; this.fillColor = options.fillColor; if(goog.isDef(options.fillColor)) { goog.asserts.assertString(options.fillColor, "fillColor must be a string") } this.fillOpacity = options.fillOpacity; if(goog.isDef(options.fillOpacity)) { goog.asserts.assertNumber(options.fillOpacity, "fillOpacity must be a number") } this.strokeColor = options.strokeColor; if(goog.isDef(this.strokeColor)) { goog.asserts.assertString(this.strokeColor, "strokeColor must be a string") } this.strokeOpacity = options.strokeOpacity; if(goog.isDef(this.strokeOpacity)) { goog.asserts.assertNumber(this.strokeOpacity, "strokeOpacity must be a number") } this.strokeWidth = options.strokeWidth; if(goog.isDef(this.strokeWidth)) { goog.asserts.assertNumber(this.strokeWidth, "strokeWidth must be a number") } var fillDef = goog.isDef(this.fillColor) && goog.isDef(this.fillOpacity); var strokeDef = goog.isDef(this.strokeColor) && goog.isDef(this.strokeOpacity) && goog.isDef(this.strokeWidth); goog.asserts.assert(fillDef || strokeDef, "Either fillColor and fillOpacity or " + "strokeColor and strokeOpacity and strokeWidth must be set") }; goog.inherits(ol.style.ShapeLiteral, ol.style.PointLiteral); ol.style.ShapeLiteral.prototype.equals = function(shapeLiteral) { return this.type == shapeLiteral.type && this.size == shapeLiteral.size && this.fillColor == shapeLiteral.fillColor && this.fillOpacity == shapeLiteral.fillOpacity && this.strokeColor == shapeLiteral.strokeColor && this.strokeOpacity == shapeLiteral.strokeOpacity && this.strokeWidth == shapeLiteral.strokeWidth }; goog.provide("ol.style.LineLiteral"); goog.require("goog.asserts"); goog.require("ol.style.Literal"); ol.style.LineLiteralOptions; ol.style.LineLiteral = function(options) { goog.base(this); goog.asserts.assertString(options.color, "color must be a string"); this.color = options.color; goog.asserts.assertNumber(options.opacity, "opacity must be a number"); this.opacity = options.opacity; goog.asserts.assertNumber(options.width, "width must be a number"); this.width = options.width }; goog.inherits(ol.style.LineLiteral, ol.style.Literal); ol.style.LineLiteral.prototype.equals = function(lineLiteral) { return this.color == lineLiteral.color && this.opacity == lineLiteral.opacity && this.width == lineLiteral.width }; goog.provide("ol.style.Stroke"); goog.provide("ol.style.StrokeDefaults"); goog.require("goog.asserts"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Literal"); goog.require("ol.geom.GeometryType"); goog.require("ol.style.LineLiteral"); goog.require("ol.style.PolygonLiteral"); goog.require("ol.style.Symbolizer"); ol.style.Stroke = function(opt_options) { goog.base(this); var options = opt_options || {}; this.color_ = !goog.isDefAndNotNull(options.color) ? new ol.expr.Literal(ol.style.StrokeDefaults.color) : options.color instanceof ol.expr.Expression ? options.color : new ol.expr.Literal(options.color); this.opacity_ = !goog.isDefAndNotNull(options.opacity) ? new ol.expr.Literal(ol.style.StrokeDefaults.opacity) : options.opacity instanceof ol.expr.Expression ? options.opacity : new ol.expr.Literal(options.opacity); this.width_ = !goog.isDefAndNotNull(options.width) ? new ol.expr.Literal(ol.style.StrokeDefaults.width) : options.width instanceof ol.expr.Expression ? options.width : new ol.expr.Literal(options.width) }; goog.inherits(ol.style.Stroke, ol.style.Symbolizer); ol.style.Stroke.prototype.createLiteral = function(featureOrType) { var feature, type; if(featureOrType instanceof ol.Feature) { feature = featureOrType; var geometry = feature.getGeometry(); type = geometry ? geometry.getType() : null }else { type = featureOrType } var color = ol.expr.evaluateFeature(this.color_, feature); goog.asserts.assertString(color, "color must be a string"); var opacity = Number(ol.expr.evaluateFeature(this.opacity_, feature)); goog.asserts.assert(!isNaN(opacity), "opacity must be a number"); var width = Number(ol.expr.evaluateFeature(this.width_, feature)); goog.asserts.assert(!isNaN(width), "width must be a number"); var literal = null; if(type === ol.geom.GeometryType.LINESTRING || type === ol.geom.GeometryType.MULTILINESTRING) { literal = new ol.style.LineLiteral({color:color, opacity:opacity, width:width}) }else { if(type === ol.geom.GeometryType.POLYGON || type === ol.geom.GeometryType.MULTIPOLYGON) { literal = new ol.style.PolygonLiteral({strokeColor:color, strokeOpacity:opacity, strokeWidth:width}) } } return literal }; ol.style.Stroke.prototype.getColor = function() { return this.color_ }; ol.style.Stroke.prototype.getOpacity = function() { return this.opacity_ }; ol.style.Stroke.prototype.getWidth = function() { return this.width_ }; ol.style.Stroke.prototype.setColor = function(color) { goog.asserts.assertInstanceof(color, ol.expr.Expression); this.color_ = color }; ol.style.Stroke.prototype.setOpacity = function(opacity) { goog.asserts.assertInstanceof(opacity, ol.expr.Expression); this.opacity_ = opacity }; ol.style.Stroke.prototype.setWidth = function(width) { goog.asserts.assertInstanceof(width, ol.expr.Expression); this.width_ = width }; ol.style.StrokeDefaults = {color:"#696969", opacity:0.75, width:1.5}; ol.style.StrokeDefaultsSelect = {color:"#696969", opacity:0.9, width:2}; goog.provide("ol.style.Shape"); goog.require("goog.asserts"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Literal"); goog.require("ol.geom.GeometryType"); goog.require("ol.style.Fill"); goog.require("ol.style.Point"); goog.require("ol.style.ShapeLiteral"); goog.require("ol.style.ShapeType"); goog.require("ol.style.Stroke"); ol.style.Shape = function(options) { this.type_ = (goog.isDef(options.type) ? options.type : ol.style.ShapeDefaults.type); this.size_ = !goog.isDefAndNotNull(options.size) ? new ol.expr.Literal(ol.style.ShapeDefaults.size) : options.size instanceof ol.expr.Expression ? options.size : new ol.expr.Literal(options.size); this.fill_ = goog.isDefAndNotNull(options.fill) ? options.fill : null; this.stroke_ = goog.isDefAndNotNull(options.stroke) ? options.stroke : null; goog.asserts.assert(this.fill_ || this.stroke_, "Stroke or fill must be provided") }; ol.style.Shape.prototype.createLiteral = function(featureOrType) { var feature, type; if(featureOrType instanceof ol.Feature) { feature = featureOrType; var geometry = feature.getGeometry(); type = geometry ? geometry.getType() : null }else { type = featureOrType } var literal = null; if(type === ol.geom.GeometryType.POINT || type === ol.geom.GeometryType.MULTIPOINT) { var size = Number(ol.expr.evaluateFeature(this.size_, feature)); goog.asserts.assert(!isNaN(size), "size must be a number"); var fillColor, fillOpacity; if(!goog.isNull(this.fill_)) { fillColor = ol.expr.evaluateFeature(this.fill_.getColor(), feature); goog.asserts.assertString(fillColor, "fillColor must be a string"); fillOpacity = Number(ol.expr.evaluateFeature(this.fill_.getOpacity(), feature)); goog.asserts.assert(!isNaN(fillOpacity), "fillOpacity must be a number") } var strokeColor, strokeOpacity, strokeWidth; if(!goog.isNull(this.stroke_)) { strokeColor = ol.expr.evaluateFeature(this.stroke_.getColor(), feature); goog.asserts.assertString(strokeColor, "strokeColor must be a string"); strokeOpacity = Number(ol.expr.evaluateFeature(this.stroke_.getOpacity(), feature)); goog.asserts.assert(!isNaN(strokeOpacity), "strokeOpacity must be a number"); strokeWidth = Number(ol.expr.evaluateFeature(this.stroke_.getWidth(), feature)); goog.asserts.assert(!isNaN(strokeWidth), "strokeWidth must be a number") } literal = new ol.style.ShapeLiteral({type:this.type_, size:size, fillColor:fillColor, fillOpacity:fillOpacity, strokeColor:strokeColor, strokeOpacity:strokeOpacity, strokeWidth:strokeWidth}) } return literal }; ol.style.Shape.prototype.getFill = function() { return this.fill_ }; ol.style.Shape.prototype.getSize = function() { return this.size_ }; ol.style.Shape.prototype.getStroke = function() { return this.stroke_ }; ol.style.Shape.prototype.getType = function() { return this.type_ }; ol.style.Shape.prototype.setFill = function(fill) { if(!goog.isNull(fill)) { goog.asserts.assertInstanceof(fill, ol.style.Fill) } this.fill_ = fill }; ol.style.Shape.prototype.setSize = function(size) { goog.asserts.assertInstanceof(size, ol.expr.Expression); this.size_ = size }; ol.style.Shape.prototype.setStroke = function(stroke) { if(!goog.isNull(stroke)) { goog.asserts.assertInstanceof(stroke, ol.style.Stroke) } this.stroke_ = stroke }; ol.style.Shape.prototype.setType = function(type) { this.type_ = type }; ol.style.ShapeDefaults = {type:ol.style.ShapeType.CIRCLE, size:5}; goog.provide("ol.style"); goog.provide("ol.style.Style"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.expr.Call"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Literal"); goog.require("ol.expr.functions"); goog.require("ol.geom.GeometryType"); goog.require("ol.style.Fill"); goog.require("ol.style.Literal"); goog.require("ol.style.PolygonLiteral"); goog.require("ol.style.Rule"); goog.require("ol.style.Shape"); goog.require("ol.style.Stroke"); goog.require("ol.style.Symbolizer"); ol.style.Style = function(options) { this.rules_ = goog.isDef(options.rules) ? options.rules : []; this.symbolizers_ = goog.isDef(options.symbolizers) ? options.symbolizers : [] }; ol.style.Style.prototype.createLiterals = function(feature) { var rules = this.rules_, symbolizers = [], applies = false, rule; for(var i = 0, ii = rules.length;i < ii;++i) { rule = rules[i]; if(rule.applies(feature)) { applies = true; symbolizers.push.apply(symbolizers, rule.getSymbolizers()) } } if(!applies) { symbolizers = this.symbolizers_ } return ol.style.Style.createLiterals(symbolizers, feature) }; ol.style.default_ = null; ol.style.getDefault = function() { if(goog.isNull(ol.style.default_)) { ol.style.default_ = new ol.style.Style({rules:[new ol.style.Rule({filter:new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.RENDER_INTENT), [new ol.expr.Literal("select")]), symbolizers:[new ol.style.Shape({fill:new ol.style.Fill({color:"#ffffff", opacity:0.7}), stroke:new ol.style.Stroke({color:"#696969", opacity:0.9, width:2})}), new ol.style.Fill({color:"#ffffff", opacity:0.7}), new ol.style.Stroke({color:"#696969", opacity:0.9, width:2})]})], symbolizers:[new ol.style.Shape({fill:new ol.style.Fill, stroke:new ol.style.Stroke}), new ol.style.Fill, new ol.style.Stroke]}) } return ol.style.default_ }; ol.style.setDefault = function(style) { ol.style.default_ = style; return style }; ol.style.Style.createLiterals = function(symbolizers, featureOrType) { var length = symbolizers.length; var literals = new Array(length); for(var i = 0;i < length;++i) { literals[i] = symbolizers[i].createLiteral(featureOrType) } return ol.style.Style.reduceLiterals_(literals) }; ol.style.Style.reduceLiterals_ = function(literals) { var reduced = []; var literal, stroke, fill, key, value; for(var i = 0, ii = literals.length;i < ii;++i) { literal = literals[i]; if(literal instanceof ol.style.PolygonLiteral) { if(goog.isDef(literal.strokeColor) && !goog.isDef(literal.fillColor)) { if(fill) { for(key in literal) { value = literal[key]; if(goog.isDef(value)) { fill[key] = value } } fill = null }else { stroke = literal; reduced.push(stroke) } }else { if(goog.isDef(literal.fillColor) && !goog.isDef(literal.strokeColor)) { if(stroke) { for(key in literal) { value = literal[key]; if(goog.isDef(value)) { stroke[key] = value } } stroke = null }else { fill = literal; reduced.push(fill) } }else { reduced.push(literal) } } }else { if(literal) { reduced.push(literal) } } } return reduced }; goog.provide("ol.style.TextLiteral"); goog.require("goog.asserts"); goog.require("ol.style.Literal"); ol.style.TextLiteralOptions; ol.style.TextLiteral = function(options) { goog.asserts.assertString(options.color, "color must be a string"); this.color = options.color; goog.asserts.assertString(options.fontFamily, "fontFamily must be a string"); this.fontFamily = options.fontFamily; goog.asserts.assertNumber(options.fontSize, "fontSize must be a number"); this.fontSize = options.fontSize; goog.asserts.assertString(options.text, "text must be a string"); this.text = options.text; goog.asserts.assertNumber(options.opacity, "opacity must be a number"); this.opacity = options.opacity }; goog.inherits(ol.style.TextLiteral, ol.style.Literal); ol.style.TextLiteral.prototype.equals = function(textLiteral) { return this.color == textLiteral.color && this.fontFamily == textLiteral.fontFamily && this.fontSize == textLiteral.fontSize && this.opacity == textLiteral.opacity }; goog.provide("ol.layer.Vector"); goog.provide("ol.layer.VectorLayerEventType"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Literal"); goog.require("ol.expr.Logical"); goog.require("ol.expr.LogicalOp"); goog.require("ol.expr.functions"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SharedVertices"); goog.require("ol.layer.Layer"); goog.require("ol.proj"); goog.require("ol.source.Vector"); goog.require("ol.structs.RTree"); goog.require("ol.style"); goog.require("ol.style.Style"); goog.require("ol.style.TextLiteral"); ol.layer.FeatureCache = function() { this.idLookup_; this.geometryTypeIndex_; this.rTree_; this.clear() }; ol.layer.FeatureCache.prototype.clear = function() { this.idLookup_ = {}; var geometryTypeIndex = {}; for(var key in ol.geom.GeometryType) { geometryTypeIndex[ol.geom.GeometryType[key]] = {} } this.geometryTypeIndex_ = geometryTypeIndex; this.rTree_ = new ol.structs.RTree }; ol.layer.FeatureCache.prototype.add = function(feature) { var id = goog.getUid(feature).toString(), geometry = feature.getGeometry(); this.idLookup_[id] = feature; if(!goog.isNull(geometry)) { var geometryType = geometry.getType(); this.geometryTypeIndex_[geometryType][id] = feature; this.rTree_.insert(geometry.getBounds(), feature, geometryType) } }; ol.layer.FeatureCache.prototype.getFeaturesObject = function(opt_expr) { var features; if(!goog.isDef(opt_expr)) { features = this.idLookup_ }else { var name = ol.expr.isLibCall(opt_expr); if(name === ol.expr.functions.GEOMETRY_TYPE) { var args = (opt_expr).getArgs(); goog.asserts.assert(args.length === 1); goog.asserts.assert(args[0] instanceof ol.expr.Literal); var type = (args[0]).evaluate(); goog.asserts.assertString(type); features = this.geometryTypeIndex_[type] }else { if(name === ol.expr.functions.EXTENT) { var args = (opt_expr).getArgs(); goog.asserts.assert(args.length === 4); var extent = []; for(var i = 0;i < 4;++i) { goog.asserts.assert(args[i] instanceof ol.expr.Literal); extent[i] = (args[i]).evaluate(); goog.asserts.assertNumber(extent[i]) } features = this.rTree_.searchReturningObject(extent) }else { if(opt_expr instanceof ol.expr.Logical) { var op = (opt_expr).getOperator(); if(op === ol.expr.LogicalOp.AND) { var expressions = [opt_expr.getLeft(), opt_expr.getRight()]; var expr, args, type, extent; for(var i = 0;i <= 1;++i) { expr = expressions[i]; name = ol.expr.isLibCall(expr); if(name === ol.expr.functions.GEOMETRY_TYPE) { args = (expr).getArgs(); goog.asserts.assert(args.length === 1); goog.asserts.assert(args[0] instanceof ol.expr.Literal); type = (args[0]).evaluate(); goog.asserts.assertString(type) }else { if(name === ol.expr.functions.EXTENT) { args = (expr).getArgs(); goog.asserts.assert(args.length === 4); extent = []; for(var j = 0;j < 4;++j) { goog.asserts.assert(args[j] instanceof ol.expr.Literal); extent[j] = (args[j]).evaluate(); goog.asserts.assertNumber(extent[j]) } } } } if(type && extent) { features = this.getFeaturesObjectForExtent(extent, (type)) } } } } } if(!goog.isDef(features)) { var candidates = this.idLookup_, feature; features = {}; for(i in candidates) { feature = candidates[i]; if(ol.expr.evaluateFeature(opt_expr, feature)) { features[i] = feature } } } } return features }; ol.layer.FeatureCache.prototype.getFeaturesObjectForExtent = function(extent, opt_type) { var features; if(goog.isDef(opt_type) && goog.object.isEmpty(this.geometryTypeIndex_[opt_type])) { features = {} }else { features = this.rTree_.searchReturningObject(extent, opt_type) } return features }; ol.layer.FeatureCache.prototype.getFeaturesByIds_ = function(ids) { var len = ids.length, features = new Array(len), i; for(i = 0;i < len;++i) { features[i] = this.idLookup_[ids[i]] } return features }; ol.layer.FeatureCache.prototype.getFeatureWithUid = function(uid) { return this.idLookup_[uid] }; ol.layer.FeatureCache.prototype.remove = function(feature) { var bounds = null; var id = goog.getUid(feature).toString(), geometry = feature.getGeometry(); delete this.idLookup_[id]; if(!goog.isNull(geometry)) { var geometryType = geometry.getType(); delete this.geometryTypeIndex_[geometryType][id]; var result = this.rTree_.remove(geometry.getBounds(), feature); if(result.length == 0) { result = this.rTree_.remove([-Infinity, Infinity, -Infinity, Infinity], feature) } bounds = result[0].extent } return bounds }; ol.layer.VectorLayerEventType = {ADD:"add", CHANGE:goog.events.EventType.CHANGE, REMOVE:"remove", INTENTCHANGE:"intentchange"}; ol.layer.VectorLayerEventObject; ol.layer.Vector = function(options) { goog.base(this, (options)); this.style_ = goog.isDef(options.style) ? options.style : null; this.featureCache_ = new ol.layer.FeatureCache; this.transformFeatureInfo_ = goog.isDef(options.transformFeatureInfo) ? options.transformFeatureInfo : ol.layer.Vector.uidTransformFeatureInfo; this.pointVertices_ = new ol.geom.SharedVertices; this.lineVertices_ = new ol.geom.SharedVertices; this.polygonVertices_ = new ol.geom.SharedVertices; this.temporary_ = false; this.editData_ = {rTree:null, vertexFeature:null} }; goog.inherits(ol.layer.Vector, ol.layer.Layer); ol.layer.Vector.prototype.addFeatures = function(features) { var extent = ol.extent.createEmpty(), feature, geometry; for(var i = 0, ii = features.length;i < ii;++i) { feature = features[i]; this.featureCache_.add(feature); geometry = feature.getGeometry(); if(!goog.isNull(geometry)) { ol.extent.extend(extent, geometry.getBounds()) } } this.dispatchEvent(({extent:extent, features:features, type:ol.layer.VectorLayerEventType.ADD})) }; ol.layer.Vector.prototype.clear = function() { this.featureCache_.clear(); this.dispatchEvent(({type:ol.layer.VectorLayerEventType.CHANGE})) }; ol.layer.Vector.prototype.getTemporary = function() { return this.temporary_ }; ol.layer.Vector.prototype.getEditData = function() { return this.editData_ }; ol.layer.Vector.prototype.getVectorSource = function() { return(this.getSource()) }; ol.layer.Vector.prototype.getStyle = function() { return this.style_ }; ol.layer.Vector.prototype.getFeaturesObjectForExtent = function(extent, projection, opt_type, opt_callback) { var source = this.getSource(); return source.prepareFeatures(this, extent, projection, opt_callback) == ol.source.VectorLoadState.LOADING ? null : this.featureCache_.getFeaturesObjectForExtent(extent, opt_type) }; ol.layer.Vector.prototype.getLineVertices = function() { return this.lineVertices_ }; ol.layer.Vector.prototype.getPointVertices = function() { return this.pointVertices_ }; ol.layer.Vector.prototype.getPolygonVertices = function() { return this.polygonVertices_ }; ol.layer.Vector.prototype.groupFeaturesBySymbolizerLiteral = function(features) { var uniqueLiterals = {}, featuresBySymbolizer = [], style = this.style_, i, j, l, feature, symbolizers, literals, numLiterals, literal, uniqueLiteral, key, item; for(i in features) { feature = features[i]; symbolizers = feature.getSymbolizers(); if(!goog.isNull(symbolizers)) { literals = ol.style.Style.createLiterals(symbolizers, feature) }else { if(goog.isNull(style)) { style = ol.style.getDefault() } literals = style.createLiterals(feature) } numLiterals = literals.length; for(j = 0;j < numLiterals;++j) { literal = literals[j]; for(l in uniqueLiterals) { uniqueLiteral = featuresBySymbolizer[uniqueLiterals[l]][1]; if(literal.equals(uniqueLiteral)) { literal = uniqueLiteral; break } } key = goog.getUid(literal); if(!goog.object.containsKey(uniqueLiterals, key)) { uniqueLiterals[key] = featuresBySymbolizer.length; featuresBySymbolizer.push([([]), (literal), ([])]) } item = featuresBySymbolizer[uniqueLiterals[key]]; item[0].push(feature); if(literal instanceof ol.style.TextLiteral) { item[2].push(literals[j].text) } } } return featuresBySymbolizer }; ol.layer.Vector.prototype.parseFeatures = function(data, parser, projection) { var lookup = {}; lookup[ol.geom.GeometryType.POINT] = this.pointVertices_; lookup[ol.geom.GeometryType.LINESTRING] = this.lineVertices_; lookup[ol.geom.GeometryType.POLYGON] = this.polygonVertices_; lookup[ol.geom.GeometryType.MULTIPOINT] = this.pointVertices_; lookup[ol.geom.GeometryType.MULTILINESTRING] = this.lineVertices_; lookup[ol.geom.GeometryType.MULTIPOLYGON] = this.polygonVertices_; var callback = function(feature, type) { return lookup[type] }; var addFeatures = function(data) { var features = data.features; var sourceProjection = this.getSource().getProjection(); if(goog.isNull(sourceProjection)) { sourceProjection = data.metadata.projection } var transform = ol.proj.getTransform(sourceProjection, projection); transform(this.pointVertices_.coordinates, this.pointVertices_.coordinates, this.pointVertices_.getDimension()); transform(this.lineVertices_.coordinates, this.lineVertices_.coordinates, this.lineVertices_.getDimension()); transform(this.polygonVertices_.coordinates, this.polygonVertices_.coordinates, this.polygonVertices_.getDimension()); this.addFeatures(features) }; var options = {callback:callback}, result; if(goog.isString(data)) { if(goog.isFunction(parser.readFeaturesFromStringAsync)) { parser.readFeaturesFromStringAsync(data, goog.bind(addFeatures, this), options) }else { goog.asserts.assert(goog.isFunction(parser.readFeaturesFromString), "Expected parser with a readFeaturesFromString method."); result = parser.readFeaturesFromString(data, options); addFeatures.call(this, result) } }else { if(goog.isObject(data)) { if(goog.isFunction(parser.readFeaturesFromObjectAsync)) { parser.readFeaturesFromObjectAsync(data, goog.bind(addFeatures, this), options) }else { goog.asserts.assert(goog.isFunction(parser.readFeaturesFromObject), "Expected parser with a readFeaturesFromObject method."); result = parser.readFeaturesFromObject(data, options); addFeatures.call(this, result) } }else { throw new Error("Data type not supported: " + data); } } }; ol.layer.Vector.prototype.getTransformFeatureInfo = function() { return this.transformFeatureInfo_ }; ol.layer.Vector.prototype.removeFeatures = function(features) { var extent = ol.extent.createEmpty(), feature, geometry; for(var i = 0, ii = features.length;i < ii;++i) { feature = features[i]; this.featureCache_.remove(feature); geometry = feature.getGeometry(); if(!goog.isNull(geometry)) { ol.extent.extend(extent, geometry.getBounds()) } } this.dispatchEvent(({extent:extent, features:features, type:ol.layer.VectorLayerEventType.REMOVE})) }; ol.layer.Vector.prototype.setRenderIntent = function(renderIntent, opt_features) { var features = goog.isDef(opt_features) ? opt_features : goog.object.getValues(this.featureCache_.getFeaturesObject()); var extent = ol.extent.createEmpty(), feature, geometry; for(var i = features.length - 1;i >= 0;--i) { feature = features[i]; feature.renderIntent = renderIntent; geometry = feature.getGeometry(); if(!goog.isNull(geometry)) { ol.extent.extend(extent, geometry.getBounds()) } } this.dispatchEvent(({extent:extent, features:features, type:ol.layer.VectorLayerEventType.INTENTCHANGE})) }; ol.layer.Vector.prototype.setTemporary = function(temporary) { this.temporary_ = temporary }; ol.layer.Vector.prototype.updateFeatures = function(features) { var extent = ol.extent.createEmpty(); for(var i = features.length - 1;i >= 0;--i) { var feature = features[i]; var geometry = feature.getGeometry(); var oldBounds = this.featureCache_.remove(feature); if(!goog.isNull(oldBounds)) { ol.extent.extend(extent, oldBounds) } this.featureCache_.add(feature); ol.extent.extend(extent, geometry.getBounds()) } this.dispatchEvent(({extent:extent, features:features, type:ol.layer.VectorLayerEventType.CHANGE})) }; ol.layer.Vector.uidTransformFeatureInfo = function(features) { var uids = goog.array.map(features, function(feature) { return goog.getUid(feature) }); return uids.join(", ") }; goog.provide("ol.renderer.canvas.Layer"); goog.require("ol.layer.Layer"); goog.require("ol.renderer.Layer"); ol.renderer.canvas.Layer = function(mapRenderer, layer) { goog.base(this, mapRenderer, layer) }; goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer); ol.renderer.canvas.Layer.prototype.getImage = goog.abstractMethod; ol.renderer.canvas.Layer.prototype.getTransform = goog.abstractMethod; goog.provide("ol.renderer.canvas.ImageLayer"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("ol.Image"); goog.require("ol.ImageState"); goog.require("ol.ViewHint"); goog.require("ol.layer.Image"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.Layer"); ol.renderer.canvas.ImageLayer = function(mapRenderer, imageLayer) { goog.base(this, mapRenderer, imageLayer); this.image_ = null; this.transform_ = goog.vec.Mat4.createNumber() }; goog.inherits(ol.renderer.canvas.ImageLayer, ol.renderer.canvas.Layer); ol.renderer.canvas.ImageLayer.prototype.getImage = function() { return goog.isNull(this.image_) ? null : this.image_.getImageElement(this) }; ol.renderer.canvas.ImageLayer.prototype.getImageLayer = function() { return(this.getLayer()) }; ol.renderer.canvas.ImageLayer.prototype.getTransform = function() { return this.transform_ }; ol.renderer.canvas.ImageLayer.prototype.renderFrame = function(frameState, layerState) { var view2DState = frameState.view2DState; var viewCenter = view2DState.center; var viewResolution = view2DState.resolution; var viewRotation = view2DState.rotation; var image; var imageLayer = this.getImageLayer(); var imageSource = imageLayer.getImageSource(); var hints = frameState.viewHints; if(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) { image = imageSource.getImage(frameState.extent, viewResolution, view2DState.projection); if(!goog.isNull(image)) { var imageState = image.getState(); if(imageState == ol.ImageState.IDLE) { goog.events.listenOnce(image, goog.events.EventType.CHANGE, this.handleImageChange, false, this); image.load() }else { if(imageState == ol.ImageState.LOADED) { this.image_ = image } } } } if(!goog.isNull(this.image_)) { image = this.image_; var imageExtent = image.getExtent(); var imageResolution = image.getResolution(); var transform = this.transform_; goog.vec.Mat4.makeIdentity(transform); goog.vec.Mat4.translate(transform, frameState.size[0] / 2, frameState.size[1] / 2, 0); goog.vec.Mat4.rotateZ(transform, viewRotation); goog.vec.Mat4.scale(transform, imageResolution / viewResolution, imageResolution / viewResolution, 1); goog.vec.Mat4.translate(transform, (imageExtent[0] - viewCenter[0]) / imageResolution, (viewCenter[1] - imageExtent[3]) / imageResolution, 0); this.updateAttributions(frameState.attributions, image.getAttributions()); this.updateLogos(frameState, imageSource) } }; goog.provide("ol.renderer.canvas.TileLayer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.Size"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.extent"); goog.require("ol.layer.Tile"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.Layer"); ol.renderer.canvas.TileLayer = function(mapRenderer, tileLayer) { goog.base(this, mapRenderer, tileLayer); this.canvas_ = null; this.canvasSize_ = null; this.context_ = null; this.transform_ = goog.vec.Mat4.createNumber(); this.renderedCanvasZ_ = NaN; this.renderedCanvasTileRange_ = null; this.renderedTiles_ = null }; goog.inherits(ol.renderer.canvas.TileLayer, ol.renderer.canvas.Layer); ol.renderer.canvas.TileLayer.prototype.getImage = function() { return this.canvas_ }; ol.renderer.canvas.TileLayer.prototype.getTileLayer = function() { return(this.getLayer()) }; ol.renderer.canvas.TileLayer.prototype.getTransform = function() { return this.transform_ }; ol.renderer.canvas.TileLayer.prototype.renderFrame = function(frameState, layerState) { var view2DState = frameState.view2DState; var projection = view2DState.projection; var tileLayer = this.getTileLayer(); var tileSource = tileLayer.getTileSource(); var tileGrid = tileSource.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.getForProjection(projection) } var z = tileGrid.getZForResolution(view2DState.resolution); var tileSize = tileGrid.getTileSize(z); var tileResolution = tileGrid.getResolution(z); var center = view2DState.center; var extent; if(tileResolution == view2DState.resolution) { center = this.snapCenterToPixel(center, tileResolution, frameState.size); extent = ol.extent.getForView2DAndSize(center, tileResolution, view2DState.rotation, frameState.size) }else { extent = frameState.extent } var tileRange = tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution); var canvasWidth = tileSize[0] * tileRange.getWidth(); var canvasHeight = tileSize[1] * tileRange.getHeight(); var canvas, context; if(goog.isNull(this.canvas_)) { goog.asserts.assert(goog.isNull(this.canvasSize_)); goog.asserts.assert(goog.isNull(this.context_)); goog.asserts.assert(goog.isNull(this.renderedCanvasTileRange_)); canvas = (goog.dom.createElement(goog.dom.TagName.CANVAS)); canvas.width = canvasWidth; canvas.height = canvasHeight; context = (canvas.getContext("2d")); this.canvas_ = canvas; this.canvasSize_ = [canvasWidth, canvasHeight]; this.context_ = context }else { goog.asserts.assert(!goog.isNull(this.canvasSize_)); goog.asserts.assert(!goog.isNull(this.context_)); canvas = this.canvas_; context = this.context_; if(this.canvasSize_[0] < canvasWidth || this.canvasSize_[1] < canvasHeight) { canvas.width = canvasWidth; canvas.height = canvasHeight; this.canvasSize_ = [canvasWidth, canvasHeight]; this.renderedCanvasTileRange_ = null }else { canvasWidth = this.canvasSize_[0]; canvasHeight = this.canvasSize_[1]; if(z != this.renderedCanvasZ_ || !this.renderedCanvasTileRange_.containsTileRange(tileRange)) { this.renderedCanvasTileRange_ = null } } } var canvasTileRange, canvasTileRangeWidth, minX, minY; if(goog.isNull(this.renderedCanvasTileRange_)) { canvasTileRangeWidth = canvasWidth / tileSize[0]; var canvasTileRangeHeight = canvasHeight / tileSize[1]; minX = tileRange.minX - Math.floor((canvasTileRangeWidth - tileRange.getWidth()) / 2); minY = tileRange.minY - Math.floor((canvasTileRangeHeight - tileRange.getHeight()) / 2); this.renderedCanvasZ_ = z; this.renderedCanvasTileRange_ = new ol.TileRange(minX, minX + canvasTileRangeWidth - 1, minY, minY + canvasTileRangeHeight - 1); this.renderedTiles_ = new Array(canvasTileRangeWidth * canvasTileRangeHeight); canvasTileRange = this.renderedCanvasTileRange_ }else { canvasTileRange = this.renderedCanvasTileRange_; canvasTileRangeWidth = canvasTileRange.getWidth() } goog.asserts.assert(canvasTileRange.containsTileRange(tileRange)); var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; var tilesToClear = []; var getTileIfLoaded = this.createGetTileIfLoadedFunction(function(tile) { return!goog.isNull(tile) && tile.getState() == ol.TileState.LOADED }, tileSource, projection); var findLoadedTiles = goog.bind(tileSource.findLoadedTiles, tileSource, tilesToDrawByZ, getTileIfLoaded); var tmpExtent = ol.extent.createEmpty(); var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tile = tileSource.getTile(z, x, y, projection); tileState = tile.getState(); if(tileState == ol.TileState.LOADED || tileState == ol.TileState.EMPTY || tileState == ol.TileState.ERROR) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue } fullyLoaded = tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, null, tmpTileRange, tmpExtent); if(!fullyLoaded) { tilesToClear.push(tile); childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent); if(!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange) } } } } var i, ii; for(i = 0, ii = tilesToClear.length;i < ii;++i) { tile = tilesToClear[i]; x = tileSize[0] * (tile.tileCoord.x - canvasTileRange.minX); y = tileSize[1] * (canvasTileRange.maxY - tile.tileCoord.y); context.clearRect(x, y, tileSize[0], tileSize[1]) } var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var opaque = tileSource.getOpaque(); var origin = ol.extent.getTopLeft(tileGrid.getTileCoordExtent(new ol.TileCoord(z, canvasTileRange.minX, canvasTileRange.maxY), tmpExtent)); var currentZ, index, scale, tileCoordKey, tileExtent, tilesToDraw; var ix, iy, interimTileExtent, interimTileRange, maxX, maxY; var height, width; for(i = 0, ii = zs.length;i < ii;++i) { currentZ = zs[i]; tileSize = tileGrid.getTileSize(currentZ); tilesToDraw = tilesToDrawByZ[currentZ]; if(currentZ == z) { for(tileCoordKey in tilesToDraw) { tile = tilesToDraw[tileCoordKey]; index = (tile.tileCoord.y - canvasTileRange.minY) * canvasTileRangeWidth + (tile.tileCoord.x - canvasTileRange.minX); if(this.renderedTiles_[index] != tile) { x = tileSize[0] * (tile.tileCoord.x - canvasTileRange.minX); y = tileSize[1] * (canvasTileRange.maxY - tile.tileCoord.y); tileState = tile.getState(); if(tileState == ol.TileState.EMPTY || tileState == ol.TileState.ERROR || !opaque) { context.clearRect(x, y, tileSize[0], tileSize[1]) } if(tileState == ol.TileState.LOADED) { context.drawImage(tile.getImage(), x, y) } this.renderedTiles_[index] = tile } } }else { scale = tileGrid.getResolution(currentZ) / tileResolution; for(tileCoordKey in tilesToDraw) { tile = tilesToDraw[tileCoordKey]; tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); x = (tileExtent[0] - origin[0]) / tileResolution; y = (origin[1] - tileExtent[3]) / tileResolution; width = scale * tileSize[0]; height = scale * tileSize[1]; tileState = tile.getState(); if(tileState == ol.TileState.EMPTY || !opaque) { context.clearRect(x, y, width, height) } if(tileState == ol.TileState.LOADED) { context.drawImage(tile.getImage(), x, y, width, height) } interimTileRange = tileGrid.getTileRangeForExtentAndZ(tileExtent, z, tmpTileRange); minX = Math.max(interimTileRange.minX, canvasTileRange.minX); maxX = Math.min(interimTileRange.maxX, canvasTileRange.maxX); minY = Math.max(interimTileRange.minY, canvasTileRange.minY); maxY = Math.min(interimTileRange.maxY, canvasTileRange.maxY); for(ix = minX;ix <= maxX;++ix) { for(iy = minY;iy <= maxY;++iy) { index = (iy - canvasTileRange.minY) * canvasTileRangeWidth + (ix - canvasTileRange.minX); this.renderedTiles_[index] = undefined } } } } } this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange); this.manageTilePyramid(frameState, tileSource, tileGrid, projection, extent, z, tileLayer.getPreload()); this.scheduleExpireCache(frameState, tileSource); this.updateLogos(frameState, tileSource); var transform = this.transform_; goog.vec.Mat4.makeIdentity(transform); goog.vec.Mat4.translate(transform, frameState.size[0] / 2, frameState.size[1] / 2, 0); goog.vec.Mat4.rotateZ(transform, view2DState.rotation); goog.vec.Mat4.scale(transform, tileResolution / view2DState.resolution, tileResolution / view2DState.resolution, 1); goog.vec.Mat4.translate(transform, (origin[0] - center[0]) / tileResolution, (center[1] - origin[1]) / tileResolution, 0) }; goog.provide("ol.structs.LRUCache"); goog.require("goog.asserts"); goog.require("goog.object"); ol.structs.LRUCache = function() { this.count_ = 0; this.entries_ = {}; this.oldest_ = null; this.newest_ = null }; ol.structs.LRUCache.prototype.assertValid = function() { if(this.count_ === 0) { goog.asserts.assert(goog.object.isEmpty(this.entries_)); goog.asserts.assert(goog.isNull(this.oldest_)); goog.asserts.assert(goog.isNull(this.newest_)) }else { goog.asserts.assert(goog.object.getCount(this.entries_) == this.count_); goog.asserts.assert(!goog.isNull(this.oldest_)); goog.asserts.assert(goog.isNull(this.oldest_.older)); goog.asserts.assert(!goog.isNull(this.newest_)); goog.asserts.assert(goog.isNull(this.newest_.newer)); var i, entry; var older = null; i = 0; for(entry = this.oldest_;!goog.isNull(entry);entry = entry.newer) { goog.asserts.assert(entry.older === older); older = entry; ++i } goog.asserts.assert(i == this.count_); var newer = null; i = 0; for(entry = this.newest_;!goog.isNull(entry);entry = entry.older) { goog.asserts.assert(entry.newer === newer); newer = entry; ++i } goog.asserts.assert(i == this.count_) } }; ol.structs.LRUCache.prototype.clear = function() { this.count_ = 0; this.entries_ = {}; this.oldest_ = null; this.newest_ = null }; ol.structs.LRUCache.prototype.containsKey = function(key) { return this.entries_.hasOwnProperty(key) }; ol.structs.LRUCache.prototype.forEach = function(f, opt_obj) { var entry = this.oldest_; while(!goog.isNull(entry)) { f.call(opt_obj, entry.value_, entry.key_, this); entry = entry.newer } }; ol.structs.LRUCache.prototype.get = function(key) { var entry = this.entries_[key]; goog.asserts.assert(goog.isDef(entry)); if(entry === this.newest_) { return entry.value_ }else { if(entry === this.oldest_) { this.oldest_ = this.oldest_.newer; this.oldest_.older = null }else { entry.newer.older = entry.older; entry.older.newer = entry.newer } } entry.newer = null; entry.older = this.newest_; this.newest_.newer = entry; this.newest_ = entry; return entry.value_ }; ol.structs.LRUCache.prototype.getCount = function() { return this.count_ }; ol.structs.LRUCache.prototype.getKeys = function() { var keys = new Array(this.count_); var i = 0; var entry; for(entry = this.newest_;!goog.isNull(entry);entry = entry.older) { keys[i++] = entry.key_ } goog.asserts.assert(i == this.count_); return keys }; ol.structs.LRUCache.prototype.getValues = function() { var values = new Array(this.count_); var i = 0; var entry; for(entry = this.newest_;!goog.isNull(entry);entry = entry.older) { values[i++] = entry.value_ } goog.asserts.assert(i == this.count_); return values }; ol.structs.LRUCache.prototype.peekLast = function() { goog.asserts.assert(!goog.isNull(this.oldest_)); return this.oldest_.value_ }; ol.structs.LRUCache.prototype.peekLastKey = function() { goog.asserts.assert(!goog.isNull(this.oldest_)); return this.oldest_.key_ }; ol.structs.LRUCache.prototype.pop = function() { goog.asserts.assert(!goog.isNull(this.oldest_)); goog.asserts.assert(!goog.isNull(this.newest_)); var entry = this.oldest_; goog.asserts.assert(entry.key_ in this.entries_); delete this.entries_[entry.key_]; if(!goog.isNull(entry.newer)) { entry.newer.older = null } this.oldest_ = entry.newer; if(goog.isNull(this.oldest_)) { this.newest_ = null } --this.count_; return entry.value_ }; ol.structs.LRUCache.prototype.set = function(key, value) { goog.asserts.assert(!(key in {})); goog.asserts.assert(!(key in this.entries_)); var entry = {key_:key, newer:null, older:this.newest_, value_:value}; if(goog.isNull(this.newest_)) { this.oldest_ = entry }else { this.newest_.newer = entry } this.newest_ = entry; this.entries_[key] = entry; ++this.count_ }; ol.structs.LRUCacheEntry; goog.provide("ol.TileCache"); goog.require("goog.asserts"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.structs.LRUCache"); ol.DEFAULT_TILE_CACHE_HIGH_WATER_MARK = 2048; ol.TileCache = function(opt_highWaterMark) { goog.base(this); this.highWaterMark_ = goog.isDef(opt_highWaterMark) ? opt_highWaterMark : ol.DEFAULT_TILE_CACHE_HIGH_WATER_MARK }; goog.inherits(ol.TileCache, ol.structs.LRUCache); ol.TileCache.prototype.canExpireCache = function() { return this.getCount() > this.highWaterMark_ }; ol.TileCache.prototype.expireCache = function(usedTiles) { var tile, zKey; while(this.canExpireCache()) { tile = (this.peekLast()); goog.asserts.assert(tile instanceof ol.Tile, "ol.TileCache#expireCache only works with ol.Tile values."); zKey = tile.tileCoord.z.toString(); if(zKey in usedTiles && usedTiles[zKey].contains(tile.tileCoord)) { break }else { this.pop() } } }; ol.TileCache.prototype.pruneTileRange = function(tileRange) { var i = this.getCount(), key; while(i--) { key = this.peekLastKey(); if(tileRange.contains(ol.TileCoord.createFromString(key))) { this.pop() }else { this.get(key) } } }; goog.provide("ol.geom.AbstractCollection"); goog.require("ol.geom.Geometry"); ol.geom.AbstractCollection = function() { goog.base(this); this.dimension; this.components = null; this.bounds = null }; goog.inherits(ol.geom.AbstractCollection, ol.geom.Geometry); ol.geom.AbstractCollection.prototype.getBounds = function() { if(goog.isNull(this.bounds)) { var minX, minY = minX = Infinity, maxX, maxY = maxX = -Infinity, components = this.components, len = components.length, bounds, i; for(i = 0;i < len;++i) { bounds = components[i].getBounds(); minX = Math.min(bounds[0], minX); maxX = Math.max(bounds[1], maxX); minY = Math.min(bounds[2], minY); maxY = Math.max(bounds[3], maxY) } this.bounds = [minX, maxX, minY, maxY] } return this.bounds }; ol.geom.AbstractCollection.prototype.getCoordinates = function() { var count = this.components.length; var coordinates = new Array(count); for(var i = 0;i < count;++i) { coordinates[i] = this.components[i].getCoordinates() } return coordinates }; ol.geom.AbstractCollection.prototype.getType = goog.abstractMethod; ol.geom.AbstractCollection.prototype.invalidateBounds = function() { this.bounds = null }; goog.provide("ol.geom"); goog.require("ol.coordinate"); ol.geom.squaredDistanceToSegment = function(coordinate, segment) { return ol.coordinate.closestOnSegment(coordinate, segment)[2] }; goog.provide("ol.geom.LineString"); goog.require("goog.asserts"); goog.require("ol.CoordinateArray"); goog.require("ol.geom"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SharedVertices"); ol.geom.LineString = function(coordinates, opt_shared) { goog.base(this); goog.asserts.assert(goog.isArray(coordinates[0])); var vertices = opt_shared, dimension; if(!goog.isDef(vertices)) { dimension = coordinates[0].length; vertices = new ol.geom.SharedVertices({dimension:dimension}) } this.vertices = vertices; this.sharedId_ = vertices.add(coordinates); this.dimension = vertices.getDimension(); goog.asserts.assert(this.dimension >= 2); this.bounds_ = null }; goog.inherits(ol.geom.LineString, ol.geom.Geometry); ol.geom.LineString.prototype.get = function(index, dim) { return this.vertices.get(this.sharedId_, index, dim) }; ol.geom.LineString.prototype.getCoordinates = function() { var count = this.getCount(); var coordinates = new Array(count); var vertex; for(var i = 0;i < count;++i) { vertex = new Array(this.dimension); for(var j = 0;j < this.dimension;++j) { vertex[j] = this.get(i, j) } coordinates[i] = vertex } return coordinates }; ol.geom.LineString.prototype.getCount = function() { return this.vertices.getCount(this.sharedId_) }; ol.geom.LineString.prototype.getBounds = function() { if(goog.isNull(this.bounds_)) { var dimension = this.dimension, vertices = this.vertices, id = this.sharedId_, count = vertices.getCount(id), start = vertices.getStart(id), end = start + count * dimension, coordinates = vertices.coordinates, minX, maxX, minY, maxY, x, y, i; minX = maxX = coordinates[start]; minY = maxY = coordinates[start + 1]; for(i = start + dimension;i < end;i += dimension) { x = coordinates[i]; y = coordinates[i + 1]; if(x < minX) { minX = x }else { if(x > maxX) { maxX = x } } if(y < minY) { minY = y }else { if(y > maxY) { maxY = y } } } this.bounds_ = [minX, maxX, minY, maxY] } return this.bounds_ }; ol.geom.LineString.prototype.getType = function() { return ol.geom.GeometryType.LINESTRING }; ol.geom.LineString.prototype.getSharedId = function() { return this.sharedId_ }; ol.geom.LineString.prototype.distanceFromCoordinate = function(coordinate) { var coordinates = this.getCoordinates(); var dist2 = Infinity; for(var i = 0, j = 1, len = coordinates.length;j < len;i = j++) { dist2 = Math.min(dist2, ol.geom.squaredDistanceToSegment(coordinate, [coordinates[i], coordinates[j]])) } return Math.sqrt(dist2) }; ol.geom.LineString.prototype.invalidateBounds = function() { this.bounds_ = null }; ol.geom.LineString.prototype.set = function(index, dim, value) { this.invalidateBounds(); this.vertices.set(this.sharedId_, index, dim, value) }; goog.provide("ol.geom.MultiLineString"); goog.require("goog.asserts"); goog.require("ol.CoordinateArray"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.SharedVertices"); ol.geom.MultiLineString = function(coordinates, opt_shared) { goog.base(this); goog.asserts.assert(goog.isArray(coordinates[0][0])); var vertices = opt_shared, dimension; if(!goog.isDef(vertices)) { dimension = coordinates[0][0].length; vertices = new ol.geom.SharedVertices({dimension:dimension}) } var numParts = coordinates.length; this.components = new Array(numParts); for(var i = 0;i < numParts;++i) { this.components[i] = new ol.geom.LineString(coordinates[i], vertices) } this.dimension = vertices.getDimension() }; goog.inherits(ol.geom.MultiLineString, ol.geom.AbstractCollection); ol.geom.MultiLineString.prototype.getType = function() { return ol.geom.GeometryType.MULTILINESTRING }; ol.geom.MultiLineString.prototype.distanceFromCoordinate = function(coordinate) { var distance = Infinity; for(var i = 0, ii = this.components.length;i < ii;++i) { distance = Math.min(distance, this.components[i].distanceFromCoordinate(coordinate)) } return distance }; ol.geom.MultiLineString.fromParts = function(geometries, opt_shared) { var count = geometries.length; var coordinates = new Array(count); for(var i = 0;i < count;++i) { coordinates[i] = geometries[i].getCoordinates() } return new ol.geom.MultiLineString(coordinates, opt_shared) }; goog.provide("ol.geom.Point"); goog.require("goog.asserts"); goog.require("ol.Coordinate"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SharedVertices"); ol.geom.Point = function(coordinates, opt_shared) { goog.base(this); var vertices = opt_shared, dimension; if(!goog.isDef(vertices)) { dimension = coordinates.length; vertices = new ol.geom.SharedVertices({dimension:dimension}) } this.vertices = vertices; this.sharedId_ = vertices.add([coordinates]); this.dimension = vertices.getDimension(); goog.asserts.assert(this.dimension >= 2); this.bounds_ = null }; goog.inherits(ol.geom.Point, ol.geom.Geometry); ol.geom.Point.prototype.get = function(dim) { return this.vertices.get(this.sharedId_, 0, dim) }; ol.geom.Point.prototype.getBounds = function() { if(goog.isNull(this.bounds_)) { var x = this.get(0), y = this.get(1); this.bounds_ = [x, x, y, y] } return this.bounds_ }; ol.geom.Point.prototype.getCoordinates = function() { var coordinates = new Array(this.dimension); for(var i = 0;i < this.dimension;++i) { coordinates[i] = this.get(i) } return coordinates }; ol.geom.Point.prototype.getType = function() { return ol.geom.GeometryType.POINT }; ol.geom.Point.prototype.getSharedId = function() { return this.sharedId_ }; ol.geom.Point.prototype.invalidateBounds = function() { this.bounds_ = null }; ol.geom.Point.prototype.set = function(dim, value) { if(!goog.isNull(this.bounds_) && dim <= 1) { this.bounds_[dim * 2] = value; this.bounds_[dim * 2 + 1] = value } this.vertices.set(this.sharedId_, 0, dim, value) }; goog.provide("ol.geom.MultiPoint"); goog.require("goog.asserts"); goog.require("ol.CoordinateArray"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.Point"); goog.require("ol.geom.SharedVertices"); ol.geom.MultiPoint = function(coordinates, opt_shared) { goog.base(this); goog.asserts.assert(goog.isArray(coordinates[0])); var vertices = opt_shared, dimension; if(!goog.isDef(vertices)) { dimension = coordinates[0].length; vertices = new ol.geom.SharedVertices({dimension:dimension}) } this.vertices = vertices; var numParts = coordinates.length; this.components = new Array(numParts); for(var i = 0;i < numParts;++i) { this.components[i] = new ol.geom.Point(coordinates[i], vertices) } this.dimension = vertices.getDimension() }; goog.inherits(ol.geom.MultiPoint, ol.geom.AbstractCollection); ol.geom.MultiPoint.prototype.getType = function() { return ol.geom.GeometryType.MULTIPOINT }; ol.geom.MultiPoint.fromParts = function(geometries, opt_shared) { var count = geometries.length; var coordinates = new Array(count); for(var i = 0;i < count;++i) { coordinates[i] = geometries[i].getCoordinates() } return new ol.geom.MultiPoint(coordinates, opt_shared) }; goog.provide("ol.geom.LinearRing"); goog.require("ol.CoordinateArray"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.SharedVertices"); ol.geom.LinearRing = function(coordinates, opt_shared) { goog.base(this, coordinates, opt_shared) }; goog.inherits(ol.geom.LinearRing, ol.geom.LineString); ol.geom.LinearRing.isClockwise = function(coordinates) { var length = coordinates.length; var edge = 0; var last = coordinates[length - 1]; var x1 = last[0]; var y1 = last[1]; var x2, y2, coord; for(var i = 0;i < length;++i) { coord = coordinates[i]; x2 = coord[0]; y2 = coord[1]; edge += (x2 - x1) * (y2 + y1); x1 = x2; y1 = y2 } return edge > 0 }; ol.geom.LinearRing.prototype.getType = function() { return ol.geom.GeometryType.LINEARRING }; ol.geom.LinearRing.prototype.containsCoordinate = function(coordinate) { var x = coordinate[0], y = coordinate[1]; var vertices = this.getCoordinates(); var inside = false; var xi, yi, xj, yj, intersect; var numVertices = vertices.length; for(var i = 0, j = numVertices - 1;i < numVertices;j = i++) { xi = vertices[i][0]; yi = vertices[i][1]; xj = vertices[j][0]; yj = vertices[j][1]; intersect = yi > y != yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi; if(intersect) { inside = !inside } } return inside }; goog.provide("ol.geom.Polygon"); goog.require("goog.asserts"); goog.require("ol.CoordinateArray"); goog.require("ol.extent"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.SharedVertices"); ol.geom.Polygon = function(coordinates, opt_shared) { goog.base(this); goog.asserts.assert(goog.isArray(coordinates[0][0])); var vertices = opt_shared, dimension; if(!goog.isDef(vertices)) { dimension = coordinates[0][0].length; vertices = new ol.geom.SharedVertices({dimension:dimension}) } this.labelPoint_ = null; this.vertices = vertices; var numRings = coordinates.length; this.rings = new Array(numRings); var ringCoords; for(var i = 0;i < numRings;++i) { ringCoords = coordinates[i]; if(i === 0) { if(!ol.geom.LinearRing.isClockwise(ringCoords)) { ringCoords.reverse() } }else { if(ol.geom.LinearRing.isClockwise(ringCoords)) { ringCoords.reverse() } } this.rings[i] = new ol.geom.LinearRing(ringCoords, vertices) } this.dimension = vertices.getDimension(); goog.asserts.assert(this.dimension >= 2) }; goog.inherits(ol.geom.Polygon, ol.geom.Geometry); ol.geom.Polygon.prototype.getBounds = function() { return this.rings[0].getBounds() }; ol.geom.Polygon.prototype.getCoordinates = function() { var count = this.rings.length; var coordinates = new Array(count); for(var i = 0;i < count;++i) { coordinates[i] = this.rings[i].getCoordinates() } return coordinates }; ol.geom.Polygon.prototype.getType = function() { return ol.geom.GeometryType.POLYGON }; ol.geom.Polygon.prototype.containsCoordinate = function(coordinate) { var rings = this.rings; var containsCoordinate; for(var i = 0, ii = rings.length;i < ii;++i) { containsCoordinate = rings[i].containsCoordinate(coordinate); if(i > 0) { containsCoordinate = !containsCoordinate } if(!containsCoordinate) { break } } return containsCoordinate }; ol.geom.Polygon.prototype.getInteriorPoint = function() { if(goog.isNull(this.labelPoint_)) { var center = ol.extent.getCenter(this.getBounds()), resultY = center[1], vertices = this.rings[0].getCoordinates(), intersections = [], maxLength = 0, i, vertex1, vertex2, x, segmentLength, resultX; for(i = vertices.length - 1;i >= 1;--i) { vertex1 = vertices[i]; vertex2 = vertices[i - 1]; if(vertex1[1] >= resultY && vertex2[1] <= resultY || vertex1[1] <= resultY && vertex2[1] >= resultY) { x = (resultY - vertex1[1]) / (vertex2[1] - vertex1[1]) * (vertex2[0] - vertex1[0]) + vertex1[0]; intersections.push(x) } } intersections.sort(); for(i = intersections.length - 1;i >= 1;--i) { segmentLength = Math.abs(intersections[i] - intersections[i - 1]); if(segmentLength > maxLength) { x = (intersections[i] + intersections[i - 1]) / 2; if(this.containsCoordinate([x, resultY])) { maxLength = segmentLength; resultX = x } } } this.labelPoint_ = [resultX, resultY] } return this.labelPoint_ }; ol.geom.Polygon.prototype.invalidateBounds = function() { this.rings[0].invalidateBounds() }; goog.provide("ol.geom.MultiPolygon"); goog.require("goog.asserts"); goog.require("ol.CoordinateArray"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.Polygon"); goog.require("ol.geom.SharedVertices"); ol.geom.MultiPolygon = function(coordinates, opt_shared) { goog.base(this); goog.asserts.assert(goog.isArray(coordinates[0][0][0])); var vertices = opt_shared, dimension; if(!goog.isDef(vertices)) { dimension = coordinates[0][0][0].length; vertices = new ol.geom.SharedVertices({dimension:dimension}) } var numParts = coordinates.length; this.components = new Array(numParts); for(var i = 0;i < numParts;++i) { this.components[i] = new ol.geom.Polygon(coordinates[i], vertices) } this.dimension = vertices.getDimension() }; goog.inherits(ol.geom.MultiPolygon, ol.geom.AbstractCollection); ol.geom.MultiPolygon.prototype.getType = function() { return ol.geom.GeometryType.MULTIPOLYGON }; ol.geom.MultiPolygon.prototype.containsCoordinate = function(coordinate) { var containsCoordinate = false; for(var i = 0, ii = this.components.length;i < ii;++i) { if(this.components[i].containsCoordinate(coordinate)) { containsCoordinate = true; break } } return containsCoordinate }; ol.geom.MultiPolygon.fromParts = function(geometries, opt_shared) { var count = geometries.length; var coordinates = new Array(count); for(var i = 0;i < count;++i) { coordinates[i] = geometries[i].getCoordinates() } return new ol.geom.MultiPolygon(coordinates, opt_shared) }; goog.provide("ol.style.IconLiteral"); goog.require("ol.style.PointLiteral"); ol.style.IconLiteralOptions; ol.style.IconLiteral = function(options) { this.url = options.url; this.width = options.width; this.height = options.height; this.opacity = options.opacity; this.rotation = options.rotation; this.xOffset = options.xOffset; this.yOffset = options.yOffset }; goog.inherits(ol.style.IconLiteral, ol.style.PointLiteral); ol.style.IconLiteral.prototype.equals = function(iconLiteral) { return this.url == iconLiteral.url && this.width == iconLiteral.width && this.height == iconLiteral.height && this.opacity == iconLiteral.opacity && this.rotation == iconLiteral.rotation && this.xOffset == iconLiteral.xOffset && this.yOffset == iconLiteral.yOffset }; goog.provide("ol.renderer.canvas.VectorRenderer"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("ol.Feature"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.layer.VectorLayerRenderIntent"); goog.require("ol.style.IconLiteral"); goog.require("ol.style.LineLiteral"); goog.require("ol.style.Literal"); goog.require("ol.style.PointLiteral"); goog.require("ol.style.PolygonLiteral"); goog.require("ol.style.ShapeLiteral"); goog.require("ol.style.ShapeType"); goog.require("ol.style.TextLiteral"); ol.renderer.canvas.VectorRenderer = function(canvas, transform, opt_iconLoadedCallback) { var context = (canvas.getContext("2d")); this.transform_ = transform; var vec = [1, 0, 0]; goog.vec.Mat4.multVec3NoTranslate(transform, vec, vec); this.inverseScale_ = 1 / Math.sqrt(vec[0] * vec[0] + vec[1] * vec[1]); this.context_ = context; this.iconLoadedCallback_ = opt_iconLoadedCallback; this.symbolSizes_ = {}; this.symbolOffsets_ = {}; this.maxSymbolSize_ = [0, 0] }; ol.renderer.canvas.VectorRenderer.prototype.getSymbolSizes = function() { return this.symbolSizes_ }; ol.renderer.canvas.VectorRenderer.prototype.getSymbolOffsets = function() { return this.symbolOffsets_ }; ol.renderer.canvas.VectorRenderer.prototype.getMaxSymbolSize = function() { return this.maxSymbolSize_ }; ol.renderer.canvas.VectorRenderer.prototype.renderFeaturesByGeometryType = function(type, features, symbolizer, data) { var deferred = false; if(!(symbolizer instanceof ol.style.TextLiteral)) { switch(type) { case ol.geom.GeometryType.POINT: ; case ol.geom.GeometryType.MULTIPOINT: goog.asserts.assert(symbolizer instanceof ol.style.PointLiteral, "Expected point symbolizer: " + symbolizer); deferred = this.renderPointFeatures_(features, (symbolizer)); break; case ol.geom.GeometryType.LINESTRING: ; case ol.geom.GeometryType.MULTILINESTRING: goog.asserts.assert(symbolizer instanceof ol.style.LineLiteral, "Expected line symbolizer: " + symbolizer); this.renderLineStringFeatures_(features, (symbolizer)); break; case ol.geom.GeometryType.POLYGON: ; case ol.geom.GeometryType.MULTIPOLYGON: goog.asserts.assert(symbolizer instanceof ol.style.PolygonLiteral, "Expected polygon symbolizer: " + symbolizer); this.renderPolygonFeatures_(features, (symbolizer)); break; default: throw new Error("Rendering not implemented for geometry type: " + type); } }else { this.renderText_(features, symbolizer, data) } return deferred }; ol.renderer.canvas.VectorRenderer.prototype.renderLineStringFeatures_ = function(features, symbolizer) { var context = this.context_, i, ii, feature, id, currentSize, geometry, components, j, jj, line, dim, k, kk, vec, strokeSize; context.globalAlpha = symbolizer.opacity; context.strokeStyle = symbolizer.color; context.lineWidth = symbolizer.width; context.lineCap = "round"; context.lineJoin = "round"; strokeSize = context.lineWidth * this.inverseScale_; context.beginPath(); for(i = 0, ii = features.length;i < ii;++i) { feature = features[i]; if(feature.renderIntent === ol.layer.VectorLayerRenderIntent.HIDDEN) { continue } id = goog.getUid(feature); currentSize = goog.isDef(this.symbolSizes_[id]) ? this.symbolSizes_[id] : [0]; currentSize[0] = Math.max(currentSize[0], strokeSize); this.symbolSizes_[id] = currentSize; this.maxSymbolSize_ = [Math.max(currentSize[0], this.maxSymbolSize_[0]), Math.max(currentSize[0], this.maxSymbolSize_[1])]; geometry = feature.getGeometry(); if(geometry instanceof ol.geom.LineString) { components = [geometry] }else { goog.asserts.assert(geometry instanceof ol.geom.MultiLineString, "Expected MultiLineString"); components = geometry.components } for(j = 0, jj = components.length;j < jj;++j) { line = components[j]; dim = line.dimension; for(k = 0, kk = line.getCount();k < kk;++k) { vec = [line.get(k, 0), line.get(k, 1), 0]; goog.vec.Mat4.multVec3(this.transform_, vec, vec); if(k === 0) { context.moveTo(vec[0], vec[1]) }else { context.lineTo(vec[0], vec[1]) } } } } context.stroke() }; ol.renderer.canvas.VectorRenderer.prototype.renderPointFeatures_ = function(features, symbolizer) { var context = this.context_, content, alpha, i, ii, feature, id, size, geometry, components, j, jj, point, vec; var xOffset = 0; var yOffset = 0; if(symbolizer instanceof ol.style.ShapeLiteral) { content = ol.renderer.canvas.VectorRenderer.renderShape(symbolizer); alpha = 1 }else { if(symbolizer instanceof ol.style.IconLiteral) { content = ol.renderer.canvas.VectorRenderer.renderIcon(symbolizer, this.iconLoadedCallback_); alpha = symbolizer.opacity; xOffset = symbolizer.xOffset; yOffset = symbolizer.yOffset }else { throw new Error("Unsupported symbolizer: " + symbolizer); } } if(goog.isNull(content)) { return true } var midWidth = content.width / 2; var midHeight = content.height / 2; var contentWidth = content.width * this.inverseScale_; var contentHeight = content.height * this.inverseScale_; var contentXOffset = xOffset * this.inverseScale_; var contentYOffset = yOffset * this.inverseScale_; context.save(); context.setTransform(1, 0, 0, 1, -midWidth, -midHeight); context.globalAlpha = alpha; for(i = 0, ii = features.length;i < ii;++i) { feature = features[i]; if(feature.renderIntent === ol.layer.VectorLayerRenderIntent.HIDDEN) { continue } id = goog.getUid(feature); size = this.symbolSizes_[id]; this.symbolSizes_[id] = goog.isDef(size) ? [Math.max(size[0], contentWidth), Math.max(size[1], contentHeight)] : [contentWidth, contentHeight]; this.symbolOffsets_[id] = [xOffset * this.inverseScale_, yOffset * this.inverseScale_]; this.maxSymbolSize_ = [Math.max(this.maxSymbolSize_[0], this.symbolSizes_[id][0] + 2 * Math.abs(contentXOffset)), Math.max(this.maxSymbolSize_[1], this.symbolSizes_[id][1] + 2 * Math.abs(contentYOffset))]; geometry = feature.getGeometry(); if(geometry instanceof ol.geom.Point) { components = [geometry] }else { goog.asserts.assert(geometry instanceof ol.geom.MultiPoint, "Expected MultiPoint"); components = geometry.components } for(j = 0, jj = components.length;j < jj;++j) { point = components[j]; vec = [point.get(0), point.get(1), 0]; goog.vec.Mat4.multVec3(this.transform_, vec, vec); context.drawImage(content, vec[0] + xOffset, vec[1] + yOffset, content.width, content.height) } } context.restore(); return false }; ol.renderer.canvas.VectorRenderer.prototype.renderText_ = function(features, text, texts) { var context = this.context_, feature, vecs, vec; if(context.fillStyle !== text.color) { context.fillStyle = text.color } context.font = text.fontSize + "px " + text.fontFamily; context.globalAlpha = text.opacity; context.textAlign = "center"; context.textBaseline = "middle"; for(var i = 0, ii = features.length;i < ii;++i) { feature = features[i]; if(feature.renderIntent === ol.layer.VectorLayerRenderIntent.HIDDEN) { continue } vecs = ol.renderer.canvas.VectorRenderer.getLabelVectors(feature.getGeometry()); for(var j = 0, jj = vecs.length;j < jj;++j) { vec = vecs[j]; goog.vec.Mat4.multVec3(this.transform_, vec, vec); context.fillText(texts[i], vec[0], vec[1]) } } }; ol.renderer.canvas.VectorRenderer.prototype.renderPolygonFeatures_ = function(features, symbolizer) { var context = this.context_, strokeColor = symbolizer.strokeColor, strokeWidth = symbolizer.strokeWidth, strokeOpacity = symbolizer.strokeOpacity, fillColor = symbolizer.fillColor, fillOpacity = symbolizer.fillOpacity, globalAlpha, i, ii, geometry, components, j, jj, poly, rings, numRings, ring, dim, k, kk, vec, feature; if(strokeColor) { context.strokeStyle = strokeColor; if(strokeWidth) { context.lineWidth = strokeWidth } context.lineCap = "round"; context.lineJoin = "round" } if(fillColor) { context.fillStyle = fillColor } context.beginPath(); for(i = 0, ii = features.length;i < ii;++i) { feature = features[i]; if(feature.renderIntent === ol.layer.VectorLayerRenderIntent.HIDDEN) { continue } geometry = feature.getGeometry(); if(geometry instanceof ol.geom.Polygon) { components = [geometry] }else { goog.asserts.assert(geometry instanceof ol.geom.MultiPolygon, "Expected MultiPolygon"); components = geometry.components } for(j = 0, jj = components.length;j < jj;++j) { poly = components[j]; dim = poly.dimension; rings = poly.rings; numRings = rings.length; if(numRings > 0) { ring = rings[0]; for(k = 0, kk = ring.getCount();k < kk;++k) { vec = [ring.get(k, 0), ring.get(k, 1), 0]; goog.vec.Mat4.multVec3(this.transform_, vec, vec); if(k === 0) { context.moveTo(vec[0], vec[1]) }else { context.lineTo(vec[0], vec[1]) } } if(fillColor && strokeColor) { if(fillOpacity !== globalAlpha) { goog.asserts.assertNumber(fillOpacity); context.globalAlpha = fillOpacity; globalAlpha = fillOpacity } context.fill(); if(strokeOpacity !== globalAlpha) { goog.asserts.assertNumber(strokeOpacity); context.globalAlpha = strokeOpacity; globalAlpha = strokeOpacity } context.stroke(); if(i < ii - 1 || j < jj - 1) { context.beginPath() } } } } } if(!(fillColor && strokeColor)) { if(fillColor) { if(fillOpacity !== globalAlpha) { goog.asserts.assertNumber(fillOpacity); context.globalAlpha = fillOpacity; globalAlpha = fillOpacity } context.fill() }else { if(strokeOpacity !== globalAlpha) { goog.asserts.assertNumber(strokeOpacity); context.globalAlpha = strokeOpacity; globalAlpha = strokeOpacity } context.stroke() } } }; ol.renderer.canvas.VectorRenderer.renderCircle_ = function(circle) { var strokeWidth = circle.strokeWidth || 0, size = circle.size + 2 * strokeWidth + 1, mid = size / 2, canvas = (goog.dom.createElement(goog.dom.TagName.CANVAS)), context = (canvas.getContext("2d")), fillColor = circle.fillColor, strokeColor = circle.strokeColor, twoPi = Math.PI * 2; canvas.height = size; canvas.width = size; if(fillColor) { context.fillStyle = fillColor } if(strokeColor) { context.lineWidth = strokeWidth; context.strokeStyle = strokeColor; context.lineCap = "round"; context.lineJoin = "round" } context.beginPath(); context.arc(mid, mid, circle.size / 2, 0, twoPi, true); if(fillColor) { goog.asserts.assertNumber(circle.fillOpacity); context.globalAlpha = circle.fillOpacity; context.fill() } if(strokeColor) { goog.asserts.assertNumber(circle.strokeOpacity); context.globalAlpha = circle.strokeOpacity; context.stroke() } return canvas }; ol.renderer.canvas.VectorRenderer.getLabelVectors = function(geometry) { if(geometry instanceof ol.geom.AbstractCollection) { var components = geometry.components; var numComponents = components.length; var result = []; for(var i = 0;i < numComponents;++i) { result.push.apply(result, ol.renderer.canvas.VectorRenderer.getLabelVectors(components[i])) } return result } var type = geometry.getType(); if(type == ol.geom.GeometryType.POINT) { return[[geometry.get(0), geometry.get(1), 0]] } if(type == ol.geom.GeometryType.POLYGON) { var coordinates = geometry.getInteriorPoint(); return[[coordinates[0], coordinates[1], 0]] } throw new Error("Label rendering not implemented for geometry type: " + type); }; ol.renderer.canvas.VectorRenderer.renderShape = function(shape) { var canvas; if(shape.type === ol.style.ShapeType.CIRCLE) { canvas = ol.renderer.canvas.VectorRenderer.renderCircle_(shape) }else { throw new Error("Unsupported shape type: " + shape); } return canvas }; ol.renderer.canvas.VectorRenderer.renderIcon = function(icon, opt_callback) { var url = icon.url; var image = ol.renderer.canvas.VectorRenderer.icons_[url]; var deferred = false; if(!goog.isDef(image)) { deferred = true; image = (goog.dom.createElement(goog.dom.TagName.IMG)); goog.events.listenOnce(image, goog.events.EventType.ERROR, goog.bind(ol.renderer.canvas.VectorRenderer.handleIconError_, null, opt_callback), false, ol.renderer.canvas.VectorRenderer.renderIcon); goog.events.listenOnce(image, goog.events.EventType.LOAD, goog.bind(ol.renderer.canvas.VectorRenderer.handleIconLoad_, null, opt_callback), false, ol.renderer.canvas.VectorRenderer.renderIcon); image.setAttribute("src", url) }else { if(!goog.isNull(image)) { var width = icon.width, height = icon.height; if(goog.isDef(width) && goog.isDef(height)) { image.width = width; image.height = height }else { if(goog.isDef(width)) { image.height = width / image.width * image.height; image.width = width }else { if(goog.isDef(height)) { image.width = height / image.height * image.width; image.height = height } } } } } return deferred ? null : image }; ol.renderer.canvas.VectorRenderer.icons_ = {}; ol.renderer.canvas.VectorRenderer.handleIconError_ = function(opt_callback, opt_event) { if(goog.isDef(opt_event)) { var url = opt_event.target.getAttribute("src"); ol.renderer.canvas.VectorRenderer.icons_[url] = null; ol.renderer.canvas.VectorRenderer.handleIconLoad_(opt_callback, opt_event) } }; ol.renderer.canvas.VectorRenderer.handleIconLoad_ = function(opt_callback, opt_event) { if(goog.isDef(opt_event)) { var url = opt_event.target.getAttribute("src"); ol.renderer.canvas.VectorRenderer.icons_[url] = (opt_event.target) } if(goog.isDef(opt_callback)) { opt_callback() } }; goog.provide("ol.renderer.canvas.VectorLayer"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.Pixel"); goog.require("ol.TileCache"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.ViewHint"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.layer.Vector"); goog.require("ol.layer.VectorLayerEventType"); goog.require("ol.renderer.canvas.Layer"); goog.require("ol.renderer.canvas.VectorRenderer"); goog.require("ol.tilegrid.TileGrid"); ol.renderer.canvas.MIN_RESOLUTION = 0.14929107086948487; ol.renderer.canvas.VectorLayer = function(mapRenderer, layer) { goog.base(this, mapRenderer, layer); this.canvas_ = (goog.dom.createElement(goog.dom.TagName.CANVAS)); this.context_ = (this.canvas_.getContext("2d")); this.transform_ = goog.vec.Mat4.createNumber(); this.sketchCanvas_ = (goog.dom.createElement(goog.dom.TagName.CANVAS)); this.sketchTransform_ = goog.vec.Mat4.createNumber(); this.tileCache_ = new ol.TileCache(ol.renderer.canvas.VectorLayer.TILECACHE_SIZE); goog.events.listen(layer, [ol.layer.VectorLayerEventType.ADD, ol.layer.VectorLayerEventType.CHANGE, ol.layer.VectorLayerEventType.REMOVE, ol.layer.VectorLayerEventType.INTENTCHANGE], this.handleLayerChange_, false, this); this.tileArchetype_ = null; this.geometryTypes_ = [ol.geom.GeometryType.POINT, ol.geom.GeometryType.MULTIPOINT, ol.geom.GeometryType.LINESTRING, ol.geom.GeometryType.MULTILINESTRING, ol.geom.GeometryType.POLYGON, ol.geom.GeometryType.MULTIPOLYGON]; this.renderedResolution_; this.renderedExtent_ = null; this.dirty_ = false; this.pendingCachePrune_ = false; this.tileGrid_ = null; this.tileRange_ = new ol.TileRange(NaN, NaN, NaN, NaN); this.requestMapRenderFrame_ = goog.bind(function() { this.dirty_ = true; mapRenderer.getMap().requestRenderFrame() }, this) }; goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer); ol.renderer.canvas.VectorLayer.prototype.expireTiles_ = function(opt_extent) { var tileCache = this.tileCache_; if(goog.isDef(opt_extent)) { var tileRange = this.tileGrid_.getTileRangeForExtentAndZ(opt_extent, 0); tileCache.pruneTileRange(tileRange) }else { tileCache.clear() } }; ol.renderer.canvas.VectorLayer.prototype.getImage = function() { return this.canvas_ }; ol.renderer.canvas.VectorLayer.prototype.getVectorLayer = function() { return(this.getLayer()) }; ol.renderer.canvas.VectorLayer.prototype.getTransform = function() { return this.transform_ }; ol.renderer.canvas.VectorLayer.prototype.getFeatureInfoForPixel = function(pixel, success) { var callback = function(features, layer) { success(layer.getTransformFeatureInfo()(features), layer) }; this.getFeaturesForPixel(pixel, callback) }; ol.renderer.canvas.VectorLayer.prototype.getFeaturesForPixel = function(pixel, success, opt_error) { var map = this.getMap(); var result = []; var layer = this.getLayer(); var location = map.getCoordinateFromPixel(pixel); var tileCoord = this.tileGrid_.getTileCoordForCoordAndZ(location, 0); var key = tileCoord.toString(); if(this.tileCache_.containsKey(key)) { var cachedTile = this.tileCache_.get(key); var symbolSizes = cachedTile[1]; var maxSymbolSize = cachedTile[2]; var symbolOffsets = cachedTile[3]; var halfMaxWidth = maxSymbolSize[0] / 2; var halfMaxHeight = maxSymbolSize[1] / 2; var locationMin = [location[0] - halfMaxWidth, location[1] - halfMaxHeight]; var locationMax = [location[0] + halfMaxWidth, location[1] + halfMaxHeight]; var locationBbox = ol.extent.boundingExtent([locationMin, locationMax]); var candidates = layer.getFeaturesObjectForExtent(locationBbox, map.getView().getView2D().getProjection()); if(goog.isNull(candidates)) { if(goog.isDef(opt_error)) { goog.global.setTimeout(function() { opt_error() }, 0) } return } var candidate, geom, type, symbolBounds, symbolSize, symbolOffset, halfWidth, halfHeight, uid, coordinates, j; for(var id in candidates) { candidate = candidates[id]; geom = candidate.getGeometry(); type = geom.getType(); if(type === ol.geom.GeometryType.POINT || type === ol.geom.GeometryType.MULTIPOINT) { uid = goog.getUid(candidate); symbolSize = symbolSizes[uid]; symbolOffset = symbolOffsets[uid]; halfWidth = symbolSize[0] / 2; halfHeight = symbolSize[1] / 2; symbolBounds = ol.extent.boundingExtent([[location[0] - halfWidth - symbolOffset[0], location[1] - halfHeight + symbolOffset[1]], [location[0] + halfWidth - symbolOffset[0], location[1] + halfHeight + symbolOffset[1]]]); coordinates = geom.getCoordinates(); if(!goog.isArray(coordinates[0])) { coordinates = [coordinates] } for(j = coordinates.length - 1;j >= 0;--j) { if(ol.extent.containsCoordinate(symbolBounds, coordinates[j])) { result.push(candidate); break } } }else { if(goog.isFunction(geom.containsCoordinate)) { if(geom.containsCoordinate(location)) { result.push(candidate) } }else { if(goog.isFunction(geom.distanceFromCoordinate)) { if(2 * geom.distanceFromCoordinate(location) <= symbolSizes[goog.getUid(candidate)][0]) { result.push(candidate) } } } } } } goog.global.setTimeout(function() { success(result, layer) }, 0) }; ol.renderer.canvas.VectorLayer.prototype.handleLayerChange_ = function(event) { this.expireTiles_(event.extent); this.requestMapRenderFrame_() }; ol.renderer.canvas.VectorLayer.prototype.renderFrame = function(frameState, layerState) { var view2DState = frameState.view2DState, resolution = view2DState.resolution, projection = view2DState.projection, extent = frameState.extent, layer = this.getVectorLayer(), tileGrid = this.tileGrid_, tileSize = [512, 512], idle = !frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING]; if(idle) { var minResolution = ol.renderer.canvas.MIN_RESOLUTION; var metersPerUnit = projection.getMetersPerUnit(); if(metersPerUnit) { minResolution = minResolution / metersPerUnit } var gridResolution = Math.max(resolution, minResolution); if(gridResolution !== this.renderedResolution_) { tileGrid = new ol.tilegrid.TileGrid({origin:[0, 0], projection:projection, resolutions:[gridResolution], tileSize:tileSize}); this.tileCache_.clear(); this.tileGrid_ = tileGrid } } if(goog.isNull(tileGrid)) { return } var tileResolution = tileGrid.getResolution(0); if(idle) { tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution, this.tileRange_) } var transform = this.transform_, tileRange = this.tileRange_, tileRangeExtent = tileGrid.getTileRangeExtent(0, tileRange), sketchOrigin = ol.extent.getTopLeft(tileRangeExtent); goog.vec.Mat4.makeIdentity(transform); goog.vec.Mat4.translate(transform, frameState.size[0] / 2, frameState.size[1] / 2, 0); goog.vec.Mat4.scale(transform, tileResolution / resolution, tileResolution / resolution, 1); goog.vec.Mat4.rotateZ(transform, view2DState.rotation); goog.vec.Mat4.translate(transform, (sketchOrigin[0] - view2DState.center[0]) / tileResolution, (view2DState.center[1] - sketchOrigin[1]) / tileResolution, 0); if(!this.dirty_ && this.renderedResolution_ === tileResolution && ol.extent.equals(this.renderedExtent_, tileRangeExtent)) { return } if(goog.isNull(this.tileArchetype_)) { this.tileArchetype_ = (goog.dom.createElement(goog.dom.TagName.CANVAS)); this.tileArchetype_.width = tileSize[0]; this.tileArchetype_.height = tileSize[1] } var sketchCanvas = this.sketchCanvas_; var sketchWidth = tileSize[0] * tileRange.getWidth(); var sketchHeight = tileSize[1] * tileRange.getHeight(); var sketchTransform = this.sketchTransform_; var halfWidth = sketchWidth / 2; var halfHeight = sketchHeight / 2; goog.vec.Mat4.makeIdentity(sketchTransform); goog.vec.Mat4.translate(sketchTransform, halfWidth, halfHeight, 0); goog.vec.Mat4.scale(sketchTransform, 1 / tileResolution, -1 / tileResolution, 1); goog.vec.Mat4.translate(sketchTransform, -(sketchOrigin[0] + halfWidth * tileResolution), -(sketchOrigin[1] - halfHeight * tileResolution), 0); sketchCanvas.width = sketchWidth; sketchCanvas.height = sketchHeight; var sketchCanvasRenderer = new ol.renderer.canvas.VectorRenderer(sketchCanvas, sketchTransform, this.requestMapRenderFrame_); var finalCanvas = this.canvas_; finalCanvas.width = sketchWidth; finalCanvas.height = sketchHeight; var finalContext = this.context_; var featuresToRender = {}; var tilesToRender = {}; var tilesOnSketchCanvas = {}; var tileGutter = 15 * tileResolution; var tile, tileCoord, key, x, y; var types = this.geometryTypes_, numTypes = types.length, deferred = false, dirty = false, i, type, tileExtent, groups, group, j, numGroups, featuresObject, tileHasFeatures; fetchTileData:for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tileCoord = new ol.TileCoord(0, x, y); key = tileCoord.toString(); if(this.tileCache_.containsKey(key)) { tilesToRender[key] = tileCoord }else { if(idle) { tileExtent = tileGrid.getTileCoordExtent(tileCoord); tileExtent[0] -= tileGutter; tileExtent[1] += tileGutter; tileExtent[2] -= tileGutter; tileExtent[3] += tileGutter; tileHasFeatures = false; for(i = 0;i < numTypes;++i) { type = types[i]; if(!goog.isDef(featuresToRender[type])) { featuresToRender[type] = {} } featuresObject = layer.getFeaturesObjectForExtent(tileExtent, projection, type, this.requestMapRenderFrame_); if(goog.isNull(featuresObject)) { deferred = true; break fetchTileData } tileHasFeatures = tileHasFeatures || !goog.object.isEmpty(featuresObject); goog.object.extend(featuresToRender[type], featuresObject) } if(tileHasFeatures) { tilesOnSketchCanvas[key] = tileCoord } }else { dirty = true } } } } this.dirty_ = dirty; renderByGeometryType:for(type in featuresToRender) { groups = layer.groupFeaturesBySymbolizerLiteral(featuresToRender[type]); numGroups = groups.length; for(j = 0;j < numGroups;++j) { group = groups[j]; deferred = sketchCanvasRenderer.renderFeaturesByGeometryType((type), group[0], group[1], group[2]); if(deferred) { break renderByGeometryType } } } if(!deferred) { goog.object.extend(tilesToRender, tilesOnSketchCanvas) } var symbolSizes = sketchCanvasRenderer.getSymbolSizes(), maxSymbolSize = sketchCanvasRenderer.getMaxSymbolSize(), symbolOffsets = sketchCanvasRenderer.getSymbolOffsets(); for(key in tilesToRender) { tileCoord = tilesToRender[key]; if(this.tileCache_.containsKey(key)) { tile = (this.tileCache_.get(key)[0]) }else { tile = (this.tileArchetype_.cloneNode(false)); tile.getContext("2d").drawImage(sketchCanvas, (tileRange.minX - tileCoord.x) * tileSize[0], (tileCoord.y - tileRange.maxY) * tileSize[1]); this.tileCache_.set(key, [tile, symbolSizes, maxSymbolSize, symbolOffsets]) } finalContext.drawImage(tile, tileSize[0] * (tileCoord.x - tileRange.minX), tileSize[1] * (tileRange.maxY - tileCoord.y)) } this.renderedResolution_ = tileResolution; this.renderedExtent_ = tileRangeExtent; if(!this.pendingCachePrune_) { this.pendingCachePrune_ = true; frameState.postRenderFunctions.push(goog.bind(this.pruneTileCache_, this)) } }; ol.renderer.canvas.VectorLayer.prototype.pruneTileCache_ = function() { while(this.tileCache_.canExpireCache()) { this.tileCache_.pop() } this.pendingCachePrune_ = false }; ol.renderer.canvas.VectorLayer.TILECACHE_SIZE = 128; goog.provide("ol.renderer.canvas.Map"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.style"); goog.require("goog.vec.Mat4"); goog.require("ol.Size"); goog.require("ol.css"); goog.require("ol.layer.Image"); goog.require("ol.layer.Tile"); goog.require("ol.layer.Vector"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.ImageLayer"); goog.require("ol.renderer.canvas.TileLayer"); goog.require("ol.renderer.canvas.VectorLayer"); goog.require("ol.size"); ol.renderer.canvas.Map = function(container, map) { goog.base(this, container, map); this.canvas_ = goog.dom.createElement(goog.dom.TagName.CANVAS); this.canvas_.height = container.clientHeight; this.canvas_.width = container.clientWidth; this.canvas_.className = ol.css.CLASS_UNSELECTABLE; goog.dom.insertChildAt(container, this.canvas_, 0); this.renderedVisible_ = true; this.canvasSize_ = [container.clientHeight, container.clientWidth]; this.context_ = this.canvas_.getContext("2d") }; goog.inherits(ol.renderer.canvas.Map, ol.renderer.Map); ol.renderer.canvas.Map.prototype.createLayerRenderer = function(layer) { if(layer instanceof ol.layer.Image) { return new ol.renderer.canvas.ImageLayer(this, layer) }else { if(layer instanceof ol.layer.Tile) { return new ol.renderer.canvas.TileLayer(this, layer) }else { if(layer instanceof ol.layer.Vector) { return new ol.renderer.canvas.VectorLayer(this, layer) }else { goog.asserts.fail(); return null } } } }; ol.renderer.canvas.Map.prototype.getCanvas = function() { return this.canvas_ }; ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.canvas_, false); this.renderedVisible_ = false } return } var size = frameState.size; if(!ol.size.equals(this.canvasSize_, size)) { this.canvas_.width = size[0]; this.canvas_.height = size[1]; this.canvasSize_ = size } var context = this.context_; context.setTransform(1, 0, 0, 1, 0, 0); context.clearRect(0, 0, size[0], size[1]); this.calculateMatrices2D(frameState); var layerStates = frameState.layerStates; var layersArray = frameState.layersArray; var i, ii, image, layer, layerRenderer, layerState, transform; for(i = 0, ii = layersArray.length;i < ii;++i) { layer = layersArray[i]; layerRenderer = this.getLayerRenderer(layer); layerState = layerStates[goog.getUid(layer)]; if(!layerState.visible || !layerState.ready) { continue } layerRenderer.renderFrame(frameState, layerState); image = layerRenderer.getImage(); if(!goog.isNull(image)) { transform = layerRenderer.getTransform(); context.globalAlpha = layerState.opacity; if(frameState.view2DState.rotation === 0) { var dx = goog.vec.Mat4.getElement(transform, 0, 3); var dy = goog.vec.Mat4.getElement(transform, 1, 3); var dw = image.width * goog.vec.Mat4.getElement(transform, 0, 0); var dh = image.height * goog.vec.Mat4.getElement(transform, 1, 1); context.drawImage(image, 0, 0, image.width, image.height, dx, dy, dw, dh) }else { context.setTransform(goog.vec.Mat4.getElement(transform, 0, 0), goog.vec.Mat4.getElement(transform, 1, 0), goog.vec.Mat4.getElement(transform, 0, 1), goog.vec.Mat4.getElement(transform, 1, 1), goog.vec.Mat4.getElement(transform, 0, 3), goog.vec.Mat4.getElement(transform, 1, 3)); context.drawImage(image, 0, 0) } } } if(!this.renderedVisible_) { goog.style.setElementShown(this.canvas_, true); this.renderedVisible_ = true } this.scheduleRemoveUnusedLayerRenderers(frameState) }; goog.provide("ol.canvas"); goog.provide("ol.canvas.SUPPORTED"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); ol.canvas.SUPPORTED = function() { if(!("HTMLCanvasElement" in goog.global)) { return false } try { var canvas = (goog.dom.createElement(goog.dom.TagName.CANVAS)); return!goog.isNull(canvas.getContext("2d")) }catch(e) { return false } }(); goog.provide("ol.renderer.canvas.SUPPORTED"); goog.require("ol.canvas.SUPPORTED"); ol.renderer.canvas.SUPPORTED = ol.canvas.SUPPORTED; goog.provide("ol.dom"); goog.provide("ol.dom.BrowserFeature"); goog.require("goog.asserts"); goog.require("goog.vec.Mat4"); ol.dom.BrowserFeature = {CAN_USE_CSS_TRANSFORM:false, CAN_USE_CSS_TRANSFORM3D:true}; ol.dom.setTransform = function(element, value) { var style = element.style; style.WebkitTransform = value; style.MozTransform = value; style.OTransform = value; style.transform = value }; ol.dom.transformElement2D = function(element, transform, opt_precision) { var i; if(ol.dom.BrowserFeature.CAN_USE_CSS_TRANSFORM3D) { var value3D; if(goog.isDef(opt_precision)) { var strings3D = new Array(16); for(i = 0;i < 16;++i) { strings3D[i] = transform[i].toFixed(opt_precision) } value3D = strings3D.join(",") }else { value3D = transform.join(",") } ol.dom.setTransform(element, "matrix3d(" + value3D + ")") }else { if(ol.dom.BrowserFeature.CAN_USE_CSS_TRANSFORM) { var transform2D = [goog.vec.Mat4.getElement(transform, 0, 0), goog.vec.Mat4.getElement(transform, 1, 0), goog.vec.Mat4.getElement(transform, 0, 1), goog.vec.Mat4.getElement(transform, 1, 1), goog.vec.Mat4.getElement(transform, 0, 3), goog.vec.Mat4.getElement(transform, 1, 3)]; var value2D; if(goog.isDef(opt_precision)) { var strings2D = new Array(6); for(i = 0;i < 6;++i) { strings2D[i] = transform2D[i].toFixed(opt_precision) } value2D = strings2D.join(",") }else { value2D = transform2D.join(",") } ol.dom.setTransform(element, "matrix(" + value2D + ")") }else { var style = element.style; style.left = Math.round(goog.vec.Mat4.getElement(transform, 0, 3)) + "px"; style.top = Math.round(goog.vec.Mat4.getElement(transform, 1, 3)) + "px" } } }; goog.provide("ol.renderer.dom.Layer"); goog.require("goog.dom"); goog.require("ol.layer.Layer"); goog.require("ol.renderer.Layer"); ol.renderer.dom.Layer = function(mapRenderer, layer, target) { goog.base(this, mapRenderer, layer); this.target = target }; goog.inherits(ol.renderer.dom.Layer, ol.renderer.Layer); ol.renderer.dom.Layer.prototype.getTarget = function() { return this.target }; goog.provide("ol.renderer.dom.ImageLayer"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("ol.Image"); goog.require("ol.ImageState"); goog.require("ol.ViewHint"); goog.require("ol.dom"); goog.require("ol.layer.Image"); goog.require("ol.renderer.dom.Layer"); ol.renderer.dom.ImageLayer = function(mapRenderer, imageLayer) { var target = goog.dom.createElement(goog.dom.TagName.DIV); target.style.position = "absolute"; goog.base(this, mapRenderer, imageLayer, target); this.image_ = null; this.transform_ = goog.vec.Mat4.createNumberIdentity() }; goog.inherits(ol.renderer.dom.ImageLayer, ol.renderer.dom.Layer); ol.renderer.dom.ImageLayer.prototype.getImageLayer = function() { return(this.getLayer()) }; ol.renderer.dom.ImageLayer.prototype.renderFrame = function(frameState, layerState) { var view2DState = frameState.view2DState; var viewCenter = view2DState.center; var viewResolution = view2DState.resolution; var viewRotation = view2DState.rotation; var image = this.image_; var imageLayer = this.getImageLayer(); var imageSource = imageLayer.getImageSource(); var hints = frameState.viewHints; if(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) { var image_ = imageSource.getImage(frameState.extent, viewResolution, view2DState.projection); if(!goog.isNull(image_)) { var imageState = image_.getState(); if(imageState == ol.ImageState.IDLE) { goog.events.listenOnce(image_, goog.events.EventType.CHANGE, this.handleImageChange, false, this); image_.load() }else { if(imageState == ol.ImageState.LOADED) { image = image_ } } } } if(!goog.isNull(image)) { var imageExtent = image.getExtent(); var imageResolution = image.getResolution(); var transform = goog.vec.Mat4.createNumber(); goog.vec.Mat4.makeIdentity(transform); goog.vec.Mat4.translate(transform, frameState.size[0] / 2, frameState.size[1] / 2, 0); goog.vec.Mat4.rotateZ(transform, viewRotation); goog.vec.Mat4.scale(transform, imageResolution / viewResolution, imageResolution / viewResolution, 1); goog.vec.Mat4.translate(transform, (imageExtent[0] - viewCenter[0]) / imageResolution, (viewCenter[1] - imageExtent[3]) / imageResolution, 0); if(image != this.image_) { var imageElement = image.getImageElement(this); imageElement.style.maxWidth = "none"; imageElement.style.position = "absolute"; goog.dom.removeChildren(this.target); goog.dom.appendChild(this.target, imageElement); this.image_ = image } this.setTransform_(transform); this.updateAttributions(frameState.attributions, image.getAttributions()); this.updateLogos(frameState, imageSource) } }; ol.renderer.dom.ImageLayer.prototype.setTransform_ = function(transform) { if(!goog.vec.Mat4.equals(transform, this.transform_)) { ol.dom.transformElement2D(this.target, transform, 6); goog.vec.Mat4.setFromArray(this.transform_, transform) } }; goog.provide("ol.renderer.dom.TileLayer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.style"); goog.require("goog.vec.Mat4"); goog.require("ol.Coordinate"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.ViewHint"); goog.require("ol.dom"); goog.require("ol.extent"); goog.require("ol.layer.Tile"); goog.require("ol.renderer.dom.Layer"); goog.require("ol.tilegrid.TileGrid"); ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer) { var target = goog.dom.createElement(goog.dom.TagName.DIV); target.style.position = "absolute"; goog.base(this, mapRenderer, tileLayer, target); this.renderedVisible_ = true; this.renderedOpacity_ = 1; this.renderedRevision_ = 0; this.tileLayerZs_ = {} }; goog.inherits(ol.renderer.dom.TileLayer, ol.renderer.dom.Layer); ol.renderer.dom.TileLayer.prototype.getTileLayer = function() { return(this.getLayer()) }; ol.renderer.dom.TileLayer.prototype.renderFrame = function(frameState, layerState) { if(!layerState.visible) { if(this.renderedVisible_) { goog.style.setElementShown(this.target, false); this.renderedVisible_ = false } return } var view2DState = frameState.view2DState; var projection = view2DState.projection; var tileLayer = this.getTileLayer(); var tileSource = tileLayer.getTileSource(); var tileGrid = tileSource.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.getForProjection(projection) } var z = tileGrid.getZForResolution(view2DState.resolution); var tileResolution = tileGrid.getResolution(z); var center = view2DState.center; var extent; if(tileResolution == view2DState.resolution) { center = this.snapCenterToPixel(center, tileResolution, frameState.size); extent = ol.extent.getForView2DAndSize(center, tileResolution, view2DState.rotation, frameState.size) }else { extent = frameState.extent } var tileRange = tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution); var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; var getTileIfLoaded = this.createGetTileIfLoadedFunction(function(tile) { return!goog.isNull(tile) && tile.getState() == ol.TileState.LOADED }, tileSource, projection); var findLoadedTiles = goog.bind(tileSource.findLoadedTiles, tileSource, tilesToDrawByZ, getTileIfLoaded); var tmpExtent = ol.extent.createEmpty(); var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tile = tileSource.getTile(z, x, y, projection); tileState = tile.getState(); if(tileState == ol.TileState.LOADED) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue }else { if(tileState == ol.TileState.ERROR || tileState == ol.TileState.EMPTY) { continue } } fullyLoaded = tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, null, tmpTileRange, tmpExtent); if(!fullyLoaded) { childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent); if(!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange) } } } } var tileLayerZ, tileLayerZKey; if(this.renderedRevision_ != tileSource.getRevision()) { for(tileLayerZKey in this.tileLayerZs_) { tileLayerZ = this.tileLayerZs_[+tileLayerZKey]; goog.dom.removeNode(tileLayerZ.target) } this.tileLayerZs_ = {}; this.renderedRevision_ = tileSource.getRevision() } var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var newTileLayerZKeys = {}; var iz, iziz, tileCoordKey, tileCoordOrigin, tilesToDraw; for(iz = 0, iziz = zs.length;iz < iziz;++iz) { tileLayerZKey = zs[iz]; if(tileLayerZKey in this.tileLayerZs_) { tileLayerZ = this.tileLayerZs_[tileLayerZKey] }else { tileCoordOrigin = tileGrid.getTileCoordForCoordAndZ(center, tileLayerZKey); tileLayerZ = new ol.renderer.dom.TileLayerZ_(tileGrid, tileCoordOrigin); newTileLayerZKeys[tileLayerZKey] = true; this.tileLayerZs_[tileLayerZKey] = tileLayerZ } tilesToDraw = tilesToDrawByZ[tileLayerZKey]; for(tileCoordKey in tilesToDraw) { tileLayerZ.addTile(tilesToDraw[tileCoordKey]) } tileLayerZ.finalizeAddTiles() } var tileLayerZKeys = goog.array.map(goog.object.getKeys(this.tileLayerZs_), Number); goog.array.sort(tileLayerZKeys); var i, ii, j, origin, resolution; var transform = goog.vec.Mat4.createNumber(); for(i = 0, ii = tileLayerZKeys.length;i < ii;++i) { tileLayerZKey = tileLayerZKeys[i]; tileLayerZ = this.tileLayerZs_[tileLayerZKey]; if(!(tileLayerZKey in tilesToDrawByZ)) { goog.dom.removeNode(tileLayerZ.target); delete this.tileLayerZs_[tileLayerZKey]; continue } resolution = tileLayerZ.getResolution(); origin = tileLayerZ.getOrigin(); goog.vec.Mat4.makeIdentity(transform); goog.vec.Mat4.translate(transform, frameState.size[0] / 2, frameState.size[1] / 2, 0); goog.vec.Mat4.rotateZ(transform, view2DState.rotation); goog.vec.Mat4.scale(transform, resolution / view2DState.resolution, resolution / view2DState.resolution, 1); goog.vec.Mat4.translate(transform, (origin[0] - center[0]) / resolution, (center[1] - origin[1]) / resolution, 0); tileLayerZ.setTransform(transform); if(tileLayerZKey in newTileLayerZKeys) { for(j = tileLayerZKey - 1;j >= 0;--j) { if(j in this.tileLayerZs_) { goog.dom.insertSiblingAfter(tileLayerZ.target, this.tileLayerZs_[j].target); break } } if(j < 0) { goog.dom.insertChildAt(this.target, tileLayerZ.target, 0) } }else { if(!frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING]) { tileLayerZ.removeTilesOutsideExtent(extent, tmpTileRange) } } } if(layerState.opacity != this.renderedOpacity_) { goog.style.setOpacity(this.target, layerState.opacity); this.renderedOpacity_ = layerState.opacity } if(layerState.visible && !this.renderedVisible_) { goog.style.setElementShown(this.target, true); this.renderedVisible_ = true } this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange); this.manageTilePyramid(frameState, tileSource, tileGrid, projection, extent, z, tileLayer.getPreload()); this.scheduleExpireCache(frameState, tileSource); this.updateLogos(frameState, tileSource) }; ol.renderer.dom.TileLayerZ_ = function(tileGrid, tileCoordOrigin) { this.target = goog.dom.createElement(goog.dom.TagName.DIV); this.target.style.position = "absolute"; this.tileGrid_ = tileGrid; this.tileCoordOrigin_ = tileCoordOrigin; this.origin_ = ol.extent.getTopLeft(tileGrid.getTileCoordExtent(tileCoordOrigin)); this.resolution_ = tileGrid.getResolution(tileCoordOrigin.z); this.tiles_ = {}; this.documentFragment_ = null; this.transform_ = goog.vec.Mat4.createNumberIdentity() }; ol.renderer.dom.TileLayerZ_.prototype.addTile = function(tile) { var tileCoord = tile.tileCoord; goog.asserts.assert(tileCoord.z == this.tileCoordOrigin_.z); var tileCoordKey = tileCoord.toString(); if(tileCoordKey in this.tiles_) { return } var tileSize = this.tileGrid_.getTileSize(tileCoord.z); var image = tile.getImage(this); var style = image.style; style.maxWidth = "none"; style.position = "absolute"; style.left = (tileCoord.x - this.tileCoordOrigin_.x) * tileSize[0] + "px"; style.top = (this.tileCoordOrigin_.y - tileCoord.y) * tileSize[1] + "px"; if(goog.isNull(this.documentFragment_)) { this.documentFragment_ = document.createDocumentFragment() } goog.dom.appendChild(this.documentFragment_, image); this.tiles_[tileCoordKey] = tile }; ol.renderer.dom.TileLayerZ_.prototype.finalizeAddTiles = function() { if(!goog.isNull(this.documentFragment_)) { goog.dom.appendChild(this.target, this.documentFragment_); this.documentFragment_ = null } }; ol.renderer.dom.TileLayerZ_.prototype.getOrigin = function() { return this.origin_ }; ol.renderer.dom.TileLayerZ_.prototype.getResolution = function() { return this.resolution_ }; ol.renderer.dom.TileLayerZ_.prototype.removeTilesOutsideExtent = function(extent, opt_tileRange) { var tileRange = this.tileGrid_.getTileRangeForExtentAndZ(extent, this.tileCoordOrigin_.z, opt_tileRange); var tilesToRemove = []; var tile, tileCoordKey; for(tileCoordKey in this.tiles_) { tile = this.tiles_[tileCoordKey]; if(!tileRange.contains(tile.tileCoord)) { tilesToRemove.push(tile) } } var i, ii; for(i = 0, ii = tilesToRemove.length;i < ii;++i) { tile = tilesToRemove[i]; tileCoordKey = tile.tileCoord.toString(); goog.dom.removeNode(tile.getImage(this)); delete this.tiles_[tileCoordKey] } }; ol.renderer.dom.TileLayerZ_.prototype.setTransform = function(transform) { if(!goog.vec.Mat4.equals(transform, this.transform_)) { ol.dom.transformElement2D(this.target, transform, 6); goog.vec.Mat4.setFromArray(this.transform_, transform) } }; goog.provide("ol.renderer.dom.Map"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.style"); goog.require("ol.css"); goog.require("ol.layer.Image"); goog.require("ol.layer.Tile"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.dom.ImageLayer"); goog.require("ol.renderer.dom.TileLayer"); ol.renderer.dom.Map = function(container, map) { goog.base(this, container, map); this.layersPane_ = goog.dom.createElement(goog.dom.TagName.DIV); this.layersPane_.className = ol.css.CLASS_UNSELECTABLE; var style = this.layersPane_.style; style.position = "absolute"; style.width = "100%"; style.height = "100%"; goog.dom.insertChildAt(container, this.layersPane_, 0); this.renderedVisible_ = true }; goog.inherits(ol.renderer.dom.Map, ol.renderer.Map); ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) { var layerRenderer; if(layer instanceof ol.layer.Tile) { layerRenderer = new ol.renderer.dom.TileLayer(this, layer) }else { if(layer instanceof ol.layer.Image) { layerRenderer = new ol.renderer.dom.ImageLayer(this, layer) }else { goog.asserts.fail(); return null } } goog.dom.appendChild(this.layersPane_, layerRenderer.getTarget()); return layerRenderer }; ol.renderer.dom.Map.prototype.renderFrame = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.layersPane_, false); this.renderedVisible_ = false } return } var layerStates = frameState.layerStates; var layersArray = frameState.layersArray; var i, ii, layer, layerRenderer, layerState; for(i = 0, ii = layersArray.length;i < ii;++i) { layer = layersArray[i]; layerRenderer = this.getLayerRenderer(layer); layerState = frameState.layerStates[goog.getUid(layer)]; if(layerState.ready) { layerRenderer.renderFrame(frameState, layerState) } } var layerKey; for(layerKey in this.getLayerRenderers()) { if(!(layerKey in layerStates)) { layerRenderer = this.getLayerRendererByKey(layerKey); goog.dom.removeNode(layerRenderer.getTarget()) } } if(!this.renderedVisible_) { goog.style.setElementShown(this.layersPane_, true); this.renderedVisible_ = true } this.calculateMatrices2D(frameState); this.scheduleRemoveUnusedLayerRenderers(frameState) }; goog.provide("ol.renderer.dom.SUPPORTED"); ol.renderer.dom.SUPPORTED = true; goog.provide("goog.webgl"); goog.webgl.DEPTH_BUFFER_BIT = 256; goog.webgl.STENCIL_BUFFER_BIT = 1024; goog.webgl.COLOR_BUFFER_BIT = 16384; goog.webgl.POINTS = 0; goog.webgl.LINES = 1; goog.webgl.LINE_LOOP = 2; goog.webgl.LINE_STRIP = 3; goog.webgl.TRIANGLES = 4; goog.webgl.TRIANGLE_STRIP = 5; goog.webgl.TRIANGLE_FAN = 6; goog.webgl.ZERO = 0; goog.webgl.ONE = 1; goog.webgl.SRC_COLOR = 768; goog.webgl.ONE_MINUS_SRC_COLOR = 769; goog.webgl.SRC_ALPHA = 770; goog.webgl.ONE_MINUS_SRC_ALPHA = 771; goog.webgl.DST_ALPHA = 772; goog.webgl.ONE_MINUS_DST_ALPHA = 773; goog.webgl.DST_COLOR = 774; goog.webgl.ONE_MINUS_DST_COLOR = 775; goog.webgl.SRC_ALPHA_SATURATE = 776; goog.webgl.FUNC_ADD = 32774; goog.webgl.BLEND_EQUATION = 32777; goog.webgl.BLEND_EQUATION_RGB = 32777; goog.webgl.BLEND_EQUATION_ALPHA = 34877; goog.webgl.FUNC_SUBTRACT = 32778; goog.webgl.FUNC_REVERSE_SUBTRACT = 32779; goog.webgl.BLEND_DST_RGB = 32968; goog.webgl.BLEND_SRC_RGB = 32969; goog.webgl.BLEND_DST_ALPHA = 32970; goog.webgl.BLEND_SRC_ALPHA = 32971; goog.webgl.CONSTANT_COLOR = 32769; goog.webgl.ONE_MINUS_CONSTANT_COLOR = 32770; goog.webgl.CONSTANT_ALPHA = 32771; goog.webgl.ONE_MINUS_CONSTANT_ALPHA = 32772; goog.webgl.BLEND_COLOR = 32773; goog.webgl.ARRAY_BUFFER = 34962; goog.webgl.ELEMENT_ARRAY_BUFFER = 34963; goog.webgl.ARRAY_BUFFER_BINDING = 34964; goog.webgl.ELEMENT_ARRAY_BUFFER_BINDING = 34965; goog.webgl.STREAM_DRAW = 35040; goog.webgl.STATIC_DRAW = 35044; goog.webgl.DYNAMIC_DRAW = 35048; goog.webgl.BUFFER_SIZE = 34660; goog.webgl.BUFFER_USAGE = 34661; goog.webgl.CURRENT_VERTEX_ATTRIB = 34342; goog.webgl.FRONT = 1028; goog.webgl.BACK = 1029; goog.webgl.FRONT_AND_BACK = 1032; goog.webgl.CULL_FACE = 2884; goog.webgl.BLEND = 3042; goog.webgl.DITHER = 3024; goog.webgl.STENCIL_TEST = 2960; goog.webgl.DEPTH_TEST = 2929; goog.webgl.SCISSOR_TEST = 3089; goog.webgl.POLYGON_OFFSET_FILL = 32823; goog.webgl.SAMPLE_ALPHA_TO_COVERAGE = 32926; goog.webgl.SAMPLE_COVERAGE = 32928; goog.webgl.NO_ERROR = 0; goog.webgl.INVALID_ENUM = 1280; goog.webgl.INVALID_VALUE = 1281; goog.webgl.INVALID_OPERATION = 1282; goog.webgl.OUT_OF_MEMORY = 1285; goog.webgl.CW = 2304; goog.webgl.CCW = 2305; goog.webgl.LINE_WIDTH = 2849; goog.webgl.ALIASED_POINT_SIZE_RANGE = 33901; goog.webgl.ALIASED_LINE_WIDTH_RANGE = 33902; goog.webgl.CULL_FACE_MODE = 2885; goog.webgl.FRONT_FACE = 2886; goog.webgl.DEPTH_RANGE = 2928; goog.webgl.DEPTH_WRITEMASK = 2930; goog.webgl.DEPTH_CLEAR_VALUE = 2931; goog.webgl.DEPTH_FUNC = 2932; goog.webgl.STENCIL_CLEAR_VALUE = 2961; goog.webgl.STENCIL_FUNC = 2962; goog.webgl.STENCIL_FAIL = 2964; goog.webgl.STENCIL_PASS_DEPTH_FAIL = 2965; goog.webgl.STENCIL_PASS_DEPTH_PASS = 2966; goog.webgl.STENCIL_REF = 2967; goog.webgl.STENCIL_VALUE_MASK = 2963; goog.webgl.STENCIL_WRITEMASK = 2968; goog.webgl.STENCIL_BACK_FUNC = 34816; goog.webgl.STENCIL_BACK_FAIL = 34817; goog.webgl.STENCIL_BACK_PASS_DEPTH_FAIL = 34818; goog.webgl.STENCIL_BACK_PASS_DEPTH_PASS = 34819; goog.webgl.STENCIL_BACK_REF = 36003; goog.webgl.STENCIL_BACK_VALUE_MASK = 36004; goog.webgl.STENCIL_BACK_WRITEMASK = 36005; goog.webgl.VIEWPORT = 2978; goog.webgl.SCISSOR_BOX = 3088; goog.webgl.COLOR_CLEAR_VALUE = 3106; goog.webgl.COLOR_WRITEMASK = 3107; goog.webgl.UNPACK_ALIGNMENT = 3317; goog.webgl.PACK_ALIGNMENT = 3333; goog.webgl.MAX_TEXTURE_SIZE = 3379; goog.webgl.MAX_VIEWPORT_DIMS = 3386; goog.webgl.SUBPIXEL_BITS = 3408; goog.webgl.RED_BITS = 3410; goog.webgl.GREEN_BITS = 3411; goog.webgl.BLUE_BITS = 3412; goog.webgl.ALPHA_BITS = 3413; goog.webgl.DEPTH_BITS = 3414; goog.webgl.STENCIL_BITS = 3415; goog.webgl.POLYGON_OFFSET_UNITS = 10752; goog.webgl.POLYGON_OFFSET_FACTOR = 32824; goog.webgl.TEXTURE_BINDING_2D = 32873; goog.webgl.SAMPLE_BUFFERS = 32936; goog.webgl.SAMPLES = 32937; goog.webgl.SAMPLE_COVERAGE_VALUE = 32938; goog.webgl.SAMPLE_COVERAGE_INVERT = 32939; goog.webgl.COMPRESSED_TEXTURE_FORMATS = 34467; goog.webgl.DONT_CARE = 4352; goog.webgl.FASTEST = 4353; goog.webgl.NICEST = 4354; goog.webgl.GENERATE_MIPMAP_HINT = 33170; goog.webgl.BYTE = 5120; goog.webgl.UNSIGNED_BYTE = 5121; goog.webgl.SHORT = 5122; goog.webgl.UNSIGNED_SHORT = 5123; goog.webgl.INT = 5124; goog.webgl.UNSIGNED_INT = 5125; goog.webgl.FLOAT = 5126; goog.webgl.DEPTH_COMPONENT = 6402; goog.webgl.ALPHA = 6406; goog.webgl.RGB = 6407; goog.webgl.RGBA = 6408; goog.webgl.LUMINANCE = 6409; goog.webgl.LUMINANCE_ALPHA = 6410; goog.webgl.UNSIGNED_SHORT_4_4_4_4 = 32819; goog.webgl.UNSIGNED_SHORT_5_5_5_1 = 32820; goog.webgl.UNSIGNED_SHORT_5_6_5 = 33635; goog.webgl.FRAGMENT_SHADER = 35632; goog.webgl.VERTEX_SHADER = 35633; goog.webgl.MAX_VERTEX_ATTRIBS = 34921; goog.webgl.MAX_VERTEX_UNIFORM_VECTORS = 36347; goog.webgl.MAX_VARYING_VECTORS = 36348; goog.webgl.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661; goog.webgl.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660; goog.webgl.MAX_TEXTURE_IMAGE_UNITS = 34930; goog.webgl.MAX_FRAGMENT_UNIFORM_VECTORS = 36349; goog.webgl.SHADER_TYPE = 35663; goog.webgl.DELETE_STATUS = 35712; goog.webgl.LINK_STATUS = 35714; goog.webgl.VALIDATE_STATUS = 35715; goog.webgl.ATTACHED_SHADERS = 35717; goog.webgl.ACTIVE_UNIFORMS = 35718; goog.webgl.ACTIVE_ATTRIBUTES = 35721; goog.webgl.SHADING_LANGUAGE_VERSION = 35724; goog.webgl.CURRENT_PROGRAM = 35725; goog.webgl.NEVER = 512; goog.webgl.LESS = 513; goog.webgl.EQUAL = 514; goog.webgl.LEQUAL = 515; goog.webgl.GREATER = 516; goog.webgl.NOTEQUAL = 517; goog.webgl.GEQUAL = 518; goog.webgl.ALWAYS = 519; goog.webgl.KEEP = 7680; goog.webgl.REPLACE = 7681; goog.webgl.INCR = 7682; goog.webgl.DECR = 7683; goog.webgl.INVERT = 5386; goog.webgl.INCR_WRAP = 34055; goog.webgl.DECR_WRAP = 34056; goog.webgl.VENDOR = 7936; goog.webgl.RENDERER = 7937; goog.webgl.VERSION = 7938; goog.webgl.NEAREST = 9728; goog.webgl.LINEAR = 9729; goog.webgl.NEAREST_MIPMAP_NEAREST = 9984; goog.webgl.LINEAR_MIPMAP_NEAREST = 9985; goog.webgl.NEAREST_MIPMAP_LINEAR = 9986; goog.webgl.LINEAR_MIPMAP_LINEAR = 9987; goog.webgl.TEXTURE_MAG_FILTER = 10240; goog.webgl.TEXTURE_MIN_FILTER = 10241; goog.webgl.TEXTURE_WRAP_S = 10242; goog.webgl.TEXTURE_WRAP_T = 10243; goog.webgl.TEXTURE_2D = 3553; goog.webgl.TEXTURE = 5890; goog.webgl.TEXTURE_CUBE_MAP = 34067; goog.webgl.TEXTURE_BINDING_CUBE_MAP = 34068; goog.webgl.TEXTURE_CUBE_MAP_POSITIVE_X = 34069; goog.webgl.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; goog.webgl.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; goog.webgl.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; goog.webgl.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; goog.webgl.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; goog.webgl.MAX_CUBE_MAP_TEXTURE_SIZE = 34076; goog.webgl.TEXTURE0 = 33984; goog.webgl.TEXTURE1 = 33985; goog.webgl.TEXTURE2 = 33986; goog.webgl.TEXTURE3 = 33987; goog.webgl.TEXTURE4 = 33988; goog.webgl.TEXTURE5 = 33989; goog.webgl.TEXTURE6 = 33990; goog.webgl.TEXTURE7 = 33991; goog.webgl.TEXTURE8 = 33992; goog.webgl.TEXTURE9 = 33993; goog.webgl.TEXTURE10 = 33994; goog.webgl.TEXTURE11 = 33995; goog.webgl.TEXTURE12 = 33996; goog.webgl.TEXTURE13 = 33997; goog.webgl.TEXTURE14 = 33998; goog.webgl.TEXTURE15 = 33999; goog.webgl.TEXTURE16 = 34E3; goog.webgl.TEXTURE17 = 34001; goog.webgl.TEXTURE18 = 34002; goog.webgl.TEXTURE19 = 34003; goog.webgl.TEXTURE20 = 34004; goog.webgl.TEXTURE21 = 34005; goog.webgl.TEXTURE22 = 34006; goog.webgl.TEXTURE23 = 34007; goog.webgl.TEXTURE24 = 34008; goog.webgl.TEXTURE25 = 34009; goog.webgl.TEXTURE26 = 34010; goog.webgl.TEXTURE27 = 34011; goog.webgl.TEXTURE28 = 34012; goog.webgl.TEXTURE29 = 34013; goog.webgl.TEXTURE30 = 34014; goog.webgl.TEXTURE31 = 34015; goog.webgl.ACTIVE_TEXTURE = 34016; goog.webgl.REPEAT = 10497; goog.webgl.CLAMP_TO_EDGE = 33071; goog.webgl.MIRRORED_REPEAT = 33648; goog.webgl.FLOAT_VEC2 = 35664; goog.webgl.FLOAT_VEC3 = 35665; goog.webgl.FLOAT_VEC4 = 35666; goog.webgl.INT_VEC2 = 35667; goog.webgl.INT_VEC3 = 35668; goog.webgl.INT_VEC4 = 35669; goog.webgl.BOOL = 35670; goog.webgl.BOOL_VEC2 = 35671; goog.webgl.BOOL_VEC3 = 35672; goog.webgl.BOOL_VEC4 = 35673; goog.webgl.FLOAT_MAT2 = 35674; goog.webgl.FLOAT_MAT3 = 35675; goog.webgl.FLOAT_MAT4 = 35676; goog.webgl.SAMPLER_2D = 35678; goog.webgl.SAMPLER_CUBE = 35680; goog.webgl.VERTEX_ATTRIB_ARRAY_ENABLED = 34338; goog.webgl.VERTEX_ATTRIB_ARRAY_SIZE = 34339; goog.webgl.VERTEX_ATTRIB_ARRAY_STRIDE = 34340; goog.webgl.VERTEX_ATTRIB_ARRAY_TYPE = 34341; goog.webgl.VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922; goog.webgl.VERTEX_ATTRIB_ARRAY_POINTER = 34373; goog.webgl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975; goog.webgl.COMPILE_STATUS = 35713; goog.webgl.LOW_FLOAT = 36336; goog.webgl.MEDIUM_FLOAT = 36337; goog.webgl.HIGH_FLOAT = 36338; goog.webgl.LOW_INT = 36339; goog.webgl.MEDIUM_INT = 36340; goog.webgl.HIGH_INT = 36341; goog.webgl.FRAMEBUFFER = 36160; goog.webgl.RENDERBUFFER = 36161; goog.webgl.RGBA4 = 32854; goog.webgl.RGB5_A1 = 32855; goog.webgl.RGB565 = 36194; goog.webgl.DEPTH_COMPONENT16 = 33189; goog.webgl.STENCIL_INDEX = 6401; goog.webgl.STENCIL_INDEX8 = 36168; goog.webgl.DEPTH_STENCIL = 34041; goog.webgl.RENDERBUFFER_WIDTH = 36162; goog.webgl.RENDERBUFFER_HEIGHT = 36163; goog.webgl.RENDERBUFFER_INTERNAL_FORMAT = 36164; goog.webgl.RENDERBUFFER_RED_SIZE = 36176; goog.webgl.RENDERBUFFER_GREEN_SIZE = 36177; goog.webgl.RENDERBUFFER_BLUE_SIZE = 36178; goog.webgl.RENDERBUFFER_ALPHA_SIZE = 36179; goog.webgl.RENDERBUFFER_DEPTH_SIZE = 36180; goog.webgl.RENDERBUFFER_STENCIL_SIZE = 36181; goog.webgl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048; goog.webgl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049; goog.webgl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050; goog.webgl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051; goog.webgl.COLOR_ATTACHMENT0 = 36064; goog.webgl.DEPTH_ATTACHMENT = 36096; goog.webgl.STENCIL_ATTACHMENT = 36128; goog.webgl.DEPTH_STENCIL_ATTACHMENT = 33306; goog.webgl.NONE = 0; goog.webgl.FRAMEBUFFER_COMPLETE = 36053; goog.webgl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054; goog.webgl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055; goog.webgl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057; goog.webgl.FRAMEBUFFER_UNSUPPORTED = 36061; goog.webgl.FRAMEBUFFER_BINDING = 36006; goog.webgl.RENDERBUFFER_BINDING = 36007; goog.webgl.MAX_RENDERBUFFER_SIZE = 34024; goog.webgl.INVALID_FRAMEBUFFER_OPERATION = 1286; goog.webgl.UNPACK_FLIP_Y_WEBGL = 37440; goog.webgl.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441; goog.webgl.CONTEXT_LOST_WEBGL = 37442; goog.webgl.UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443; goog.webgl.BROWSER_DEFAULT_WEBGL = 37444; goog.webgl.HALF_FLOAT_OES = 36193; goog.webgl.FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723; goog.webgl.VERTEX_ARRAY_BINDING_OES = 34229; goog.webgl.UNMASKED_VENDOR_WEBGL = 37445; goog.webgl.UNMASKED_RENDERER_WEBGL = 37446; goog.webgl.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776; goog.webgl.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777; goog.webgl.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778; goog.webgl.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779; goog.webgl.TEXTURE_MAX_ANISOTROPY_EXT = 34046; goog.webgl.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047; goog.provide("ol.geom2"); goog.require("goog.asserts"); goog.require("ol.Extent"); ol.geom2.getExtent = function(buf, dim) { var extent = new Array(2 * dim); var extentIndex = 0; var i; for(i = 0;i < dim;++i) { extent[extentIndex++] = Infinity; extent[extentIndex++] = -Infinity } var bufArr = buf.getArray(); buf.forEachRange(function(start, stop) { var extentIndex, i, j; for(i = start;i < stop;i += dim) { extentIndex = 0; for(j = 0;j < dim;++j) { extent[extentIndex++] = Math.min(extent[2 * j], bufArr[i + j]); extent[extentIndex++] = Math.max(extent[2 * j + 1], bufArr[i + j]) } } }); return extent }; ol.geom2.packPoints = function(arr, offset, unpackedPoints, dim) { var n = unpackedPoints.length; var i, j, point; for(i = 0;i < n;++i) { point = unpackedPoints[i]; goog.asserts.assert(point.length == dim); for(j = 0;j < dim;++j) { arr[offset++] = point[j] } } return offset }; ol.geom2.unpackPoints = function(arr, offset, end, dim) { var unpackedPoints = new Array((end - offset) / dim); var i = 0; var j; for(j = offset;j < end;j += dim) { unpackedPoints[i++] = arr.slice(j, j + dim) } return unpackedPoints }; goog.provide("ol.structs.IntegerSet"); goog.require("goog.asserts"); ol.structs.IntegerSet = function(opt_arr) { this.arr_ = goog.isDef(opt_arr) ? opt_arr : []; if(goog.DEBUG) { this.assertValid() } }; ol.structs.IntegerSet.prototype.addRange = function(addStart, addStop) { goog.asserts.assert(addStart <= addStop); if(addStart == addStop) { return } var arr = this.arr_; var n = arr.length; var i; for(i = 0;i < n;i += 2) { if(addStart <= arr[i]) { arr.splice(i, 0, addStart, addStop); this.compactRanges_(); return } } arr.push(addStart, addStop); this.compactRanges_() }; ol.structs.IntegerSet.prototype.assertValid = function() { var arr = this.arr_; var n = arr.length; goog.asserts.assert(n % 2 === 0); var i; for(i = 1;i < n;++i) { goog.asserts.assert(arr[i] > arr[i - 1]) } }; ol.structs.IntegerSet.prototype.clear = function() { this.arr_.length = 0 }; ol.structs.IntegerSet.prototype.compactRanges_ = function() { var arr = this.arr_; var n = arr.length; var rangeIndex = 0; var i; for(i = 0;i < n;i += 2) { if(arr[i] == arr[i + 1]) { }else { if(rangeIndex > 0 && arr[rangeIndex - 2] <= arr[i] && arr[i] <= arr[rangeIndex - 1]) { arr[rangeIndex - 1] = Math.max(arr[rangeIndex - 1], arr[i + 1]) }else { arr[rangeIndex++] = arr[i]; arr[rangeIndex++] = arr[i + 1] } } } arr.length = rangeIndex }; ol.structs.IntegerSet.prototype.findRange = function(minSize) { goog.asserts.assert(minSize > 0); var arr = this.arr_; var n = arr.length; var bestIndex = -1; var bestSize, i, size; for(i = 0;i < n;i += 2) { size = arr[i + 1] - arr[i]; if(size == minSize) { return arr[i] }else { if(size > minSize && (bestIndex == -1 || size < bestSize)) { bestIndex = arr[i]; bestSize = size } } } return bestIndex }; ol.structs.IntegerSet.prototype.forEachRange = function(f, opt_obj) { var arr = this.arr_; var n = arr.length; var i; for(i = 0;i < n;i += 2) { f.call(opt_obj, arr[i], arr[i + 1]) } }; ol.structs.IntegerSet.prototype.forEachRangeInverted = function(start, stop, f, opt_obj) { goog.asserts.assert(start < stop); var arr = this.arr_; var n = arr.length; if(n === 0) { f.call(opt_obj, start, stop) }else { if(start < arr[0]) { f.call(opt_obj, start, arr[0]) } var i; for(i = 1;i < n - 1;i += 2) { f.call(opt_obj, arr[i], arr[i + 1]) } if(arr[n - 1] < stop) { f.call(opt_obj, arr[n - 1], stop) } } }; ol.structs.IntegerSet.prototype.getArray = function() { return this.arr_ }; ol.structs.IntegerSet.prototype.getFirst = function() { return this.arr_.length === 0 ? -1 : this.arr_[0] }; ol.structs.IntegerSet.prototype.getLast = function() { var n = this.arr_.length; return n === 0 ? -1 : this.arr_[n - 1] }; ol.structs.IntegerSet.prototype.getSize = function() { var arr = this.arr_; var n = arr.length; var size = 0; var i; for(i = 0;i < n;i += 2) { size += arr[i + 1] - arr[i] } return size }; ol.structs.IntegerSet.prototype.intersectsRange = function(start, stop) { goog.asserts.assert(start <= stop); if(start == stop) { return false }else { var arr = this.arr_; var n = arr.length; var i = 0; for(i = 0;i < n;i += 2) { if(arr[i] <= start && start < arr[i + 1] || arr[i] < stop && stop - 1 < arr[i + 1] || start < arr[i] && arr[i + 1] <= stop) { return true } } return false } }; ol.structs.IntegerSet.prototype.isEmpty = function() { return this.arr_.length === 0 }; ol.structs.IntegerSet.prototype.pack = function() { return this.arr_ }; ol.structs.IntegerSet.prototype.removeRange = function(removeStart, removeStop) { goog.asserts.assert(removeStart <= removeStop); var arr = this.arr_; var n = arr.length; var i; for(i = 0;i < n;i += 2) { if(removeStop < arr[i] || arr[i + 1] < removeStart) { continue }else { if(arr[i] > removeStop) { break } } if(removeStart < arr[i]) { if(removeStop == arr[i]) { break }else { if(removeStop < arr[i + 1]) { arr[i] = Math.max(arr[i], removeStop); break }else { arr.splice(i, 2); i -= 2; n -= 2 } } }else { if(removeStart == arr[i]) { if(removeStop < arr[i + 1]) { arr[i] = removeStop; break }else { if(removeStop == arr[i + 1]) { arr.splice(i, 2); break }else { arr.splice(i, 2); i -= 2; n -= 2 } } }else { if(removeStop < arr[i + 1]) { arr.splice(i, 2, arr[i], removeStart, removeStop, arr[i + 1]); break }else { if(removeStop == arr[i + 1]) { arr[i + 1] = removeStart; break }else { arr[i + 1] = removeStart } } } } } this.compactRanges_() }; if(goog.DEBUG) { ol.structs.IntegerSet.prototype.toString = function() { var arr = this.arr_; var n = arr.length; var result = new Array(n / 2); var resultIndex = 0; var i; for(i = 0;i < n;i += 2) { result[resultIndex++] = arr[i] + "-" + arr[i + 1] } return result.join(", ") } } ;goog.provide("ol.structs.Buffer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.webgl"); goog.require("ol.structs.IntegerSet"); ol.structs.BufferUsage = {STATIC_DRAW:goog.webgl.STATIC_DRAW, STREAM_DRAW:goog.webgl.STREAM_DRAW, DYNAMIC_DRAW:goog.webgl.DYNAMIC_DRAW}; ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS = goog.DEBUG; ol.structs.Buffer = function(opt_arr, opt_used, opt_usage) { this.arr_ = goog.isDef(opt_arr) ? opt_arr : []; this.dirtySets_ = []; this.freeSet_ = new ol.structs.IntegerSet; var used = goog.isDef(opt_used) ? opt_used : this.arr_.length; if(used < this.arr_.length) { this.freeSet_.addRange(used, this.arr_.length) } if(ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) { var arr = this.arr_; var n = arr.length; var i; for(i = used;i < n;++i) { arr[i] = NaN } } this.split32_ = null; this.split32DirtySet_ = null; this.usage_ = goog.isDef(opt_usage) ? opt_usage : ol.structs.BufferUsage.STATIC_DRAW }; ol.structs.Buffer.prototype.allocate = function(size) { goog.asserts.assert(size > 0); var offset = this.freeSet_.findRange(size); goog.asserts.assert(offset != -1); this.freeSet_.removeRange(offset, offset + size); return offset }; ol.structs.Buffer.prototype.add = function(values) { var size = values.length; var offset = this.allocate(size); var i; for(i = 0;i < size;++i) { this.arr_[offset + i] = values[i] } this.markDirty(size, offset); return offset }; ol.structs.Buffer.prototype.addDirtySet = function(dirtySet) { goog.asserts.assert(!goog.array.contains(this.dirtySets_, dirtySet)); this.dirtySets_.push(dirtySet) }; ol.structs.Buffer.prototype.forEachRange = function(f, opt_obj) { if(this.arr_.length !== 0) { this.freeSet_.forEachRangeInverted(0, this.arr_.length, f, opt_obj) } }; ol.structs.Buffer.prototype.getArray = function() { return this.arr_ }; ol.structs.Buffer.prototype.getCount = function() { return this.arr_.length - this.freeSet_.getSize() }; ol.structs.Buffer.prototype.getFreeSet = function() { return this.freeSet_ }; ol.structs.Buffer.prototype.getSplit32 = function() { var arr = this.arr_; var n = arr.length; if(goog.isNull(this.split32DirtySet_)) { this.split32DirtySet_ = new ol.structs.IntegerSet([0, n]); this.addDirtySet(this.split32DirtySet_) } if(goog.isNull(this.split32_)) { this.split32_ = new Float32Array(2 * n) } var split32 = this.split32_; this.split32DirtySet_.forEachRange(function(start, stop) { var doubleHigh, i, j, value; for(i = start, j = 2 * start;i < stop;++i, j += 2) { value = arr[i]; if(value < 0) { doubleHigh = 65536 * Math.floor(-value / 65536); split32[j] = -doubleHigh; split32[j + 1] = value + doubleHigh }else { doubleHigh = 65536 * Math.floor(value / 65536); split32[j] = doubleHigh; split32[j + 1] = value - doubleHigh } } }); this.split32DirtySet_.clear(); return this.split32_ }; ol.structs.Buffer.prototype.getUsage = function() { return this.usage_ }; ol.structs.Buffer.prototype.markDirty = function(size, offset) { var i, ii; for(i = 0, ii = this.dirtySets_.length;i < ii;++i) { this.dirtySets_[i].addRange(offset, offset + size) } }; ol.structs.Buffer.prototype.remove = function(size, offset) { var i, ii; this.freeSet_.addRange(offset, offset + size); for(i = 0, ii = this.dirtySets_.length;i < ii;++i) { this.dirtySets_[i].removeRange(offset, offset + size) } if(ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) { var arr = this.arr_; for(i = 0;i < size;++i) { arr[offset + i] = NaN } } }; ol.structs.Buffer.prototype.removeDirtySet = function(dirtySet) { var removed = goog.array.remove(this.dirtySets_, dirtySet); goog.asserts.assert(removed) }; ol.structs.Buffer.prototype.set = function(values, offset) { var arr = this.arr_; var n = values.length; goog.asserts.assert(0 <= offset && offset + n <= arr.length); var i; for(i = 0;i < n;++i) { arr[offset + i] = values[i] } this.markDirty(n, offset) }; goog.provide("ol.geom2.LineString"); goog.provide("ol.geom2.LineStringCollection"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.geom2"); goog.require("ol.structs.Buffer"); ol.geom2.LineString; ol.geom2.LineStringCollection = function(buf, opt_ranges, opt_dim) { this.buf = buf; this.ranges = goog.isDef(opt_ranges) ? opt_ranges : {}; this.dim = goog.isDef(opt_dim) ? opt_dim : 2 }; ol.geom2.LineStringCollection.createEmpty = function(capacity, opt_dim) { var dim = goog.isDef(opt_dim) ? opt_dim : 2; var buf = new ol.structs.Buffer(new Array(capacity * dim), 0); return new ol.geom2.LineStringCollection(buf, undefined, dim) }; ol.geom2.LineStringCollection.pack = function(unpackedLineStrings, opt_capacity, opt_dim) { var i; var n = unpackedLineStrings.length; var dim = goog.isDef(opt_dim) ? opt_dim : n > 0 ? unpackedLineStrings[0][0].length : 2; var capacity; if(goog.isDef(opt_capacity)) { capacity = opt_capacity }else { capacity = 0; for(i = 0;i < n;++i) { capacity += unpackedLineStrings[i].length } } capacity *= dim; var arr = new Array(capacity); var ranges = {}; var offset = 0; var start; for(i = 0;i < n;++i) { goog.asserts.assert(unpackedLineStrings[i].length > 1); start = offset; offset = ol.geom2.packPoints(arr, offset, unpackedLineStrings[i], dim); ranges[start + ""] = offset } goog.asserts.assert(offset <= capacity); var buf = new ol.structs.Buffer(arr, offset); return new ol.geom2.LineStringCollection(buf, ranges, dim) }; ol.geom2.LineStringCollection.prototype.add = function(lineString) { var n = lineString.length * this.dim; var offset = this.buf.allocate(n); goog.asserts.assert(offset != -1); this.ranges[offset + ""] = offset + n; ol.geom2.packPoints(this.buf.getArray(), offset, lineString, this.dim); return offset }; ol.geom2.LineStringCollection.prototype.get = function(offset) { goog.asserts.assert(offset in this.ranges); var range = this.ranges[offset + ""]; return ol.geom2.unpackPoints(this.buf.getArray(), offset, range, this.dim) }; ol.geom2.LineStringCollection.prototype.getCount = function() { return goog.object.getCount(this.ranges) }; ol.geom2.LineStringCollection.prototype.getExtent = function() { return ol.geom2.getExtent(this.buf, this.dim) }; ol.geom2.LineStringCollection.prototype.getIndices = function() { var dim = this.dim; var offsets = goog.array.map(goog.object.getKeys(this.ranges), Number); goog.array.sort(offsets); var n = offsets.length; var indices = []; var i, j, range, offset, stop; for(i = 0;i < n;++i) { offset = offsets[i]; range = this.ranges[offset]; stop = range / dim - 1; for(j = offset / dim;j < stop;++j) { indices.push(j, j + 1) } } return new Uint16Array(indices) }; ol.geom2.LineStringCollection.prototype.remove = function(offset) { goog.asserts.assert(offset in this.ranges); var range = this.ranges[offset + ""]; this.buf.remove(range - offset, offset); delete this.ranges[offset + ""] }; ol.geom2.LineStringCollection.prototype.set = function(offset, lineString) { var dim = this.dim; goog.asserts.assert(offset in this.ranges); var range = this.ranges[offset + ""]; if(lineString.length * dim == range - offset) { ol.geom2.packPoints(this.buf.getArray(), offset, lineString, dim); this.buf.markDirty(range - offset, offset); return offset }else { this.remove(offset); return this.add(lineString) } }; ol.geom2.LineStringCollection.prototype.unpack = function() { var dim = this.dim; var n = this.getCount(); var lineStrings = new Array(n); var i = 0; var offset, range; for(offset in this.ranges) { range = this.ranges[offset]; lineStrings[i++] = ol.geom2.unpackPoints(this.buf.getArray(), Number(offset), range, dim) } return lineStrings }; goog.provide("ol.geom2.Point"); goog.provide("ol.geom2.PointCollection"); goog.require("goog.asserts"); goog.require("ol.Extent"); goog.require("ol.geom2"); goog.require("ol.structs.Buffer"); ol.geom2.Point; ol.geom2.PointCollection = function(buf, opt_dim) { this.buf = buf; this.dim = goog.isDef(opt_dim) ? opt_dim : 2 }; ol.geom2.PointCollection.createEmpty = function(capacity, opt_dim) { var dim = goog.isDef(opt_dim) ? opt_dim : 2; var buf = new ol.structs.Buffer(new Array(capacity * dim), 0); return new ol.geom2.PointCollection(buf, dim) }; ol.geom2.PointCollection.pack = function(unpackedPoints, opt_capacity, opt_dim) { var n = unpackedPoints.length; var dim = goog.isDef(opt_dim) ? opt_dim : n > 0 ? unpackedPoints[0].length : 2; var capacity = goog.isDef(opt_capacity) ? opt_capacity : n * dim; goog.asserts.assert(capacity >= n * dim); var arr = new Array(capacity); ol.geom2.packPoints(arr, 0, unpackedPoints, dim); var buf = new ol.structs.Buffer(arr, n * dim); return new ol.geom2.PointCollection(buf, dim) }; ol.geom2.PointCollection.prototype.add = function(point) { goog.asserts.assert(point.length == this.dim); return this.buf.add(point) }; ol.geom2.PointCollection.prototype.get = function(offset) { var arr = this.buf.getArray(); var dim = this.dim; goog.asserts.assert(0 <= offset && offset + dim < arr.length); goog.asserts.assert(offset % dim === 0); return arr.slice(offset, offset + dim) }; ol.geom2.PointCollection.prototype.getCount = function() { return this.buf.getCount() / this.dim }; ol.geom2.PointCollection.prototype.getExtent = function() { return ol.geom2.getExtent(this.buf, this.dim) }; ol.geom2.PointCollection.prototype.remove = function(offset) { this.buf.remove(this.dim, offset) }; ol.geom2.PointCollection.prototype.set = function(offset, point) { this.buf.set(point, offset) }; ol.geom2.PointCollection.prototype.unpack = function() { var dim = this.dim; var n = this.getCount(); var points = new Array(n); var i = 0; var bufArr = this.buf.getArray(); this.buf.forEachRange(function(start, stop) { var j; for(j = start;j < stop;j += dim) { points[i++] = bufArr.slice(j, j + dim) } }); goog.asserts.assert(i == n); return points }; goog.provide("ol.source.Vector2"); goog.require("ol.geom2.LineStringCollection"); goog.require("ol.geom2.PointCollection"); goog.require("ol.source.Source"); ol.source.Vector2 = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, projection:options.projection}); this.pointCollections_ = goog.isDef(options.pointCollections) ? options.pointCollections : []; this.lineStringCollections_ = goog.isDef(options.lineStringCollections) ? options.lineStringCollections : [] }; goog.inherits(ol.source.Vector2, ol.source.Source); ol.source.Vector2.prototype.getLineStringCollections = function() { return this.lineStringCollections_ }; ol.source.Vector2.prototype.getPointCollections = function() { return this.pointCollections_ }; goog.provide("ol.layer.Vector2"); goog.require("ol.layer.Layer"); goog.require("ol.source.Vector2"); ol.layer.Vector2 = function(options) { goog.base(this, options) }; goog.inherits(ol.layer.Vector2, ol.layer.Layer); ol.layer.Vector2.prototype.getVectorSource = function() { return(this.getSource()) }; goog.provide("ol.vec.Mat4"); goog.require("goog.vec.Mat4"); ol.vec.Mat4.makeBrightness = function(matrix, value) { goog.vec.Mat4.makeTranslate(matrix, value, value, value); return matrix }; ol.vec.Mat4.makeContrast = function(matrix, value) { goog.vec.Mat4.makeScale(matrix, value, value, value); var translateValue = -0.5 * value + 0.5; goog.vec.Mat4.setColumnValues(matrix, 3, translateValue, translateValue, translateValue, 1); return matrix }; ol.vec.Mat4.makeHue = function(matrix, value) { var cosHue = Math.cos(value); var sinHue = Math.sin(value); var v00 = 0.213 + cosHue * 0.787 - sinHue * 0.213; var v01 = 0.715 - cosHue * 0.715 - sinHue * 0.715; var v02 = 0.072 - cosHue * 0.072 + sinHue * 0.928; var v03 = 0; var v10 = 0.213 - cosHue * 0.213 + sinHue * 0.143; var v11 = 0.715 + cosHue * 0.285 + sinHue * 0.14; var v12 = 0.072 - cosHue * 0.072 - sinHue * 0.283; var v13 = 0; var v20 = 0.213 - cosHue * 0.213 - sinHue * 0.787; var v21 = 0.715 - cosHue * 0.715 + sinHue * 0.715; var v22 = 0.072 + cosHue * 0.928 + sinHue * 0.072; var v23 = 0; var v30 = 0; var v31 = 0; var v32 = 0; var v33 = 1; goog.vec.Mat4.setFromValues(matrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return matrix }; ol.vec.Mat4.makeSaturation = function(matrix, value) { var v00 = 0.213 + 0.787 * value; var v01 = 0.715 - 0.715 * value; var v02 = 0.072 - 0.072 * value; var v03 = 0; var v10 = 0.213 - 0.213 * value; var v11 = 0.715 + 0.285 * value; var v12 = 0.072 - 0.072 * value; var v13 = 0; var v20 = 0.213 - 0.213 * value; var v21 = 0.715 - 0.715 * value; var v22 = 0.072 + 0.928 * value; var v23 = 0; var v30 = 0; var v31 = 0; var v32 = 0; var v33 = 1; goog.vec.Mat4.setFromValues(matrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return matrix }; ol.vec.Mat4.multVec2 = function(mat, vec, resultVec) { var x = vec[0], y = vec[1]; resultVec[0] = x * mat[0] + y * mat[4] + mat[12]; resultVec[1] = x * mat[1] + y * mat[5] + mat[13]; return resultVec }; goog.provide("ol.renderer.webgl.Layer"); goog.require("goog.vec.Mat4"); goog.require("goog.webgl"); goog.require("ol.FrameState"); goog.require("ol.layer.Layer"); goog.require("ol.renderer.Layer"); goog.require("ol.vec.Mat4"); ol.renderer.webgl.Layer = function(mapRenderer, layer) { goog.base(this, mapRenderer, layer); this.texture = null; this.framebuffer = null; this.framebufferDimension = undefined; this.texCoordMatrix = goog.vec.Mat4.createNumber(); this.projectionMatrix = goog.vec.Mat4.createNumberIdentity(); this.colorMatrix_ = goog.vec.Mat4.createFloat32(); this.brightness_ = undefined; this.brightnessMatrix_ = goog.vec.Mat4.createFloat32(); this.contrast_ = undefined; this.contrastMatrix_ = goog.vec.Mat4.createFloat32(); this.hue_ = undefined; this.hueMatrix_ = goog.vec.Mat4.createFloat32(); this.saturation_ = undefined; this.saturationMatrix_ = goog.vec.Mat4.createFloat32() }; goog.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer); ol.renderer.webgl.Layer.prototype.bindFramebuffer = function(frameState, framebufferDimension) { var mapRenderer = this.getWebGLMapRenderer(); var gl = mapRenderer.getGL(); if(!goog.isDef(this.framebufferDimension) || this.framebufferDimension != framebufferDimension) { frameState.postRenderFunctions.push(goog.partial(function(gl, framebuffer, texture) { if(!gl.isContextLost()) { gl.deleteFramebuffer(framebuffer); gl.deleteTexture(texture) } }, gl, this.framebuffer, this.texture)); var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, framebufferDimension, framebufferDimension, 0, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, null); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, goog.webgl.LINEAR); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, goog.webgl.LINEAR); var framebuffer = gl.createFramebuffer(); gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, framebuffer); gl.framebufferTexture2D(goog.webgl.FRAMEBUFFER, goog.webgl.COLOR_ATTACHMENT0, goog.webgl.TEXTURE_2D, texture, 0); this.texture = texture; this.framebuffer = framebuffer; this.framebufferDimension = framebufferDimension }else { gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, this.framebuffer) } }; ol.renderer.webgl.Layer.prototype.getColorMatrix = function(brightness, contrast, hue, saturation) { var colorMatrixDirty = false; if(brightness !== this.brightness_) { ol.vec.Mat4.makeBrightness(this.brightnessMatrix_, brightness); this.brightness_ = brightness; colorMatrixDirty = true } if(contrast !== this.contrast_) { ol.vec.Mat4.makeContrast(this.contrastMatrix_, contrast); this.contrast_ = contrast; colorMatrixDirty = true } if(hue !== this.hue_) { ol.vec.Mat4.makeHue(this.hueMatrix_, hue); this.hue_ = hue; colorMatrixDirty = true } if(saturation !== this.saturation_) { ol.vec.Mat4.makeSaturation(this.saturationMatrix_, saturation); this.saturation_ = saturation; colorMatrixDirty = true } if(colorMatrixDirty) { this.updateColorMatrix_() } return this.colorMatrix_ }; ol.renderer.webgl.Layer.prototype.getWebGLMapRenderer = function() { return(this.getMapRenderer()) }; ol.renderer.webgl.Layer.prototype.getTexCoordMatrix = function() { return this.texCoordMatrix }; ol.renderer.webgl.Layer.prototype.getTexture = function() { return this.texture }; ol.renderer.webgl.Layer.prototype.getProjectionMatrix = function() { return this.projectionMatrix }; ol.renderer.webgl.Layer.prototype.handleWebGLContextLost = function() { this.texture = null; this.framebuffer = null; this.framebufferDimension = undefined }; ol.renderer.webgl.Layer.prototype.updateColorMatrix_ = function() { var colorMatrix = this.colorMatrix_; goog.vec.Mat4.makeIdentity(colorMatrix); goog.vec.Mat4.multMat(colorMatrix, this.contrastMatrix_, colorMatrix); goog.vec.Mat4.multMat(colorMatrix, this.brightnessMatrix_, colorMatrix); goog.vec.Mat4.multMat(colorMatrix, this.saturationMatrix_, colorMatrix); goog.vec.Mat4.multMat(colorMatrix, this.hueMatrix_, colorMatrix) }; goog.provide("ol.renderer.webgl.ImageLayer"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("goog.webgl"); goog.require("ol.Coordinate"); goog.require("ol.Extent"); goog.require("ol.Image"); goog.require("ol.ImageState"); goog.require("ol.ViewHint"); goog.require("ol.layer.Image"); goog.require("ol.renderer.webgl.Layer"); ol.renderer.webgl.ImageLayer = function(mapRenderer, imageLayer) { goog.base(this, mapRenderer, imageLayer); this.image_ = null }; goog.inherits(ol.renderer.webgl.ImageLayer, ol.renderer.webgl.Layer); ol.renderer.webgl.ImageLayer.prototype.createTexture_ = function(image) { var imageElement = image.getImageElement(this); var gl = this.getWebGLMapRenderer().getGL(); var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, imageElement); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_S, goog.webgl.CLAMP_TO_EDGE); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_T, goog.webgl.CLAMP_TO_EDGE); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, goog.webgl.LINEAR); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, goog.webgl.LINEAR); return texture }; ol.renderer.webgl.ImageLayer.prototype.getImageLayer = function() { return(this.getLayer()) }; ol.renderer.webgl.ImageLayer.prototype.renderFrame = function(frameState, layerState) { var gl = this.getWebGLMapRenderer().getGL(); var view2DState = frameState.view2DState; var viewCenter = view2DState.center; var viewResolution = view2DState.resolution; var viewRotation = view2DState.rotation; var image = this.image_; var texture = this.texture; var imageLayer = this.getImageLayer(); var imageSource = imageLayer.getImageSource(); var hints = frameState.viewHints; if(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) { var image_ = imageSource.getImage(frameState.extent, viewResolution, view2DState.projection); if(!goog.isNull(image_)) { var imageState = image_.getState(); if(imageState == ol.ImageState.IDLE) { goog.events.listenOnce(image_, goog.events.EventType.CHANGE, this.handleImageChange, false, this); image_.load() }else { if(imageState == ol.ImageState.LOADED) { image = image_; texture = this.createTexture_(image_); if(!goog.isNull(this.texture)) { frameState.postRenderFunctions.push(goog.partial(function(gl, texture) { if(!gl.isContextLost()) { gl.deleteTexture(texture) } }, gl, this.texture)) } } } } } if(!goog.isNull(image)) { goog.asserts.assert(!goog.isNull(texture)); var canvas = this.getWebGLMapRenderer().getCanvas(); this.updateProjectionMatrix_(canvas.width, canvas.height, viewCenter, viewResolution, viewRotation, image.getExtent()); var texCoordMatrix = this.texCoordMatrix; goog.vec.Mat4.makeIdentity(texCoordMatrix); goog.vec.Mat4.scale(texCoordMatrix, 1, -1, 1); goog.vec.Mat4.translate(texCoordMatrix, 0, -1, 0); this.image_ = image; this.texture = texture; this.updateAttributions(frameState.attributions, image.getAttributions()); this.updateLogos(frameState, imageSource) } }; ol.renderer.webgl.ImageLayer.prototype.updateProjectionMatrix_ = function(canvasWidth, canvasHeight, viewCenter, viewResolution, viewRotation, imageExtent) { var canvasExtentWidth = canvasWidth * viewResolution; var canvasExtentHeight = canvasHeight * viewResolution; var projectionMatrix = this.projectionMatrix; goog.vec.Mat4.makeIdentity(projectionMatrix); goog.vec.Mat4.scale(projectionMatrix, 2 / canvasExtentWidth, 2 / canvasExtentHeight, 1); goog.vec.Mat4.rotateZ(projectionMatrix, -viewRotation); goog.vec.Mat4.translate(projectionMatrix, imageExtent[0] - viewCenter[0], imageExtent[2] - viewCenter[1], 0); goog.vec.Mat4.scale(projectionMatrix, (imageExtent[1] - imageExtent[0]) / 2, (imageExtent[3] - imageExtent[2]) / 2, 1); goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0) }; goog.provide("ol.webgl"); goog.provide("ol.webgl.SUPPORTED"); goog.provide("ol.webgl.WebGLContextEventType"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); ol.webgl.CONTEXT_IDS_ = ["webgl", "webgl-experimental", "webkit-3d", "moz-webgl"]; ol.webgl.WebGLContextEventType = {LOST:"webglcontextlost", RESTORED:"webglcontextrestored"}; ol.webgl.getContext = function(canvas, opt_attributes) { var context, i, ii = ol.webgl.CONTEXT_IDS_.length; for(i = 0;i < ii;++i) { try { context = canvas.getContext(ol.webgl.CONTEXT_IDS_[i], opt_attributes); if(!goog.isNull(context)) { return context } }catch(e) { } } return null }; ol.webgl.SUPPORTED = function() { if(!("WebGLRenderingContext" in goog.global)) { return false } try { var canvas = goog.dom.createElement(goog.dom.TagName.CANVAS); return!goog.isNull(ol.webgl.getContext(canvas)) }catch(e) { return false } }(); goog.provide("ol.webgl.shader"); goog.require("goog.functions"); goog.require("goog.webgl"); goog.require("ol.webgl"); ol.webgl.Shader = function(source) { this.source_ = source }; ol.webgl.Shader.prototype.getType = goog.abstractMethod; ol.webgl.Shader.prototype.getSource = function() { return this.source_ }; ol.webgl.Shader.prototype.isAnimated = goog.functions.FALSE; ol.webgl.shader.Fragment = function(source) { goog.base(this, source) }; goog.inherits(ol.webgl.shader.Fragment, ol.webgl.Shader); ol.webgl.shader.Fragment.prototype.getType = function() { return goog.webgl.FRAGMENT_SHADER }; ol.webgl.shader.Vertex = function(source) { goog.base(this, source) }; goog.inherits(ol.webgl.shader.Vertex, ol.webgl.Shader); ol.webgl.shader.Vertex.prototype.getType = function() { return goog.webgl.VERTEX_SHADER }; goog.provide("ol.renderer.webgl.tilelayer.shader"); goog.require("ol.webgl.shader"); ol.renderer.webgl.tilelayer.shader.Fragment = function() { goog.base(this, ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE) }; goog.inherits(ol.renderer.webgl.tilelayer.shader.Fragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Fragment); ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE = "precision mediump float;\n//! NAMESPACE\x3dol.renderer.webgl.tilelayer.shader\n//! CLASS\x3dol.renderer.webgl.tilelayer.shader.\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor \x3d texture2D(u_texture, v_texCoord);\n}\n\n"; ol.renderer.webgl.tilelayer.shader.Fragment.OPTIMIZED_SOURCE = "precision mediump float;varying vec2 a;uniform sampler2D c;void main(){gl_FragColor\x3dtexture2D(c,a);}"; ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE : ol.renderer.webgl.tilelayer.shader.Fragment.OPTIMIZED_SOURCE; ol.renderer.webgl.tilelayer.shader.Vertex = function() { goog.base(this, ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE) }; goog.inherits(ol.renderer.webgl.tilelayer.shader.Vertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Vertex); ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE = "//! NAMESPACE\x3dol.renderer.webgl.tilelayer.shader\n//! CLASS\x3dol.renderer.webgl.tilelayer.shader.\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nuniform vec4 u_tileOffset;\n\nvoid main(void) {\n gl_Position \x3d vec4(a_position * u_tileOffset.xy + u_tileOffset.zw, 0., 1.);\n v_texCoord \x3d a_texCoord;\n}\n\n\n"; ol.renderer.webgl.tilelayer.shader.Vertex.OPTIMIZED_SOURCE = "varying vec2 a;attribute vec2 c,d;uniform vec4 b;void main(){gl_Position\x3dvec4(c*b.xy+b.zw,0,1);a\x3dd;}"; ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE : ol.renderer.webgl.tilelayer.shader.Vertex.OPTIMIZED_SOURCE; ol.renderer.webgl.tilelayer.shader.Locations = function(gl, program) { this.u_tileOffset = gl.getUniformLocation(program, goog.DEBUG ? "u_tileOffset" : "b"); this.u_texture = gl.getUniformLocation(program, goog.DEBUG ? "u_texture" : "c"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "c"); this.a_texCoord = gl.getAttribLocation(program, goog.DEBUG ? "a_texCoord" : "d") }; goog.provide("ol.renderer.webgl.TileLayer"); goog.require("goog.array"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("goog.vec.Vec4"); goog.require("goog.webgl"); goog.require("ol.Tile"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.extent"); goog.require("ol.layer.Tile"); goog.require("ol.math"); goog.require("ol.renderer.webgl.Layer"); goog.require("ol.renderer.webgl.tilelayer.shader"); goog.require("ol.structs.Buffer"); ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) { goog.base(this, mapRenderer, tileLayer); this.fragmentShader_ = ol.renderer.webgl.tilelayer.shader.Fragment.getInstance(); this.vertexShader_ = ol.renderer.webgl.tilelayer.shader.Vertex.getInstance(); this.locations_ = null; this.arrayBuffer_ = new ol.structs.Buffer([0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0]); this.renderedTileRange_ = null; this.renderedFramebufferExtent_ = null; this.renderedRevision_ = -1 }; goog.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer); ol.renderer.webgl.TileLayer.prototype.disposeInternal = function() { var mapRenderer = this.getWebGLMapRenderer(); mapRenderer.deleteBuffer(this.arrayBuffer_); goog.base(this, "disposeInternal") }; ol.renderer.webgl.TileLayer.prototype.getTileLayer = function() { return(this.getLayer()) }; ol.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() { goog.base(this, "handleWebGLContextLost"); this.locations_ = null }; ol.renderer.webgl.TileLayer.prototype.renderFrame = function(frameState, layerState) { var mapRenderer = this.getWebGLMapRenderer(); var gl = mapRenderer.getGL(); var view2DState = frameState.view2DState; var projection = view2DState.projection; var tileLayer = this.getTileLayer(); var tileSource = tileLayer.getTileSource(); var tileGrid = tileSource.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.getForProjection(projection) } var z = tileGrid.getZForResolution(view2DState.resolution); var tileResolution = tileGrid.getResolution(z); var center = view2DState.center; var extent; if(tileResolution == view2DState.resolution) { center = this.snapCenterToPixel(center, tileResolution, frameState.size); extent = ol.extent.getForView2DAndSize(center, tileResolution, view2DState.rotation, frameState.size) }else { extent = frameState.extent } var tileRange = tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution); var framebufferExtent; if(!goog.isNull(this.renderedTileRange_) && this.renderedTileRange_.equals(tileRange) && this.renderedRevision_ == tileSource.getRevision()) { framebufferExtent = this.renderedFramebufferExtent_ }else { var tileRangeSize = tileRange.getSize(); var tileSize = tileGrid.getTileSize(z); var maxDimension = Math.max(tileRangeSize[0] * tileSize[0], tileRangeSize[1] * tileSize[1]); var framebufferDimension = ol.math.roundUpToPowerOfTwo(maxDimension); var framebufferExtentDimension = tileResolution * framebufferDimension; var origin = tileGrid.getOrigin(z); var minX = origin[0] + tileRange.minX * tileSize[0] * tileResolution; var minY = origin[1] + tileRange.minY * tileSize[1] * tileResolution; framebufferExtent = [minX, minX + framebufferExtentDimension, minY, minY + framebufferExtentDimension]; this.bindFramebuffer(frameState, framebufferDimension); gl.viewport(0, 0, framebufferDimension, framebufferDimension); gl.clearColor(0, 0, 0, 0); gl.clear(goog.webgl.COLOR_BUFFER_BIT); gl.disable(goog.webgl.BLEND); var program = mapRenderer.getProgram(this.fragmentShader_, this.vertexShader_); gl.useProgram(program); if(goog.isNull(this.locations_)) { this.locations_ = new ol.renderer.webgl.tilelayer.shader.Locations(gl, program) } mapRenderer.bindBuffer(goog.webgl.ARRAY_BUFFER, this.arrayBuffer_); gl.enableVertexAttribArray(this.locations_.a_position); gl.vertexAttribPointer(this.locations_.a_position, 2, goog.webgl.FLOAT, false, 16, 0); gl.enableVertexAttribArray(this.locations_.a_texCoord); gl.vertexAttribPointer(this.locations_.a_texCoord, 2, goog.webgl.FLOAT, false, 16, 8); gl.uniform1i(this.locations_.u_texture, 0); var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; var getTileIfLoaded = this.createGetTileIfLoadedFunction(function(tile) { return!goog.isNull(tile) && tile.getState() == ol.TileState.LOADED && mapRenderer.isTileTextureLoaded(tile) }, tileSource, projection); var findLoadedTiles = goog.bind(tileSource.findLoadedTiles, tileSource, tilesToDrawByZ, getTileIfLoaded); var allTilesLoaded = true; var tmpExtent = ol.extent.createEmpty(); var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tile = tileSource.getTile(z, x, y, projection); tileState = tile.getState(); if(tileState == ol.TileState.LOADED) { if(mapRenderer.isTileTextureLoaded(tile)) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue } }else { if(tileState == ol.TileState.ERROR || tileState == ol.TileState.EMPTY) { continue } } allTilesLoaded = false; fullyLoaded = tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, null, tmpTileRange, tmpExtent); if(!fullyLoaded) { childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent); if(!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange) } } } } var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var u_tileOffset = goog.vec.Vec4.createFloat32(); var i, ii, sx, sy, tileExtent, tileKey, tilesToDraw, tx, ty; for(i = 0, ii = zs.length;i < ii;++i) { tilesToDraw = tilesToDrawByZ[zs[i]]; for(tileKey in tilesToDraw) { tile = tilesToDraw[tileKey]; tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); sx = 2 * (tileExtent[1] - tileExtent[0]) / framebufferExtentDimension; sy = 2 * (tileExtent[3] - tileExtent[2]) / framebufferExtentDimension; tx = 2 * (tileExtent[0] - framebufferExtent[0]) / framebufferExtentDimension - 1; ty = 2 * (tileExtent[2] - framebufferExtent[2]) / framebufferExtentDimension - 1; goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty); gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset); mapRenderer.bindTileTexture(tile, goog.webgl.LINEAR, goog.webgl.LINEAR); gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4) } } if(allTilesLoaded) { this.renderedTileRange_ = tileRange; this.renderedFramebufferExtent_ = framebufferExtent; this.renderedRevision_ = tileSource.getRevision() }else { this.renderedTileRange_ = null; this.renderedFramebufferExtent_ = null; this.renderedRevision_ = -1; frameState.animate = true } } this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange); var tileTextureQueue = mapRenderer.getTileTextureQueue(); this.manageTilePyramid(frameState, tileSource, tileGrid, projection, extent, z, tileLayer.getPreload(), function(tile) { if(tile.getState() == ol.TileState.LOADED && !mapRenderer.isTileTextureLoaded(tile) && !tileTextureQueue.isKeyQueued(tile.getKey())) { tileTextureQueue.enqueue([tile, tileGrid.getTileCoordCenter(tile.tileCoord), tileGrid.getResolution(tile.tileCoord.z)]) } }, this); this.scheduleExpireCache(frameState, tileSource); this.updateLogos(frameState, tileSource); var texCoordMatrix = this.texCoordMatrix; goog.vec.Mat4.makeIdentity(texCoordMatrix); goog.vec.Mat4.translate(texCoordMatrix, (center[0] - framebufferExtent[0]) / (framebufferExtent[1] - framebufferExtent[0]), (center[1] - framebufferExtent[2]) / (framebufferExtent[3] - framebufferExtent[2]), 0); goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation); goog.vec.Mat4.scale(texCoordMatrix, frameState.size[0] * view2DState.resolution / (framebufferExtent[1] - framebufferExtent[0]), frameState.size[1] * view2DState.resolution / (framebufferExtent[3] - framebufferExtent[2]), 1); goog.vec.Mat4.translate(texCoordMatrix, -0.5, -0.5, 0) }; goog.provide("ol.renderer.webgl.vectorlayer2.shader.LineStringCollection"); goog.require("ol.webgl.shader"); ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment = function() { goog.base(this, ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.SOURCE) }; goog.inherits(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment); ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.DEBUG_SOURCE = "precision mediump float;\n//! NAMESPACE\x3dol.renderer.webgl.vectorlayer2.shader.LineStringCollection\n//! CLASS\x3dol.renderer.webgl.vectorlayer2.shader.LineStringCollection\n\n\n//! FRAGMENT\nuniform vec4 u_color;\n\nvoid main(void) {\n gl_FragColor \x3d u_color;\n}\n\n"; ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.OPTIMIZED_SOURCE = "precision mediump float;uniform vec4 b;void main(){gl_FragColor\x3db;}"; ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.DEBUG_SOURCE : ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.OPTIMIZED_SOURCE; ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex = function() { goog.base(this, ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.SOURCE) }; goog.inherits(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex); ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.DEBUG_SOURCE = "//! NAMESPACE\x3dol.renderer.webgl.vectorlayer2.shader.LineStringCollection\n//! CLASS\x3dol.renderer.webgl.vectorlayer2.shader.LineStringCollection\n\n\n//! VERTEX\nattribute vec2 a_position;\nuniform mat4 u_modelViewMatrix;\n\nvoid main(void) {\n gl_Position \x3d u_modelViewMatrix * vec4(a_position, 0., 1.);\n}\n\n\n"; ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.OPTIMIZED_SOURCE = "attribute vec2 b;uniform mat4 a;void main(){gl_Position\x3da*vec4(b,0,1);}"; ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.DEBUG_SOURCE : ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.OPTIMIZED_SOURCE; ol.renderer.webgl.vectorlayer2.shader.LineStringCollection.Locations = function(gl, program) { this.u_modelViewMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_modelViewMatrix" : "a"); this.u_color = gl.getUniformLocation(program, goog.DEBUG ? "u_color" : "b"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "b") }; goog.provide("ol.renderer.webgl.vectorlayer2.shader.PointCollection"); goog.require("ol.webgl.shader"); ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment = function() { goog.base(this, ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.SOURCE) }; goog.inherits(ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment); ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.DEBUG_SOURCE = "precision mediump float;\n//! NAMESPACE\x3dol.renderer.webgl.vectorlayer2.shader.PointCollection\n//! CLASS\x3dol.renderer.webgl.vectorlayer2.shader.PointCollection\n\n\n//! FRAGMENT\nuniform vec4 u_color;\n\nvoid main(void) {\n gl_FragColor \x3d u_color;\n}\n\n"; ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.OPTIMIZED_SOURCE = "precision mediump float;uniform vec4 c;void main(){gl_FragColor\x3dc;}"; ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.DEBUG_SOURCE : ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.OPTIMIZED_SOURCE; ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex = function() { goog.base(this, ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.SOURCE) }; goog.inherits(ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex); ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.DEBUG_SOURCE = "//! NAMESPACE\x3dol.renderer.webgl.vectorlayer2.shader.PointCollection\n//! CLASS\x3dol.renderer.webgl.vectorlayer2.shader.PointCollection\n\n\n//! VERTEX\nattribute vec2 a_position;\nuniform float u_pointSize;\nuniform mat4 u_modelViewMatrix;\n\nvoid main(void) {\n gl_Position \x3d u_modelViewMatrix * vec4(a_position, 0., 1.);\n gl_PointSize \x3d u_pointSize;\n}\n\n\n"; ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.OPTIMIZED_SOURCE = "attribute vec2 c;uniform float a;uniform mat4 b;void main(){gl_Position\x3db*vec4(c,0,1);gl_PointSize\x3da;}"; ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.DEBUG_SOURCE : ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.OPTIMIZED_SOURCE; ol.renderer.webgl.vectorlayer2.shader.PointCollection.Locations = function(gl, program) { this.u_pointSize = gl.getUniformLocation(program, goog.DEBUG ? "u_pointSize" : "a"); this.u_modelViewMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_modelViewMatrix" : "b"); this.u_color = gl.getUniformLocation(program, goog.DEBUG ? "u_color" : "c"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "c") }; goog.provide("ol.renderer.webgl.VectorLayer2"); goog.require("goog.vec.Mat4"); goog.require("goog.webgl"); goog.require("ol.math"); goog.require("ol.renderer.webgl.Layer"); goog.require("ol.renderer.webgl.vectorlayer2.shader.LineStringCollection"); goog.require("ol.renderer.webgl.vectorlayer2.shader.PointCollection"); ol.renderer.webgl.VectorLayer2 = function(mapRenderer, vectorLayer2) { goog.base(this, mapRenderer, vectorLayer2); goog.vec.Mat4.makeIdentity(this.projectionMatrix); this.modelViewMatrix_ = goog.vec.Mat4.createNumberIdentity(); this.lineStringCollectionLocations_ = null; this.pointCollectionLocations_ = null }; goog.inherits(ol.renderer.webgl.VectorLayer2, ol.renderer.webgl.Layer); ol.renderer.webgl.VectorLayer2.prototype.getVectorLayer = function() { return(this.getLayer()) }; ol.renderer.webgl.VectorLayer2.prototype.handleWebGLContextLost = function() { goog.base(this, "handleWebGLContextLost"); this.pointCollectionLocations_ = null }; ol.renderer.webgl.VectorLayer2.prototype.renderFrame = function(frameState, layerState) { var mapRenderer = this.getWebGLMapRenderer(); var gl = mapRenderer.getGL(); var view2DState = frameState.view2DState; var vectorLayer = this.getVectorLayer(); var vectorSource = vectorLayer.getVectorSource(); var size = frameState.size; var framebufferDimension = ol.math.roundUpToPowerOfTwo(Math.max(size[0], size[1])); this.bindFramebuffer(frameState, framebufferDimension); gl.viewport(0, 0, framebufferDimension, framebufferDimension); gl.clearColor(0, 0, 0, 0); gl.clear(goog.webgl.COLOR_BUFFER_BIT); gl.enable(goog.webgl.BLEND); goog.vec.Mat4.makeIdentity(this.modelViewMatrix_); if(view2DState.rotation !== 0) { goog.vec.Mat4.rotateZ(this.modelViewMatrix_, -view2DState.rotation) } goog.vec.Mat4.scale(this.modelViewMatrix_, 2 / (framebufferDimension * view2DState.resolution), 2 / (framebufferDimension * view2DState.resolution), 1); goog.vec.Mat4.translate(this.modelViewMatrix_, -view2DState.center[0], -view2DState.center[1], 0); var pointCollections = vectorSource.getPointCollections(); if(pointCollections.length > 0) { this.renderPointCollections(pointCollections) } var lineStringCollections = vectorSource.getLineStringCollections(); if(lineStringCollections.length > 0) { this.renderLineStringCollections(lineStringCollections) } goog.vec.Mat4.makeIdentity(this.texCoordMatrix); goog.vec.Mat4.translate(this.texCoordMatrix, 0.5, 0.5, 0); goog.vec.Mat4.scale(this.texCoordMatrix, size[0] / framebufferDimension, size[1] / framebufferDimension, 1); goog.vec.Mat4.translate(this.texCoordMatrix, -0.5, -0.5, 0) }; ol.renderer.webgl.VectorLayer2.prototype.renderLineStringCollections = function(lineStringCollections) { var mapRenderer = this.getWebGLMapRenderer(); var gl = mapRenderer.getGL(); var fragmentShader = ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.getInstance(); var vertexShader = ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.getInstance(); var program = mapRenderer.getProgram(fragmentShader, vertexShader); gl.useProgram(program); if(goog.isNull(this.lineStringCollectionLocations_)) { this.lineStringCollectionLocations_ = new ol.renderer.webgl.vectorlayer2.shader.LineStringCollection.Locations(gl, program) } gl.uniformMatrix4fv(this.lineStringCollectionLocations_.u_modelViewMatrix, false, this.modelViewMatrix_); var buf, dim, i, indexBuffer, indices, lineStringCollection; for(i = 0;i < lineStringCollections.length;++i) { lineStringCollection = lineStringCollections[i]; buf = lineStringCollection.buf; dim = lineStringCollection.dim; mapRenderer.bindBuffer(goog.webgl.ARRAY_BUFFER, buf); indices = lineStringCollection.getIndices(); indexBuffer = gl.createBuffer(); gl.bindBuffer(goog.webgl.ELEMENT_ARRAY_BUFFER, indexBuffer); gl.bufferData(goog.webgl.ELEMENT_ARRAY_BUFFER, indices, goog.webgl.DYNAMIC_DRAW); gl.enableVertexAttribArray(this.lineStringCollectionLocations_.a_position); gl.vertexAttribPointer(this.lineStringCollectionLocations_.a_position, 2, goog.webgl.FLOAT, false, 4 * dim, 0); gl.uniform4fv(this.lineStringCollectionLocations_.u_color, [1, 1, 0, 0.75]); gl.drawElements(goog.webgl.LINES, indices.length, goog.webgl.UNSIGNED_SHORT, 0); gl.bindBuffer(goog.webgl.ELEMENT_ARRAY_BUFFER, null); gl.deleteBuffer(indexBuffer) } }; ol.renderer.webgl.VectorLayer2.prototype.renderPointCollections = function(pointCollections) { var mapRenderer = this.getWebGLMapRenderer(); var gl = mapRenderer.getGL(); var fragmentShader = ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.getInstance(); var vertexShader = ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.getInstance(); var program = mapRenderer.getProgram(fragmentShader, vertexShader); gl.useProgram(program); if(goog.isNull(this.pointCollectionLocations_)) { this.pointCollectionLocations_ = new ol.renderer.webgl.vectorlayer2.shader.PointCollection.Locations(gl, program) } gl.uniformMatrix4fv(this.pointCollectionLocations_.u_modelViewMatrix, false, this.modelViewMatrix_); var buf, dim, i, pointCollection; for(i = 0;i < pointCollections.length;++i) { pointCollection = pointCollections[i]; buf = pointCollection.buf; dim = pointCollection.dim; mapRenderer.bindBuffer(goog.webgl.ARRAY_BUFFER, buf); gl.enableVertexAttribArray(this.pointCollectionLocations_.a_position); gl.vertexAttribPointer(this.pointCollectionLocations_.a_position, 2, goog.webgl.FLOAT, false, 4 * dim, 0); gl.uniform4fv(this.pointCollectionLocations_.u_color, [1, 0, 0, 0.75]); gl.uniform1f(this.pointCollectionLocations_.u_pointSize, 3); buf.forEachRange(function(start, stop) { gl.drawArrays(goog.webgl.POINTS, start / dim, (stop - start) / dim) }) } }; goog.provide("ol.renderer.webgl.map.shader.Color"); goog.require("ol.webgl.shader"); ol.renderer.webgl.map.shader.ColorFragment = function() { goog.base(this, ol.renderer.webgl.map.shader.ColorFragment.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.ColorFragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.map.shader.ColorFragment); ol.renderer.webgl.map.shader.ColorFragment.DEBUG_SOURCE = "precision mediump float;\n//! NAMESPACE\x3dol.renderer.webgl.map.shader.Color\n//! CLASS\x3dol.renderer.webgl.map.shader.Color\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\n// @see https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp\nuniform mat4 u_colorMatrix;\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor \x3d texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb \x3d (u_colorMatrix * vec4(texColor.rgb, 1.)).rgb;\n gl_FragColor.a \x3d texColor.a * u_opacity;\n}\n\n"; ol.renderer.webgl.map.shader.ColorFragment.OPTIMIZED_SOURCE = "precision mediump float;varying vec2 a;uniform mat4 d;uniform float e;uniform sampler2D f;void main(){vec4 g\x3dtexture2D(f,a);gl_FragColor.rgb\x3d(d*vec4(g.rgb,1)).rgb;gl_FragColor.a\x3dg.a*e;}"; ol.renderer.webgl.map.shader.ColorFragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.ColorFragment.DEBUG_SOURCE : ol.renderer.webgl.map.shader.ColorFragment.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.ColorVertex = function() { goog.base(this, ol.renderer.webgl.map.shader.ColorVertex.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.ColorVertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.map.shader.ColorVertex); ol.renderer.webgl.map.shader.ColorVertex.DEBUG_SOURCE = "//! NAMESPACE\x3dol.renderer.webgl.map.shader.Color\n//! CLASS\x3dol.renderer.webgl.map.shader.Color\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat4 u_texCoordMatrix;\nuniform mat4 u_projectionMatrix;\n\nvoid main(void) {\n gl_Position \x3d u_projectionMatrix * vec4(a_position, 0., 1.);\n v_texCoord \x3d (u_texCoordMatrix * vec4(a_texCoord, 0., 1.)).st;\n}\n\n\n"; ol.renderer.webgl.map.shader.ColorVertex.OPTIMIZED_SOURCE = "varying vec2 a;attribute vec2 d,e;uniform mat4 b,c;void main(){gl_Position\x3dc*vec4(d,0,1);a\x3d(b*vec4(e,0,1)).st;}"; ol.renderer.webgl.map.shader.ColorVertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.ColorVertex.DEBUG_SOURCE : ol.renderer.webgl.map.shader.ColorVertex.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.Color.Locations = function(gl, program) { this.u_texCoordMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_texCoordMatrix" : "b"); this.u_projectionMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_projectionMatrix" : "c"); this.u_colorMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_colorMatrix" : "d"); this.u_opacity = gl.getUniformLocation(program, goog.DEBUG ? "u_opacity" : "e"); this.u_texture = gl.getUniformLocation(program, goog.DEBUG ? "u_texture" : "f"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "d"); this.a_texCoord = gl.getAttribLocation(program, goog.DEBUG ? "a_texCoord" : "e") }; goog.provide("ol.renderer.webgl.map.shader.Default"); goog.require("ol.webgl.shader"); ol.renderer.webgl.map.shader.DefaultFragment = function() { goog.base(this, ol.renderer.webgl.map.shader.DefaultFragment.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.DefaultFragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultFragment); ol.renderer.webgl.map.shader.DefaultFragment.DEBUG_SOURCE = "precision mediump float;\n//! NAMESPACE\x3dol.renderer.webgl.map.shader.Default\n//! CLASS\x3dol.renderer.webgl.map.shader.Default\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! FRAGMENT\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor \x3d texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb \x3d texColor.rgb;\n gl_FragColor.a \x3d texColor.a * u_opacity;\n}\n\n"; ol.renderer.webgl.map.shader.DefaultFragment.OPTIMIZED_SOURCE = "precision mediump float;varying vec2 a;uniform float d;uniform sampler2D e;void main(){vec4 f\x3dtexture2D(e,a);gl_FragColor.rgb\x3df.rgb;gl_FragColor.a\x3df.a*d;}"; ol.renderer.webgl.map.shader.DefaultFragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.DefaultFragment.DEBUG_SOURCE : ol.renderer.webgl.map.shader.DefaultFragment.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.DefaultVertex = function() { goog.base(this, ol.renderer.webgl.map.shader.DefaultVertex.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.DefaultVertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultVertex); ol.renderer.webgl.map.shader.DefaultVertex.DEBUG_SOURCE = "//! NAMESPACE\x3dol.renderer.webgl.map.shader.Default\n//! CLASS\x3dol.renderer.webgl.map.shader.Default\n\n\n//! COMMON\nvarying vec2 v_texCoord;\n\n\n//! VERTEX\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat4 u_texCoordMatrix;\nuniform mat4 u_projectionMatrix;\n\nvoid main(void) {\n gl_Position \x3d u_projectionMatrix * vec4(a_position, 0., 1.);\n v_texCoord \x3d (u_texCoordMatrix * vec4(a_texCoord, 0., 1.)).st;\n}\n\n\n"; ol.renderer.webgl.map.shader.DefaultVertex.OPTIMIZED_SOURCE = "varying vec2 a;attribute vec2 d,e;uniform mat4 b,c;void main(){gl_Position\x3dc*vec4(d,0,1);a\x3d(b*vec4(e,0,1)).st;}"; ol.renderer.webgl.map.shader.DefaultVertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.DefaultVertex.DEBUG_SOURCE : ol.renderer.webgl.map.shader.DefaultVertex.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.Default.Locations = function(gl, program) { this.u_texCoordMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_texCoordMatrix" : "b"); this.u_projectionMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_projectionMatrix" : "c"); this.u_opacity = gl.getUniformLocation(program, goog.DEBUG ? "u_opacity" : "d"); this.u_texture = gl.getUniformLocation(program, goog.DEBUG ? "u_texture" : "e"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "d"); this.a_texCoord = gl.getAttribLocation(program, goog.DEBUG ? "a_texCoord" : "e") }; goog.provide("ol.renderer.webgl.Map"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.log"); goog.require("goog.log.Logger"); goog.require("goog.object"); goog.require("goog.style"); goog.require("goog.webgl"); goog.require("ol.FrameState"); goog.require("ol.Size"); goog.require("ol.Tile"); goog.require("ol.css"); goog.require("ol.layer.Image"); goog.require("ol.layer.Tile"); goog.require("ol.layer.Vector2"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.webgl.ImageLayer"); goog.require("ol.renderer.webgl.TileLayer"); goog.require("ol.renderer.webgl.VectorLayer2"); goog.require("ol.renderer.webgl.map.shader.Color"); goog.require("ol.renderer.webgl.map.shader.Default"); goog.require("ol.size"); goog.require("ol.structs.Buffer"); goog.require("ol.structs.IntegerSet"); goog.require("ol.structs.LRUCache"); goog.require("ol.structs.PriorityQueue"); goog.require("ol.webgl"); goog.require("ol.webgl.WebGLContextEventType"); goog.require("ol.webgl.shader"); ol.WEBGL_TEXTURE_CACHE_HIGH_WATER_MARK = 1024; ol.renderer.webgl.BufferCacheEntry; ol.renderer.webgl.TextureCacheEntry; ol.renderer.webgl.Map = function(container, map) { goog.base(this, container, map); this.canvas_ = goog.dom.createElement(goog.dom.TagName.CANVAS); this.canvas_.height = container.clientHeight; this.canvas_.width = container.clientWidth; this.canvas_.className = ol.css.CLASS_UNSELECTABLE; goog.dom.insertChildAt(container, this.canvas_, 0); this.renderedVisible_ = true; this.canvasSize_ = [container.clientHeight, container.clientWidth]; this.gl_ = ol.webgl.getContext(this.canvas_, {antialias:true, depth:false, preserveDrawingBuffer:false, stencil:false}); goog.asserts.assert(!goog.isNull(this.gl_)); goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.LOST, this.handleWebGLContextLost, false, this); goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.RESTORED, this.handleWebGLContextRestored, false, this); this.colorLocations_ = null; this.defaultLocations_ = null; this.arrayBuffer_ = new ol.structs.Buffer([-1, -1, 0, 0, 1, -1, 1, 0, -1, 1, 0, 1, 1, 1, 1, 1]); this.bufferCache_ = {}; this.shaderCache_ = {}; this.programCache_ = {}; this.textureCache_ = new ol.structs.LRUCache; this.focus_ = null; this.tileTextureQueue_ = new ol.structs.PriorityQueue(goog.bind(function(element) { var tileCenter = (element[1]); var tileResolution = (element[2]); var deltaX = tileCenter[0] - this.focus_[0]; var deltaY = tileCenter[1] - this.focus_[1]; return 65536 * Math.log(tileResolution) + Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution }, this), function(element) { return(element[0]).getKey() }); this.loadNextTileTexture_ = goog.bind(function(map, frameState) { if(!this.tileTextureQueue_.isEmpty()) { this.tileTextureQueue_.reprioritize(); var tile = (this.tileTextureQueue_.dequeue()[0]); this.bindTileTexture(tile, goog.webgl.LINEAR, goog.webgl.LINEAR) } }, this); this.textureCacheFrameMarkerCount_ = 0; this.initializeGL_() }; goog.inherits(ol.renderer.webgl.Map, ol.renderer.Map); ol.renderer.webgl.Map.prototype.bindBuffer = function(target, buf) { var gl = this.getGL(); var arr = buf.getArray(); var bufferKey = goog.getUid(buf); if(bufferKey in this.bufferCache_) { var bufferCacheEntry = this.bufferCache_[bufferKey]; gl.bindBuffer(target, bufferCacheEntry.buffer); bufferCacheEntry.dirtySet.forEachRange(function(start, stop) { var slice = arr.slice(start, stop); gl.bufferSubData(target, start, target == goog.webgl.ARRAY_BUFFER ? new Float32Array(slice) : new Uint16Array(slice)) }); bufferCacheEntry.dirtySet.clear() }else { var buffer = gl.createBuffer(); gl.bindBuffer(target, buffer); gl.bufferData(target, target == goog.webgl.ARRAY_BUFFER ? new Float32Array(arr) : new Uint16Array(arr), buf.getUsage()); var dirtySet = new ol.structs.IntegerSet; buf.addDirtySet(dirtySet); this.bufferCache_[bufferKey] = {buf:buf, buffer:buffer, dirtySet:dirtySet} } }; ol.renderer.webgl.Map.prototype.bindTileTexture = function(tile, magFilter, minFilter) { var gl = this.getGL(); var tileKey = tile.getKey(); if(this.textureCache_.containsKey(tileKey)) { var textureCacheEntry = this.textureCache_.get(tileKey); gl.bindTexture(goog.webgl.TEXTURE_2D, textureCacheEntry.texture); if(textureCacheEntry.magFilter != magFilter) { gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, magFilter); textureCacheEntry.magFilter = magFilter } if(textureCacheEntry.minFilter != minFilter) { gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, minFilter); textureCacheEntry.minFilter = minFilter } }else { var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, tile.getImage()); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, magFilter); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, minFilter); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_S, goog.webgl.CLAMP_TO_EDGE); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_T, goog.webgl.CLAMP_TO_EDGE); this.textureCache_.set(tileKey, {texture:texture, magFilter:magFilter, minFilter:minFilter}) } }; ol.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) { if(layer instanceof ol.layer.Tile) { return new ol.renderer.webgl.TileLayer(this, layer) }else { if(layer instanceof ol.layer.Image) { return new ol.renderer.webgl.ImageLayer(this, layer) }else { if(layer instanceof ol.layer.Vector2) { return new ol.renderer.webgl.VectorLayer2(this, layer) }else { goog.asserts.fail(); return null } } } }; ol.renderer.webgl.Map.prototype.deleteBuffer = function(buf) { var gl = this.getGL(); var bufferKey = goog.getUid(buf); goog.asserts.assert(bufferKey in this.bufferCache_); var bufferCacheEntry = this.bufferCache_[bufferKey]; bufferCacheEntry.buf.removeDirtySet(bufferCacheEntry.dirtySet); if(!gl.isContextLost()) { gl.deleteBuffer(bufferCacheEntry.buffer) } delete this.bufferCache_[bufferKey] }; ol.renderer.webgl.Map.prototype.disposeInternal = function() { var gl = this.getGL(); goog.object.forEach(this.bufferCache_, function(bufferCacheEntry) { bufferCacheEntry.buf.removeDirtySet(bufferCacheEntry.dirtySet) }); if(!gl.isContextLost()) { goog.object.forEach(this.bufferCache_, function(bufferCacheEntry) { gl.deleteBuffer(bufferCacheEntry.buffer) }); goog.object.forEach(this.programCache_, function(program) { gl.deleteProgram(program) }); goog.object.forEach(this.shaderCache_, function(shader) { gl.deleteShader(shader) }); this.textureCache_.forEach(function(textureCacheEntry) { if(!goog.isNull(textureCacheEntry)) { gl.deleteTexture(textureCacheEntry.texture) } }) } goog.base(this, "disposeInternal") }; ol.renderer.webgl.Map.prototype.expireCache_ = function(map, frameState) { var gl = this.getGL(); var textureCacheEntry; while(this.textureCache_.getCount() - this.textureCacheFrameMarkerCount_ > ol.WEBGL_TEXTURE_CACHE_HIGH_WATER_MARK) { textureCacheEntry = (this.textureCache_.peekLast()); if(goog.isNull(textureCacheEntry)) { if(+this.textureCache_.peekLastKey() == frameState.index) { break }else { --this.textureCacheFrameMarkerCount_ } }else { gl.deleteTexture(textureCacheEntry.texture) } this.textureCache_.pop() } }; ol.renderer.webgl.Map.prototype.getCanvas = function() { return this.canvas_ }; ol.renderer.webgl.Map.prototype.getGL = function() { return this.gl_ }; ol.renderer.webgl.Map.prototype.getProgram = function(fragmentShaderObject, vertexShaderObject) { var programKey = goog.getUid(fragmentShaderObject) + "/" + goog.getUid(vertexShaderObject); if(programKey in this.programCache_) { return this.programCache_[programKey] }else { var gl = this.getGL(); var program = gl.createProgram(); gl.attachShader(program, this.getShader(fragmentShaderObject)); gl.attachShader(program, this.getShader(vertexShaderObject)); gl.linkProgram(program); if(goog.DEBUG) { if(!gl.getProgramParameter(program, goog.webgl.LINK_STATUS) && !gl.isContextLost()) { goog.log.error(this.logger_, gl.getProgramInfoLog(program)) } } goog.asserts.assert(gl.getProgramParameter(program, goog.webgl.LINK_STATUS) || gl.isContextLost()); this.programCache_[programKey] = program; return program } }; ol.renderer.webgl.Map.prototype.getShader = function(shaderObject) { var shaderKey = goog.getUid(shaderObject); if(shaderKey in this.shaderCache_) { return this.shaderCache_[shaderKey] }else { var gl = this.getGL(); var shader = gl.createShader(shaderObject.getType()); gl.shaderSource(shader, shaderObject.getSource()); gl.compileShader(shader); if(goog.DEBUG) { if(!gl.getShaderParameter(shader, goog.webgl.COMPILE_STATUS) && !gl.isContextLost()) { goog.log.error(this.logger_, gl.getShaderInfoLog(shader)) } } goog.asserts.assert(gl.getShaderParameter(shader, goog.webgl.COMPILE_STATUS) || gl.isContextLost()); this.shaderCache_[shaderKey] = shader; return shader } }; ol.renderer.webgl.Map.prototype.getTileTextureQueue = function() { return this.tileTextureQueue_ }; ol.renderer.webgl.Map.prototype.handleWebGLContextLost = function(event) { event.preventDefault(); this.colorLocations_ = null; this.defaultLocations_ = null; this.bufferCache_ = {}; this.shaderCache_ = {}; this.programCache_ = {}; this.textureCache_.clear(); this.textureCacheFrameMarkerCount_ = 0; goog.object.forEach(this.getLayerRenderers(), function(layerRenderer) { layerRenderer.handleWebGLContextLost() }) }; ol.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() { this.initializeGL_(); this.getMap().render() }; ol.renderer.webgl.Map.prototype.initializeGL_ = function() { var gl = this.gl_; gl.activeTexture(goog.webgl.TEXTURE0); gl.blendFuncSeparate(goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA, goog.webgl.ONE, goog.webgl.ONE_MINUS_SRC_ALPHA); gl.disable(goog.webgl.CULL_FACE); gl.disable(goog.webgl.DEPTH_TEST); gl.disable(goog.webgl.SCISSOR_TEST) }; ol.renderer.webgl.Map.prototype.isTileTextureLoaded = function(tile) { return this.textureCache_.containsKey(tile.getKey()) }; ol.renderer.webgl.Map.prototype.logger_ = goog.log.getLogger("ol.renderer.webgl.Map"); ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { var gl = this.getGL(); if(gl.isContextLost()) { return false } if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.canvas_, false); this.renderedVisible_ = false } return false } this.focus_ = frameState.focus; this.textureCache_.set((-frameState.index).toString(), null); ++this.textureCacheFrameMarkerCount_; var layersArray = frameState.layersArray; var i, ii, layer, layerRenderer, layerState; for(i = 0, ii = layersArray.length;i < ii;++i) { layer = layersArray[i]; layerRenderer = this.getLayerRenderer(layer); layerState = frameState.layerStates[goog.getUid(layer)]; if(layerState.visible && layerState.ready) { layerRenderer.renderFrame(frameState, layerState) } } var size = frameState.size; if(!ol.size.equals(this.canvasSize_, size)) { this.canvas_.width = size[0]; this.canvas_.height = size[1]; this.canvasSize_ = size } gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, null); gl.clearColor(0, 0, 0, 0); gl.clear(goog.webgl.COLOR_BUFFER_BIT); gl.enable(goog.webgl.BLEND); gl.viewport(0, 0, size[0], size[1]); this.bindBuffer(goog.webgl.ARRAY_BUFFER, this.arrayBuffer_); var currentProgram = null; var locations; for(i = 0, ii = layersArray.length;i < ii;++i) { layer = layersArray[i]; layerState = frameState.layerStates[goog.getUid(layer)]; if(!layerState.visible || !layerState.ready) { continue } var useColor = layerState.brightness || layerState.contrast != 1 || layerState.hue || layerState.saturation != 1; var fragmentShader, vertexShader; if(useColor) { fragmentShader = ol.renderer.webgl.map.shader.ColorFragment.getInstance(); vertexShader = ol.renderer.webgl.map.shader.ColorVertex.getInstance() }else { fragmentShader = ol.renderer.webgl.map.shader.DefaultFragment.getInstance(); vertexShader = ol.renderer.webgl.map.shader.DefaultVertex.getInstance() } var program = this.getProgram(fragmentShader, vertexShader); if(program != currentProgram) { gl.useProgram(program); currentProgram = program; if(useColor) { if(goog.isNull(this.colorLocations_)) { locations = new ol.renderer.webgl.map.shader.Color.Locations(gl, program); this.colorLocations_ = locations }else { locations = this.colorLocations_ } }else { if(goog.isNull(this.defaultLocations_)) { locations = new ol.renderer.webgl.map.shader.Default.Locations(gl, program); this.defaultLocations_ = locations }else { locations = this.defaultLocations_ } } gl.enableVertexAttribArray(locations.a_position); gl.vertexAttribPointer(locations.a_position, 2, goog.webgl.FLOAT, false, 16, 0); gl.enableVertexAttribArray(locations.a_texCoord); gl.vertexAttribPointer(locations.a_texCoord, 2, goog.webgl.FLOAT, false, 16, 8); gl.uniform1i(locations.u_texture, 0) } layerRenderer = this.getLayerRenderer(layer); gl.uniformMatrix4fv(locations.u_texCoordMatrix, false, layerRenderer.getTexCoordMatrix()); gl.uniformMatrix4fv(locations.u_projectionMatrix, false, layerRenderer.getProjectionMatrix()); if(useColor) { gl.uniformMatrix4fv(locations.u_colorMatrix, false, layerRenderer.getColorMatrix(layerState.brightness, layerState.contrast, layerState.hue, layerState.saturation)) } gl.uniform1f(locations.u_opacity, layerState.opacity); gl.bindTexture(goog.webgl.TEXTURE_2D, layerRenderer.getTexture()); gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4) } if(!this.renderedVisible_) { goog.style.setElementShown(this.canvas_, true); this.renderedVisible_ = true } this.calculateMatrices2D(frameState); if(this.textureCache_.getCount() - this.textureCacheFrameMarkerCount_ > ol.WEBGL_TEXTURE_CACHE_HIGH_WATER_MARK) { frameState.postRenderFunctions.push(goog.bind(this.expireCache_, this)) } if(!this.tileTextureQueue_.isEmpty()) { frameState.postRenderFunctions.push(this.loadNextTileTexture_); frameState.animate = true } this.scheduleRemoveUnusedLayerRenderers(frameState) }; goog.provide("ol.renderer.webgl.SUPPORTED"); goog.require("ol.webgl.SUPPORTED"); ol.renderer.webgl.SUPPORTED = ol.webgl.SUPPORTED; goog.provide("ol.Map"); goog.provide("ol.MapProperty"); goog.provide("ol.RendererHint"); goog.provide("ol.RendererHints"); goog.require("goog.Uri.QueryData"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.async.AnimationDelay"); goog.require("goog.async.Delay"); goog.require("goog.debug.Console"); goog.require("goog.dispose"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.dom.ViewportSizeMonitor"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.events.KeyHandler"); goog.require("goog.events.KeyHandler.EventType"); goog.require("goog.events.MouseWheelHandler"); goog.require("goog.events.MouseWheelHandler.EventType"); goog.require("goog.log"); goog.require("goog.log.Level"); goog.require("goog.object"); goog.require("goog.style"); goog.require("goog.vec.Mat4"); goog.require("ol.BrowserFeature"); goog.require("ol.Collection"); goog.require("ol.FrameState"); goog.require("ol.IView"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.MapBrowserEventHandler"); goog.require("ol.MapEvent"); goog.require("ol.MapEventType"); goog.require("ol.Object"); goog.require("ol.ObjectEventType"); goog.require("ol.Pixel"); goog.require("ol.PostRenderFunction"); goog.require("ol.PreRenderFunction"); goog.require("ol.Size"); goog.require("ol.Tile"); goog.require("ol.TileQueue"); goog.require("ol.View"); goog.require("ol.View2D"); goog.require("ol.ViewHint"); goog.require("ol.control"); goog.require("ol.extent"); goog.require("ol.interaction"); goog.require("ol.layer.Base"); goog.require("ol.layer.Group"); goog.require("ol.proj"); goog.require("ol.proj.common"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.Map"); goog.require("ol.renderer.canvas.SUPPORTED"); goog.require("ol.renderer.dom.Map"); goog.require("ol.renderer.dom.SUPPORTED"); goog.require("ol.renderer.webgl.Map"); goog.require("ol.renderer.webgl.SUPPORTED"); goog.require("ol.structs.PriorityQueue"); goog.require("ol.vec.Mat4"); ol.ENABLE_CANVAS = true; ol.ENABLE_DOM = true; ol.ENABLE_WEBGL = true; ol.RendererHint = {CANVAS:"canvas", DOM:"dom", WEBGL:"webgl"}; ol.DEFAULT_RENDERER_HINTS = [ol.RendererHint.WEBGL, ol.RendererHint.CANVAS, ol.RendererHint.DOM]; ol.MapProperty = {LAYERGROUP:"layergroup", SIZE:"size", TARGET:"target", VIEW:"view"}; ol.Map = function(options) { goog.base(this); var optionsInternal = ol.Map.createOptionsInternal(options); this.animationDelay_ = new goog.async.AnimationDelay(this.renderFrame_, undefined, this); this.registerDisposable(this.animationDelay_); this.coordinateToPixelMatrix_ = goog.vec.Mat4.createNumber(); this.pixelToCoordinateMatrix_ = goog.vec.Mat4.createNumber(); this.frameIndex_ = 0; this.frameState_ = null; this.freezeRenderingCount_ = 0; this.dirty_ = false; this.viewPropertyListenerKey_ = null; this.layerGroupPropertyListenerKey_ = null; this.viewport_ = goog.dom.createDom(goog.dom.TagName.DIV, "ol-viewport"); this.viewport_.style.position = "relative"; this.viewport_.style.overflow = "hidden"; this.viewport_.style.width = "100%"; this.viewport_.style.height = "100%"; this.viewport_.style.msTouchAction = "none"; if(ol.BrowserFeature.HAS_TOUCH) { this.viewport_.className = "ol-touch" } this.overlayContainer_ = goog.dom.createDom(goog.dom.TagName.DIV, "ol-overlaycontainer"); goog.events.listen(this.overlayContainer_, [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK, ol.BrowserFeature.HAS_TOUCH ? goog.events.EventType.TOUCHSTART : goog.events.EventType.MOUSEDOWN], goog.events.Event.stopPropagation); goog.dom.appendChild(this.viewport_, this.overlayContainer_); var mapBrowserEventHandler = new ol.MapBrowserEventHandler(this); goog.events.listen(mapBrowserEventHandler, goog.object.getValues(ol.MapBrowserEvent.EventType), this.handleMapBrowserEvent, false, this); this.registerDisposable(mapBrowserEventHandler); var keyHandler = new goog.events.KeyHandler(goog.global.document); goog.events.listen(keyHandler, goog.events.KeyHandler.EventType.KEY, this.handleBrowserEvent, false, this); this.registerDisposable(keyHandler); var mouseWheelHandler = new goog.events.MouseWheelHandler(this.viewport_); goog.events.listen(mouseWheelHandler, goog.events.MouseWheelHandler.EventType.MOUSEWHEEL, this.handleBrowserEvent, false, this); this.registerDisposable(mouseWheelHandler); this.controls_ = optionsInternal.controls; this.interactions_ = optionsInternal.interactions; this.overlays_ = optionsInternal.overlays; this.renderer_ = new optionsInternal.rendererConstructor(this.viewport_, this); this.registerDisposable(this.renderer_); this.viewportSizeMonitor_ = new goog.dom.ViewportSizeMonitor; goog.events.listen(this.viewportSizeMonitor_, goog.events.EventType.RESIZE, this.updateSize, false, this); this.focus_ = null; this.preRenderFunctions_ = []; this.postRenderFunctions_ = []; this.postRenderDelay_ = new goog.async.Delay(this.handlePostRender, 0, this); this.tileQueue_ = new ol.TileQueue(goog.bind(this.getTilePriority, this), goog.bind(this.handleTileChange_, this)); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.LAYERGROUP), this.handleLayerGroupChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.VIEW), this.handleViewChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.SIZE), this.handleSizeChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.TARGET), this.handleTargetChanged_, false, this); this.setValues(optionsInternal.values); this.controls_.forEach(function(control) { control.setMap(this) }, this); this.overlays_.forEach(function(overlay) { overlay.setMap(this) }, this) }; goog.inherits(ol.Map, ol.Object); ol.Map.prototype.addControl = function(control) { var controls = this.getControls(); goog.asserts.assert(goog.isDef(controls)); controls.push(control); control.setMap(this) }; ol.Map.prototype.addLayer = function(layer) { var layers = this.getLayerGroup().getLayers(); goog.asserts.assert(goog.isDef(layers)); layers.push(layer) }; ol.Map.prototype.addOverlay = function(overlay) { var overlays = this.getOverlays(); goog.asserts.assert(goog.isDef(overlays)); overlays.push(overlay); overlay.setMap(this) }; ol.Map.prototype.beforeRender = function(var_args) { this.requestRenderFrame(); Array.prototype.push.apply(this.preRenderFunctions_, arguments) }; ol.Map.prototype.removePreRenderFunction = function(preRenderFunction) { return goog.array.remove(this.preRenderFunctions_, preRenderFunction) }; ol.Map.prototype.disposeInternal = function() { goog.dom.removeNode(this.viewport_); goog.dispose(this.postRenderDelay_); goog.base(this, "disposeInternal") }; ol.Map.prototype.freezeRendering = function() { ++this.freezeRenderingCount_ }; ol.Map.prototype.getRenderer = function() { return this.renderer_ }; ol.Map.prototype.getTarget = function() { return(this.get(ol.MapProperty.TARGET)) }; goog.exportProperty(ol.Map.prototype, "getTarget", ol.Map.prototype.getTarget); ol.Map.prototype.getCoordinateFromPixel = function(pixel) { var frameState = this.frameState_; if(goog.isNull(frameState)) { return null }else { var vec2 = pixel.slice(); return ol.vec.Mat4.multVec2(frameState.pixelToCoordinateMatrix, vec2, vec2) } }; ol.Map.prototype.getControls = function() { return this.controls_ }; ol.Map.prototype.getOverlays = function() { return this.overlays_ }; ol.Map.prototype.getFeatureInfo = function(options) { var layers = goog.isDefAndNotNull(options.layers) ? options.layers : this.getLayerGroup().getLayersArray(); this.getRenderer().getFeatureInfoForPixel(options.pixel, layers, options.success, options.error) }; ol.Map.prototype.getFeatures = function(options) { var layers = goog.isDefAndNotNull(options.layers) ? options.layers : this.getLayerGroup().getLayersArray(); this.getRenderer().getFeaturesForPixel(options.pixel, layers, options.success, options.error) }; ol.Map.prototype.getInteractions = function() { return this.interactions_ }; ol.Map.prototype.getLayerGroup = function() { return(this.get(ol.MapProperty.LAYERGROUP)) }; goog.exportProperty(ol.Map.prototype, "getLayerGroup", ol.Map.prototype.getLayerGroup); ol.Map.prototype.getLayers = function() { return this.getLayerGroup().getLayers() }; ol.Map.prototype.getPixelFromCoordinate = function(coordinate) { var frameState = this.frameState_; if(goog.isNull(frameState)) { return null }else { var vec2 = coordinate.slice(0, 2); return ol.vec.Mat4.multVec2(frameState.coordinateToPixelMatrix, vec2, vec2) } }; ol.Map.prototype.getSize = function() { return(this.get(ol.MapProperty.SIZE)) }; goog.exportProperty(ol.Map.prototype, "getSize", ol.Map.prototype.getSize); ol.Map.prototype.getView = function() { return(this.get(ol.MapProperty.VIEW)) }; goog.exportProperty(ol.Map.prototype, "getView", ol.Map.prototype.getView); ol.Map.prototype.getViewport = function() { return this.viewport_ }; ol.Map.prototype.getOverlayContainer = function() { return this.overlayContainer_ }; ol.Map.prototype.getTilePriority = function(tile, tileSourceKey, tileCenter, tileResolution) { var frameState = this.frameState_; if(goog.isNull(frameState) || !(tileSourceKey in frameState.wantedTiles)) { return ol.structs.PriorityQueue.DROP } var coordKey = tile.tileCoord.toString(); if(!frameState.wantedTiles[tileSourceKey][coordKey]) { return ol.structs.PriorityQueue.DROP } var deltaX = tileCenter[0] - frameState.focus[0]; var deltaY = tileCenter[1] - frameState.focus[1]; return 65536 * Math.log(tileResolution) + Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution }; ol.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) { var type = opt_type || browserEvent.type; var mapBrowserEvent = new ol.MapBrowserEvent(type, this, browserEvent); this.handleMapBrowserEvent(mapBrowserEvent) }; ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if(goog.isNull(this.frameState_)) { return } if(mapBrowserEvent.type == goog.events.EventType.MOUSEOUT || mapBrowserEvent.type == goog.events.EventType.TOUCHEND) { this.focus_ = null }else { this.focus_ = mapBrowserEvent.getCoordinate() } mapBrowserEvent.frameState = this.frameState_; var interactions = this.getInteractions(); var interactionsArray = (interactions.getArray()); var i; if(this.dispatchEvent(mapBrowserEvent) !== false) { for(i = interactionsArray.length - 1;i >= 0;i--) { var interaction = interactionsArray[i]; var cont = interaction.handleMapBrowserEvent(mapBrowserEvent); if(!cont) { break } } } }; ol.Map.prototype.handlePostRender = function() { var frameState = this.frameState_; var tileQueue = this.tileQueue_; if(!tileQueue.isEmpty()) { var maxTotalLoading = 16; var maxNewLoads = maxTotalLoading; if(!goog.isNull(frameState)) { var hints = frameState.viewHints; if(hints[ol.ViewHint.ANIMATING] || hints[ol.ViewHint.INTERACTING]) { maxTotalLoading = 8; maxNewLoads = 2 } } var tileSourceCount = goog.object.getCount(frameState.wantedTiles); maxTotalLoading *= tileSourceCount; maxNewLoads *= tileSourceCount; if(tileQueue.getTilesLoading() < maxTotalLoading) { tileQueue.reprioritize(); tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads) } } var postRenderFunctions = this.postRenderFunctions_; var i, ii; for(i = 0, ii = postRenderFunctions.length;i < ii;++i) { postRenderFunctions[i](this, frameState) } postRenderFunctions.length = 0 }; ol.Map.prototype.handleSizeChanged_ = function() { this.render() }; ol.Map.prototype.handleTargetChanged_ = function() { var target = this.getTarget(); var targetElement = goog.isDef(target) ? goog.dom.getElement(target) : null; if(goog.isNull(targetElement)) { goog.dom.removeNode(this.viewport_) }else { goog.dom.appendChild(targetElement, this.viewport_) } this.updateSize() }; ol.Map.prototype.handleTileChange_ = function() { this.requestRenderFrame() }; ol.Map.prototype.handleViewPropertyChanged_ = function() { this.render() }; ol.Map.prototype.handleViewChanged_ = function() { if(!goog.isNull(this.viewPropertyListenerKey_)) { goog.events.unlistenByKey(this.viewPropertyListenerKey_); this.viewPropertyListenerKey_ = null } var view = this.getView(); if(goog.isDefAndNotNull(view)) { this.viewPropertyListenerKey_ = goog.events.listen(view, ol.ObjectEventType.CHANGE, this.handleViewPropertyChanged_, false, this) } this.render() }; ol.Map.prototype.handleLayerGroupPropertyChanged_ = function(event) { this.render() }; ol.Map.prototype.handleLayerGroupChanged_ = function() { if(!goog.isNull(this.layerGroupPropertyListenerKey_)) { goog.events.unlistenByKey(this.layerGroupPropertyListenerKey_); this.layerGroupPropertyListenerKey_ = null } var layerGroup = this.getLayerGroup(); if(goog.isDefAndNotNull(layerGroup)) { this.layerGroupPropertyListenerKey_ = goog.events.listen(layerGroup, ol.ObjectEventType.CHANGE, this.handleLayerGroupPropertyChanged_, false, this) } this.render() }; ol.Map.prototype.isDef = function() { var view = this.getView(); return goog.isDef(view) && view.isDef() && goog.isDefAndNotNull(this.getSize()) }; ol.Map.prototype.render = function() { if(this.animationDelay_.isActive()) { }else { if(this.freezeRenderingCount_ === 0) { this.animationDelay_.fire() }else { this.dirty_ = true } } }; ol.Map.prototype.requestRenderFrame = function() { if(this.freezeRenderingCount_ === 0) { if(!this.animationDelay_.isActive()) { this.animationDelay_.start() } }else { this.dirty_ = true } }; ol.Map.prototype.removeControl = function(control) { var controls = this.getControls(); goog.asserts.assert(goog.isDef(controls)); if(goog.isDef(controls.remove(control))) { control.setMap(null); return control } return undefined }; ol.Map.prototype.removeLayer = function(layer) { var layers = this.getLayerGroup().getLayers(); goog.asserts.assert(goog.isDef(layers)); return(layers.remove(layer)) }; ol.Map.prototype.removeOverlay = function(overlay) { var overlays = this.getOverlays(); goog.asserts.assert(goog.isDef(overlays)); if(goog.isDef(overlays.remove(overlay))) { overlay.setMap(null); return overlay } return undefined }; ol.Map.prototype.renderFrame_ = function(time) { var i, ii, view2DState; if(this.freezeRenderingCount_ !== 0) { return } var size = this.getSize(); var view = this.getView(); var view2D = goog.isDef(view) ? this.getView().getView2D() : undefined; var frameState = null; if(goog.isDef(size) && goog.isDef(view2D) && view2D.isDef()) { var viewHints = view.getHints(); var obj = this.getLayerGroup().getLayerStatesArray(); var layersArray = obj.layers; var layerStatesArray = obj.layerStates; var layerStates = {}; var layer; for(i = 0, ii = layersArray.length;i < ii;++i) { layer = layersArray[i]; layerStates[goog.getUid(layer)] = layerStatesArray[i] } view2DState = view2D.getView2DState(); frameState = {animate:false, attributions:{}, coordinateToPixelMatrix:this.coordinateToPixelMatrix_, extent:null, focus:goog.isNull(this.focus_) ? view2DState.center : this.focus_, index:this.frameIndex_++, layersArray:layersArray, layerStates:layerStates, logos:{}, pixelToCoordinateMatrix:this.pixelToCoordinateMatrix_, postRenderFunctions:[], size:size, tileQueue:this.tileQueue_, time:time, usedTiles:{}, view2DState:view2DState, viewHints:viewHints, wantedTiles:{}} } var preRenderFunctions = this.preRenderFunctions_; var n = 0, preRenderFunction; for(i = 0, ii = preRenderFunctions.length;i < ii;++i) { preRenderFunction = preRenderFunctions[i]; if(preRenderFunction(this, frameState)) { preRenderFunctions[n++] = preRenderFunction } } preRenderFunctions.length = n; if(!goog.isNull(frameState)) { frameState.extent = ol.extent.getForView2DAndSize(view2DState.center, view2DState.resolution, view2DState.rotation, frameState.size) } this.frameState_ = frameState; this.renderer_.renderFrame(frameState); this.dirty_ = false; if(!goog.isNull(frameState)) { if(frameState.animate) { this.requestRenderFrame() } Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions); var idle = this.preRenderFunctions_.length == 0 && !frameState.animate && !frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING]; if(idle) { this.dispatchEvent(new ol.MapEvent(ol.MapEventType.MOVEEND, this)) } } this.dispatchEvent(new ol.MapEvent(ol.MapEventType.POSTRENDER, this, frameState)); if(!this.postRenderDelay_.isActive()) { this.postRenderDelay_.start() } }; ol.Map.prototype.setLayerGroup = function(layerGroup) { this.set(ol.MapProperty.LAYERGROUP, layerGroup) }; goog.exportProperty(ol.Map.prototype, "setLayerGroup", ol.Map.prototype.setLayerGroup); ol.Map.prototype.setSize = function(size) { this.set(ol.MapProperty.SIZE, size) }; goog.exportProperty(ol.Map.prototype, "setSize", ol.Map.prototype.setSize); ol.Map.prototype.setTarget = function(target) { this.set(ol.MapProperty.TARGET, target) }; goog.exportProperty(ol.Map.prototype, "setTarget", ol.Map.prototype.setTarget); ol.Map.prototype.setView = function(view) { this.set(ol.MapProperty.VIEW, view) }; goog.exportProperty(ol.Map.prototype, "setView", ol.Map.prototype.setView); ol.Map.prototype.unfreezeRendering = function() { goog.asserts.assert(this.freezeRenderingCount_ > 0); if(--this.freezeRenderingCount_ === 0 && this.dirty_) { this.animationDelay_.fire() } }; ol.Map.prototype.updateSize = function() { var target = this.getTarget(); var targetElement = goog.isDef(target) ? goog.dom.getElement(target) : null; if(goog.isNull(targetElement)) { this.setSize(undefined) }else { var size = goog.style.getSize(targetElement); this.setSize([size.width, size.height]) } }; ol.Map.prototype.withFrozenRendering = function(f, opt_obj) { this.freezeRendering(); try { f.call(opt_obj) }finally { this.unfreezeRendering() } }; ol.MapOptionsInternal; ol.Map.createOptionsInternal = function(options) { var values = {}; var layerGroup = options.layers instanceof ol.layer.Group ? options.layers : new ol.layer.Group({layers:options.layers}); values[ol.MapProperty.LAYERGROUP] = layerGroup; values[ol.MapProperty.TARGET] = options.target; values[ol.MapProperty.VIEW] = goog.isDef(options.view) ? options.view : new ol.View2D; var rendererConstructor = ol.renderer.Map; var rendererHints; if(goog.isDef(options.renderers)) { rendererHints = options.renderers }else { if(goog.isDef(options.renderer)) { rendererHints = [options.renderer] }else { rendererHints = ol.DEFAULT_RENDERER_HINTS } } var n = rendererHints.length; var i, rendererHint; for(i = 0;i < n;++i) { rendererHint = rendererHints[i]; if(rendererHint == ol.RendererHint.CANVAS) { if(ol.ENABLE_CANVAS && ol.renderer.canvas.SUPPORTED) { rendererConstructor = ol.renderer.canvas.Map; break } }else { if(rendererHint == ol.RendererHint.DOM) { if(ol.ENABLE_DOM && ol.renderer.dom.SUPPORTED) { rendererConstructor = ol.renderer.dom.Map; break } }else { if(rendererHint == ol.RendererHint.WEBGL) { if(ol.ENABLE_WEBGL && ol.renderer.webgl.SUPPORTED) { rendererConstructor = ol.renderer.webgl.Map; break } } } } } var controls; if(goog.isDef(options.controls)) { if(goog.isArray(options.controls)) { controls = new ol.Collection(goog.array.clone(options.controls)) }else { goog.asserts.assertInstanceof(options.controls, ol.Collection); controls = options.controls } }else { controls = ol.control.defaults() } var interactions = goog.isDef(options.interactions) ? options.interactions : ol.interaction.defaults(); var overlays; if(goog.isDef(options.overlays)) { if(goog.isArray(options.overlays)) { overlays = new ol.Collection(goog.array.clone(options.overlays)) }else { goog.asserts.assertInstanceof(options.overlays, ol.Collection); overlays = options.overlays } }else { overlays = new ol.Collection } return{controls:controls, interactions:interactions, overlays:overlays, rendererConstructor:rendererConstructor, values:values} }; ol.RendererHints.createFromQueryData = function(opt_queryData) { var query = goog.global.location.search.substring(1), queryData = goog.isDef(opt_queryData) ? opt_queryData : new goog.Uri.QueryData(query); if(queryData.containsKey("renderers")) { return queryData.get("renderers").split(",") }else { if(queryData.containsKey("renderer")) { return[queryData.get("renderer")] }else { return ol.DEFAULT_RENDERER_HINTS } } }; ol.proj.common.add(); if(goog.DEBUG) { (function() { goog.debug.Console.autoInstall(); var logger = goog.log.getLogger("ol"); logger.setLevel(goog.log.Level.FINEST) })() } ;goog.provide("ol.Overlay"); goog.provide("ol.OverlayPositioning"); goog.provide("ol.OverlayProperty"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.style"); goog.require("ol.Coordinate"); goog.require("ol.Map"); goog.require("ol.MapEventType"); goog.require("ol.Object"); ol.OverlayProperty = {ELEMENT:"element", MAP:"map", POSITION:"position", POSITIONING:"positioning"}; ol.OverlayPositioning = {BOTTOM_LEFT:"bottom-left", BOTTOM_RIGHT:"bottom-right", TOP_LEFT:"top-left", TOP_RIGHT:"top-right"}; ol.Overlay = function(options) { goog.base(this); this.element_ = goog.dom.createElement(goog.dom.TagName.DIV); this.element_.style.position = "absolute"; this.rendered_ = {bottom_:"", left_:"", right_:"", top_:"", visible:true}; this.mapPostrenderListenerKey_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.ELEMENT), this.handleElementChanged, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.MAP), this.handleMapChanged, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.POSITION), this.handlePositionChanged, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.POSITIONING), this.handlePositioningChanged, false, this); if(goog.isDef(options.element)) { this.setElement(options.element) } if(goog.isDef(options.position)) { this.setPosition(options.position) } if(goog.isDef(options.positioning)) { this.setPositioning(options.positioning) } }; goog.inherits(ol.Overlay, ol.Object); ol.Overlay.prototype.getElement = function() { return(this.get(ol.OverlayProperty.ELEMENT)) }; goog.exportProperty(ol.Overlay.prototype, "getElement", ol.Overlay.prototype.getElement); ol.Overlay.prototype.getMap = function() { return(this.get(ol.OverlayProperty.MAP)) }; goog.exportProperty(ol.Overlay.prototype, "getMap", ol.Overlay.prototype.getMap); ol.Overlay.prototype.getPosition = function() { return(this.get(ol.OverlayProperty.POSITION)) }; goog.exportProperty(ol.Overlay.prototype, "getPosition", ol.Overlay.prototype.getPosition); ol.Overlay.prototype.getPositioning = function() { return(this.get(ol.OverlayProperty.POSITIONING)) }; goog.exportProperty(ol.Overlay.prototype, "getPositioning", ol.Overlay.prototype.getPositioning); ol.Overlay.prototype.handleElementChanged = function() { goog.dom.removeChildren(this.element_); var element = this.getElement(); if(goog.isDefAndNotNull(element)) { goog.dom.append((this.element_), element) } }; ol.Overlay.prototype.handleMapChanged = function() { if(!goog.isNull(this.mapPostrenderListenerKey_)) { goog.dom.removeNode(this.element_); goog.events.unlistenByKey(this.mapPostrenderListenerKey_); this.mapPostrenderListenerKey_ = null } var map = this.getMap(); if(goog.isDefAndNotNull(map)) { this.mapPostrenderListenerKey_ = goog.events.listen(map, ol.MapEventType.POSTRENDER, this.handleMapPostrender, false, this); this.updatePixelPosition_(); goog.dom.append((map.getOverlayContainer()), this.element_) } }; ol.Overlay.prototype.handleMapPostrender = function() { this.updatePixelPosition_() }; ol.Overlay.prototype.handlePositionChanged = function() { this.updatePixelPosition_() }; ol.Overlay.prototype.handlePositioningChanged = function() { this.updatePixelPosition_() }; ol.Overlay.prototype.setElement = function(element) { this.set(ol.OverlayProperty.ELEMENT, element) }; goog.exportProperty(ol.Overlay.prototype, "setElement", ol.Overlay.prototype.setElement); ol.Overlay.prototype.setMap = function(map) { this.set(ol.OverlayProperty.MAP, map) }; goog.exportProperty(ol.Overlay.prototype, "setMap", ol.Overlay.prototype.setMap); ol.Overlay.prototype.setPosition = function(position) { this.set(ol.OverlayProperty.POSITION, position) }; goog.exportProperty(ol.Overlay.prototype, "setPosition", ol.Overlay.prototype.setPosition); ol.Overlay.prototype.setPositioning = function(positioning) { this.set(ol.OverlayProperty.POSITIONING, positioning) }; ol.Overlay.prototype.updatePixelPosition_ = function() { var map = this.getMap(); var position = this.getPosition(); if(!goog.isDef(map) || !map.isDef() || !goog.isDef(position)) { if(this.rendered_.visible) { goog.style.setElementShown(this.element_, false); this.rendered_.visible = false } return } var pixel = map.getPixelFromCoordinate(position); var mapSize = map.getSize(); goog.asserts.assert(goog.isDef(mapSize)); var style = this.element_.style; var positioning = this.getPositioning(); if(positioning == ol.OverlayPositioning.BOTTOM_RIGHT || positioning == ol.OverlayPositioning.TOP_RIGHT) { if(this.rendered_.left_ !== "") { this.rendered_.left_ = style.left = "" } var right = Math.round(mapSize[0] - pixel[0]) + "px"; if(this.rendered_.right_ != right) { this.rendered_.right_ = style.right = right } }else { if(this.rendered_.right_ !== "") { this.rendered_.right_ = style.right = "" } var left = Math.round(pixel[0]) + "px"; if(this.rendered_.left_ != left) { this.rendered_.left_ = style.left = left } } if(positioning == ol.OverlayPositioning.TOP_LEFT || positioning == ol.OverlayPositioning.TOP_RIGHT) { if(this.rendered_.bottom_ !== "") { this.rendered_.bottom_ = style.bottom = "" } var top = Math.round(pixel[1]) + "px"; if(this.rendered_.top_ != top) { this.rendered_.top_ = style.top = top } }else { if(this.rendered_.top_ !== "") { this.rendered_.top_ = style.top = "" } var bottom = Math.round(mapSize[1] - pixel[1]) + "px"; if(this.rendered_.bottom_ != bottom) { this.rendered_.bottom_ = style.bottom = bottom } } if(!this.rendered_.visible) { goog.style.setElementShown(this.element_, true); this.rendered_.visible = true } }; goog.provide("ol.TileUrlFunction"); goog.provide("ol.TileUrlFunctionType"); goog.require("goog.array"); goog.require("goog.math"); goog.require("ol.TileCoord"); goog.require("ol.extent"); ol.TileUrlFunctionType; ol.TileCoordTransformType; ol.TileUrlFunction.createFromTemplate = function(template) { return function(tileCoord, projection) { if(goog.isNull(tileCoord)) { return undefined }else { return template.replace("{z}", "" + tileCoord.z).replace("{x}", "" + tileCoord.x).replace("{y}", "" + tileCoord.y) } } }; ol.TileUrlFunction.createFromTemplates = function(templates) { return ol.TileUrlFunction.createFromTileUrlFunctions(goog.array.map(templates, ol.TileUrlFunction.createFromTemplate)) }; ol.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) { if(tileUrlFunctions.length === 1) { return tileUrlFunctions[0] } return function(tileCoord, projection) { if(goog.isNull(tileCoord)) { return undefined }else { var index = goog.math.modulo(tileCoord.hash(), tileUrlFunctions.length); return tileUrlFunctions[index].call(this, tileCoord, projection) } } }; ol.TileUrlFunction.createFromParamsFunction = function(baseUrl, params, paramsFunction) { var tmpExtent = ol.extent.createEmpty(); return function(tileCoord, projection) { if(goog.isNull(tileCoord)) { return undefined }else { var tileGrid = this.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.getForProjection(projection) } var size = tileGrid.getTileSize(tileCoord.z); var extent = tileGrid.getTileCoordExtent(tileCoord, tmpExtent); return paramsFunction.call(this, baseUrl, params, extent, size, projection) } } }; ol.TileUrlFunction.nullTileUrlFunction = function(tileCoord, projection) { return undefined }; ol.TileUrlFunction.withTileCoordTransform = function(transformFn, tileUrlFunction) { var tmpTileCoord = new ol.TileCoord(0, 0, 0); return function(tileCoord, projection) { if(goog.isNull(tileCoord)) { return undefined }else { return tileUrlFunction.call(this, transformFn.call(this, tileCoord, projection, tmpTileCoord), projection) } } }; ol.TileUrlFunction.expandUrl = function(url) { var urls = []; var match = /\{(\d)-(\d)\}/.exec(url) || /\{([a-z])-([a-z])\}/.exec(url); if(match) { var startCharCode = match[1].charCodeAt(0); var stopCharCode = match[2].charCodeAt(0); var charCode; for(charCode = startCharCode;charCode <= stopCharCode;++charCode) { urls.push(url.replace(match[0], String.fromCharCode(charCode))) } }else { urls.push(url) } return urls }; goog.provide("goog.userAgent.product"); goog.require("goog.userAgent"); goog.define("goog.userAgent.product.ASSUME_FIREFOX", false); goog.define("goog.userAgent.product.ASSUME_CAMINO", false); goog.define("goog.userAgent.product.ASSUME_IPHONE", false); goog.define("goog.userAgent.product.ASSUME_IPAD", false); goog.define("goog.userAgent.product.ASSUME_ANDROID", false); goog.define("goog.userAgent.product.ASSUME_CHROME", false); goog.define("goog.userAgent.product.ASSUME_SAFARI", false); goog.userAgent.product.PRODUCT_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_OPERA || goog.userAgent.product.ASSUME_FIREFOX || goog.userAgent.product.ASSUME_CAMINO || 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.init_ = function() { goog.userAgent.product.detectedFirefox_ = false; goog.userAgent.product.detectedCamino_ = false; goog.userAgent.product.detectedIphone_ = false; goog.userAgent.product.detectedIpad_ = false; goog.userAgent.product.detectedAndroid_ = false; goog.userAgent.product.detectedChrome_ = false; goog.userAgent.product.detectedSafari_ = false; var ua = goog.userAgent.getUserAgentString(); if(!ua) { return } if(ua.indexOf("Firefox") != -1) { goog.userAgent.product.detectedFirefox_ = true }else { if(ua.indexOf("Camino") != -1) { goog.userAgent.product.detectedCamino_ = true }else { if(ua.indexOf("iPhone") != -1 || ua.indexOf("iPod") != -1) { goog.userAgent.product.detectedIphone_ = true }else { if(ua.indexOf("iPad") != -1) { goog.userAgent.product.detectedIpad_ = true }else { if(ua.indexOf("Android") != -1) { goog.userAgent.product.detectedAndroid_ = true }else { if(ua.indexOf("Chrome") != -1) { goog.userAgent.product.detectedChrome_ = true }else { if(ua.indexOf("Safari") != -1) { goog.userAgent.product.detectedSafari_ = true } } } } } } } }; if(!goog.userAgent.product.PRODUCT_KNOWN_) { goog.userAgent.product.init_() } goog.userAgent.product.OPERA = goog.userAgent.OPERA; goog.userAgent.product.IE = goog.userAgent.IE; goog.userAgent.product.FIREFOX = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_FIREFOX : goog.userAgent.product.detectedFirefox_; goog.userAgent.product.CAMINO = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_CAMINO : goog.userAgent.product.detectedCamino_; goog.userAgent.product.IPHONE = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPHONE : goog.userAgent.product.detectedIphone_; goog.userAgent.product.IPAD = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_IPAD : goog.userAgent.product.detectedIpad_; goog.userAgent.product.ANDROID = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_ANDROID : goog.userAgent.product.detectedAndroid_; goog.userAgent.product.CHROME = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_CHROME : goog.userAgent.product.detectedChrome_; goog.userAgent.product.SAFARI = goog.userAgent.product.PRODUCT_KNOWN_ ? goog.userAgent.product.ASSUME_SAFARI : goog.userAgent.product.detectedSafari_; goog.provide("goog.dom.fullscreen"); goog.provide("goog.dom.fullscreen.EventType"); goog.require("goog.dom"); goog.require("goog.userAgent"); goog.require("goog.userAgent.product"); goog.dom.fullscreen.EventType = {CHANGE:goog.userAgent.WEBKIT ? "webkitfullscreenchange" : "mozfullscreenchange"}; goog.dom.fullscreen.isSupported = function(opt_domHelper) { var doc = goog.dom.fullscreen.getDocument_(opt_domHelper); var body = doc.body; return!!body.webkitRequestFullScreen || !!body.mozRequestFullScreen && doc.mozFullScreenEnabled }; goog.dom.fullscreen.requestFullScreen = function(element) { if(element.webkitRequestFullScreen) { element.webkitRequestFullScreen() }else { if(element.mozRequestFullScreen) { element.mozRequestFullScreen() } } }; goog.dom.fullscreen.requestFullScreenWithKeys = function(element) { if(element.mozRequestFullScreenWithKeys) { element.mozRequestFullScreenWithKeys() }else { if(element.webkitRequestFullScreen && element.ALLOW_KEYBOARD_INPUT && goog.userAgent.product.CHROME) { element.webkitRequestFullScreen(element.ALLOW_KEYBOARD_INPUT) }else { goog.dom.fullscreen.requestFullScreen(element) } } }; goog.dom.fullscreen.exitFullScreen = function(opt_domHelper) { var doc = goog.dom.fullscreen.getDocument_(opt_domHelper); if(doc.webkitCancelFullScreen) { doc.webkitCancelFullScreen() }else { if(doc.mozCancelFullScreen) { doc.mozCancelFullScreen() } } }; goog.dom.fullscreen.isFullScreen = function(opt_domHelper) { var doc = goog.dom.fullscreen.getDocument_(opt_domHelper); return!!doc.webkitIsFullScreen || !!doc.mozFullScreen }; goog.dom.fullscreen.getDocument_ = function(opt_domHelper) { return opt_domHelper ? opt_domHelper.getDocument() : goog.dom.getDomHelper().getDocument() }; goog.provide("ol.control.FullScreen"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.dom.classes"); goog.require("goog.dom.fullscreen"); goog.require("goog.dom.fullscreen.EventType"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.control.Control"); goog.require("ol.css"); ol.control.FullScreen = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.cssClassName_ = goog.isDef(options.className) ? options.className : "ol-full-screen"; var aElement = goog.dom.createDom(goog.dom.TagName.A, {"href":"#fullScreen", "class":this.cssClassName_ + "-" + goog.dom.fullscreen.isFullScreen()}); goog.events.listen(aElement, [goog.events.EventType.CLICK, goog.events.EventType.TOUCHEND], this.handleClick_, false, this); goog.events.listen(goog.global.document, goog.dom.fullscreen.EventType.CHANGE, this.handleFullScreenChange_, false, this); var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":this.cssClassName_ + " " + ol.css.CLASS_UNSELECTABLE + " " + (!goog.dom.fullscreen.isSupported() ? ol.css.CLASS_UNSUPPORTED : "")}, aElement); goog.base(this, {element:element, target:options.target}); this.keys_ = goog.isDef(options.keys) ? options.keys : false }; goog.inherits(ol.control.FullScreen, ol.control.Control); ol.control.FullScreen.prototype.handleClick_ = function(browserEvent) { if(!goog.dom.fullscreen.isSupported()) { return } browserEvent.preventDefault(); var map = this.getMap(); if(goog.isNull(map)) { return } if(goog.dom.fullscreen.isFullScreen()) { goog.dom.fullscreen.exitFullScreen() }else { var target = map.getTarget(); goog.asserts.assert(goog.isDefAndNotNull(target)); var element = goog.dom.getElement(target); goog.asserts.assert(goog.isDefAndNotNull(element)); if(this.keys_) { goog.dom.fullscreen.requestFullScreenWithKeys(element) }else { goog.dom.fullscreen.requestFullScreen(element) } } }; ol.control.FullScreen.prototype.handleFullScreenChange_ = function() { var opened = this.cssClassName_ + "-true"; var closed = this.cssClassName_ + "-false"; var anchor = goog.dom.getFirstElementChild(this.element); if(goog.dom.fullscreen.isFullScreen()) { goog.dom.classes.swap(anchor, closed, opened) }else { goog.dom.classes.swap(anchor, opened, closed) } }; goog.provide("ol.control.MousePosition"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.style"); goog.require("ol.CoordinateFormatType"); goog.require("ol.Object"); goog.require("ol.Pixel"); goog.require("ol.Projection"); goog.require("ol.TransformFunction"); goog.require("ol.control.Control"); goog.require("ol.proj"); ol.control.MousePositionProperty = {PROJECTION:"projection", COORDINATE_FORMAT:"coordinateFormat"}; ol.control.MousePosition = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var className = goog.isDef(options.className) ? options.className : "ol-mouse-position"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className}); goog.base(this, {element:element, target:options.target}); goog.events.listen(this, ol.Object.getChangeEventType(ol.control.MousePositionProperty.PROJECTION), this.handleProjectionChanged_, false, this); if(goog.isDef(options.coordinateFormat)) { this.setCoordinateFormat(options.coordinateFormat) } if(goog.isDef(options.projection)) { this.setProjection(ol.proj.get(options.projection)) } this.undefinedHTML_ = goog.isDef(options.undefinedHTML) ? options.undefinedHTML : ""; this.renderedHTML_ = element.innerHTML; this.mapProjection_ = null; this.transform_ = null; this.lastMouseMovePixel_ = null }; goog.inherits(ol.control.MousePosition, ol.control.Control); ol.control.MousePosition.prototype.handleMapPostrender = function(mapEvent) { var frameState = mapEvent.frameState; if(goog.isNull(frameState)) { this.mapProjection_ = null }else { if(this.mapProjection_ != frameState.view2DState.projection) { this.mapProjection_ = frameState.view2DState.projection; this.transform_ = null } } this.updateHTML_(this.lastMouseMovePixel_) }; ol.control.MousePosition.prototype.handleProjectionChanged_ = function() { this.transform_ = null }; ol.control.MousePosition.prototype.getCoordinateFormat = function() { return(this.get(ol.control.MousePositionProperty.COORDINATE_FORMAT)) }; goog.exportProperty(ol.control.MousePosition.prototype, "getCoordinateFormat", ol.control.MousePosition.prototype.getCoordinateFormat); ol.control.MousePosition.prototype.getProjection = function() { return(this.get(ol.control.MousePositionProperty.PROJECTION)) }; goog.exportProperty(ol.control.MousePosition.prototype, "getProjection", ol.control.MousePosition.prototype.getProjection); ol.control.MousePosition.prototype.handleMouseMove = function(browserEvent) { var map = this.getMap(); var eventPosition = goog.style.getRelativePosition(browserEvent, map.getViewport()); this.lastMouseMovePixel_ = [eventPosition.x, eventPosition.y]; this.updateHTML_(this.lastMouseMovePixel_) }; ol.control.MousePosition.prototype.handleMouseOut = function(browserEvent) { this.updateHTML_(null); this.lastMouseMovePixel_ = null }; ol.control.MousePosition.prototype.setMap = function(map) { goog.base(this, "setMap", map); if(!goog.isNull(map)) { var viewport = map.getViewport(); this.listenerKeys.push(goog.events.listen(viewport, goog.events.EventType.MOUSEMOVE, this.handleMouseMove, false, this), goog.events.listen(viewport, goog.events.EventType.MOUSEOUT, this.handleMouseOut, false, this)) } }; ol.control.MousePosition.prototype.setCoordinateFormat = function(format) { this.set(ol.control.MousePositionProperty.COORDINATE_FORMAT, format) }; goog.exportProperty(ol.control.MousePosition.prototype, "setCoordinateFormat", ol.control.MousePosition.prototype.setCoordinateFormat); ol.control.MousePosition.prototype.setProjection = function(projection) { this.set(ol.control.MousePositionProperty.PROJECTION, projection) }; goog.exportProperty(ol.control.MousePosition.prototype, "setProjection", ol.control.MousePosition.prototype.setProjection); ol.control.MousePosition.prototype.updateHTML_ = function(pixel) { var html = this.undefinedHTML_; if(!goog.isNull(pixel) && !goog.isNull(this.mapProjection_)) { if(goog.isNull(this.transform_)) { var projection = this.getProjection(); if(goog.isDef(projection)) { this.transform_ = ol.proj.getTransformFromProjections(this.mapProjection_, projection) }else { this.transform_ = ol.proj.identityTransform } } var map = this.getMap(); var coordinate = map.getCoordinateFromPixel(pixel); if(!goog.isNull(coordinate)) { this.transform_(coordinate, coordinate); var coordinateFormat = this.getCoordinateFormat(); if(goog.isDef(coordinateFormat)) { html = coordinateFormat(coordinate) }else { html = coordinate.toString() } } } if(!goog.isDef(this.renderedHTML_) || html != this.renderedHTML_) { this.element.innerHTML = html; this.renderedHTML_ = html } }; goog.provide("ol.control.ScaleLine"); goog.provide("ol.control.ScaleLineProperty"); goog.provide("ol.control.ScaleLineUnits"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.math"); goog.require("goog.style"); goog.require("ol.Object"); goog.require("ol.ProjectionUnits"); goog.require("ol.TransformFunction"); goog.require("ol.View2DState"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.proj"); goog.require("ol.sphere.NORMAL"); ol.control.ScaleLineProperty = {UNITS:"units"}; ol.control.ScaleLineUnits = {DEGREES:"degrees", IMPERIAL:"imperial", NAUTICAL:"nautical", METRIC:"metric", US:"us"}; ol.control.ScaleLine = function(opt_options) { var options = opt_options || {}; var className = goog.isDef(options.className) ? options.className : "ol-scale-line"; this.innerElement_ = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + "-inner"}); this.element_ = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}, this.innerElement_); this.view2DState_ = null; this.minWidth_ = goog.isDef(options.minWidth) ? options.minWidth : 64; this.renderedVisible_ = false; this.renderedWidth_ = undefined; this.renderedHTML_ = ""; this.toEPSG4326_ = null; goog.base(this, {element:this.element_, target:options.target}); goog.events.listen(this, ol.Object.getChangeEventType(ol.control.ScaleLineProperty.UNITS), this.handleUnitsChanged_, false, this); this.setUnits(options.units || ol.control.ScaleLineUnits.METRIC) }; goog.inherits(ol.control.ScaleLine, ol.control.Control); ol.control.ScaleLine.LEADING_DIGITS = [1, 2, 5]; ol.control.ScaleLine.prototype.getUnits = function() { return(this.get(ol.control.ScaleLineProperty.UNITS)) }; goog.exportProperty(ol.control.ScaleLine.prototype, "getUnits", ol.control.ScaleLine.prototype.getUnits); ol.control.ScaleLine.prototype.handleMapPostrender = function(mapEvent) { var frameState = mapEvent.frameState; if(goog.isNull(frameState)) { this.view2DState_ = null }else { this.view2DState_ = frameState.view2DState } this.updateElement_() }; ol.control.ScaleLine.prototype.handleUnitsChanged_ = function() { this.updateElement_() }; ol.control.ScaleLine.prototype.setUnits = function(units) { this.set(ol.control.ScaleLineProperty.UNITS, units) }; goog.exportProperty(ol.control.ScaleLine.prototype, "setUnits", ol.control.ScaleLine.prototype.setUnits); ol.control.ScaleLine.prototype.updateElement_ = function() { var view2DState = this.view2DState_; if(goog.isNull(view2DState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.element_, false); this.renderedVisible_ = false } return } var center = view2DState.center; var projection = view2DState.projection; var pointResolution = projection.getPointResolution(view2DState.resolution, center); var projectionUnits = projection.getUnits(); var cosLatitude; var units = this.getUnits(); if(projectionUnits == ol.ProjectionUnits.DEGREES && (units == ol.control.ScaleLineUnits.METRIC || units == ol.control.ScaleLineUnits.IMPERIAL)) { this.toEPSG4326_ = null; cosLatitude = Math.cos(goog.math.toRadians(center[1])); pointResolution *= Math.PI * cosLatitude * ol.sphere.NORMAL.radius / 180; projectionUnits = ol.ProjectionUnits.METERS }else { if((projectionUnits == ol.ProjectionUnits.FEET || projectionUnits == ol.ProjectionUnits.METERS) && units == ol.control.ScaleLineUnits.DEGREES) { if(goog.isNull(this.toEPSG4326_)) { this.toEPSG4326_ = ol.proj.getTransformFromProjections(projection, ol.proj.get("EPSG:4326")) } cosLatitude = Math.cos(goog.math.toRadians(this.toEPSG4326_(center)[1])); var radius = ol.sphere.NORMAL.radius; if(projectionUnits == ol.ProjectionUnits.FEET) { radius /= 0.3048 } pointResolution *= 180 / (Math.PI * cosLatitude * radius); projectionUnits = ol.ProjectionUnits.DEGREES }else { this.toEPSG4326_ = null } } goog.asserts.assert((units == ol.control.ScaleLineUnits.METRIC || units == ol.control.ScaleLineUnits.IMPERIAL) && projectionUnits == ol.ProjectionUnits.METERS || units == ol.control.ScaleLineUnits.DEGREES && projectionUnits == ol.ProjectionUnits.DEGREES); var nominalCount = this.minWidth_ * pointResolution; var suffix = ""; if(units == ol.control.ScaleLineUnits.DEGREES) { if(nominalCount < 1 / 60) { suffix = "\u2033"; pointResolution *= 3600 }else { if(nominalCount < 1) { suffix = "\u2032"; pointResolution *= 60 }else { suffix = "\u00b0" } } }else { if(units == ol.control.ScaleLineUnits.IMPERIAL) { if(nominalCount < 0.9144) { suffix = "in"; pointResolution /= 0.0254 }else { if(nominalCount < 1609.344) { suffix = "ft"; pointResolution /= 0.3048 }else { suffix = "mi"; pointResolution /= 1609.344 } } }else { if(units == ol.control.ScaleLineUnits.NAUTICAL) { pointResolution /= 1852; suffix = "nm" }else { if(units == ol.control.ScaleLineUnits.METRIC) { if(nominalCount < 1) { suffix = "mm"; pointResolution *= 1E3 }else { if(nominalCount < 1E3) { suffix = "m" }else { suffix = "km"; pointResolution /= 1E3 } } }else { if(units == ol.control.ScaleLineUnits.US) { if(nominalCount < 0.9144) { suffix = "in"; pointResolution *= 39.37 }else { if(nominalCount < 1609.344) { suffix = "ft"; pointResolution /= 0.30480061 }else { suffix = "mi"; pointResolution /= 1609.3472 } } }else { goog.asserts.fail() } } } } } var i = 3 * Math.floor(Math.log(this.minWidth_ * pointResolution) / Math.log(10)); var count, width; while(true) { count = ol.control.ScaleLine.LEADING_DIGITS[i % 3] * Math.pow(10, Math.floor(i / 3)); width = Math.round(count / pointResolution); if(width >= this.minWidth_) { break } ++i } var html = count + suffix; if(this.renderedHTML_ != html) { this.innerElement_.innerHTML = html; this.renderedHTML_ = html } if(this.renderedWidth_ != width) { this.innerElement_.style.width = width + "px"; this.renderedWidth_ = width } if(!this.renderedVisible_) { goog.style.setElementShown(this.element_, true); this.renderedVisible_ = true } }; goog.provide("goog.events.EventHandler"); goog.require("goog.Disposable"); goog.require("goog.events"); goog.require("goog.object"); goog.events.EventHandler = function(opt_handler) { goog.Disposable.call(this); this.handler_ = opt_handler; this.keys_ = {} }; goog.inherits(goog.events.EventHandler, goog.Disposable); goog.events.EventHandler.typeArray_ = []; goog.events.EventHandler.prototype.listen = function(src, type, opt_fn, opt_capture, opt_handler) { if(!goog.isArray(type)) { goog.events.EventHandler.typeArray_[0] = (type); type = goog.events.EventHandler.typeArray_ } for(var i = 0;i < type.length;i++) { var listenerObj = goog.events.listen(src, type[i], opt_fn || this, opt_capture || false, opt_handler || this.handler_ || this); if(goog.DEBUG && !listenerObj) { return this } var key = listenerObj.key; this.keys_[key] = listenerObj } return this }; goog.events.EventHandler.prototype.listenOnce = function(src, type, opt_fn, opt_capture, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { this.listenOnce(src, type[i], opt_fn, opt_capture, opt_handler) } }else { var listenerObj = goog.events.listenOnce(src, type, opt_fn || this, opt_capture, opt_handler || this.handler_ || this); var key = listenerObj.key; this.keys_[key] = listenerObj } return this }; goog.events.EventHandler.prototype.listenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.listen(src, listener, opt_capt, opt_handler || this.handler_ || this, this); return this }; goog.events.EventHandler.prototype.getListenerCount = function() { var count = 0; for(var key in this.keys_) { if(Object.prototype.hasOwnProperty.call(this.keys_, key)) { count++ } } return count }; goog.events.EventHandler.prototype.unlisten = function(src, type, opt_fn, opt_capture, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { this.unlisten(src, type[i], opt_fn, opt_capture, opt_handler) } }else { var listener = goog.events.getListener(src, type, opt_fn || this, opt_capture, opt_handler || this.handler_ || this); if(listener) { goog.events.unlistenByKey(listener); delete this.keys_[listener.key] } } return this }; goog.events.EventHandler.prototype.unlistenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.unlisten(src, listener, opt_capt, opt_handler || this.handler_ || this, this); return this }; goog.events.EventHandler.prototype.removeAll = function() { goog.object.forEach(this.keys_, goog.events.unlistenByKey); this.keys_ = {} }; goog.events.EventHandler.prototype.disposeInternal = function() { goog.events.EventHandler.superClass_.disposeInternal.call(this); this.removeAll() }; goog.events.EventHandler.prototype.handleEvent = function(e) { throw Error("EventHandler.handleEvent not implemented"); }; goog.provide("goog.style.bidi"); goog.require("goog.dom"); goog.require("goog.style"); goog.require("goog.userAgent"); goog.style.bidi.getScrollLeft = function(element) { var isRtl = goog.style.isRightToLeft(element); if(isRtl && goog.userAgent.GECKO) { return-element.scrollLeft }else { if(isRtl && !(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8"))) { var overflowX = goog.style.getComputedOverflowX(element); if(overflowX == "visible") { return element.scrollLeft }else { return element.scrollWidth - element.clientWidth - element.scrollLeft } } } return element.scrollLeft }; goog.style.bidi.getOffsetStart = function(element) { var offsetLeftForReal = element.offsetLeft; var bestParent = element.offsetParent; if(!bestParent && goog.style.getComputedPosition(element) == "fixed") { bestParent = goog.dom.getOwnerDocument(element).documentElement } if(!bestParent) { return offsetLeftForReal } if(goog.userAgent.GECKO) { var borderWidths = goog.style.getBorderBox(bestParent); offsetLeftForReal += borderWidths.left }else { if(goog.userAgent.isDocumentModeOrHigher(8)) { var borderWidths = goog.style.getBorderBox(bestParent); offsetLeftForReal -= borderWidths.left } } if(goog.style.isRightToLeft(bestParent)) { var elementRightOffset = offsetLeftForReal + element.offsetWidth; return bestParent.clientWidth - elementRightOffset } return offsetLeftForReal }; goog.style.bidi.setScrollOffset = function(element, offsetStart) { offsetStart = Math.max(offsetStart, 0); if(!goog.style.isRightToLeft(element)) { element.scrollLeft = offsetStart }else { if(goog.userAgent.GECKO) { element.scrollLeft = -offsetStart }else { if(!(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8"))) { element.scrollLeft = element.scrollWidth - offsetStart - element.clientWidth }else { element.scrollLeft = offsetStart } } } }; goog.style.bidi.setPosition = function(elem, left, top, isRtl) { if(!goog.isNull(top)) { elem.style.top = top + "px" } if(isRtl) { elem.style.right = left + "px"; elem.style.left = "" }else { elem.style.left = left + "px"; elem.style.right = "" } }; goog.provide("goog.fx.DragEvent"); goog.provide("goog.fx.Dragger"); goog.provide("goog.fx.Dragger.EventType"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.EventHandler"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Rect"); goog.require("goog.style"); goog.require("goog.style.bidi"); goog.require("goog.userAgent"); goog.fx.Dragger = function(target, opt_handle, opt_limits) { goog.events.EventTarget.call(this); this.target = target; this.handle = opt_handle || target; this.limits = opt_limits || new goog.math.Rect(NaN, NaN, NaN, NaN); this.document_ = goog.dom.getOwnerDocument(target); this.eventHandler_ = new goog.events.EventHandler(this); this.registerDisposable(this.eventHandler_); goog.events.listen(this.handle, [goog.events.EventType.TOUCHSTART, goog.events.EventType.MOUSEDOWN], this.startDrag, false, this) }; goog.inherits(goog.fx.Dragger, goog.events.EventTarget); goog.fx.Dragger.HAS_SET_CAPTURE_ = goog.userAgent.IE || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9.3"); goog.fx.Dragger.EventType = {EARLY_CANCEL:"earlycancel", START:"start", BEFOREDRAG:"beforedrag", DRAG:"drag", END:"end"}; goog.fx.Dragger.prototype.target; goog.fx.Dragger.prototype.handle; goog.fx.Dragger.prototype.limits; goog.fx.Dragger.prototype.rightToLeft_; goog.fx.Dragger.prototype.clientX = 0; goog.fx.Dragger.prototype.clientY = 0; goog.fx.Dragger.prototype.screenX = 0; goog.fx.Dragger.prototype.screenY = 0; goog.fx.Dragger.prototype.startX = 0; goog.fx.Dragger.prototype.startY = 0; goog.fx.Dragger.prototype.deltaX = 0; goog.fx.Dragger.prototype.deltaY = 0; goog.fx.Dragger.prototype.pageScroll; goog.fx.Dragger.prototype.enabled_ = true; goog.fx.Dragger.prototype.dragging_ = false; goog.fx.Dragger.prototype.hysteresisDistanceSquared_ = 0; goog.fx.Dragger.prototype.mouseDownTime_ = 0; goog.fx.Dragger.prototype.document_; goog.fx.Dragger.prototype.scrollTarget_; goog.fx.Dragger.prototype.ieDragStartCancellingOn_ = false; goog.fx.Dragger.prototype.useRightPositioningForRtl_ = false; goog.fx.Dragger.prototype.enableRightPositioningForRtl = function(useRightPositioningForRtl) { this.useRightPositioningForRtl_ = useRightPositioningForRtl }; goog.fx.Dragger.prototype.getHandler = function() { return this.eventHandler_ }; goog.fx.Dragger.prototype.setLimits = function(limits) { this.limits = limits || new goog.math.Rect(NaN, NaN, NaN, NaN) }; goog.fx.Dragger.prototype.setHysteresis = function(distance) { this.hysteresisDistanceSquared_ = Math.pow(distance, 2) }; goog.fx.Dragger.prototype.getHysteresis = function() { return Math.sqrt(this.hysteresisDistanceSquared_) }; goog.fx.Dragger.prototype.setScrollTarget = function(scrollTarget) { this.scrollTarget_ = scrollTarget }; goog.fx.Dragger.prototype.setCancelIeDragStart = function(cancelIeDragStart) { this.ieDragStartCancellingOn_ = cancelIeDragStart }; goog.fx.Dragger.prototype.getEnabled = function() { return this.enabled_ }; goog.fx.Dragger.prototype.setEnabled = function(enabled) { this.enabled_ = enabled }; goog.fx.Dragger.prototype.disposeInternal = function() { goog.fx.Dragger.superClass_.disposeInternal.call(this); goog.events.unlisten(this.handle, [goog.events.EventType.TOUCHSTART, goog.events.EventType.MOUSEDOWN], this.startDrag, false, this); this.cleanUpAfterDragging_(); this.target = null; this.handle = null }; goog.fx.Dragger.prototype.isRightToLeft_ = function() { if(!goog.isDef(this.rightToLeft_)) { this.rightToLeft_ = goog.style.isRightToLeft(this.target) } return this.rightToLeft_ }; goog.fx.Dragger.prototype.startDrag = function(e) { var isMouseDown = e.type == goog.events.EventType.MOUSEDOWN; if(this.enabled_ && !this.dragging_ && (!isMouseDown || e.isMouseActionButton())) { this.maybeReinitTouchEvent_(e); if(this.hysteresisDistanceSquared_ == 0) { if(this.fireDragStart_(e)) { this.dragging_ = true; e.preventDefault() }else { return } }else { e.preventDefault() } this.setupDragHandlers(); this.clientX = this.startX = e.clientX; this.clientY = this.startY = e.clientY; this.screenX = e.screenX; this.screenY = e.screenY; this.deltaX = this.useRightPositioningForRtl_ ? goog.style.bidi.getOffsetStart(this.target) : this.target.offsetLeft; this.deltaY = this.target.offsetTop; this.pageScroll = goog.dom.getDomHelper(this.document_).getDocumentScroll(); this.mouseDownTime_ = goog.now() }else { this.dispatchEvent(goog.fx.Dragger.EventType.EARLY_CANCEL) } }; goog.fx.Dragger.prototype.setupDragHandlers = function() { var doc = this.document_; var docEl = doc.documentElement; var useCapture = !goog.fx.Dragger.HAS_SET_CAPTURE_; this.eventHandler_.listen(doc, [goog.events.EventType.TOUCHMOVE, goog.events.EventType.MOUSEMOVE], this.handleMove_, useCapture); this.eventHandler_.listen(doc, [goog.events.EventType.TOUCHEND, goog.events.EventType.MOUSEUP], this.endDrag, useCapture); if(goog.fx.Dragger.HAS_SET_CAPTURE_) { docEl.setCapture(false); this.eventHandler_.listen(docEl, goog.events.EventType.LOSECAPTURE, this.endDrag) }else { this.eventHandler_.listen(goog.dom.getWindow(doc), goog.events.EventType.BLUR, this.endDrag) } if(goog.userAgent.IE && this.ieDragStartCancellingOn_) { this.eventHandler_.listen(doc, goog.events.EventType.DRAGSTART, goog.events.Event.preventDefault) } if(this.scrollTarget_) { this.eventHandler_.listen(this.scrollTarget_, goog.events.EventType.SCROLL, this.onScroll_, useCapture) } }; goog.fx.Dragger.prototype.fireDragStart_ = function(e) { return this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.START, this, e.clientX, e.clientY, e)) }; goog.fx.Dragger.prototype.cleanUpAfterDragging_ = function() { this.eventHandler_.removeAll(); if(goog.fx.Dragger.HAS_SET_CAPTURE_) { this.document_.releaseCapture() } }; goog.fx.Dragger.prototype.endDrag = function(e, opt_dragCanceled) { this.cleanUpAfterDragging_(); if(this.dragging_) { this.maybeReinitTouchEvent_(e); this.dragging_ = false; var x = this.limitX(this.deltaX); var y = this.limitY(this.deltaY); var dragCanceled = opt_dragCanceled || e.type == goog.events.EventType.TOUCHCANCEL; this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.END, this, e.clientX, e.clientY, e, x, y, dragCanceled)) }else { this.dispatchEvent(goog.fx.Dragger.EventType.EARLY_CANCEL) } }; goog.fx.Dragger.prototype.endDragCancel = function(e) { this.endDrag(e, true) }; goog.fx.Dragger.prototype.maybeReinitTouchEvent_ = function(e) { var type = e.type; if(type == goog.events.EventType.TOUCHSTART || type == goog.events.EventType.TOUCHMOVE) { e.init(e.getBrowserEvent().targetTouches[0], e.currentTarget) }else { if(type == goog.events.EventType.TOUCHEND || type == goog.events.EventType.TOUCHCANCEL) { e.init(e.getBrowserEvent().changedTouches[0], e.currentTarget) } } }; goog.fx.Dragger.prototype.handleMove_ = function(e) { if(this.enabled_) { this.maybeReinitTouchEvent_(e); var sign = this.useRightPositioningForRtl_ && this.isRightToLeft_() ? -1 : 1; var dx = sign * (e.clientX - this.clientX); var dy = e.clientY - this.clientY; this.clientX = e.clientX; this.clientY = e.clientY; this.screenX = e.screenX; this.screenY = e.screenY; if(!this.dragging_) { var diffX = this.startX - this.clientX; var diffY = this.startY - this.clientY; var distance = diffX * diffX + diffY * diffY; if(distance > this.hysteresisDistanceSquared_) { if(this.fireDragStart_(e)) { this.dragging_ = true }else { if(!this.isDisposed()) { this.endDrag(e) } return } } } var pos = this.calculatePosition_(dx, dy); var x = pos.x; var y = pos.y; if(this.dragging_) { var rv = this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.BEFOREDRAG, this, e.clientX, e.clientY, e, x, y)); if(rv) { this.doDrag(e, x, y, false); e.preventDefault() } } } }; goog.fx.Dragger.prototype.calculatePosition_ = function(dx, dy) { var pageScroll = goog.dom.getDomHelper(this.document_).getDocumentScroll(); dx += pageScroll.x - this.pageScroll.x; dy += pageScroll.y - this.pageScroll.y; this.pageScroll = pageScroll; this.deltaX += dx; this.deltaY += dy; var x = this.limitX(this.deltaX); var y = this.limitY(this.deltaY); return new goog.math.Coordinate(x, y) }; goog.fx.Dragger.prototype.onScroll_ = function(e) { var pos = this.calculatePosition_(0, 0); e.clientX = this.clientX; e.clientY = this.clientY; this.doDrag(e, pos.x, pos.y, true) }; goog.fx.Dragger.prototype.doDrag = function(e, x, y, dragFromScroll) { this.defaultAction(x, y); this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.DRAG, this, e.clientX, e.clientY, e, x, y)) }; goog.fx.Dragger.prototype.limitX = function(x) { var rect = this.limits; var left = !isNaN(rect.left) ? rect.left : null; var width = !isNaN(rect.width) ? rect.width : 0; var maxX = left != null ? left + width : Infinity; var minX = left != null ? left : -Infinity; return Math.min(maxX, Math.max(minX, x)) }; goog.fx.Dragger.prototype.limitY = function(y) { var rect = this.limits; var top = !isNaN(rect.top) ? rect.top : null; var height = !isNaN(rect.height) ? rect.height : 0; var maxY = top != null ? top + height : Infinity; var minY = top != null ? top : -Infinity; return Math.min(maxY, Math.max(minY, y)) }; goog.fx.Dragger.prototype.defaultAction = function(x, y) { if(this.useRightPositioningForRtl_ && this.isRightToLeft_()) { this.target.style.right = x + "px" }else { this.target.style.left = x + "px" } this.target.style.top = y + "px" }; goog.fx.Dragger.prototype.isDragging = function() { return this.dragging_ }; goog.fx.DragEvent = function(type, dragobj, clientX, clientY, browserEvent, opt_actX, opt_actY, opt_dragCanceled) { goog.events.Event.call(this, type); this.clientX = clientX; this.clientY = clientY; this.browserEvent = browserEvent; this.left = goog.isDef(opt_actX) ? opt_actX : dragobj.deltaX; this.top = goog.isDef(opt_actY) ? opt_actY : dragobj.deltaY; this.dragger = dragobj; this.dragCanceled = !!opt_dragCanceled }; goog.inherits(goog.fx.DragEvent, goog.events.Event); goog.provide("ol.control.ZoomSlider"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.fx.Dragger"); goog.require("goog.fx.Dragger.EventType"); goog.require("goog.math"); goog.require("goog.math.Rect"); goog.require("goog.style"); goog.require("ol.animation"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.easing"); ol.control.ZOOMSLIDER_ANIMATION_DURATION = 200; ol.control.ZoomSlider = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.currentResolution_ = undefined; this.direction_ = ol.control.ZoomSlider.direction.VERTICAL; this.sliderInitialized_ = false; this.draggerListenerKeys_ = null; var className = goog.isDef(options.className) ? options.className : "ol-zoomslider"; var sliderCssCls = className + " " + ol.css.CLASS_UNSELECTABLE; var thumbCssCls = className + "-thumb" + " " + ol.css.CLASS_UNSELECTABLE; var element = goog.dom.createDom(goog.dom.TagName.DIV, sliderCssCls, goog.dom.createDom(goog.dom.TagName.DIV, thumbCssCls)); this.dragger_ = this.createDraggable_(element); goog.events.listen(element, [goog.events.EventType.TOUCHEND, goog.events.EventType.CLICK], this.handleContainerClick_, false, this); goog.base(this, {element:element}) }; goog.inherits(ol.control.ZoomSlider, ol.control.Control); ol.control.ZoomSlider.direction = {VERTICAL:0, HORIZONTAL:1}; ol.control.ZoomSlider.prototype.setMap = function(map) { goog.base(this, "setMap", map); if(!goog.isNull(map)) { map.render() } }; ol.control.ZoomSlider.prototype.initSlider_ = function() { var container = this.element, thumb = goog.dom.getFirstElementChild(container), elemSize = goog.style.getContentBoxSize(container), thumbBounds = goog.style.getBounds(thumb), thumbMargins = goog.style.getMarginBox(thumb), thumbBorderBox = goog.style.getBorderBox(thumb), w = elemSize.width - thumbMargins.left - thumbMargins.right - thumbBorderBox.left - thumbBorderBox.right - thumbBounds.width, h = elemSize.height - thumbMargins.top - thumbMargins.bottom - thumbBorderBox.top - thumbBorderBox.bottom - thumbBounds.height, limits; if(elemSize.width > elemSize.height) { this.direction_ = ol.control.ZoomSlider.direction.HORIZONTAL; limits = new goog.math.Rect(0, 0, w, 0) }else { this.direction_ = ol.control.ZoomSlider.direction.VERTICAL; limits = new goog.math.Rect(0, 0, 0, h) } this.dragger_.setLimits(limits); this.sliderInitialized_ = true }; ol.control.ZoomSlider.prototype.handleMapPostrender = function(mapEvent) { if(goog.isNull(mapEvent.frameState)) { return } goog.asserts.assert(goog.isDefAndNotNull(mapEvent.frameState.view2DState)); if(!this.sliderInitialized_) { this.initSlider_() } var res = mapEvent.frameState.view2DState.resolution; if(res !== this.currentResolution_) { this.currentResolution_ = res; this.positionThumbForResolution_(res) } }; ol.control.ZoomSlider.prototype.handleContainerClick_ = function(browserEvent) { }; ol.control.ZoomSlider.prototype.positionThumbForResolution_ = function(res) { var amount = this.amountForResolution_(res), dragger = this.dragger_, thumb = goog.dom.getFirstElementChild(this.element); if(this.direction_ == ol.control.ZoomSlider.direction.HORIZONTAL) { var left = dragger.limits.left + dragger.limits.width * amount; goog.style.setPosition(thumb, left) }else { var top = dragger.limits.top + dragger.limits.height * amount; goog.style.setPosition(thumb, dragger.limits.left, top) } }; ol.control.ZoomSlider.prototype.amountDragged_ = function(e) { var draggerLimits = this.dragger_.limits, amount = 0; if(this.direction_ === ol.control.ZoomSlider.direction.HORIZONTAL) { amount = (e.left - draggerLimits.left) / draggerLimits.width }else { amount = (e.top - draggerLimits.top) / draggerLimits.height } return amount }; ol.control.ZoomSlider.prototype.resolutionForAmount_ = function(amount) { amount = (goog.math.clamp(amount, 0, 1) - 1) * -1; var fn = this.getMap().getView().getView2D().getResolutionForValueFunction(); return fn(amount) }; ol.control.ZoomSlider.prototype.amountForResolution_ = function(res) { var fn = this.getMap().getView().getView2D().getValueForResolutionFunction(); var value = fn(res); return(value - 1) * -1 }; ol.control.ZoomSlider.prototype.handleSliderChange_ = function(e) { var map = this.getMap(); var view = map.getView().getView2D(); var resolution; if(e.type === goog.fx.Dragger.EventType.DRAG) { var amountDragged = this.amountDragged_(e); resolution = this.resolutionForAmount_(amountDragged); if(resolution !== this.currentResolution_) { this.currentResolution_ = resolution; view.setResolution(resolution) } }else { goog.asserts.assert(goog.isDef(this.currentResolution_)); map.beforeRender(ol.animation.zoom({resolution:this.currentResolution_, duration:ol.control.ZOOMSLIDER_ANIMATION_DURATION, easing:ol.easing.easeOut})); resolution = view.constrainResolution(this.currentResolution_); view.setResolution(resolution) } }; ol.control.ZoomSlider.prototype.createDraggable_ = function(elem) { if(!goog.isNull(this.draggerListenerKeys_)) { goog.array.forEach(this.draggerListenerKeys_, goog.events.unlistenByKey); this.draggerListenerKeys_ = null } var dragger = new goog.fx.Dragger(elem.childNodes[0]); this.draggerListenerKeys_ = [goog.events.listen(dragger, [goog.fx.Dragger.EventType.DRAG, goog.fx.Dragger.EventType.END], this.handleSliderChange_, undefined, this)]; return dragger }; goog.provide("ol.control.ZoomToExtent"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.control.Control"); goog.require("ol.css"); ol.control.ZoomToExtent = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.extent_ = goog.isDef(options.extent) ? options.extent : null; var className = goog.isDef(options.className) ? options.className : "ol-zoom-extent"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}); var button = goog.dom.createDom(goog.dom.TagName.A, {"href":"#zoomExtent"}); goog.dom.appendChild(element, button); goog.events.listen(element, [goog.events.EventType.TOUCHEND, goog.events.EventType.CLICK], this.handleZoomToExtent_, false, this); goog.base(this, {element:element, target:options.target}) }; goog.inherits(ol.control.ZoomToExtent, ol.control.Control); ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function(browserEvent) { browserEvent.preventDefault(); var map = this.getMap(); var view = map.getView().getView2D(); var extent = goog.isNull(this.extent_) ? view.getProjection().getExtent() : this.extent_; view.fitExtent(extent, map.getSize()) }; goog.provide("ol.dom.Input"); goog.provide("ol.dom.InputProperty"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.Object"); ol.dom.InputProperty = {VALUE:"value", VALUE_AS_NUMBER:"valueAsNumber", CHECKED:"checked"}; ol.dom.Input = function(target) { goog.base(this); this.target_ = target; goog.events.listen(this.target_, goog.events.EventType.CHANGE, this.handleInputChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.dom.InputProperty.VALUE), this.handleValueChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.dom.InputProperty.VALUE_AS_NUMBER), this.handleValueAsNumberChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.dom.InputProperty.CHECKED), this.handleCheckedChanged_, false, this) }; goog.inherits(ol.dom.Input, ol.Object); ol.dom.Input.prototype.getChecked = function() { return(this.get(ol.dom.InputProperty.CHECKED)) }; goog.exportProperty(ol.dom.Input.prototype, "getChecked", ol.dom.Input.prototype.getChecked); ol.dom.Input.prototype.getValue = function() { return(this.get(ol.dom.InputProperty.VALUE)) }; goog.exportProperty(ol.dom.Input.prototype, "getValue", ol.dom.Input.prototype.getValue); ol.dom.Input.prototype.getValueAsNumber = function() { return(this.get(ol.dom.InputProperty.VALUE_AS_NUMBER)) }; goog.exportProperty(ol.dom.Input.prototype, "getValueAsNumber", ol.dom.Input.prototype.getValueAsNumber); ol.dom.Input.prototype.setValue = function(value) { this.set(ol.dom.InputProperty.VALUE, value) }; goog.exportProperty(ol.dom.Input.prototype, "setValue", ol.dom.Input.prototype.setValue); ol.dom.Input.prototype.setValueAsNumber = function(value) { this.set(ol.dom.InputProperty.VALUE_AS_NUMBER, value) }; goog.exportProperty(ol.dom.Input.prototype, "setValueAsNumber", ol.dom.Input.prototype.setValueAsNumber); ol.dom.Input.prototype.setChecked = function(checked) { this.set(ol.dom.InputProperty.CHECKED, checked) }; goog.exportProperty(ol.dom.Input.prototype, "setChecked", ol.dom.Input.prototype.setChecked); ol.dom.Input.prototype.handleInputChanged_ = function() { if(this.target_.type === "checkbox" || this.target_.type === "radio") { this.setChecked(this.target_.checked) }else { this.setValue(this.target_.value); this.setValueAsNumber(this.target_.valueAsNumber) } }; ol.dom.Input.prototype.handleCheckedChanged_ = function() { this.target_.checked = this.getChecked() ? "checked" : undefined }; ol.dom.Input.prototype.handleValueChanged_ = function() { this.target_.value = this.getValue() }; ol.dom.Input.prototype.handleValueAsNumberChanged_ = function() { this.target_.value = this.getValueAsNumber() }; goog.provide("ol.ellipsoid.BESSEL1841"); goog.require("ol.Ellipsoid"); ol.ellipsoid.BESSEL1841 = new ol.Ellipsoid(6377397.155, 1 / 299.15281285); goog.provide("ol.ellipsoid.WGS84"); goog.require("ol.Ellipsoid"); ol.ellipsoid.WGS84 = new ol.Ellipsoid(6378137, 1 / 298.257223563); goog.provide("ol.geom.GeometryCollection"); goog.require("goog.asserts"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); ol.geom.GeometryCollection = function(geometries) { goog.base(this); this.components = geometries; var dimension = 0; for(var i = 0, ii = geometries.length;i < ii;++i) { if(goog.isDef(dimension)) { dimension = geometries[i].dimension }else { goog.asserts.assert(dimension == geometries[i].dimension) } } this.dimension = dimension }; goog.inherits(ol.geom.GeometryCollection, ol.geom.AbstractCollection); ol.geom.GeometryCollection.prototype.getType = function() { return ol.geom.GeometryType.GEOMETRYCOLLECTION }; goog.provide("goog.math.Vec2"); goog.require("goog.math"); goog.require("goog.math.Coordinate"); goog.math.Vec2 = function(x, y) { this.x = x; this.y = y }; goog.inherits(goog.math.Vec2, goog.math.Coordinate); goog.math.Vec2.randomUnit = function() { var angle = Math.random() * Math.PI * 2; return new goog.math.Vec2(Math.cos(angle), Math.sin(angle)) }; goog.math.Vec2.random = function() { var mag = Math.sqrt(Math.random()); var angle = Math.random() * Math.PI * 2; return new goog.math.Vec2(Math.cos(angle) * mag, Math.sin(angle) * mag) }; goog.math.Vec2.fromCoordinate = function(a) { return new goog.math.Vec2(a.x, a.y) }; goog.math.Vec2.prototype.clone = function() { return new goog.math.Vec2(this.x, this.y) }; goog.math.Vec2.prototype.magnitude = function() { return Math.sqrt(this.x * this.x + this.y * this.y) }; goog.math.Vec2.prototype.squaredMagnitude = function() { return this.x * this.x + this.y * this.y }; goog.math.Vec2.prototype.scale = (goog.math.Coordinate.prototype.scale); goog.math.Vec2.prototype.invert = function() { this.x = -this.x; this.y = -this.y; return this }; goog.math.Vec2.prototype.normalize = function() { return this.scale(1 / this.magnitude()) }; goog.math.Vec2.prototype.add = function(b) { this.x += b.x; this.y += b.y; return this }; goog.math.Vec2.prototype.subtract = function(b) { this.x -= b.x; this.y -= b.y; return this }; goog.math.Vec2.prototype.rotate = function(angle) { var cos = Math.cos(angle); var sin = Math.sin(angle); var newX = this.x * cos - this.y * sin; var newY = this.y * cos + this.x * sin; this.x = newX; this.y = newY; return this }; goog.math.Vec2.rotateAroundPoint = function(v, axisPoint, angle) { var res = v.clone(); return res.subtract(axisPoint).rotate(angle).add(axisPoint) }; goog.math.Vec2.prototype.equals = function(b) { return this == b || !!b && this.x == b.x && this.y == b.y }; goog.math.Vec2.distance = goog.math.Coordinate.distance; goog.math.Vec2.squaredDistance = goog.math.Coordinate.squaredDistance; goog.math.Vec2.equals = goog.math.Coordinate.equals; goog.math.Vec2.sum = function(a, b) { return new goog.math.Vec2(a.x + b.x, a.y + b.y) }; goog.math.Vec2.difference = function(a, b) { return new goog.math.Vec2(a.x - b.x, a.y - b.y) }; goog.math.Vec2.dot = function(a, b) { return a.x * b.x + a.y * b.y }; goog.math.Vec2.lerp = function(a, b, x) { return new goog.math.Vec2(goog.math.lerp(a.x, b.x, x), goog.math.lerp(a.y, b.y, x)) }; goog.provide("ol.interaction.DragRotateAndZoom"); goog.require("goog.asserts"); goog.require("goog.math.Vec2"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Drag"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.condition"); ol.interaction.DRAGROTATEANDZOOM_ANIMATION_DURATION = 400; ol.interaction.DragRotateAndZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.condition_ = goog.isDef(options.condition) ? options.condition : ol.interaction.condition.shiftKeyOnly; this.lastAngle_ = undefined; this.lastMagnitude_ = undefined; this.lastScaleDelta_ = 0 }; goog.inherits(ol.interaction.DragRotateAndZoom, ol.interaction.Drag); ol.interaction.DragRotateAndZoom.prototype.handleDrag = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; var size = map.getSize(); var delta = new goog.math.Vec2(browserEvent.offsetX - size[0] / 2, size[1] / 2 - browserEvent.offsetY); var theta = Math.atan2(delta.y, delta.x); var magnitude = delta.magnitude(); var view = map.getView().getView2D(); var view2DState = view.getView2DState(); map.requestRenderFrame(); if(goog.isDef(this.lastAngle_)) { var angleDelta = theta - this.lastAngle_; ol.interaction.Interaction.rotateWithoutConstraints(map, view, view2DState.rotation - angleDelta) } this.lastAngle_ = theta; if(goog.isDef(this.lastMagnitude_)) { var resolution = this.lastMagnitude_ * (view2DState.resolution / magnitude); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution) } if(goog.isDef(this.lastMagnitude_)) { this.lastScaleDelta_ = this.lastMagnitude_ / magnitude } this.lastMagnitude_ = magnitude }; ol.interaction.DragRotateAndZoom.prototype.handleDragEnd = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); var direction = this.lastScaleDelta_ - 1; map.withFrozenRendering(function() { ol.interaction.Interaction.rotate(map, view, view2DState.rotation); ol.interaction.Interaction.zoom(map, view, view2DState.resolution, undefined, ol.interaction.DRAGROTATEANDZOOM_ANIMATION_DURATION, direction) }); this.lastScaleDelta_ = 0; return true }; ol.interaction.DragRotateAndZoom.prototype.handleDragStart = function(mapBrowserEvent) { if(this.condition_(mapBrowserEvent)) { this.lastAngle_ = undefined; this.lastMagnitude_ = undefined; return true }else { return false } }; goog.provide("ol.interaction.Modify"); goog.require("goog.array"); goog.require("goog.events"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.ViewHint"); goog.require("ol.coordinate"); goog.require("ol.extent"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.LineString"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.interaction.Drag"); goog.require("ol.layer.Vector"); goog.require("ol.layer.VectorLayerEventType"); goog.require("ol.layer.VectorLayerRenderIntent"); goog.require("ol.structs.RTree"); ol.interaction.Modify = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.layerFilter_ = goog.isDef(options.layerFilter) ? options.layerFilter : null; this.layers_ = null; this.modifiable_ = false; this.pixelTolerance_ = goog.isDef(options.pixelTolerance) ? options.pixelTolerance : 20; this.dragVertices_ = null; this.interactingHint = 0 }; goog.inherits(ol.interaction.Modify, ol.interaction.Drag); ol.interaction.Modify.prototype.addIndex = function(evt) { var layer = evt.target; var features = evt.features; for(var i = 0, ii = features.length;i < ii;++i) { var feature = features[i]; var geometry = feature.getGeometry(); if(geometry instanceof ol.geom.AbstractCollection) { for(var j = 0, jj = geometry.components.length;j < jj;++j) { this.addSegments_(layer, feature, geometry.components[j], [[geometry.components, j]]) } }else { this.addSegments_(layer, feature, geometry) } } }; ol.interaction.Modify.prototype.addLayer = function(layer) { var selectionData = layer.getSelectionData(); var selectionLayer = selectionData.layer; var editData = selectionLayer.getEditData(); if(goog.isNull(editData.rTree)) { editData.rTree = new ol.structs.RTree; var vertexFeature = new ol.Feature; vertexFeature.renderIntent = ol.layer.VectorLayerRenderIntent.HIDDEN; vertexFeature.setGeometry(new ol.geom.Point([NaN, NaN])); selectionLayer.addFeatures([vertexFeature]); editData.vertexFeature = vertexFeature } this.addIndex(({target:selectionLayer, features:goog.object.getValues(selectionData.selectedFeaturesByFeatureUid)})); goog.events.listen(selectionLayer, ol.layer.VectorLayerEventType.ADD, this.addIndex, false, this); goog.events.listen(selectionLayer, ol.layer.VectorLayerEventType.REMOVE, this.removeIndex, false, this) }; ol.interaction.Modify.prototype.addSegments_ = function(selectionLayer, feature, geometry, opt_parent) { var uid = goog.getUid(feature); var rTree = selectionLayer.getEditData().rTree; var vertex, segment, segmentData, coordinates; if(geometry instanceof ol.geom.Point) { vertex = geometry.getCoordinates(); segmentData = [[vertex, vertex], feature, geometry, NaN]; if(goog.isDef(opt_parent)) { segmentData.push(opt_parent) } rTree.insert(geometry.getBounds(), segmentData, uid) }else { if(geometry instanceof ol.geom.LineString || geometry instanceof ol.geom.LinearRing) { coordinates = geometry.getCoordinates(); for(var i = 0, ii = coordinates.length - 1;i < ii;++i) { segment = coordinates.slice(i, i + 2); segmentData = [segment, feature, geometry, i]; if(opt_parent) { segmentData.push(opt_parent) } rTree.insert(ol.extent.boundingExtent(segment), segmentData, uid) } }else { if(geometry instanceof ol.geom.Polygon) { for(var j = 0, jj = geometry.rings.length;j < jj;++j) { this.addSegments_(selectionLayer, feature, geometry.rings[j], [geometry.rings, j]) } } } } }; ol.interaction.Modify.prototype.handleDragStart = function(evt) { this.dragVertices_ = []; for(var i = 0, ii = this.layers_.length;i < ii;++i) { var selectionData = this.layers_[i].getSelectionData(); var selectionLayer = selectionData.layer; if(!goog.isNull(selectionLayer)) { var editData = selectionLayer.getEditData(); var vertexFeature = editData.vertexFeature; if(!goog.isNull(vertexFeature) && vertexFeature.renderIntent != ol.layer.VectorLayerRenderIntent.HIDDEN) { var vertex = vertexFeature.getGeometry().getCoordinates(); var vertexExtent = ol.extent.boundingExtent([vertex]); var segments = editData.rTree.search(vertexExtent); for(var j = 0, jj = segments.length;j < jj;++j) { var segmentData = segments[j]; var segment = segmentData[0]; if(vertexFeature.renderIntent == ol.layer.VectorLayerRenderIntent.TEMPORARY) { if(ol.coordinate.equals(segment[0], vertex)) { this.dragVertices_.push([selectionLayer, segmentData, 0]) }else { this.dragVertices_.push([selectionLayer, segmentData, 1]) } }else { this.insertVertex_(selectionLayer, segmentData, vertex) } } } } } return this.modifiable_ }; ol.interaction.Modify.prototype.handleDrag = function(evt) { var vertex = evt.getCoordinate(); for(var i = 0, ii = this.dragVertices_.length;i < ii;++i) { var dragVertex = this.dragVertices_[i]; var selectionLayer = dragVertex[0]; var segmentData = dragVertex[1]; var feature = segmentData[1]; var geometry = segmentData[2]; var index = dragVertex[2]; geometry.set(segmentData[3] + index, 0, vertex[0]); geometry.set(segmentData[3] + index, 1, vertex[1]); feature.getGeometry().invalidateBounds(); var editData = selectionLayer.getEditData(); var vertexFeature = editData.vertexFeature; var vertexGeometry = vertexFeature.getGeometry(); var segment = segmentData[0]; editData.rTree.remove(ol.extent.boundingExtent(segment), segmentData); segment[index] = vertex; vertexGeometry.set(0, vertex[0]); vertexGeometry.set(1, vertex[1]); editData.rTree.insert(ol.extent.boundingExtent(segment), segmentData, goog.getUid(feature)); selectionLayer.updateFeatures([feature, vertexFeature]) } }; ol.interaction.Modify.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if(!mapBrowserEvent.map.getView().getHints()[ol.ViewHint.INTERACTING] && !this.getDragging() && mapBrowserEvent.type == ol.MapBrowserEvent.EventType.MOUSEMOVE) { this.handleMouseMove_(mapBrowserEvent) } goog.base(this, "handleMapBrowserEvent", mapBrowserEvent); return!this.modifiable_ }; ol.interaction.Modify.prototype.handleMouseMove_ = function(evt) { var map = evt.map; var layers = goog.array.filter(map.getLayerGroup().getLayers().getArray(), this.ignoreTemporaryLayersFilter_); if(!goog.isNull(this.layerFilter_)) { layers = goog.array.filter(layers, this.layerFilter_) } this.layers_ = layers; var pixel = evt.getPixel(); var pixelCoordinate = map.getCoordinateFromPixel(pixel); var sortByDistance = function(a, b) { return ol.coordinate.closestOnSegment(pixelCoordinate, a[0])[2] - ol.coordinate.closestOnSegment(pixelCoordinate, b[0])[2] }; var lowerLeft = map.getCoordinateFromPixel([pixel[0] - this.pixelTolerance_, pixel[1] + this.pixelTolerance_]); var upperRight = map.getCoordinateFromPixel([pixel[0] + this.pixelTolerance_, pixel[1] - this.pixelTolerance_]); var box = ol.extent.boundingExtent([lowerLeft, upperRight]); var vertexFeature; this.modifiable_ = false; for(var i = layers.length - 1;i >= 0;--i) { var layer = layers[i]; var selectionLayer = layer.getSelectionData().layer; if(!goog.isNull(selectionLayer)) { if(goog.isNull(goog.events.getListener(selectionLayer, ol.layer.VectorLayerEventType.ADD, this.addIndex, false, this))) { this.addLayer(layer) } var editData = selectionLayer.getEditData(); vertexFeature = editData.vertexFeature; var segments = editData.rTree.search(box); var renderIntent = ol.layer.VectorLayerRenderIntent.HIDDEN; if(segments.length > 0) { segments.sort(sortByDistance); var segment = segments[0][0]; var geometry = vertexFeature.getGeometry(); var vertex = (ol.coordinate.closestOnSegment(pixelCoordinate, segment)); var coordPixel = map.getPixelFromCoordinate(vertex); var pixel1 = map.getPixelFromCoordinate(segment[0]); var pixel2 = map.getPixelFromCoordinate(segment[1]); var squaredDist1 = ol.coordinate.squaredDistance(coordPixel, pixel1); var squaredDist2 = ol.coordinate.squaredDistance(coordPixel, pixel2); var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2)); renderIntent = ol.layer.VectorLayerRenderIntent.FUTURE; if(dist <= 10) { vertex = squaredDist1 > squaredDist2 ? segment[1] : segment[0]; renderIntent = ol.layer.VectorLayerRenderIntent.TEMPORARY } geometry.set(0, vertex[0]); geometry.set(1, vertex[1]); selectionLayer.updateFeatures([vertexFeature]); this.modifiable_ = true } if(vertexFeature.renderIntent != renderIntent) { selectionLayer.setRenderIntent(renderIntent, [vertexFeature]) } } } }; ol.interaction.Modify.prototype.ignoreTemporaryLayersFilter_ = function(layer) { return!(layer instanceof ol.layer.Vector && layer.getTemporary()) }; ol.interaction.Modify.prototype.insertVertex_ = function(selectionLayer, segmentData, vertex) { var segment = segmentData[0]; var feature = segmentData[1]; var geometry = segmentData[2]; var index = segmentData[3]; var coordinates = geometry.getCoordinates(); coordinates.splice(index + 1, 0, vertex); var oldGeometry = geometry; geometry = new geometry.constructor(coordinates); var parent; if(segmentData.length > 4) { parent = segmentData[4]; parent[0][parent[1]] = geometry; feature.getGeometry().invalidateBounds() }else { feature.setGeometry(geometry) } var rTree = selectionLayer.getEditData().rTree; rTree.remove(ol.extent.boundingExtent(segment), segmentData); var uid = goog.getUid(feature); var allSegments = rTree.search(geometry.getBounds(), uid); for(var i = 0, ii = allSegments.length;i < ii;++i) { var allSegmentsData = allSegments[i]; if(allSegmentsData[2] === oldGeometry) { allSegmentsData[2] = geometry; if(allSegmentsData[3] > index) { ++allSegmentsData[3] } } } var newSegment = [segment[0], vertex]; var newSegmentData = [newSegment, feature, geometry, index]; if(goog.isDef(parent)) { newSegmentData.push(parent) } rTree.insert(ol.extent.boundingExtent(newSegment), newSegmentData, uid); this.dragVertices_.push([selectionLayer, newSegmentData, 1]); newSegment = [vertex, segment[1]]; newSegmentData = [newSegment, feature, geometry, index + 1]; if(goog.isDef(parent)) { newSegmentData.push(parent) } rTree.insert(ol.extent.boundingExtent(newSegment), newSegmentData, uid); this.dragVertices_.push([selectionLayer, newSegmentData, 0]) }; ol.interaction.Modify.prototype.removeIndex = function(evt) { var layer = evt.target; var rTree = layer.getEditData().rTree; var features = evt.features; for(var i = 0, ii = features.length;i < ii;++i) { var feature = features[i]; var segments = rTree.search(feature.getGeometry().getBounds(), goog.getUid(feature)); for(var j = segments.length - 1;j >= 0;--j) { var segment = segments[j]; rTree.remove(ol.extent.boundingExtent(segment[0]), segment) } } }; goog.provide("ol.interaction.Select"); goog.require("goog.array"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.condition"); goog.require("ol.layer.Vector"); goog.require("ol.layer.VectorLayerRenderIntent"); goog.require("ol.source.Vector"); ol.interaction.Select = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : ol.interaction.condition.clickOnly; this.layerFilter_ = goog.isDef(options.layerFilter) ? options.layerFilter : null; goog.base(this) }; goog.inherits(ol.interaction.Select, ol.interaction.Interaction); ol.interaction.Select.prototype.addToSelectionData = function(layer, feature) { var selectionData = layer.getSelectionData(); var selectedFeature = new ol.Feature(feature.getAttributes()); selectedFeature.setGeometry(feature.getGeometry().clone()); selectedFeature.setFeatureId(feature.getFeatureId()); selectedFeature.setSymbolizers(feature.getSymbolizers()); selectedFeature.renderIntent = ol.layer.VectorLayerRenderIntent.SELECTED; selectionData.featuresBySelectedFeatureUid[goog.getUid(selectedFeature)] = feature; selectionData.selectedFeaturesByFeatureUid[goog.getUid(feature)] = selectedFeature; return selectedFeature }; ol.interaction.Select.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if(this.condition_(mapBrowserEvent)) { var map = mapBrowserEvent.map; var layers = map.getLayerGroup().getLayersArray(); if(!goog.isNull(this.layerFilter_)) { layers = goog.array.filter(layers, this.layerFilter_) } var clear = !ol.interaction.condition.shiftKeyOnly(mapBrowserEvent); var that = this; var select = function(featuresByLayer) { that.select(map, featuresByLayer, layers, clear) }; map.getFeatures({layers:layers, pixel:mapBrowserEvent.getPixel(), success:select}) } return true }; ol.interaction.Select.prototype.removeFromSelectionData = function(layer, feature) { var selectionData = layer.getSelectionData(); var featureUid = goog.getUid(feature); var selectedFeatures = selectionData.selectedFeaturesByFeatureUid; var selectedFeature = selectedFeatures[featureUid]; delete selectedFeatures[featureUid]; delete selectionData.featuresBySelectedFeatureUid[goog.getUid(selectedFeature)]; return selectedFeature }; ol.interaction.Select.prototype.select = function(map, featuresByLayer, layers, clear) { for(var i = 0, ii = featuresByLayer.length;i < ii;++i) { var layer = layers[i]; var selectionData = layer.getSelectionData(); var selectionLayer = selectionData.layer; if(goog.isNull(selectionLayer)) { selectionLayer = new ol.layer.Vector({source:new ol.source.Vector({parser:null}), style:layer instanceof ol.layer.Vector ? layer.getStyle() : null}); selectionLayer.setTemporary(true); selectionData.layer = selectionLayer } if(goog.array.indexOf(map.getLayers().getArray(), selectionLayer) == -1) { map.addLayer(selectionLayer) } var features = featuresByLayer[i]; var numFeatures = features.length; var selectedFeatures = []; var featuresToAdd = []; var unselectedFeatures = []; var featuresToRemove = []; var selectedFeaturesByFeatureUid = selectionData.selectedFeaturesByFeatureUid; var featuresBySelectedFeatureUid = selectionData.featuresBySelectedFeatureUid; var previouslySelected = {}; goog.object.extend(previouslySelected, selectedFeaturesByFeatureUid); var feature, featureId; if(clear) { for(var f in featuresBySelectedFeatureUid) { feature = featuresBySelectedFeatureUid[f]; unselectedFeatures.push(feature); featuresToRemove.push(this.removeFromSelectionData(layer, feature)) } } for(var j = 0;j < numFeatures;++j) { feature = features[j]; featureId = goog.getUid(feature); var clone = selectedFeaturesByFeatureUid[featureId]; if(clone) { unselectedFeatures.push(feature); featuresToRemove.push(this.removeFromSelectionData(layer, feature)) }else { if(!(featureId in previouslySelected)) { selectedFeatures.push(feature); featuresToAdd.push(this.addToSelectionData(layer, feature)) } } } if(goog.isFunction(layer.setRenderIntent)) { layer.setRenderIntent(ol.layer.VectorLayerRenderIntent.HIDDEN, selectedFeatures); layer.setRenderIntent(ol.layer.VectorLayerRenderIntent.DEFAULT, unselectedFeatures) } selectionLayer.removeFeatures(featuresToRemove); selectionLayer.addFeatures(featuresToAdd); if(goog.object.getCount(selectedFeaturesByFeatureUid) == 0) { map.removeLayer(selectionLayer) } } }; goog.provide("ol.parser.AsyncObjectFeatureParser"); goog.provide("ol.parser.AsyncStringFeatureParser"); goog.provide("ol.parser.DomFeatureParser"); goog.provide("ol.parser.ObjectFeatureParser"); goog.provide("ol.parser.ReadFeaturesOptions"); goog.provide("ol.parser.ReadFeaturesResult"); goog.provide("ol.parser.StringFeatureParser"); goog.require("ol.Feature"); ol.parser.DomFeatureParser = function() { }; ol.parser.DomFeatureParser.prototype.readFeaturesFromNode = goog.abstractMethod; ol.parser.ObjectFeatureParser = function() { }; ol.parser.ObjectFeatureParser.prototype.readFeaturesFromObject = goog.abstractMethod; ol.parser.StringFeatureParser = function() { }; ol.parser.StringFeatureParser.prototype.readFeaturesFromString = goog.abstractMethod; ol.parser.AsyncStringFeatureParser = function() { }; ol.parser.AsyncStringFeatureParser.prototype.readFeaturesFromStringAsync = goog.abstractMethod; ol.parser.AsyncObjectFeatureParser = function() { }; ol.parser.AsyncObjectFeatureParser.prototype.readFeaturesFromObjectAsync = goog.abstractMethod; ol.parser.ReadFeaturesCallback; ol.parser.ReadFeaturesMetadata; ol.parser.ReadFeaturesOptions; ol.parser.ReadFeaturesResult; goog.provide("goog.dom.xml"); goog.require("goog.dom"); goog.require("goog.dom.NodeType"); goog.dom.xml.MAX_XML_SIZE_KB = 2 * 1024; goog.dom.xml.MAX_ELEMENT_DEPTH = 256; goog.dom.xml.createDocument = function(opt_rootTagName, opt_namespaceUri) { if(opt_namespaceUri && !opt_rootTagName) { throw Error("Can't create document with namespace and no root tag"); } if(document.implementation && document.implementation.createDocument) { return document.implementation.createDocument(opt_namespaceUri || "", opt_rootTagName || "", null) }else { if(typeof ActiveXObject != "undefined") { var doc = goog.dom.xml.createMsXmlDocument_(); if(doc) { if(opt_rootTagName) { doc.appendChild(doc.createNode(goog.dom.NodeType.ELEMENT, opt_rootTagName, opt_namespaceUri || "")) } return doc } } } throw Error("Your browser does not support creating new documents"); }; goog.dom.xml.loadXml = function(xml) { if(typeof DOMParser != "undefined") { return(new DOMParser).parseFromString(xml, "application/xml") }else { if(typeof ActiveXObject != "undefined") { var doc = goog.dom.xml.createMsXmlDocument_(); doc.loadXML(xml); return doc } } throw Error("Your browser does not support loading xml documents"); }; goog.dom.xml.serialize = function(xml) { if(typeof XMLSerializer != "undefined") { return(new XMLSerializer).serializeToString(xml) } var text = xml.xml; if(text) { return text } throw Error("Your browser does not support serializing XML documents"); }; goog.dom.xml.selectSingleNode = function(node, path) { if(typeof node.selectSingleNode != "undefined") { var doc = goog.dom.getOwnerDocument(node); if(typeof doc.setProperty != "undefined") { doc.setProperty("SelectionLanguage", "XPath") } return node.selectSingleNode(path) }else { if(document.implementation.hasFeature("XPath", "3.0")) { var doc = goog.dom.getOwnerDocument(node); var resolver = doc.createNSResolver(doc.documentElement); var result = doc.evaluate(path, node, resolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null); return result.singleNodeValue } } return null }; goog.dom.xml.selectNodes = function(node, path) { if(typeof node.selectNodes != "undefined") { var doc = goog.dom.getOwnerDocument(node); if(typeof doc.setProperty != "undefined") { doc.setProperty("SelectionLanguage", "XPath") } return node.selectNodes(path) }else { if(document.implementation.hasFeature("XPath", "3.0")) { var doc = goog.dom.getOwnerDocument(node); var resolver = doc.createNSResolver(doc.documentElement); var nodes = doc.evaluate(path, node, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); var results = []; var count = nodes.snapshotLength; for(var i = 0;i < count;i++) { results.push(nodes.snapshotItem(i)) } return results }else { return[] } } }; goog.dom.xml.setAttributes = function(element, attributes) { for(var key in attributes) { if(attributes.hasOwnProperty(key)) { element.setAttribute(key, attributes[key]) } } }; goog.dom.xml.createMsXmlDocument_ = function() { var doc = new ActiveXObject("MSXML2.DOMDocument"); if(doc) { doc.resolveExternals = false; doc.validateOnParse = false; try { doc.setProperty("ProhibitDTD", true); doc.setProperty("MaxXMLSize", goog.dom.xml.MAX_XML_SIZE_KB); doc.setProperty("MaxElementDepth", goog.dom.xml.MAX_ELEMENT_DEPTH) }catch(e) { } } return doc }; goog.provide("ol.parser.Parser"); ol.parser.Parser = function() { }; goog.provide("ol.parser.XML"); goog.require("goog.dom.xml"); goog.require("ol.parser.Parser"); ol.parser.XML = function() { if(goog.global.ActiveXObject) { this.xmldom = new ActiveXObject("Microsoft.XMLDOM") } this.regExes = {trimSpace:/^\s*|\s*$/g, removeSpace:/\s*/g, splitSpace:/\s+/, trimComma:/\s*,\s*/g} }; goog.inherits(ol.parser.XML, ol.parser.Parser); ol.parser.XML.prototype.readNode = function(node, obj) { if(!obj) { obj = {} } var group = this.readers[node.namespaceURI] || this.readers[this.defaultNamespaceURI]; if(group) { var local = node.localName || node.nodeName.split(":").pop(); var reader = group[local] || group["*"]; if(reader) { reader.apply(this, [node, obj]) } } return obj }; ol.parser.XML.prototype.readChildNodes = function(node, obj) { if(!obj) { obj = {} } var children = node.childNodes; var child; for(var i = 0, len = children.length;i < len;++i) { child = children[i]; if(child.nodeType == 1) { this.readNode(child, obj) } } return obj }; ol.parser.XML.prototype.getChildValue = function(node, def) { var value = def || ""; if(node) { for(var child = node.firstChild;child;child = child.nextSibling) { switch(child.nodeType) { case 3: ; case 4: value += child.nodeValue; break; default: break } } } return value }; ol.parser.XML.prototype.getAttributeNodeNS = function(node, uri, name) { var attributeNode = null; if(node.getAttributeNodeNS) { attributeNode = node.getAttributeNodeNS(uri, name) }else { var attributes = node.attributes; var potentialNode, fullName; for(var i = 0, len = attributes.length;i < len;++i) { potentialNode = attributes[i]; if(potentialNode.namespaceURI == uri) { fullName = potentialNode.prefix ? potentialNode.prefix + ":" + name : name; if(fullName == potentialNode.nodeName) { attributeNode = potentialNode; break } } } } return attributeNode }; ol.parser.XML.prototype.getAttributeNS = function(node, uri, name) { var attributeValue = ""; if(node.getAttributeNS) { attributeValue = node.getAttributeNS(uri, name) || "" }else { var attributeNode = this.getAttributeNodeNS(node, uri, name); if(attributeNode) { attributeValue = attributeNode.nodeValue } } return attributeValue }; ol.parser.XML.prototype.createElementNS = function(name, opt_uri) { var uri = opt_uri ? opt_uri : this.defaultNamespaceURI; var element; if(this.xmldom) { element = this.xmldom.createNode(1, name, uri) }else { element = document.createElementNS(uri, name) } return element }; ol.parser.XML.prototype.writeNode = function(name, obj, opt_uri, opt_parent) { var child = null; if(goog.isDef(this.writers)) { var uri = opt_uri ? opt_uri : this.defaultNamespaceURI; child = this.writers[uri][name].apply(this, [obj]); if(opt_parent && child) { opt_parent.appendChild(child) } } return child }; ol.parser.XML.prototype.createTextNode = function(text) { var node; if(this.xmldom) { node = this.xmldom.createTextNode(text) }else { node = document.createTextNode(text) } return node }; ol.parser.XML.prototype.setAttributeNS = function(node, uri, name, value) { if(node.setAttributeNS) { node.setAttributeNS(uri, name, value) }else { if(this.xmldom) { if(uri) { var attribute = node.ownerDocument.createNode(2, name, uri); attribute.nodeValue = value; node.setAttributeNode(attribute) }else { node.setAttribute(name, value) } }else { throw new Error("setAttributeNS not implemented"); } } }; ol.parser.XML.prototype.serialize = function(node) { if(this.xmldom) { return node.xml }else { if(node.nodeType == 1) { var doc = document.implementation.createDocument("", "", null); if(doc.importNode) { doc.appendChild(doc.importNode(node, true)) }else { doc.appendChild(node) } return goog.dom.xml.serialize(doc) }else { return goog.dom.xml.serialize(node) } } }; ol.parser.XML.prototype.createDocumentFragment = function() { var element; if(this.xmldom) { element = this.xmldom.createDocumentFragment() }else { element = document.createDocumentFragment() } return element }; goog.provide("ol.parser.GPX"); goog.require("goog.dom.xml"); goog.require("ol.Feature"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.parser.DomFeatureParser"); goog.require("ol.parser.ObjectFeatureParser"); goog.require("ol.parser.ReadFeaturesOptions"); goog.require("ol.parser.StringFeatureParser"); goog.require("ol.parser.XML"); ol.parser.GPX = function(opt_options) { var options = (goog.isDef(opt_options) ? opt_options : {}); this.extractAttributes = goog.isDef(options.extractAttributes) ? options.extractAttributes : true; this.extractWaypoints = goog.isDef(options.extractWaypoints) ? options.extractWaypoints : true; this.extractTracks = goog.isDef(options.extractTracks) ? options.extractTracks : true; this.extractRoutes = goog.isDef(options.extractRoutes) ? options.extractRoutes : true; this.creator = goog.isDef(options.creator) ? options.creator : "OpenLayers"; this.defaultDesc = goog.isDef(options.defaultDesc) ? options.defaultDesc : "No description available"; this.defaultNamespaceURI = "http://www.topografix.com/GPX/1/1"; this.schemaLocation = "http://www.topografix.com/GPX/1/1 " + "http://www.topografix.com/GPX/1/1/gpx.xsd"; this.readers = {"http://www.topografix.com/GPX/1/1":{"gpx":function(node, obj) { if(!goog.isDef(obj.features)) { obj.features = [] } this.readChildNodes(node, obj) }, "wpt":function(node, obj) { if(this.extractWaypoints) { var properties = {}; var coordinates = [parseFloat(node.getAttribute("lon")), parseFloat(node.getAttribute("lat"))]; this.readChildNodes(node, properties); var feature = new ol.Feature(properties); var sharedVertices; if(this.readFeaturesOptions_) { var callback = this.readFeaturesOptions_.callback; if(callback) { sharedVertices = callback(feature, ol.geom.GeometryType.POINT) } } var geometry = new ol.geom.Point(coordinates, sharedVertices); feature.setGeometry(geometry); obj.features.push(feature) } }, "rte":function(node, obj) { if(this.extractRoutes || obj.force) { var type = ol.geom.GeometryType.LINESTRING; var container = {properties:{}, geometry:{type:type, coordinates:[]}}; this.readChildNodes(node, container); var feature = new ol.Feature(container.properties); var sharedVertices; if(this.readFeaturesOptions_) { var callback = this.readFeaturesOptions_.callback; if(callback) { sharedVertices = callback(feature, type) } } var geometry = new ol.geom.LineString(container.geometry.coordinates, sharedVertices); feature.setGeometry(geometry); obj.features.push(feature) } }, "rtept":function(node, container) { var coordinate = [parseFloat(node.getAttribute("lon")), parseFloat(node.getAttribute("lat"))]; container.geometry.coordinates.push(coordinate) }, "trk":function(node, obj) { if(this.extractTracks) { var readers = this.readers[this.defaultNamespaceURI]; obj.force = true; readers["rte"].apply(this, arguments) } }, "trkseg":function(node, container) { this.readChildNodes(node, container) }, "trkpt":function(node, container) { var readers = this.readers[this.defaultNamespaceURI]; readers["rtept"].apply(this, arguments) }, "*":function(node, obj) { if(this.extractAttributes === true) { var len = node.childNodes.length; if((len === 1 || len === 2) && (node.firstChild.nodeType === 3 || node.firstChild.nodeType === 4)) { var readers = this.readers[this.defaultNamespaceURI]; readers["_attribute"].apply(this, arguments) } } }, "_attribute":function(node, obj) { var local = node.localName || node.nodeName.split(":").pop(); var value = this.getChildValue(node); if(obj.properties) { obj.properties[local] = value.replace(this.regExes.trimSpace, "") }else { obj[local] = value.replace(this.regExes.trimSpace, "") } }}}; this.readers["http://www.topografix.com/GPX/1/0"] = this.readers[this.defaultNamespaceURI]; this.writers = {"http://www.topografix.com/GPX/1/1":{"_feature":function(feature) { var geom = feature.getGeometry(); if(geom instanceof ol.geom.Point) { return this.writeNode("wpt", feature) }else { if(geom instanceof ol.geom.LineString || geom instanceof ol.geom.MultiLineString || geom instanceof ol.geom.Polygon) { return this.writeNode("trk", feature) } } }, "wpt":function(feature) { var node = this.createElementNS("wpt"); var geom = feature.getGeometry(); var coordinates = geom.getCoordinates(); node.setAttribute("lon", coordinates[0]); node.setAttribute("lat", coordinates[1]); var attributes = feature.getAttributes(); var name = attributes["name"] || goog.getUid(feature).toString(); this.writeNode("name", name, undefined, node); var desc = attributes["description"] || this.defaultDesc; this.writeNode("desc", desc, undefined, node); return node }, "trk":function(feature) { var attributes = feature.getAttributes(); var node = this.createElementNS("trk"); var name = attributes["name"] || goog.getUid(feature).toString(); this.writeNode("name", name, undefined, node); var desc = attributes["description"] || this.defaultDesc; this.writeNode("desc", desc, undefined, node); var geom = feature.getGeometry(); var i, ii; if(geom instanceof ol.geom.LineString) { this.writeNode("trkseg", feature.getGeometry(), undefined, node) }else { if(geom instanceof ol.geom.MultiLineString) { for(i = 0, ii = geom.components.length;i < ii;++i) { this.writeNode("trkseg", geom.components[i], undefined, node) } }else { if(geom instanceof ol.geom.Polygon) { for(i = 0, ii = geom.rings.length;i < ii;++i) { this.writeNode("trkseg", geom.rings[i], undefined, node) } } } } return node }, "trkseg":function(geometry) { var node = this.createElementNS("trkseg"); var coordinates = geometry.getCoordinates(); for(var i = 0, ii = coordinates.length;i < ii;++i) { this.writeNode("trkpt", coordinates[i], undefined, node) } return node }, "trkpt":function(coord) { var node = this.createElementNS("trkpt"); node.setAttribute("lon", coord[0]); node.setAttribute("lat", coord[1]); return node }, "metadata":function(metadata) { var node = this.createElementNS("metadata"); if(goog.isDef(metadata["name"])) { this.writeNode("name", metadata["name"], undefined, node) } if(goog.isDef(metadata["desc"])) { this.writeNode("desc", metadata["desc"], undefined, node) } if(goog.isDef(metadata["author"])) { this.writeNode("author", metadata["author"], undefined, node) } return node }, "name":function(name) { var node = this.createElementNS("name"); node.appendChild(this.createTextNode(name)); return node }, "desc":function(desc) { var node = this.createElementNS("desc"); node.appendChild(this.createTextNode(desc)); return node }, "author":function(author) { var node = this.createElementNS("author"); node.appendChild(this.createTextNode(author)); return node }}}; goog.base(this) }; goog.inherits(ol.parser.GPX, ol.parser.XML); ol.parser.GPX.prototype.read = function(data) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } if(data && data.nodeType == 9) { data = data.documentElement } var obj = ({metadata:{projection:"EPSG:4326"}}); this.readNode(data, obj); return obj }; ol.parser.GPX.prototype.readFeaturesFromString = function(str, opt_options) { this.readFeaturesOptions_ = opt_options; return this.read(str) }; ol.parser.GPX.prototype.readFeaturesFromNode = function(node, opt_options) { this.readFeaturesOptions_ = opt_options; return this.read(node) }; ol.parser.GPX.prototype.readFeaturesFromObject = function(obj, opt_options) { this.readFeaturesOptions_ = opt_options; return this.read(obj) }; ol.parser.GPX.prototype.write = function(obj) { var features = goog.isArray(obj.features) ? obj.features : [obj.features]; var root = this.createElementNS("gpx"); root.setAttribute("version", "1.1"); root.setAttribute("creator", this.creator); this.setAttributeNS(root, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation); if(goog.isDef(obj.metadata)) { this.writeNode("metadata", obj.metadata, undefined, root) } for(var i = 0, ii = features.length;i < ii;i++) { this.writeNode("_feature", features[i], undefined, root) } return this.serialize(root) }; goog.provide("ol.parser.GeoJSON"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.geom.SharedVertices"); goog.require("ol.parser.Parser"); goog.require("ol.parser.ReadFeaturesOptions"); goog.require("ol.parser.ReadFeaturesResult"); goog.require("ol.parser.StringFeatureParser"); ol.parser.GeoJSON = function() { }; goog.inherits(ol.parser.GeoJSON, ol.parser.Parser); goog.addSingletonGetter(ol.parser.GeoJSON); ol.parser.GeoJSON.prototype.read = function(str) { var json = (JSON.parse(str)); return this.parse_(json) }; ol.parser.GeoJSON.read = function(str) { return ol.parser.GeoJSON.getInstance().read(str) }; ol.parser.GeoJSON.prototype.readFeaturesFromString = function(str, opt_options) { var json = (JSON.parse(str)); return this.parseAsFeatureCollection_(json, opt_options) }; ol.parser.GeoJSON.prototype.readFeaturesFromObject = function(object, opt_options) { return this.parseAsFeatureCollection_(object, opt_options) }; ol.parser.GeoJSON.prototype.parse_ = function(json, opt_options) { var result; if(json.type === "FeatureCollection") { result = this.parseFeatureCollection_((json), opt_options) }else { if(json.type === "Feature") { result = this.parseFeature_((json), opt_options) }else { if(json.type === "GeometryCollection") { result = this.parseGeometryCollection_((json), opt_options) }else { var feature = this.parseFeature_(({type:"Feature", geometry:json}), opt_options); result = feature.getGeometry() } } } return result }; ol.parser.GeoJSON.prototype.parseAsFeatureCollection_ = function(json, opt_options) { var obj = this.parse_(json, opt_options); var features = []; var feature; if(obj instanceof ol.Feature) { features = [obj] }else { if(obj instanceof ol.geom.Geometry) { feature = new ol.Feature; feature.setGeometry(obj); features = [feature] }else { if(goog.isArray(obj)) { var item, geomArray; for(var i = 0, ii = obj.length;i < ii;++i) { item = obj[i]; geomArray = geomArray || item instanceof ol.geom.Geometry; if(!geomArray) { goog.asserts.assert(item instanceof ol.Feature, "expected feature"); features = obj; break }else { feature = new ol.Feature; feature.setGeometry(item); features[i] = feature } } } } } var projection = "EPSG:4326"; if(goog.isDefAndNotNull(json.crs)) { var crs = json.crs; if(crs.type === "name") { projection = crs.properties.name } } return{features:features, metadata:{projection:projection}} }; ol.parser.GeoJSON.prototype.parseFeature_ = function(json, opt_options) { var geomJson = json.geometry, geometry = null, options = opt_options || {}; var feature = new ol.Feature(json.properties); if(goog.isDef(json.id)) { feature.setFeatureId(json.id) } if(geomJson) { var type = geomJson.type; var callback = options.callback; var sharedVertices; if(callback) { goog.asserts.assert(type in ol.parser.GeoJSON.GeometryType, "Bad geometry type: " + type); sharedVertices = callback(feature, ol.parser.GeoJSON.GeometryType[type]) } switch(type) { case "Point": geometry = this.parsePoint_(geomJson, sharedVertices); break; case "LineString": geometry = this.parseLineString_(geomJson, sharedVertices); break; case "Polygon": geometry = this.parsePolygon_(geomJson, sharedVertices); break; case "MultiPoint": geometry = this.parseMultiPoint_(geomJson, sharedVertices); break; case "MultiLineString": geometry = this.parseMultiLineString_(geomJson, sharedVertices); break; case "MultiPolygon": geometry = this.parseMultiPolygon_(geomJson, sharedVertices); break; default: throw new Error("Bad geometry type: " + type); } feature.setGeometry(geometry) } return feature }; ol.parser.GeoJSON.prototype.parseFeatureCollection_ = function(json, opt_options) { var features = json.features, len = features.length, result = new Array(len), i; for(i = 0;i < len;++i) { result[i] = this.parseFeature_((features[i]), opt_options) } return result }; ol.parser.GeoJSON.prototype.parseGeometryCollection_ = function(json, opt_options) { var geometries = json.geometries, len = geometries.length, result = new Array(len), i; for(i = 0;i < len;++i) { result[i] = this.parse_((geometries[i]), opt_options) } return result }; ol.parser.GeoJSON.prototype.parseLineString_ = function(json, opt_vertices) { return new ol.geom.LineString(json.coordinates, opt_vertices) }; ol.parser.GeoJSON.prototype.parseMultiLineString_ = function(json, opt_vertices) { return new ol.geom.MultiLineString(json.coordinates, opt_vertices) }; ol.parser.GeoJSON.prototype.parseMultiPoint_ = function(json, opt_vertices) { return new ol.geom.MultiPoint(json.coordinates, opt_vertices) }; ol.parser.GeoJSON.prototype.parseMultiPolygon_ = function(json, opt_vertices) { return new ol.geom.MultiPolygon(json.coordinates, opt_vertices) }; ol.parser.GeoJSON.prototype.parsePoint_ = function(json, opt_vertices) { return new ol.geom.Point(json.coordinates, opt_vertices) }; ol.parser.GeoJSON.prototype.parsePolygon_ = function(json, opt_vertices) { return new ol.geom.Polygon(json.coordinates, opt_vertices) }; ol.parser.GeoJSON.prototype.encodeGeometry_ = function(geometry) { var type = geometry.getType(); return({type:goog.object.findKey(ol.parser.GeoJSON.GeometryType, function(value, key) { return value === type }), coordinates:geometry.getCoordinates()}) }; ol.parser.GeoJSON.prototype.encodeGeometryCollection_ = function(collection) { var geometries = []; for(var i = 0, ii = collection.components.length;i < ii;++i) { geometries.push(this.encodeGeometry_(collection.components[i])) } return({type:"GeometryCollection", geometries:geometries}) }; ol.parser.GeoJSON.prototype.encodeFeatureCollection_ = function(collection) { var features = []; for(var i = 0, ii = collection.length;i < ii;++i) { features.push(this.encodeFeature_(collection[i])) } return({type:"FeatureCollection", features:features}) }; ol.parser.GeoJSON.prototype.encodeFeature_ = function(feature) { var geometry = feature.getGeometry(), attributes = feature.getAttributes(); var properties = goog.object.filter(attributes, function(element, index, array) { return!(element instanceof ol.geom.Geometry) }); return({type:"Feature", properties:properties, geometry:this.encodeGeometry_(geometry)}) }; ol.parser.GeoJSON.prototype.encode_ = function(obj) { var result; if(obj instanceof ol.geom.GeometryCollection) { result = this.encodeGeometryCollection_(obj) }else { if(obj instanceof ol.geom.Geometry) { result = this.encodeGeometry_(obj) }else { if(obj instanceof ol.Feature) { result = this.encodeFeature_(obj) }else { if(goog.isArray(obj)) { result = this.encodeFeatureCollection_(obj) } } } } return JSON.stringify(result) }; ol.parser.GeoJSON.write = function(obj) { return ol.parser.GeoJSON.getInstance().write(obj) }; ol.parser.GeoJSON.prototype.write = function(obj) { return this.encode_(obj) }; ol.parser.GeoJSON.GeometryType = {"Point":ol.geom.GeometryType.POINT, "LineString":ol.geom.GeometryType.LINESTRING, "Polygon":ol.geom.GeometryType.POLYGON, "MultiPoint":ol.geom.GeometryType.MULTIPOINT, "MultiLineString":ol.geom.GeometryType.MULTILINESTRING, "MultiPolygon":ol.geom.GeometryType.MULTIPOLYGON, "GeometryCollection":ol.geom.GeometryType.GEOMETRYCOLLECTION}; /* Portions of this code are from MochiKit, received by The Closure Authors under the MIT license. All other code is Copyright 2005-2009 The Closure Authors. All Rights Reserved. */ goog.provide("goog.async.Deferred"); goog.provide("goog.async.Deferred.AlreadyCalledError"); goog.provide("goog.async.Deferred.CanceledError"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.debug.Error"); goog.require("goog.functions"); goog.async.Deferred = function(opt_onCancelFunction, opt_defaultScope) { this.sequence_ = []; this.onCancelFunction_ = opt_onCancelFunction; this.defaultScope_ = opt_defaultScope || null; if(goog.async.Deferred.LONG_STACK_TRACES) { this.constructorStack_ = null; if(Error.captureStackTrace) { var target = {stack:""}; Error.captureStackTrace(target, goog.async.Deferred); if(typeof target.stack == "string") { this.constructorStack_ = target.stack.replace(/^[^\n]*\n/, "") } } } }; goog.async.Deferred.prototype.fired_ = false; goog.async.Deferred.prototype.hadError_ = false; goog.async.Deferred.prototype.result_; goog.async.Deferred.prototype.blocked_ = false; goog.async.Deferred.prototype.blocking_ = false; goog.async.Deferred.prototype.silentlyCanceled_ = false; goog.async.Deferred.prototype.unhandledExceptionTimeoutId_; goog.async.Deferred.prototype.parent_; goog.async.Deferred.prototype.branches_ = 0; goog.define("goog.async.Deferred.STRICT_ERRORS", false); goog.define("goog.async.Deferred.LONG_STACK_TRACES", goog.DEBUG); goog.async.Deferred.prototype.cancel = function(opt_deepCancel) { if(!this.hasFired()) { if(this.parent_) { var parent = this.parent_; delete this.parent_; if(opt_deepCancel) { parent.cancel(opt_deepCancel) }else { parent.branchCancel_() } } if(this.onCancelFunction_) { this.onCancelFunction_.call(this.defaultScope_, this) }else { this.silentlyCanceled_ = true } if(!this.hasFired()) { this.errback(new goog.async.Deferred.CanceledError(this)) } }else { if(this.result_ instanceof goog.async.Deferred) { this.result_.cancel() } } }; goog.async.Deferred.prototype.branchCancel_ = function() { this.branches_--; if(this.branches_ <= 0) { this.cancel() } }; goog.async.Deferred.prototype.continue_ = function(isSuccess, res) { this.blocked_ = false; this.updateResult_(isSuccess, res) }; goog.async.Deferred.prototype.updateResult_ = function(isSuccess, res) { this.fired_ = true; this.result_ = res; this.hadError_ = !isSuccess; this.fire_() }; goog.async.Deferred.prototype.check_ = function() { if(this.hasFired()) { if(!this.silentlyCanceled_) { throw new goog.async.Deferred.AlreadyCalledError(this); } this.silentlyCanceled_ = false } }; goog.async.Deferred.prototype.callback = function(opt_result) { this.check_(); this.assertNotDeferred_(opt_result); this.updateResult_(true, opt_result) }; goog.async.Deferred.prototype.errback = function(opt_result) { this.check_(); this.assertNotDeferred_(opt_result); this.makeStackTraceLong_(opt_result); this.updateResult_(false, opt_result) }; goog.async.Deferred.prototype.makeStackTraceLong_ = function(error) { if(!goog.async.Deferred.LONG_STACK_TRACES) { return } if(this.constructorStack_ && goog.isObject(error) && error.stack && /^[^\n]+(\n [^\n]+)+/.test(error.stack)) { error.stack = error.stack + "\nDEFERRED OPERATION:\n" + this.constructorStack_ } }; goog.async.Deferred.prototype.assertNotDeferred_ = function(obj) { goog.asserts.assert(!(obj instanceof goog.async.Deferred), "An execution sequence may not be initiated with a blocking Deferred.") }; goog.async.Deferred.prototype.addCallback = function(cb, opt_scope) { return this.addCallbacks(cb, null, opt_scope) }; goog.async.Deferred.prototype.addErrback = function(eb, opt_scope) { return this.addCallbacks(null, eb, opt_scope) }; goog.async.Deferred.prototype.addBoth = function(f, opt_scope) { return this.addCallbacks(f, f, opt_scope) }; goog.async.Deferred.prototype.addCallbacks = function(cb, eb, opt_scope) { goog.asserts.assert(!this.blocking_, "Blocking Deferreds can not be re-used"); this.sequence_.push([cb, eb, opt_scope]); if(this.hasFired()) { this.fire_() } return this }; goog.async.Deferred.prototype.chainDeferred = function(otherDeferred) { this.addCallbacks(otherDeferred.callback, otherDeferred.errback, otherDeferred); return this }; goog.async.Deferred.prototype.awaitDeferred = function(otherDeferred) { return this.addCallback(goog.bind(otherDeferred.branch, otherDeferred)) }; goog.async.Deferred.prototype.branch = function(opt_propagateCancel) { var d = new goog.async.Deferred; this.chainDeferred(d); if(opt_propagateCancel) { d.parent_ = this; this.branches_++ } return d }; goog.async.Deferred.prototype.hasFired = function() { return this.fired_ }; goog.async.Deferred.prototype.isError = function(res) { return res instanceof Error }; goog.async.Deferred.prototype.hasErrback_ = function() { return goog.array.some(this.sequence_, function(sequenceRow) { return goog.isFunction(sequenceRow[1]) }) }; goog.async.Deferred.prototype.fire_ = function() { if(this.unhandledExceptionTimeoutId_ && this.hasFired() && this.hasErrback_()) { goog.global.clearTimeout(this.unhandledExceptionTimeoutId_); delete this.unhandledExceptionTimeoutId_ } if(this.parent_) { this.parent_.branches_--; delete this.parent_ } var res = this.result_; var unhandledException = false; var isNewlyBlocked = false; while(this.sequence_.length && !this.blocked_) { var sequenceEntry = this.sequence_.shift(); var callback = sequenceEntry[0]; var errback = sequenceEntry[1]; var scope = sequenceEntry[2]; var f = this.hadError_ ? errback : callback; if(f) { try { var ret = f.call(scope || this.defaultScope_, res); if(goog.isDef(ret)) { this.hadError_ = this.hadError_ && (ret == res || this.isError(ret)); this.result_ = res = ret } if(res instanceof goog.async.Deferred) { isNewlyBlocked = true; this.blocked_ = true } }catch(ex) { res = ex; this.hadError_ = true; this.makeStackTraceLong_(res); if(!this.hasErrback_()) { unhandledException = true } } } } this.result_ = res; if(isNewlyBlocked) { res.addCallbacks(goog.bind(this.continue_, this, true), goog.bind(this.continue_, this, false)); res.blocking_ = true }else { if(goog.async.Deferred.STRICT_ERRORS && this.isError(res) && !(res instanceof goog.async.Deferred.CanceledError)) { this.hadError_ = true; unhandledException = true } } if(unhandledException) { this.unhandledExceptionTimeoutId_ = goog.global.setTimeout(goog.functions.fail(res), 0) } }; goog.async.Deferred.succeed = function(opt_result) { var d = new goog.async.Deferred; d.callback(opt_result); return d }; goog.async.Deferred.fail = function(res) { var d = new goog.async.Deferred; d.errback(res); return d }; goog.async.Deferred.canceled = function() { var d = new goog.async.Deferred; d.cancel(); return d }; goog.async.Deferred.when = function(value, callback, opt_scope) { if(value instanceof goog.async.Deferred) { return value.branch(true).addCallback(callback, opt_scope) }else { return goog.async.Deferred.succeed(value).addCallback(callback, opt_scope) } }; goog.async.Deferred.AlreadyCalledError = function(deferred) { goog.debug.Error.call(this); this.deferred = deferred }; goog.inherits(goog.async.Deferred.AlreadyCalledError, goog.debug.Error); goog.async.Deferred.AlreadyCalledError.prototype.message = "Deferred has already fired"; goog.async.Deferred.AlreadyCalledError.prototype.name = "AlreadyCalledError"; goog.async.Deferred.CanceledError = function(deferred) { goog.debug.Error.call(this); this.deferred = deferred }; goog.inherits(goog.async.Deferred.CanceledError, goog.debug.Error); goog.async.Deferred.CanceledError.prototype.message = "Deferred was canceled"; goog.async.Deferred.CanceledError.prototype.name = "CanceledError"; goog.provide("goog.async.DeferredList"); goog.require("goog.async.Deferred"); goog.async.DeferredList = function(list, opt_fireOnOneCallback, opt_fireOnOneErrback, opt_consumeErrors, opt_canceler, opt_defaultScope) { goog.base(this, opt_canceler, opt_defaultScope); this.list_ = list; this.deferredResults_ = []; this.fireOnOneCallback_ = !!opt_fireOnOneCallback; this.fireOnOneErrback_ = !!opt_fireOnOneErrback; this.consumeErrors_ = !!opt_consumeErrors; this.numFinished_ = 0; for(var i = 0;i < list.length;i++) { var d = list[i]; d.addCallbacks(goog.bind(this.handleCallback_, this, i, true), goog.bind(this.handleCallback_, this, i, false)) } if(list.length == 0 && !this.fireOnOneCallback_) { this.callback(this.deferredResults_) } }; goog.inherits(goog.async.DeferredList, goog.async.Deferred); goog.async.DeferredList.prototype.handleCallback_ = function(index, success, result) { this.numFinished_++; this.deferredResults_[index] = [success, result]; if(!this.hasFired()) { if(this.fireOnOneCallback_ && success) { this.callback([index, result]) }else { if(this.fireOnOneErrback_ && !success) { this.errback(result) }else { if(this.numFinished_ == this.list_.length) { this.callback(this.deferredResults_) } } } } if(this.consumeErrors_ && !success) { result = null } return result }; goog.async.DeferredList.prototype.errback = function(res) { goog.base(this, "errback", res); for(var i = 0;i < this.list_.length;i++) { this.list_[i].cancel() } }; goog.async.DeferredList.gatherResults = function(list) { return(new goog.async.DeferredList(list, false, true)).addCallback(function(results) { var output = []; for(var i = 0;i < results.length;i++) { output[i] = results[i][1] } return output }) }; goog.provide("goog.date.DateLike"); goog.date.DateLike; goog.provide("goog.i18n.DateTimeSymbols"); goog.provide("goog.i18n.DateTimeSymbols_af"); goog.provide("goog.i18n.DateTimeSymbols_am"); goog.provide("goog.i18n.DateTimeSymbols_ar"); goog.provide("goog.i18n.DateTimeSymbols_bg"); goog.provide("goog.i18n.DateTimeSymbols_bn"); goog.provide("goog.i18n.DateTimeSymbols_br"); goog.provide("goog.i18n.DateTimeSymbols_ca"); goog.provide("goog.i18n.DateTimeSymbols_chr"); goog.provide("goog.i18n.DateTimeSymbols_cs"); goog.provide("goog.i18n.DateTimeSymbols_cy"); goog.provide("goog.i18n.DateTimeSymbols_da"); goog.provide("goog.i18n.DateTimeSymbols_de"); goog.provide("goog.i18n.DateTimeSymbols_de_AT"); goog.provide("goog.i18n.DateTimeSymbols_de_CH"); goog.provide("goog.i18n.DateTimeSymbols_el"); goog.provide("goog.i18n.DateTimeSymbols_en"); goog.provide("goog.i18n.DateTimeSymbols_en_AU"); goog.provide("goog.i18n.DateTimeSymbols_en_GB"); goog.provide("goog.i18n.DateTimeSymbols_en_IE"); goog.provide("goog.i18n.DateTimeSymbols_en_IN"); goog.provide("goog.i18n.DateTimeSymbols_en_ISO"); goog.provide("goog.i18n.DateTimeSymbols_en_SG"); goog.provide("goog.i18n.DateTimeSymbols_en_US"); goog.provide("goog.i18n.DateTimeSymbols_en_ZA"); goog.provide("goog.i18n.DateTimeSymbols_es"); goog.provide("goog.i18n.DateTimeSymbols_es_419"); goog.provide("goog.i18n.DateTimeSymbols_es_ES"); goog.provide("goog.i18n.DateTimeSymbols_et"); goog.provide("goog.i18n.DateTimeSymbols_eu"); goog.provide("goog.i18n.DateTimeSymbols_fa"); goog.provide("goog.i18n.DateTimeSymbols_fi"); goog.provide("goog.i18n.DateTimeSymbols_fil"); goog.provide("goog.i18n.DateTimeSymbols_fr"); goog.provide("goog.i18n.DateTimeSymbols_fr_CA"); goog.provide("goog.i18n.DateTimeSymbols_gl"); goog.provide("goog.i18n.DateTimeSymbols_gsw"); goog.provide("goog.i18n.DateTimeSymbols_gu"); goog.provide("goog.i18n.DateTimeSymbols_haw"); goog.provide("goog.i18n.DateTimeSymbols_he"); goog.provide("goog.i18n.DateTimeSymbols_hi"); goog.provide("goog.i18n.DateTimeSymbols_hr"); goog.provide("goog.i18n.DateTimeSymbols_hu"); goog.provide("goog.i18n.DateTimeSymbols_id"); goog.provide("goog.i18n.DateTimeSymbols_in"); goog.provide("goog.i18n.DateTimeSymbols_is"); goog.provide("goog.i18n.DateTimeSymbols_it"); goog.provide("goog.i18n.DateTimeSymbols_iw"); goog.provide("goog.i18n.DateTimeSymbols_ja"); goog.provide("goog.i18n.DateTimeSymbols_kn"); goog.provide("goog.i18n.DateTimeSymbols_ko"); goog.provide("goog.i18n.DateTimeSymbols_ln"); goog.provide("goog.i18n.DateTimeSymbols_lt"); goog.provide("goog.i18n.DateTimeSymbols_lv"); goog.provide("goog.i18n.DateTimeSymbols_ml"); goog.provide("goog.i18n.DateTimeSymbols_mr"); goog.provide("goog.i18n.DateTimeSymbols_ms"); goog.provide("goog.i18n.DateTimeSymbols_mt"); goog.provide("goog.i18n.DateTimeSymbols_nb"); goog.provide("goog.i18n.DateTimeSymbols_nl"); goog.provide("goog.i18n.DateTimeSymbols_no"); goog.provide("goog.i18n.DateTimeSymbols_or"); goog.provide("goog.i18n.DateTimeSymbols_pl"); goog.provide("goog.i18n.DateTimeSymbols_pt"); goog.provide("goog.i18n.DateTimeSymbols_pt_BR"); goog.provide("goog.i18n.DateTimeSymbols_pt_PT"); goog.provide("goog.i18n.DateTimeSymbols_ro"); goog.provide("goog.i18n.DateTimeSymbols_ru"); goog.provide("goog.i18n.DateTimeSymbols_sk"); goog.provide("goog.i18n.DateTimeSymbols_sl"); goog.provide("goog.i18n.DateTimeSymbols_sq"); goog.provide("goog.i18n.DateTimeSymbols_sr"); goog.provide("goog.i18n.DateTimeSymbols_sv"); goog.provide("goog.i18n.DateTimeSymbols_sw"); goog.provide("goog.i18n.DateTimeSymbols_ta"); goog.provide("goog.i18n.DateTimeSymbols_te"); goog.provide("goog.i18n.DateTimeSymbols_th"); goog.provide("goog.i18n.DateTimeSymbols_tl"); goog.provide("goog.i18n.DateTimeSymbols_tr"); goog.provide("goog.i18n.DateTimeSymbols_uk"); goog.provide("goog.i18n.DateTimeSymbols_ur"); goog.provide("goog.i18n.DateTimeSymbols_vi"); goog.provide("goog.i18n.DateTimeSymbols_zh"); goog.provide("goog.i18n.DateTimeSymbols_zh_CN"); goog.provide("goog.i18n.DateTimeSymbols_zh_HK"); goog.provide("goog.i18n.DateTimeSymbols_zh_TW"); goog.provide("goog.i18n.DateTimeSymbols_zu"); goog.i18n.DateTimeSymbols_en_ISO = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, y MMMM dd", "y MMMM d", "y MMM d", "yyyy-MM-dd"], TIMEFORMATS:["HH:mm:ss v", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], AVAILABLEFORMATS:{"Md":"M/d", "MMMMd":"MMMM d", "MMMd":"MMM d"}, FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_af = {ERAS:["v.C.", "n.C."], ERANAMES:["voor Christus", "na Christus"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"], STANDALONEMONTHS:["Januarie", "Februarie", "Maart", "April", "Mei", "Junie", "Julie", "Augustus", "September", "Oktober", "November", "Desember"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"], WEEKDAYS:["Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"], STANDALONEWEEKDAYS:["Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag"], SHORTWEEKDAYS:["So", "Ma", "Di", "Wo", "Do", "Vr", "Sa"], STANDALONESHORTWEEKDAYS:["So", "Ma", "Di", "Wo", "Do", "Vr", "Sa"], NARROWWEEKDAYS:["S", "M", "D", "W", "D", "V", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "D", "W", "D", "V", "S"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1ste kwartaal", "2de kwartaal", "3de kwartaal", "4de kwartaal"], AMPMS:["vm.", "nm."], DATEFORMATS:["EEEE dd MMMM y", "dd MMMM y", "dd MMM y", "y-MM-dd"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_am = {ERAS:["\u12d3/\u12d3", "\u12d3/\u121d"], ERANAMES:["\u12d3\u1218\u1270 \u12d3\u1208\u121d", "\u12d3\u1218\u1270 \u121d\u1215\u1228\u1275"], NARROWMONTHS:["\u1303", "\u134c", "\u121b", "\u12a4", "\u121c", "\u1301", "\u1301", "\u12a6", "\u1234", "\u12a6", "\u1296", "\u12f2"], STANDALONENARROWMONTHS:["\u1303", "\u134c", "\u121b", "\u12a4", "\u121c", "\u1301", "\u1301", "\u12a6", "\u1234", "\u12a6", "\u1296", "\u12f2"], MONTHS:["\u1303\u1295\u12e9\u12c8\u122a", "\u134c\u1265\u1229\u12c8\u122a", "\u121b\u122d\u127d", "\u12a4\u1355\u122a\u120d", "\u121c\u12ed", "\u1301\u1295", "\u1301\u120b\u12ed", "\u12a6\u1308\u1235\u1275", "\u1234\u1355\u1274\u121d\u1260\u122d", "\u12a6\u12ad\u1270\u12cd\u1260\u122d", "\u1296\u126c\u121d\u1260\u122d", "\u12f2\u1234\u121d\u1260\u122d"], STANDALONEMONTHS:["\u1303\u1295\u12e9\u12c8\u122a", "\u134c\u1265\u1229\u12c8\u122a", "\u121b\u122d\u127d", "\u12a4\u1355\u122a\u120d", "\u121c\u12ed", "\u1301\u1295", "\u1301\u120b\u12ed", "\u12a6\u1308\u1235\u1275", "\u1234\u1355\u1274\u121d\u1260\u122d", "\u12a6\u12ad\u1276\u1260\u122d", "\u1296\u126c\u121d\u1260\u122d", "\u12f2\u1234\u121d\u1260\u122d"], SHORTMONTHS:["\u1303\u1295\u12e9", "\u134c\u1265\u1229", "\u121b\u122d\u127d", "\u12a4\u1355\u122a", "\u121c\u12ed", "\u1301\u1295", "\u1301\u120b\u12ed", "\u12a6\u1308\u1235", "\u1234\u1355\u1274", "\u12a6\u12ad\u1270", "\u1296\u126c\u121d", "\u12f2\u1234\u121d"], STANDALONESHORTMONTHS:["\u1303\u1295\u12e9", "\u134c\u1265\u1229", "\u121b\u122d\u127d", "\u12a4\u1355\u122a", "\u121c\u12ed", "\u1301\u1295", "\u1301\u120b\u12ed", "\u12a6\u1308\u1235", "\u1234\u1355\u1274", "\u12a6\u12ad\u1276", "\u1296\u126c\u121d", "\u12f2\u1234\u121d"], WEEKDAYS:["\u12a5\u1211\u12f5", "\u1230\u129e", "\u121b\u12ad\u1230\u129e", "\u1228\u1261\u12d5", "\u1210\u1219\u1235", "\u12d3\u122d\u1265", "\u1245\u12f3\u121c"], STANDALONEWEEKDAYS:["\u12a5\u1211\u12f5", "\u1230\u129e", "\u121b\u12ad\u1230\u129e", "\u1228\u1261\u12d5", "\u1210\u1219\u1235", "\u12d3\u122d\u1265", "\u1245\u12f3\u121c"], SHORTWEEKDAYS:["\u12a5\u1211\u12f5", "\u1230\u129e", "\u121b\u12ad\u1230", "\u1228\u1261\u12d5", "\u1210\u1219\u1235", "\u12d3\u122d\u1265", "\u1245\u12f3\u121c"], STANDALONESHORTWEEKDAYS:["\u12a5\u1211\u12f5", "\u1230\u129e", "\u121b\u12ad\u1230", "\u1228\u1261\u12d5", "\u1210\u1219\u1235", "\u12d3\u122d\u1265", "\u1245\u12f3\u121c"], NARROWWEEKDAYS:["\u12a5", "\u1230", "\u121b", "\u1228", "\u1210", "\u12d3", "\u1245"], STANDALONENARROWWEEKDAYS:["\u12a5", "\u1230", "\u121b", "\u1228", "\u1210", "\u12d3", "\u1245"], SHORTQUARTERS:["\u1229\u12651", "\u1229\u12652", "\u1229\u12653", "\u1229\u12654"], QUARTERS:["1\u129b\u12cd \u1229\u1265", "\u1201\u1208\u1270\u129b\u12cd \u1229\u1265", "3\u129b\u12cd \u1229\u1265", "4\u129b\u12cd \u1229\u1265"], AMPMS:["\u1325\u12cb\u1275", "\u12a8\u1230\u12d3\u1275"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "dd/MM/y"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_ar = {ZERODIGIT:1632, ERAS:["\u0642.\u0645", "\u0645"], ERANAMES:["\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f", "\u0645\u064a\u0644\u0627\u062f\u064a"], NARROWMONTHS:["\u064a", "\u0641", "\u0645", "\u0623", "\u0648", "\u0646", "\u0644", "\u063a", "\u0633", "\u0643", "\u0628", "\u062f"], STANDALONENARROWMONTHS:["\u064a", "\u0641", "\u0645", "\u0623", "\u0648", "\u0646", "\u0644", "\u063a", "\u0633", "\u0643", "\u0628", "\u062f"], MONTHS:["\u064a\u0646\u0627\u064a\u0631", "\u0641\u0628\u0631\u0627\u064a\u0631", "\u0645\u0627\u0631\u0633", "\u0623\u0628\u0631\u064a\u0644", "\u0645\u0627\u064a\u0648", "\u064a\u0648\u0646\u064a\u0648", "\u064a\u0648\u0644\u064a\u0648", "\u0623\u063a\u0633\u0637\u0633", "\u0633\u0628\u062a\u0645\u0628\u0631", "\u0623\u0643\u062a\u0648\u0628\u0631", "\u0646\u0648\u0641\u0645\u0628\u0631", "\u062f\u064a\u0633\u0645\u0628\u0631"], STANDALONEMONTHS:["\u064a\u0646\u0627\u064a\u0631", "\u0641\u0628\u0631\u0627\u064a\u0631", "\u0645\u0627\u0631\u0633", "\u0623\u0628\u0631\u064a\u0644", "\u0645\u0627\u064a\u0648", "\u064a\u0648\u0646\u064a\u0648", "\u064a\u0648\u0644\u064a\u0648", "\u0623\u063a\u0633\u0637\u0633", "\u0633\u0628\u062a\u0645\u0628\u0631", "\u0623\u0643\u062a\u0648\u0628\u0631", "\u0646\u0648\u0641\u0645\u0628\u0631", "\u062f\u064a\u0633\u0645\u0628\u0631"], SHORTMONTHS:["\u064a\u0646\u0627\u064a\u0631", "\u0641\u0628\u0631\u0627\u064a\u0631", "\u0645\u0627\u0631\u0633", "\u0623\u0628\u0631\u064a\u0644", "\u0645\u0627\u064a\u0648", "\u064a\u0648\u0646\u064a\u0648", "\u064a\u0648\u0644\u064a\u0648", "\u0623\u063a\u0633\u0637\u0633", "\u0633\u0628\u062a\u0645\u0628\u0631", "\u0623\u0643\u062a\u0648\u0628\u0631", "\u0646\u0648\u0641\u0645\u0628\u0631", "\u062f\u064a\u0633\u0645\u0628\u0631"], STANDALONESHORTMONTHS:["\u064a\u0646\u0627\u064a\u0631", "\u0641\u0628\u0631\u0627\u064a\u0631", "\u0645\u0627\u0631\u0633", "\u0623\u0628\u0631\u064a\u0644", "\u0645\u0627\u064a\u0648", "\u064a\u0648\u0646\u064a\u0648", "\u064a\u0648\u0644\u064a\u0648", "\u0623\u063a\u0633\u0637\u0633", "\u0633\u0628\u062a\u0645\u0628\u0631", "\u0623\u0643\u062a\u0648\u0628\u0631", "\u0646\u0648\u0641\u0645\u0628\u0631", "\u062f\u064a\u0633\u0645\u0628\u0631"], WEEKDAYS:["\u0627\u0644\u0623\u062d\u062f", "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", "\u0627\u0644\u062e\u0645\u064a\u0633", "\u0627\u0644\u062c\u0645\u0639\u0629", "\u0627\u0644\u0633\u0628\u062a"], STANDALONEWEEKDAYS:["\u0627\u0644\u0623\u062d\u062f", "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", "\u0627\u0644\u062e\u0645\u064a\u0633", "\u0627\u0644\u062c\u0645\u0639\u0629", "\u0627\u0644\u0633\u0628\u062a"], SHORTWEEKDAYS:["\u0627\u0644\u0623\u062d\u062f", "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", "\u0627\u0644\u062e\u0645\u064a\u0633", "\u0627\u0644\u062c\u0645\u0639\u0629", "\u0627\u0644\u0633\u0628\u062a"], STANDALONESHORTWEEKDAYS:["\u0627\u0644\u0623\u062d\u062f", "\u0627\u0644\u0627\u062b\u0646\u064a\u0646", "\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621", "\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621", "\u0627\u0644\u062e\u0645\u064a\u0633", "\u0627\u0644\u062c\u0645\u0639\u0629", "\u0627\u0644\u0633\u0628\u062a"], NARROWWEEKDAYS:["\u062d", "\u0646", "\u062b", "\u0631", "\u062e", "\u062c", "\u0633"], STANDALONENARROWWEEKDAYS:["\u062d", "\u0646", "\u062b", "\u0631", "\u062e", "\u062c", "\u0633"], SHORTQUARTERS:["\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0623\u0648\u0644", "\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0646\u064a", "\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0644\u062b", "\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0639"], QUARTERS:["\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0623\u0648\u0644", "\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0646\u064a", "\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0644\u062b", "\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0639"], AMPMS:["\u0635", "\u0645"], DATEFORMATS:["EEEE\u060c d MMMM\u060c y", "d MMMM\u060c y", "dd\u200f/MM\u200f/y", "d\u200f/M\u200f/y"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:5, WEEKENDRANGE:[4, 5], FIRSTWEEKCUTOFFDAY:4}; goog.i18n.DateTimeSymbols_bg = {ERAS:["\u043f\u0440. \u043d. \u0435.", "\u043e\u0442 \u043d. \u0435."], ERANAMES:["\u043f\u0440.\u0425\u0440.", "\u0441\u043b.\u0425\u0440."], NARROWMONTHS:["\u044f", "\u0444", "\u043c", "\u0430", "\u043c", "\u044e", "\u044e", "\u0430", "\u0441", "\u043e", "\u043d", "\u0434"], STANDALONENARROWMONTHS:["\u044f", "\u0444", "\u043c", "\u0430", "\u043c", "\u044e", "\u044e", "\u0430", "\u0441", "\u043e", "\u043d", "\u0434"], MONTHS:["\u044f\u043d\u0443\u0430\u0440\u0438", "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", "\u043c\u0430\u0440\u0442", "\u0430\u043f\u0440\u0438\u043b", "\u043c\u0430\u0439", "\u044e\u043d\u0438", "\u044e\u043b\u0438", "\u0430\u0432\u0433\u0443\u0441\u0442", "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"], STANDALONEMONTHS:["\u044f\u043d\u0443\u0430\u0440\u0438", "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", "\u043c\u0430\u0440\u0442", "\u0430\u043f\u0440\u0438\u043b", "\u043c\u0430\u0439", "\u044e\u043d\u0438", "\u044e\u043b\u0438", "\u0430\u0432\u0433\u0443\u0441\u0442", "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438"], SHORTMONTHS:["\u044f\u043d.", "\u0444\u0435\u0432\u0440.", "\u043c\u0430\u0440\u0442", "\u0430\u043f\u0440.", "\u043c\u0430\u0439", "\u044e\u043d\u0438", "\u044e\u043b\u0438", "\u0430\u0432\u0433.", "\u0441\u0435\u043f\u0442.", "\u043e\u043a\u0442.", "\u043d\u043e\u0435\u043c.", "\u0434\u0435\u043a."], STANDALONESHORTMONTHS:["\u044f\u043d.", "\u0444\u0435\u0432\u0440.", "\u043c\u0430\u0440\u0442", "\u0430\u043f\u0440.", "\u043c\u0430\u0439", "\u044e\u043d\u0438", "\u044e\u043b\u0438", "\u0430\u0432\u0433.", "\u0441\u0435\u043f\u0442.", "\u043e\u043a\u0442.", "\u043d\u043e\u0435\u043c.", "\u0434\u0435\u043a."], WEEKDAYS:["\u043d\u0435\u0434\u0435\u043b\u044f", "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", "\u0441\u0440\u044f\u0434\u0430", "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", "\u043f\u0435\u0442\u044a\u043a", "\u0441\u044a\u0431\u043e\u0442\u0430"], STANDALONEWEEKDAYS:["\u043d\u0435\u0434\u0435\u043b\u044f", "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a", "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", "\u0441\u0440\u044f\u0434\u0430", "\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a", "\u043f\u0435\u0442\u044a\u043a", "\u0441\u044a\u0431\u043e\u0442\u0430"], SHORTWEEKDAYS:["\u043d\u0434", "\u043f\u043d", "\u0432\u0442", "\u0441\u0440", "\u0447\u0442", "\u043f\u0442", "\u0441\u0431"], STANDALONESHORTWEEKDAYS:["\u043d\u0434", "\u043f\u043d", "\u0432\u0442", "\u0441\u0440", "\u0447\u0442", "\u043f\u0442", "\u0441\u0431"], NARROWWEEKDAYS:["\u043d", "\u043f", "\u0432", "\u0441", "\u0447", "\u043f", "\u0441"], STANDALONENARROWWEEKDAYS:["\u043d", "\u043f", "\u0432", "\u0441", "\u0447", "\u043f", "\u0441"], SHORTQUARTERS:["I \u0442\u0440\u0438\u043c.", "II \u0442\u0440\u0438\u043c.", "III \u0442\u0440\u0438\u043c.", "IV \u0442\u0440\u0438\u043c."], QUARTERS:["1-\u0432\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435", "2-\u0440\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435", "3-\u0442\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435", "4-\u0442\u043e \u0442\u0440\u0438\u043c\u0435\u0441\u0435\u0447\u0438\u0435"], AMPMS:["\u043f\u0440. \u043e\u0431.", "\u0441\u043b. \u043e\u0431."], DATEFORMATS:["dd MMMM y, EEEE", "dd MMMM y", "dd.MM.y", "dd.MM.yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1}, {0}", "{1}, {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_bn = {ZERODIGIT:2534, ERAS:["\u0996\u09c3\u09b7\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac", "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"], ERANAMES:["\u0996\u09c3\u09b7\u09cd\u099f\u09aa\u09c2\u09b0\u09cd\u09ac", "\u0996\u09c3\u09b7\u09cd\u099f\u09be\u09ac\u09cd\u09a6"], NARROWMONTHS:["\u099c\u09be", "\u09ab\u09c7", "\u09ae\u09be", "\u098f", "\u09ae\u09c7", "\u099c\u09c1\u09a8", "\u099c\u09c1", "\u0986", "\u09b8\u09c7", "\u0985", "\u09a8", "\u09a1\u09bf"], STANDALONENARROWMONTHS:["\u099c\u09be", "\u09ab\u09c7", "\u09ae\u09be", "\u098f", "\u09ae\u09c7", "\u099c\u09c1\u09a8", "\u099c\u09c1", "\u0986", "\u09b8\u09c7", "\u0985", "\u09a8", "\u09a1\u09bf"], MONTHS:["\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ae\u09be\u09b0\u09cd\u099a", "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", "\u09ae\u09c7", "\u099c\u09c1\u09a8", "\u099c\u09c1\u09b2\u09be\u0987", "\u0986\u0997\u09b8\u09cd\u099f", "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"], STANDALONEMONTHS:["\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ae\u09be\u09b0\u09cd\u099a", "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", "\u09ae\u09c7", "\u099c\u09c1\u09a8", "\u099c\u09c1\u09b2\u09be\u0987", "\u0986\u0997\u09b8\u09cd\u099f", "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"], SHORTMONTHS:["\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ae\u09be\u09b0\u09cd\u099a", "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", "\u09ae\u09c7", "\u099c\u09c1\u09a8", "\u099c\u09c1\u09b2\u09be\u0987", "\u0986\u0997\u09b8\u09cd\u099f", "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"], STANDALONESHORTMONTHS:["\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09c0", "\u09ae\u09be\u09b0\u09cd\u099a", "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", "\u09ae\u09c7", "\u099c\u09c1\u09a8", "\u099c\u09c1\u09b2\u09be\u0987", "\u0986\u0997\u09b8\u09cd\u099f", "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0"], WEEKDAYS:["\u09b0\u09ac\u09bf\u09ac\u09be\u09b0", "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0", "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0", "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0", "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0", "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0", "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"], STANDALONEWEEKDAYS:["\u09b0\u09ac\u09bf\u09ac\u09be\u09b0", "\u09b8\u09cb\u09ae\u09ac\u09be\u09b0", "\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0", "\u09ac\u09c1\u09a7\u09ac\u09be\u09b0", "\u09ac\u09c3\u09b9\u09b7\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0", "\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0", "\u09b6\u09a8\u09bf\u09ac\u09be\u09b0"], SHORTWEEKDAYS:["\u09b0\u09ac\u09bf", "\u09b8\u09cb\u09ae", "\u09ae\u0999\u09cd\u0997\u09b2", "\u09ac\u09c1\u09a7", "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf", "\u09b6\u09c1\u0995\u09cd\u09b0", "\u09b6\u09a8\u09bf"], STANDALONESHORTWEEKDAYS:["\u09b0\u09ac\u09bf", "\u09b8\u09cb\u09ae", "\u09ae\u0999\u09cd\u0997\u09b2", "\u09ac\u09c1\u09a7", "\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf", "\u09b6\u09c1\u0995\u09cd\u09b0", "\u09b6\u09a8\u09bf"], NARROWWEEKDAYS:["\u09b0", "\u09b8\u09cb", "\u09ae", "\u09ac\u09c1", "\u09ac\u09c3", "\u09b6\u09c1", "\u09b6"], STANDALONENARROWWEEKDAYS:["\u09b0", "\u09b8\u09cb", "\u09ae", "\u09ac\u09c1", "\u09ac\u09c3", "\u09b6\u09c1", "\u09b6"], SHORTQUARTERS:["\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e7", "\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e8", "\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09e9", "\u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6 \u09ea"], QUARTERS:["\u09aa\u09cd\u09b0\u09a5\u09ae \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6", "\u09a6\u09cd\u09ac\u09bf\u09a4\u09c0\u09af\u09bc \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6", "\u09a4\u09c3\u09a4\u09c0\u09af\u09bc \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6", "\u099a\u09a4\u09c1\u09b0\u09cd\u09a5 \u099a\u09a4\u09c1\u09b0\u09cd\u09a5\u09be\u0982\u09b6"], AMPMS:["am", "pm"], DATEFORMATS:["EEEE, d MMMM, y", "d MMMM, y", "d MMM, y", "d/M/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:4, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_br = {ERAS:["BCE", "CE"], ERANAMES:["BCE", "CE"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["Genver", "C\u02bchwevrer", "Meurzh", "Ebrel", "Mae", "Mezheven", "Gouere", "Eost", "Gwengolo", "Here", "Du", "Kerzu"], STANDALONEMONTHS:["Genver", "C\u02bchwevrer", "Meurzh", "Ebrel", "Mae", "Mezheven", "Gouere", "Eost", "Gwengolo", "Here", "Du", "Kerzu"], SHORTMONTHS:["Gen", "C\u02bchwe", "Meur", "Ebr", "Mae", "Mezh", "Goue", "Eost", "Gwen", "Here", "Du", "Ker"], STANDALONESHORTMONTHS:["Gen", "C\u02bchwe", "Meur", "Ebr", "Mae", "Mezh", "Goue", "Eost", "Gwen", "Here", "Du", "Ker"], WEEKDAYS:["Sul", "Lun", "Meurzh", "Merc\u02bcher", "Yaou", "Gwener", "Sadorn"], STANDALONEWEEKDAYS:["Sul", "Lun", "Meurzh", "Merc\u02bcher", "Yaou", "Gwener", "Sadorn"], SHORTWEEKDAYS:["sul", "lun", "meu.", "mer.", "yaou", "gwe.", "sad."], STANDALONESHORTWEEKDAYS:["sul", "lun", "meu.", "mer.", "yaou", "gwe.", "sad."], NARROWWEEKDAYS:["su", "lu", "mz", "mc", "ya", "gw", "sa"], STANDALONENARROWWEEKDAYS:["su", "lu", "mz", "mc", "ya", "gw", "sa"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Q1", "Q2", "Q3", "Q4"], AMPMS:["AM", "PM"], DATEFORMATS:["y MMMM d, EEEE", "y MMMM d", "y MMM d", "y-MM-dd"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_ca = {ERAS:["aC", "dC"], ERANAMES:["abans de Crist", "despr\u00e9s de Crist"], NARROWMONTHS:["G", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["g", "f", "m", "a", "m", "j", "j", "a", "s", "o", "n", "d"], MONTHS:["de gener", "de febrer", "de mar\u00e7", "d\u2019abril", "de maig", "de juny", "de juliol", "d\u2019agost", "de setembre", "d\u2019octubre", "de novembre", "de desembre"], STANDALONEMONTHS:["gener", "febrer", "mar\u00e7", "abril", "maig", "juny", "juliol", "agost", "setembre", "octubre", "novembre", "desembre"], SHORTMONTHS:["de gen.", "de febr.", "de mar\u00e7", "d\u2019abr.", "de maig", "de juny", "de jul.", "d\u2019ag.", "de set.", "d\u2019oct.", "de nov.", "de des."], STANDALONESHORTMONTHS:["gen.", "febr.", "mar\u00e7", "abr.", "maig", "juny", "jul.", "ag.", "set.", "oct.", "nov.", "des."], WEEKDAYS:["diumenge", "dilluns", "dimarts", "dimecres", "dijous", "divendres", "dissabte"], STANDALONEWEEKDAYS:["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"], SHORTWEEKDAYS:["dg.", "dl.", "dt.", "dc.", "dj.", "dv.", "ds."], STANDALONESHORTWEEKDAYS:["dg", "dl", "dt", "dc", "dj", "dv", "ds"], NARROWWEEKDAYS:["dg", "dl", "dt", "dc", "dj", "dv", "ds"], STANDALONENARROWWEEKDAYS:["dg", "dl", "dt", "dc", "dj", "dv", "ds"], SHORTQUARTERS:["1T", "2T", "3T", "4T"], QUARTERS:["1r trimestre", "2n trimestre", "3r trimestre", "4t trimestre"], AMPMS:["a.m.", "p.m."], DATEFORMATS:["EEEE d MMMM 'de' y", "d MMMM 'de' y", "dd/MM/y", "dd/MM/yy"], TIMEFORMATS:["H.mm.ss zzzz", "H.mm.ss z", "H.mm.ss", "H.mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_chr = {ERAS:["\u13a4\u13d3\u13b7\u13b8", "\u13a4\u13b6\u13d0\u13c5"], ERANAMES:["\u13cf \u13e5\u13cc \u13be\u13d5\u13b2\u13cd\u13ac\u13be", "\u13a0\u13a9\u13c3\u13ae\u13b5\u13d3\u13cd\u13d7\u13f1 \u13a0\u13d5\u13d8\u13f1\u13cd\u13ac \u13f1\u13b0\u13e9 \u13e7\u13d3\u13c2\u13b8\u13a2\u13cd\u13d7"], NARROWMONTHS:["\u13a4", "\u13a7", "\u13a0", "\u13a7", "\u13a0", "\u13d5", "\u13ab", "\u13a6", "\u13da", "\u13da", "\u13c5", "\u13a4"], STANDALONENARROWMONTHS:["\u13a4", "\u13a7", "\u13a0", "\u13a7", "\u13a0", "\u13d5", "\u13ab", "\u13a6", "\u13da", "\u13da", "\u13c5", "\u13a4"], MONTHS:["\u13a4\u13c3\u13b8\u13d4\u13c5", "\u13a7\u13a6\u13b5", "\u13a0\u13c5\u13f1", "\u13a7\u13ec\u13c2", "\u13a0\u13c2\u13cd\u13ac\u13d8", "\u13d5\u13ad\u13b7\u13f1", "\u13ab\u13f0\u13c9\u13c2", "\u13a6\u13b6\u13c2", "\u13da\u13b5\u13cd\u13d7", "\u13da\u13c2\u13c5\u13d7", "\u13c5\u13d3\u13d5\u13c6", "\u13a4\u13cd\u13a9\u13f1"], STANDALONEMONTHS:["\u13a4\u13c3\u13b8\u13d4\u13c5", "\u13a7\u13a6\u13b5", "\u13a0\u13c5\u13f1", "\u13a7\u13ec\u13c2", "\u13a0\u13c2\u13cd\u13ac\u13d8", "\u13d5\u13ad\u13b7\u13f1", "\u13ab\u13f0\u13c9\u13c2", "\u13a6\u13b6\u13c2", "\u13da\u13b5\u13cd\u13d7", "\u13da\u13c2\u13c5\u13d7", "\u13c5\u13d3\u13d5\u13c6", "\u13a4\u13cd\u13a9\u13f1"], SHORTMONTHS:["\u13a4\u13c3", "\u13a7\u13a6", "\u13a0\u13c5", "\u13a7\u13ec", "\u13a0\u13c2", "\u13d5\u13ad", "\u13ab\u13f0", "\u13a6\u13b6", "\u13da\u13b5", "\u13da\u13c2", "\u13c5\u13d3", "\u13a4\u13cd"], STANDALONESHORTMONTHS:["\u13a4\u13c3", "\u13a7\u13a6", "\u13a0\u13c5", "\u13a7\u13ec", "\u13a0\u13c2", "\u13d5\u13ad", "\u13ab\u13f0", "\u13a6\u13b6", "\u13da\u13b5", "\u13da\u13c2", "\u13c5\u13d3", "\u13a4\u13cd"], WEEKDAYS:["\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac", "\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af", "\u13d4\u13b5\u13c1\u13a2\u13a6", "\u13e6\u13a2\u13c1\u13a2\u13a6", "\u13c5\u13a9\u13c1\u13a2\u13a6", "\u13e7\u13be\u13a9\u13b6\u13cd\u13d7", "\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be"], STANDALONEWEEKDAYS:["\u13a4\u13be\u13d9\u13d3\u13c6\u13cd\u13ac", "\u13a4\u13be\u13d9\u13d3\u13c9\u13c5\u13af", "\u13d4\u13b5\u13c1\u13a2\u13a6", "\u13e6\u13a2\u13c1\u13a2\u13a6", "\u13c5\u13a9\u13c1\u13a2\u13a6", "\u13e7\u13be\u13a9\u13b6\u13cd\u13d7", "\u13a4\u13be\u13d9\u13d3\u13c8\u13d5\u13be"], SHORTWEEKDAYS:["\u13c6\u13cd\u13ac", "\u13c9\u13c5\u13af", "\u13d4\u13b5\u13c1", "\u13e6\u13a2\u13c1", "\u13c5\u13a9\u13c1", "\u13e7\u13be\u13a9", "\u13c8\u13d5\u13be"], STANDALONESHORTWEEKDAYS:["\u13c6\u13cd\u13ac", "\u13c9\u13c5\u13af", "\u13d4\u13b5\u13c1", "\u13e6\u13a2\u13c1", "\u13c5\u13a9\u13c1", "\u13e7\u13be\u13a9", "\u13c8\u13d5\u13be"], NARROWWEEKDAYS:["\u13c6", "\u13c9", "\u13d4", "\u13e6", "\u13c5", "\u13e7", "\u13a4"], STANDALONENARROWWEEKDAYS:["\u13c6", "\u13c9", "\u13d4", "\u13e6", "\u13c5", "\u13e7", "\u13a4"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Q1", "Q2", "Q3", "Q4"], AMPMS:["\u13cc\u13be\u13b4", "\u13d2\u13af\u13f1\u13a2\u13d7\u13e2"], DATEFORMATS:["EEEE, MMMM d, y", "MMMM d, y", "MMM d, y", "M/d/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_cs = {ERAS:["p\u0159. n. l.", "n. l."], ERANAMES:["p\u0159. n. l.", "n. l."], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["l", "\u00fa", "b", "d", "k", "\u010d", "\u010d", "s", "z", "\u0159", "l", "p"], MONTHS:["ledna", "\u00fanora", "b\u0159ezna", "dubna", "kv\u011btna", "\u010dervna", "\u010dervence", "srpna", "z\u00e1\u0159\u00ed", "\u0159\u00edjna", "listopadu", "prosince"], STANDALONEMONTHS:["leden", "\u00fanor", "b\u0159ezen", "duben", "kv\u011bten", "\u010derven", "\u010dervenec", "srpen", "z\u00e1\u0159\u00ed", "\u0159\u00edjen", "listopad", "prosinec"], SHORTMONTHS:["led", "\u00fano", "b\u0159e", "dub", "kv\u011b", "\u010dvn", "\u010dvc", "srp", "z\u00e1\u0159", "\u0159\u00edj", "lis", "pro"], STANDALONESHORTMONTHS:["led", "\u00fano", "b\u0159e", "dub", "kv\u011b", "\u010dvn", "\u010dvc", "srp", "z\u00e1\u0159", "\u0159\u00edj", "lis", "pro"], WEEKDAYS:["ned\u011ble", "pond\u011bl\u00ed", "\u00fater\u00fd", "st\u0159eda", "\u010dtvrtek", "p\u00e1tek", "sobota"], STANDALONEWEEKDAYS:["ned\u011ble", "pond\u011bl\u00ed", "\u00fater\u00fd", "st\u0159eda", "\u010dtvrtek", "p\u00e1tek", "sobota"], SHORTWEEKDAYS:["ne", "po", "\u00fat", "st", "\u010dt", "p\u00e1", "so"], STANDALONESHORTWEEKDAYS:["ne", "po", "\u00fat", "st", "\u010dt", "p\u00e1", "so"], NARROWWEEKDAYS:["N", "P", "\u00da", "S", "\u010c", "P", "S"], STANDALONENARROWWEEKDAYS:["N", "P", "\u00da", "S", "\u010c", "P", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1. \u010dtvrtlet\u00ed", "2. \u010dtvrtlet\u00ed", "3. \u010dtvrtlet\u00ed", "4. \u010dtvrtlet\u00ed"], AMPMS:["dop.", "odp."], DATEFORMATS:["EEEE, d. MMMM y", "d. MMMM y", "d. M. y", "dd.MM.yy"], TIMEFORMATS:["H:mm:ss zzzz", "H:mm:ss z", "H:mm:ss", "H:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_cy = {ERAS:["CC", "OC"], ERANAMES:["Cyn Crist", "Oed Crist"], NARROWMONTHS:["I", "Ch", "M", "E", "M", "M", "G", "A", "M", "H", "T", "Rh"], STANDALONENARROWMONTHS:["I", "Ch", "M", "E", "M", "M", "G", "A", "M", "H", "T", "Rh"], MONTHS:["Ionawr", "Chwefror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorffennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"], STANDALONEMONTHS:["Ionawr", "Chwefror", "Mawrth", "Ebrill", "Mai", "Mehefin", "Gorffennaf", "Awst", "Medi", "Hydref", "Tachwedd", "Rhagfyr"], SHORTMONTHS:["Ion", "Chwef", "Mawrth", "Ebrill", "Mai", "Meh", "Gorff", "Awst", "Medi", "Hyd", "Tach", "Rhag"], STANDALONESHORTMONTHS:["Ion", "Chw", "Maw", "Ebr", "Mai", "Meh", "Gor", "Awst", "Medi", "Hyd", "Tach", "Rhag"], WEEKDAYS:["Dydd Sul", "Dydd Llun", "Dydd Mawrth", "Dydd Mercher", "Dydd Iau", "Dydd Gwener", "Dydd Sadwrn"], STANDALONEWEEKDAYS:["Dydd Sul", "Dydd Llun", "Dydd Mawrth", "Dydd Mercher", "Dydd Iau", "Dydd Gwener", "Dydd Sadwrn"], SHORTWEEKDAYS:["Sul", "Llun", "Maw", "Mer", "Iau", "Gwen", "Sad"], STANDALONESHORTWEEKDAYS:["Sul", "Llun", "Maw", "Mer", "Iau", "Gwe", "Sad"], NARROWWEEKDAYS:["S", "Ll", "M", "M", "I", "G", "S"], STANDALONENARROWWEEKDAYS:["S", "Ll", "M", "M", "I", "G", "S"], SHORTQUARTERS:["Ch1", "Ch2", "Ch3", "Ch4"], QUARTERS:["Chwarter 1af", "2il chwarter", "3ydd chwarter", "4ydd chwarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "dd/MM/y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_da = {ERAS:["f.Kr.", "e.Kr."], ERANAMES:["f.Kr.", "e.Kr."], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"], STANDALONEMONTHS:["januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"], SHORTMONTHS:["jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec."], STANDALONESHORTMONTHS:["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], WEEKDAYS:["s\u00f8ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l\u00f8rdag"], STANDALONEWEEKDAYS:["s\u00f8ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l\u00f8rdag"], SHORTWEEKDAYS:["s\u00f8n.", "man.", "tir.", "ons.", "tor.", "fre.", "l\u00f8r."], STANDALONESHORTWEEKDAYS:["s\u00f8n", "man", "tir", "ons", "tor", "fre", "l\u00f8r"], NARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1. kvartal", "2. kvartal", "3. kvartal", "4. kvartal"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE 'den' d. MMMM y", "d. MMM y", "dd/MM/y", "dd/MM/yy"], TIMEFORMATS:["HH.mm.ss zzzz", "HH.mm.ss z", "HH.mm.ss", "HH.mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_de = {ERAS:["v. Chr.", "n. Chr."], ERANAMES:["v. Chr.", "n. Chr."], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januar", "Februar", "M\u00e4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], STANDALONEMONTHS:["Januar", "Februar", "M\u00e4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], SHORTMONTHS:["Jan.", "Feb.", "M\u00e4r.", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."], STANDALONESHORTMONTHS:["Jan", "Feb", "M\u00e4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], WEEKDAYS:["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], STANDALONEWEEKDAYS:["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], SHORTWEEKDAYS:["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], STANDALONESHORTWEEKDAYS:["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], NARROWWEEKDAYS:["S", "M", "D", "M", "D", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "D", "M", "D", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1. Quartal", "2. Quartal", "3. Quartal", "4. Quartal"], AMPMS:["vorm.", "nachm."], DATEFORMATS:["EEEE, d. MMMM y", "d. MMMM y", "dd.MM.y", "dd.MM.yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_de_AT = {ERAS:["v. Chr.", "n. Chr."], ERANAMES:["v. Chr.", "n. Chr."], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["J\u00e4nner", "Februar", "M\u00e4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], STANDALONEMONTHS:["Januar", "Februar", "M\u00e4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], SHORTMONTHS:["J\u00e4n", "Feb.", "M\u00e4r.", "Apr.", "Mai", "Juni", "Juli", "Aug.", "Sep.", "Okt.", "Nov.", "Dez."], STANDALONESHORTMONTHS:["J\u00e4n", "Feb", "M\u00e4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], WEEKDAYS:["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], STANDALONEWEEKDAYS:["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], SHORTWEEKDAYS:["So.", "Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa."], STANDALONESHORTWEEKDAYS:["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], NARROWWEEKDAYS:["S", "M", "D", "M", "D", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "D", "M", "D", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1. Quartal", "2. Quartal", "3. Quartal", "4. Quartal"], AMPMS:["vorm.", "nachm."], DATEFORMATS:["EEEE, dd. MMMM y", "dd. MMMM y", "dd.MM.y", "dd.MM.yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_de_CH = goog.i18n.DateTimeSymbols_de; goog.i18n.DateTimeSymbols_el = {ERAS:["\u03c0.\u03a7.", "\u03bc.\u03a7."], ERANAMES:["\u03c0.\u03a7.", "\u03bc.\u03a7."], NARROWMONTHS:["\u0399", "\u03a6", "\u039c", "\u0391", "\u039c", "\u0399", "\u0399", "\u0391", "\u03a3", "\u039f", "\u039d", "\u0394"], STANDALONENARROWMONTHS:["\u0399", "\u03a6", "\u039c", "\u0391", "\u039c", "\u0399", "\u0399", "\u0391", "\u03a3", "\u039f", "\u039d", "\u0394"], MONTHS:["\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5", "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5", "\u039c\u03b1\u0390\u03bf\u03c5", "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5", "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5", "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5", "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5"], STANDALONEMONTHS:["\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2", "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2", "\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2", "\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2", "\u039c\u03ac\u03b9\u03bf\u03c2", "\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2", "\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2", "\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2", "\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2", "\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2", "\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2", "\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2"], SHORTMONTHS:["\u0399\u03b1\u03bd", "\u03a6\u03b5\u03b2", "\u039c\u03b1\u03c1", "\u0391\u03c0\u03c1", "\u039c\u03b1\u03ca", "\u0399\u03bf\u03c5\u03bd", "\u0399\u03bf\u03c5\u03bb", "\u0391\u03c5\u03b3", "\u03a3\u03b5\u03c0", "\u039f\u03ba\u03c4", "\u039d\u03bf\u03b5", "\u0394\u03b5\u03ba"], STANDALONESHORTMONTHS:["\u0399\u03b1\u03bd", "\u03a6\u03b5\u03b2", "\u039c\u03ac\u03c1", "\u0391\u03c0\u03c1", "\u039c\u03ac\u03b9", "\u0399\u03bf\u03cd\u03bd", "\u0399\u03bf\u03cd\u03bb", "\u0391\u03cd\u03b3", "\u03a3\u03b5\u03c0", "\u039f\u03ba\u03c4", "\u039d\u03bf\u03ad", "\u0394\u03b5\u03ba"], WEEKDAYS:["\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae", "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1", "\u03a4\u03c1\u03af\u03c4\u03b7", "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7", "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7", "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae", "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"], STANDALONEWEEKDAYS:["\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae", "\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1", "\u03a4\u03c1\u03af\u03c4\u03b7", "\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7", "\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7", "\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae", "\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf"], SHORTWEEKDAYS:["\u039a\u03c5\u03c1", "\u0394\u03b5\u03c5", "\u03a4\u03c1\u03af", "\u03a4\u03b5\u03c4", "\u03a0\u03ad\u03bc", "\u03a0\u03b1\u03c1", "\u03a3\u03ac\u03b2"], STANDALONESHORTWEEKDAYS:["\u039a\u03c5\u03c1", "\u0394\u03b5\u03c5", "\u03a4\u03c1\u03af", "\u03a4\u03b5\u03c4", "\u03a0\u03ad\u03bc", "\u03a0\u03b1\u03c1", "\u03a3\u03ac\u03b2"], NARROWWEEKDAYS:["\u039a", "\u0394", "\u03a4", "\u03a4", "\u03a0", "\u03a0", "\u03a3"], STANDALONENARROWWEEKDAYS:["\u039a", "\u0394", "\u03a4", "\u03a4", "\u03a0", "\u03a0", "\u03a3"], SHORTQUARTERS:["\u03a41", "\u03a42", "\u03a43", "\u03a44"], QUARTERS:["1\u03bf \u03c4\u03c1\u03af\u03bc\u03b7\u03bd\u03bf", "2\u03bf \u03c4\u03c1\u03af\u03bc\u03b7\u03bd\u03bf", "3\u03bf \u03c4\u03c1\u03af\u03bc\u03b7\u03bd\u03bf", "4\u03bf \u03c4\u03c1\u03af\u03bc\u03b7\u03bd\u03bf"], AMPMS:["\u03c0.\u03bc.", "\u03bc.\u03bc."], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "d/M/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} - {0}", "{1} - {0}", "{1} - {0}", "{1} - {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_en = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, MMMM d, y", "MMMM d, y", "MMM d, y", "M/d/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_en_AU = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "dd/MM/y", "d/MM/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_en_GB = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["am", "pm"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "dd/MM/y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_en_IE = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["a.m.", "p.m."], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "dd/MM/y"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:2}; goog.i18n.DateTimeSymbols_en_IN = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "dd-MMM-y", "dd/MM/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_en_SG = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM, y", "d MMMM, y", "d MMM, y", "d/M/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_en_US = goog.i18n.DateTimeSymbols_en; goog.i18n.DateTimeSymbols_en_ZA = {ERAS:["BC", "AD"], ERANAMES:["Before Christ", "Anno Domini"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], STANDALONEMONTHS:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], WEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], STANDALONEWEEKDAYS:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], SHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], STANDALONESHORTWEEKDAYS:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE dd MMMM y", "dd MMMM y", "dd MMM y", "y/MM/dd"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} 'at' {0}", "{1} 'at' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_es = {ERAS:["a.C.", "d.C."], ERANAMES:["antes de Cristo", "anno D\u00f3mini"], NARROWMONTHS:["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], STANDALONEMONTHS:["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], SHORTMONTHS:["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], STANDALONESHORTMONTHS:["ene", "feb", "mar", "abr", "mayo", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], WEEKDAYS:["domingo", "lunes", "martes", "mi\u00e9rcoles", "jueves", "viernes", "s\u00e1bado"], STANDALONEWEEKDAYS:["domingo", "lunes", "martes", "mi\u00e9rcoles", "jueves", "viernes", "s\u00e1bado"], SHORTWEEKDAYS:["dom", "lun", "mar", "mi\u00e9", "jue", "vie", "s\u00e1b"], STANDALONESHORTWEEKDAYS:["dom", "lun", "mar", "mi\u00e9", "jue", "vie", "s\u00e1b"], NARROWWEEKDAYS:["D", "L", "M", "X", "J", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "X", "J", "V", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1er trimestre", "2\u00ba trimestre", "3er trimestre", "4\u00ba trimestre"], AMPMS:["a.m.", "p.m."], DATEFORMATS:["EEEE, d 'de' MMMM 'de' y", "d 'de' MMMM 'de' y", "dd/MM/y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_es_419 = {ERAS:["a.C.", "d.C."], ERANAMES:["antes de Cristo", "anno D\u00f3mini"], NARROWMONTHS:["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["E", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], STANDALONEMONTHS:["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"], SHORTMONTHS:["ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], STANDALONESHORTMONTHS:["ene", "feb", "mar", "abr", "mayo", "jun", "jul", "ago", "sep", "oct", "nov", "dic"], WEEKDAYS:["domingo", "lunes", "martes", "mi\u00e9rcoles", "jueves", "viernes", "s\u00e1bado"], STANDALONEWEEKDAYS:["domingo", "lunes", "martes", "mi\u00e9rcoles", "jueves", "viernes", "s\u00e1bado"], SHORTWEEKDAYS:["dom", "lun", "mar", "mi\u00e9", "jue", "vie", "s\u00e1b"], STANDALONESHORTWEEKDAYS:["dom", "lun", "mar", "mi\u00e9", "jue", "vie", "s\u00e1b"], NARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1er trimestre", "2\u00ba trimestre", "3er trimestre", "4\u00ba trimestre"], AMPMS:["a.m.", "p.m."], DATEFORMATS:["EEEE, d 'de' MMMM 'de' y", "d 'de' MMMM 'de' y", "dd/MM/y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_es_ES = goog.i18n.DateTimeSymbols_es; goog.i18n.DateTimeSymbols_et = {ERAS:["e.m.a.", "m.a.j."], ERANAMES:["enne meie aega", "meie aja j\u00e4rgi"], NARROWMONTHS:["J", "V", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "V", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["jaanuar", "veebruar", "m\u00e4rts", "aprill", "mai", "juuni", "juuli", "august", "september", "oktoober", "november", "detsember"], STANDALONEMONTHS:["jaanuar", "veebruar", "m\u00e4rts", "aprill", "mai", "juuni", "juuli", "august", "september", "oktoober", "november", "detsember"], SHORTMONTHS:["jaan", "veebr", "m\u00e4rts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets"], STANDALONESHORTMONTHS:["jaan", "veebr", "m\u00e4rts", "apr", "mai", "juuni", "juuli", "aug", "sept", "okt", "nov", "dets"], WEEKDAYS:["p\u00fchap\u00e4ev", "esmasp\u00e4ev", "teisip\u00e4ev", "kolmap\u00e4ev", "neljap\u00e4ev", "reede", "laup\u00e4ev"], STANDALONEWEEKDAYS:["p\u00fchap\u00e4ev", "esmasp\u00e4ev", "teisip\u00e4ev", "kolmap\u00e4ev", "neljap\u00e4ev", "reede", "laup\u00e4ev"], SHORTWEEKDAYS:["P", "E", "T", "K", "N", "R", "L"], STANDALONESHORTWEEKDAYS:["P", "E", "T", "K", "N", "R", "L"], NARROWWEEKDAYS:["P", "E", "T", "K", "N", "R", "L"], STANDALONENARROWWEEKDAYS:["P", "E", "T", "K", "N", "R", "L"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1. kvartal", "2. kvartal", "3. kvartal", "4. kvartal"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d. MMMM y", "d. MMMM y", "dd.MM.y", "dd.MM.yy"], TIMEFORMATS:["H:mm.ss zzzz", "H:mm.ss z", "H:mm.ss", "H:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_eu = {ERAS:["K.a.", "K.o."], ERANAMES:["K.a.", "K.o."], NARROWMONTHS:["U", "O", "M", "A", "M", "E", "U", "A", "I", "U", "A", "A"], STANDALONENARROWMONTHS:["U", "O", "M", "A", "M", "E", "U", "A", "I", "U", "A", "A"], MONTHS:["urtarrila", "otsaila", "martxoa", "apirila", "maiatza", "ekaina", "uztaila", "abuztua", "iraila", "urria", "azaroa", "abendua"], STANDALONEMONTHS:["urtarrila", "otsaila", "martxoa", "apirila", "maiatza", "ekaina", "uztaila", "abuztua", "iraila", "urria", "azaroa", "abendua"], SHORTMONTHS:["urt", "ots", "mar", "api", "mai", "eka", "uzt", "abu", "ira", "urr", "aza", "abe"], STANDALONESHORTMONTHS:["urt", "ots", "mar", "api", "mai", "eka", "uzt", "abu", "ira", "urr", "aza", "abe"], WEEKDAYS:["igandea", "astelehena", "asteartea", "asteazkena", "osteguna", "ostirala", "larunbata"], STANDALONEWEEKDAYS:["igandea", "astelehena", "asteartea", "asteazkena", "osteguna", "ostirala", "larunbata"], SHORTWEEKDAYS:["ig", "al", "as", "az", "og", "or", "lr"], STANDALONESHORTWEEKDAYS:["ig", "al", "as", "az", "og", "or", "lr"], NARROWWEEKDAYS:["I", "M", "A", "A", "A", "O", "I"], STANDALONENARROWWEEKDAYS:["I", "M", "A", "L", "A", "O", "I"], SHORTQUARTERS:["1Hh", "2Hh", "3Hh", "4Hh"], QUARTERS:["1. hiruhilekoa", "2. hiruhilekoa", "3. hiruhilekoa", "4. hiruhilekoa"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, y MMMM dd", "y MMMM d", "y MMM d", "y-MM-dd"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_fa = {ZERODIGIT:1776, ERAS:["\u0642.\u0645.", "\u0645."], ERANAMES:["\u0642\u0628\u0644 \u0627\u0632 \u0645\u06cc\u0644\u0627\u062f", "\u0645\u06cc\u0644\u0627\u062f\u06cc"], NARROWMONTHS:["\u0698", "\u0641", "\u0645", "\u0622", "\u0645", "\u0698", "\u0698", "\u0627", "\u0633", "\u0627", "\u0646", "\u062f"], STANDALONENARROWMONTHS:["\u0698", "\u0641", "\u0645", "\u0622", "\u0645", "\u0698", "\u0698", "\u0627", "\u0633", "\u0627", "\u0646", "\u062f"], MONTHS:["\u0698\u0627\u0646\u0648\u06cc\u0647\u0654", "\u0641\u0648\u0631\u06cc\u0647\u0654", "\u0645\u0627\u0631\u0633", "\u0622\u0648\u0631\u06cc\u0644", "\u0645\u0647\u0654", "\u0698\u0648\u0626\u0646", "\u0698\u0648\u0626\u06cc\u0647\u0654", "\u0627\u0648\u062a", "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0628\u0631", "\u0646\u0648\u0627\u0645\u0628\u0631", "\u062f\u0633\u0627\u0645\u0628\u0631"], STANDALONEMONTHS:["\u0698\u0627\u0646\u0648\u06cc\u0647", "\u0641\u0648\u0631\u06cc\u0647", "\u0645\u0627\u0631\u0633", "\u0622\u0648\u0631\u06cc\u0644", "\u0645\u0647", "\u0698\u0648\u0626\u0646", "\u0698\u0648\u0626\u06cc\u0647", "\u0627\u0648\u062a", "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0628\u0631", "\u0646\u0648\u0627\u0645\u0628\u0631", "\u062f\u0633\u0627\u0645\u0628\u0631"], SHORTMONTHS:["\u0698\u0627\u0646\u0648\u06cc\u0647\u0654", "\u0641\u0648\u0631\u06cc\u0647\u0654", "\u0645\u0627\u0631\u0633", "\u0622\u0648\u0631\u06cc\u0644", "\u0645\u0647\u0654", "\u0698\u0648\u0626\u0646", "\u0698\u0648\u0626\u06cc\u0647\u0654", "\u0627\u0648\u062a", "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0628\u0631", "\u0646\u0648\u0627\u0645\u0628\u0631", "\u062f\u0633\u0627\u0645\u0628\u0631"], STANDALONESHORTMONTHS:["\u0698\u0627\u0646\u0648\u06cc\u0647", "\u0641\u0648\u0631\u06cc\u0647", "\u0645\u0627\u0631\u0633", "\u0622\u0648\u0631\u06cc\u0644", "\u0645\u0647", "\u0698\u0648\u0626\u0646", "\u0698\u0648\u0626\u06cc\u0647", "\u0627\u0648\u062a", "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0628\u0631", "\u0646\u0648\u0627\u0645\u0628\u0631", "\u062f\u0633\u0627\u0645\u0628\u0631"], WEEKDAYS:["\u06cc\u06a9\u0634\u0646\u0628\u0647", "\u062f\u0648\u0634\u0646\u0628\u0647", "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", "\u062c\u0645\u0639\u0647", "\u0634\u0646\u0628\u0647"], STANDALONEWEEKDAYS:["\u06cc\u06a9\u0634\u0646\u0628\u0647", "\u062f\u0648\u0634\u0646\u0628\u0647", "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", "\u062c\u0645\u0639\u0647", "\u0634\u0646\u0628\u0647"], SHORTWEEKDAYS:["\u06cc\u06a9\u0634\u0646\u0628\u0647", "\u062f\u0648\u0634\u0646\u0628\u0647", "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", "\u062c\u0645\u0639\u0647", "\u0634\u0646\u0628\u0647"], STANDALONESHORTWEEKDAYS:["\u06cc\u06a9\u0634\u0646\u0628\u0647", "\u062f\u0648\u0634\u0646\u0628\u0647", "\u0633\u0647\u200c\u0634\u0646\u0628\u0647", "\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647", "\u067e\u0646\u062c\u0634\u0646\u0628\u0647", "\u062c\u0645\u0639\u0647", "\u0634\u0646\u0628\u0647"], NARROWWEEKDAYS:["\u06cc", "\u062f", "\u0633", "\u0686", "\u067e", "\u062c", "\u0634"], STANDALONENARROWWEEKDAYS:["\u06cc", "\u062f", "\u0633", "\u0686", "\u067e", "\u062c", "\u0634"], SHORTQUARTERS:["\u0633\u200c\u0645\u06f1", "\u0633\u200c\u0645\u06f2", "\u0633\u200c\u0645\u06f3", "\u0633\u200c\u0645\u06f4"], QUARTERS:["\u0633\u0647\u200c\u0645\u0627\u0647\u0647\u0654 \u0627\u0648\u0644", "\u0633\u0647\u200c\u0645\u0627\u0647\u0647\u0654 \u062f\u0648\u0645", "\u0633\u0647\u200c\u0645\u0627\u0647\u0647\u0654 \u0633\u0648\u0645", "\u0633\u0647\u200c\u0645\u0627\u0647\u0647\u0654 \u0686\u0647\u0627\u0631\u0645"], AMPMS:["\u0642\u0628\u0644\u200c\u0627\u0632\u0638\u0647\u0631", "\u0628\u0639\u062f\u0627\u0632\u0638\u0647\u0631"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "y/M/d"], TIMEFORMATS:["H:mm:ss (zzzz)", "H:mm:ss (z)", "H:mm:ss", "H:mm"], DATETIMEFORMATS:["{1}\u060c \u0633\u0627\u0639\u062a {0}", "{1}\u060c \u0633\u0627\u0639\u062a {0}", "{1}\u060c\u200f {0}", "{1}\u060c\u200f {0}"], FIRSTDAYOFWEEK:5, WEEKENDRANGE:[3, 4], FIRSTWEEKCUTOFFDAY:4}; goog.i18n.DateTimeSymbols_fi = {ERAS:["eKr.", "jKr."], ERANAMES:["ennen Kristuksen syntym\u00e4\u00e4", "j\u00e4lkeen Kristuksen syntym\u00e4n"], NARROWMONTHS:["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], STANDALONENARROWMONTHS:["T", "H", "M", "H", "T", "K", "H", "E", "S", "L", "M", "J"], MONTHS:["tammikuuta", "helmikuuta", "maaliskuuta", "huhtikuuta", "toukokuuta", "kes\u00e4kuuta", "hein\u00e4kuuta", "elokuuta", "syyskuuta", "lokakuuta", "marraskuuta", "joulukuuta"], STANDALONEMONTHS:["tammikuu", "helmikuu", "maaliskuu", "huhtikuu", "toukokuu", "kes\u00e4kuu", "hein\u00e4kuu", "elokuu", "syyskuu", "lokakuu", "marraskuu", "joulukuu"], SHORTMONTHS:["tammikuuta", "helmikuuta", "maaliskuuta", "huhtikuuta", "toukokuuta", "kes\u00e4kuuta", "hein\u00e4kuuta", "elokuuta", "syyskuuta", "lokakuuta", "marraskuuta", "joulukuuta"], STANDALONESHORTMONTHS:["tammi", "helmi", "maalis", "huhti", "touko", "kes\u00e4", "hein\u00e4", "elo", "syys", "loka", "marras", "joulu"], WEEKDAYS:["sunnuntaina", "maanantaina", "tiistaina", "keskiviikkona", "torstaina", "perjantaina", "lauantaina"], STANDALONEWEEKDAYS:["sunnuntai", "maanantai", "tiistai", "keskiviikko", "torstai", "perjantai", "lauantai"], SHORTWEEKDAYS:["su", "ma", "ti", "ke", "to", "pe", "la"], STANDALONESHORTWEEKDAYS:["su", "ma", "ti", "ke", "to", "pe", "la"], NARROWWEEKDAYS:["S", "M", "T", "K", "T", "P", "L"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "K", "T", "P", "L"], SHORTQUARTERS:["1. nelj.", "2. nelj.", "3. nelj.", "4. nelj."], QUARTERS:["1. nelj\u00e4nnes", "2. nelj\u00e4nnes", "3. nelj\u00e4nnes", "4. nelj\u00e4nnes"], AMPMS:["ap.", "ip."], DATEFORMATS:["cccc d. MMMM y", "d. MMMM y", "d.M.y", "d.M.y"], TIMEFORMATS:["H.mm.ss zzzz", "H.mm.ss z", "H.mm.ss", "H.mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_fil = {ERAS:["BC", "AD"], ERANAMES:["BC", "AD"], NARROWMONTHS:["E", "P", "M", "A", "M", "H", "H", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["E", "P", "M", "A", "M", "H", "H", "A", "S", "O", "N", "D"], MONTHS:["Enero", "Pebrero", "Marso", "Abril", "Mayo", "Hunyo", "Hulyo", "Agosto", "Setyembre", "Oktubre", "Nobyembre", "Disyembre"], STANDALONEMONTHS:["Enero", "Pebrero", "Marso", "Abril", "Mayo", "Hunyo", "Hulyo", "Agosto", "Setyembre", "Oktubre", "Nobyembre", "Disyembre"], SHORTMONTHS:["Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis"], STANDALONESHORTMONTHS:["Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis"], WEEKDAYS:["Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado"], STANDALONEWEEKDAYS:["Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado"], SHORTWEEKDAYS:["Lin", "Lun", "Mar", "Mye", "Huw", "Bye", "Sab"], STANDALONESHORTWEEKDAYS:["Lin", "Lun", "Mar", "Miy", "Huw", "Biy", "Sab"], NARROWWEEKDAYS:["L", "L", "M", "M", "H", "B", "S"], STANDALONENARROWWEEKDAYS:["L", "L", "M", "M", "H", "B", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["ika-1 sangkapat", "ika-2 sangkapat", "ika-3 quarter", "ika-4 na quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, MMMM dd y", "MMMM d, y", "MMM d, y", "M/d/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_fr = {ERAS:["av. J.-C.", "ap. J.-C."], ERANAMES:["avant J\u00e9sus-Christ", "apr\u00e8s J\u00e9sus-Christ"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["janvier", "f\u00e9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\u00fbt", "septembre", "octobre", "novembre", "d\u00e9cembre"], STANDALONEMONTHS:["janvier", "f\u00e9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\u00fbt", "septembre", "octobre", "novembre", "d\u00e9cembre"], SHORTMONTHS:["janv.", "f\u00e9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\u00fbt", "sept.", "oct.", "nov.", "d\u00e9c."], STANDALONESHORTMONTHS:["janv.", "f\u00e9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\u00fbt", "sept.", "oct.", "nov.", "d\u00e9c."], WEEKDAYS:["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], STANDALONEWEEKDAYS:["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], SHORTWEEKDAYS:["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], STANDALONESHORTWEEKDAYS:["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], NARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1er trimestre", "2e trimestre", "3e trimestre", "4e trimestre"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "dd/MM/y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_fr_CA = {ERAS:["av. J.-C.", "ap. J.-C."], ERANAMES:["avant J\u00e9sus-Christ", "apr\u00e8s J\u00e9sus-Christ"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["janvier", "f\u00e9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\u00fbt", "septembre", "octobre", "novembre", "d\u00e9cembre"], STANDALONEMONTHS:["janvier", "f\u00e9vrier", "mars", "avril", "mai", "juin", "juillet", "ao\u00fbt", "septembre", "octobre", "novembre", "d\u00e9cembre"], SHORTMONTHS:["janv.", "f\u00e9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\u00fbt", "sept.", "oct.", "nov.", "d\u00e9c."], STANDALONESHORTMONTHS:["janv.", "f\u00e9vr.", "mars", "avr.", "mai", "juin", "juil.", "ao\u00fbt", "sept.", "oct.", "nov.", "d\u00e9c."], WEEKDAYS:["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], STANDALONEWEEKDAYS:["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"], SHORTWEEKDAYS:["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], STANDALONESHORTWEEKDAYS:["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], NARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1er trimestre", "2e trimestre", "3e trimestre", "4e trimestre"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "y-MM-dd", "yy-MM-dd"], TIMEFORMATS:["HH 'h' mm 'min' ss 's' zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_gl = {ERAS:["a.C.", "d.C."], ERANAMES:["antes de Cristo", "despois de Cristo"], NARROWMONTHS:["X", "F", "M", "A", "M", "X", "X", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["X", "F", "M", "A", "M", "X", "X", "A", "S", "O", "N", "D"], MONTHS:["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xu\u00f1o", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"], STANDALONEMONTHS:["Xaneiro", "Febreiro", "Marzo", "Abril", "Maio", "Xu\u00f1o", "Xullo", "Agosto", "Setembro", "Outubro", "Novembro", "Decembro"], SHORTMONTHS:["Xan", "Feb", "Mar", "Abr", "Mai", "Xu\u00f1", "Xul", "Ago", "Set", "Out", "Nov", "Dec"], STANDALONESHORTMONTHS:["Xan", "Feb", "Mar", "Abr", "Mai", "Xu\u00f1", "Xul", "Ago", "Set", "Out", "Nov", "Dec"], WEEKDAYS:["Domingo", "Luns", "Martes", "M\u00e9rcores", "Xoves", "Venres", "S\u00e1bado"], STANDALONEWEEKDAYS:["Domingo", "Luns", "Martes", "M\u00e9rcores", "Xoves", "Venres", "S\u00e1bado"], SHORTWEEKDAYS:["Dom", "Lun", "Mar", "M\u00e9r", "Xov", "Ven", "S\u00e1b"], STANDALONESHORTWEEKDAYS:["Dom", "Lun", "Mar", "M\u00e9r", "Xov", "Ven", "S\u00e1b"], NARROWWEEKDAYS:["D", "L", "M", "M", "X", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "M", "X", "V", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1o trimestre", "2o trimestre", "3o trimestre", "4o trimestre"], AMPMS:["a.m.", "p.m."], DATEFORMATS:["EEEE dd MMMM y", "dd MMMM y", "d MMM, y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_gsw = {ERAS:["v. Chr.", "n. Chr."], ERANAMES:["v. Chr.", "n. Chr."], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januar", "Februar", "M\u00e4rz", "April", "Mai", "Juni", "Juli", "Auguscht", "Sept\u00e4mber", "Oktoober", "Nov\u00e4mber", "Dez\u00e4mber"], STANDALONEMONTHS:["Januar", "Februar", "M\u00e4rz", "April", "Mai", "Juni", "Juli", "Auguscht", "Sept\u00e4mber", "Oktoober", "Nov\u00e4mber", "Dez\u00e4mber"], SHORTMONTHS:["Jan", "Feb", "M\u00e4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], STANDALONESHORTMONTHS:["Jan", "Feb", "M\u00e4r", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], WEEKDAYS:["Sunntig", "M\u00e4\u00e4ntig", "Ziischtig", "Mittwuch", "Dunschtig", "Friitig", "Samschtig"], STANDALONEWEEKDAYS:["Sunntig", "M\u00e4\u00e4ntig", "Ziischtig", "Mittwuch", "Dunschtig", "Friitig", "Samschtig"], SHORTWEEKDAYS:["Su.", "M\u00e4.", "Zi.", "Mi.", "Du.", "Fr.", "Sa."], STANDALONESHORTWEEKDAYS:["Su.", "M\u00e4.", "Zi.", "Mi.", "Du.", "Fr.", "Sa."], NARROWWEEKDAYS:["S", "M", "D", "M", "D", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "D", "M", "D", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1. Quartal", "2. Quartal", "3. Quartal", "4. Quartal"], AMPMS:["vorm.", "nam."], DATEFORMATS:["EEEE, d. MMMM y", "d. MMMM y", "dd.MM.y", "dd.MM.yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_gu = {ERAS:["\u0a88\u0ab2\u0ac1\u0aa8\u0abe \u0a9c\u0aa8\u0acd\u0aae \u0aaa\u0ab9\u0ac7\u0ab8\u0abe\u0a82", "\u0a87\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8"], ERANAMES:["\u0a88\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8 \u0aaa\u0ac2\u0ab0\u0acd\u0ab5\u0ac7", "\u0a87\u0ab8\u0ab5\u0ac0\u0ab8\u0aa8"], NARROWMONTHS:["\u0a9c\u0abe", "\u0aab\u0ac7", "\u0aae\u0abe", "\u0a8f", "\u0aae\u0ac7", "\u0a9c\u0ac2", "\u0a9c\u0ac1", "\u0a91", "\u0ab8", "\u0a91", "\u0aa8", "\u0aa1\u0abf"], STANDALONENARROWMONTHS:["\u0a9c\u0abe", "\u0aab\u0ac7", "\u0aae\u0abe", "\u0a8f", "\u0aae\u0ac7", "\u0a9c\u0ac2", "\u0a9c\u0ac1", "\u0a91", "\u0ab8", "\u0a91", "\u0aa8", "\u0aa1\u0abf"], MONTHS:["\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0", "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0", "\u0aae\u0abe\u0ab0\u0acd\u0a9a", "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", "\u0aae\u0ac7", "\u0a9c\u0ac2\u0aa8", "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", "\u0a91\u0a97\u0ab8\u0acd\u0a9f", "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0", "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0", "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0", "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"], STANDALONEMONTHS:["\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0", "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0", "\u0aae\u0abe\u0ab0\u0acd\u0a9a", "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", "\u0aae\u0ac7", "\u0a9c\u0ac2\u0aa8", "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", "\u0a91\u0a97\u0ab8\u0acd\u0a9f", "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0", "\u0a91\u0a95\u0acd\u0a9f\u0acb\u0aac\u0ab0", "\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0", "\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0"], SHORTMONTHS:["\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1", "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1", "\u0aae\u0abe\u0ab0\u0acd\u0a9a", "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", "\u0aae\u0ac7", "\u0a9c\u0ac2\u0aa8", "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", "\u0a91\u0a97\u0ab8\u0acd\u0a9f", "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7", "\u0a91\u0a95\u0acd\u0a9f\u0acb", "\u0aa8\u0ab5\u0ac7", "\u0aa1\u0abf\u0ab8\u0ac7"], STANDALONESHORTMONTHS:["\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1", "\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1", "\u0aae\u0abe\u0ab0\u0acd\u0a9a", "\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2", "\u0aae\u0ac7", "\u0a9c\u0ac2\u0aa8", "\u0a9c\u0ac1\u0ab2\u0abe\u0a88", "\u0a91\u0a97", "\u0ab8\u0aaa\u0acd\u0a9f\u0ac7", "\u0a91\u0a95\u0acd\u0a9f\u0acb", "\u0aa8\u0ab5\u0ac7", "\u0aa1\u0abf\u0ab8\u0ac7"], WEEKDAYS:["\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0", "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0", "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0", "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0", "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0", "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0", "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"], STANDALONEWEEKDAYS:["\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0", "\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0", "\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0", "\u0aac\u0ac1\u0aa7\u0ab5\u0abe\u0ab0", "\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0", "\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0", "\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0"], SHORTWEEKDAYS:["\u0ab0\u0ab5\u0abf", "\u0ab8\u0acb\u0aae", "\u0aae\u0a82\u0a97\u0ab3", "\u0aac\u0ac1\u0aa7", "\u0a97\u0ac1\u0ab0\u0ac1", "\u0ab6\u0ac1\u0a95\u0acd\u0ab0", "\u0ab6\u0aa8\u0abf"], STANDALONESHORTWEEKDAYS:["\u0ab0\u0ab5\u0abf", "\u0ab8\u0acb\u0aae", "\u0aae\u0a82\u0a97\u0ab3", "\u0aac\u0ac1\u0aa7", "\u0a97\u0ac1\u0ab0\u0ac1", "\u0ab6\u0ac1\u0a95\u0acd\u0ab0", "\u0ab6\u0aa8\u0abf"], NARROWWEEKDAYS:["\u0ab0", "\u0ab8\u0acb", "\u0aae\u0a82", "\u0aac\u0ac1", "\u0a97\u0ac1", "\u0ab6\u0ac1", "\u0ab6"], STANDALONENARROWWEEKDAYS:["\u0ab0", "\u0ab8\u0acb", "\u0aae\u0a82", "\u0aac\u0ac1", "\u0a97\u0ac1", "\u0ab6\u0ac1", "\u0ab6"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["\u0aaa\u0ab9\u0ac7\u0ab2\u0acb \u0ab9\u0a82\u0aa4", "\u0aac\u0ac0\u0a9c\u0acb \u0ab9\u0a82\u0aa4", "\u0aa4\u0acd\u0ab0\u0ac0\u0a9c\u0acb \u0ab9\u0a82\u0aa4", "\u0a9a\u0acb\u0aa5\u0acb \u0ab9\u0a82\u0aa4"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM, y", "d MMMM, y", "d MMM, y", "d-MM-yy"], TIMEFORMATS:["hh:mm:ss a zzzz", "hh:mm:ss a z", "hh:mm:ss a", "hh:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_haw = {ERAS:["BCE", "CE"], ERANAMES:["BCE", "CE"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["Ianuali", "Pepeluali", "Malaki", "\u02bbApelila", "Mei", "Iune", "Iulai", "\u02bbAukake", "Kepakemapa", "\u02bbOkakopa", "Nowemapa", "Kekemapa"], STANDALONEMONTHS:["Ianuali", "Pepeluali", "Malaki", "\u02bbApelila", "Mei", "Iune", "Iulai", "\u02bbAukake", "Kepakemapa", "\u02bbOkakopa", "Nowemapa", "Kekemapa"], SHORTMONTHS:["Ian.", "Pep.", "Mal.", "\u02bbAp.", "Mei", "Iun.", "Iul.", "\u02bbAu.", "Kep.", "\u02bbOk.", "Now.", "Kek."], STANDALONESHORTMONTHS:["Ian.", "Pep.", "Mal.", "\u02bbAp.", "Mei", "Iun.", "Iul.", "\u02bbAu.", "Kep.", "\u02bbOk.", "Now.", "Kek."], WEEKDAYS:["L\u0101pule", "Po\u02bbakahi", "Po\u02bbalua", "Po\u02bbakolu", "Po\u02bbah\u0101", "Po\u02bbalima", "Po\u02bbaono"], STANDALONEWEEKDAYS:["L\u0101pule", "Po\u02bbakahi", "Po\u02bbalua", "Po\u02bbakolu", "Po\u02bbah\u0101", "Po\u02bbalima", "Po\u02bbaono"], SHORTWEEKDAYS:["LP", "P1", "P2", "P3", "P4", "P5", "P6"], STANDALONESHORTWEEKDAYS:["LP", "P1", "P2", "P3", "P4", "P5", "P6"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Q1", "Q2", "Q3", "Q4"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "d/M/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_he = {ERAS:["\u05dc\u05e4\u05e0\u05d4\u05f4\u05e1", "\u05dc\u05e1\u05d4\u05f4\u05e0"], ERANAMES:["\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e1\u05e4\u05d9\u05e8\u05d4", "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["\u05d9\u05e0\u05d5\u05d0\u05e8", "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8\u05d9\u05dc", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0\u05d9", "\u05d9\u05d5\u05dc\u05d9", "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", "\u05d3\u05e6\u05de\u05d1\u05e8"], STANDALONEMONTHS:["\u05d9\u05e0\u05d5\u05d0\u05e8", "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8\u05d9\u05dc", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0\u05d9", "\u05d9\u05d5\u05dc\u05d9", "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", "\u05d3\u05e6\u05de\u05d1\u05e8"], SHORTMONTHS:["\u05d9\u05e0\u05d5", "\u05e4\u05d1\u05e8", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0", "\u05d9\u05d5\u05dc", "\u05d0\u05d5\u05d2", "\u05e1\u05e4\u05d8", "\u05d0\u05d5\u05e7", "\u05e0\u05d5\u05d1", "\u05d3\u05e6\u05de"], STANDALONESHORTMONTHS:["\u05d9\u05e0\u05d5\u05f3", "\u05e4\u05d1\u05e8\u05f3", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8\u05f3", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0\u05f3", "\u05d9\u05d5\u05dc\u05f3", "\u05d0\u05d5\u05d2\u05f3", "\u05e1\u05e4\u05d8\u05f3", "\u05d0\u05d5\u05e7\u05f3", "\u05e0\u05d5\u05d1\u05f3", "\u05d3\u05e6\u05de\u05f3"], WEEKDAYS:["\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"], STANDALONEWEEKDAYS:["\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"], SHORTWEEKDAYS:["\u05d9\u05d5\u05dd \u05d0\u05f3", "\u05d9\u05d5\u05dd \u05d1\u05f3", "\u05d9\u05d5\u05dd \u05d2\u05f3", "\u05d9\u05d5\u05dd \u05d3\u05f3", "\u05d9\u05d5\u05dd \u05d4\u05f3", "\u05d9\u05d5\u05dd \u05d5\u05f3", "\u05e9\u05d1\u05ea"], STANDALONESHORTWEEKDAYS:["\u05d9\u05d5\u05dd \u05d0\u05f3", "\u05d9\u05d5\u05dd \u05d1\u05f3", "\u05d9\u05d5\u05dd \u05d2\u05f3", "\u05d9\u05d5\u05dd \u05d3\u05f3", "\u05d9\u05d5\u05dd \u05d4\u05f3", "\u05d9\u05d5\u05dd \u05d5\u05f3", "\u05e9\u05d1\u05ea"], NARROWWEEKDAYS:["\u05d0'", "\u05d1'", "\u05d2'", "\u05d3'", "\u05d4'", "\u05d5\u05f3", "\u05e9\u05f3"], STANDALONENARROWWEEKDAYS:["\u05d0\u05f3", "\u05d1\u05f3", "\u05d2\u05f3", "\u05d3\u05f3", "\u05d4\u05f3", "\u05d5", "\u05e9"], SHORTQUARTERS:["\u05e8\u05d1\u05e2\u05d5\u05df 1", "\u05e8\u05d1\u05e2\u05d5\u05df 2", "\u05e8\u05d1\u05e2\u05d5\u05df 3", "\u05e8\u05d1\u05e2\u05d5\u05df 4"], QUARTERS:["\u05e8\u05d1\u05e2\u05d5\u05df 1", "\u05e8\u05d1\u05e2\u05d5\u05df 2", "\u05e8\u05d1\u05e2\u05d5\u05df 3", "\u05e8\u05d1\u05e2\u05d5\u05df 4"], AMPMS:["\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6", "\u05d0\u05d7\u05d4\u05f4\u05e6"], DATEFORMATS:["EEEE, d \u05d1MMMM y", "d \u05d1MMMM y", "d \u05d1MMM y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[4, 5], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_hi = {ERAS:["\u0908\u0938\u093e\u092a\u0942\u0930\u094d\u0935", "\u0938\u0928"], ERANAMES:["\u0908\u0938\u093e\u092a\u0942\u0930\u094d\u0935", "\u0938\u0928"], NARROWMONTHS:["\u091c", "\u092b\u093c", "\u092e\u093e", "\u0905", "\u092e", "\u091c\u0942", "\u091c\u0941", "\u0905", "\u0938\u093f", "\u0905", "\u0928", "\u0926\u093f"], STANDALONENARROWMONTHS:["\u091c", "\u092b\u093c", "\u092e\u093e", "\u0905", "\u092e", "\u091c\u0942", "\u091c\u0941", "\u0905", "\u0938\u093f", "\u0905", "\u0928", "\u0926\u093f"], MONTHS:["\u091c\u0928\u0935\u0930\u0940", "\u092b\u0930\u0935\u0930\u0940", "\u092e\u093e\u0930\u094d\u091a", "\u0905\u092a\u094d\u0930\u0948\u0932", "\u092e\u0908", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u093e\u0908", "\u0905\u0917\u0938\u094d\u0924", "\u0938\u093f\u0924\u092e\u094d\u092c\u0930", "\u0905\u0915\u094d\u0924\u0942\u092c\u0930", "\u0928\u0935\u092e\u094d\u092c\u0930", "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"], STANDALONEMONTHS:["\u091c\u0928\u0935\u0930\u0940", "\u092b\u0930\u0935\u0930\u0940", "\u092e\u093e\u0930\u094d\u091a", "\u0905\u092a\u094d\u0930\u0948\u0932", "\u092e\u0908", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u093e\u0908", "\u0905\u0917\u0938\u094d\u0924", "\u0938\u093f\u0924\u092e\u094d\u092c\u0930", "\u0905\u0915\u094d\u0924\u0942\u092c\u0930", "\u0928\u0935\u092e\u094d\u092c\u0930", "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"], SHORTMONTHS:["\u091c\u0928\u0935\u0930\u0940", "\u092b\u0930\u0935\u0930\u0940", "\u092e\u093e\u0930\u094d\u091a", "\u0905\u092a\u094d\u0930\u0948\u0932", "\u092e\u0908", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u093e\u0908", "\u0905\u0917\u0938\u094d\u0924", "\u0938\u093f\u0924\u092e\u094d\u092c\u0930", "\u0905\u0915\u094d\u0924\u0942\u092c\u0930", "\u0928\u0935\u092e\u094d\u092c\u0930", "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"], STANDALONESHORTMONTHS:["\u091c\u0928\u0935\u0930\u0940", "\u092b\u0930\u0935\u0930\u0940", "\u092e\u093e\u0930\u094d\u091a", "\u0905\u092a\u094d\u0930\u0948\u0932", "\u092e\u0908", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u093e\u0908", "\u0905\u0917\u0938\u094d\u0924", "\u0938\u093f\u0924\u092e\u094d\u092c\u0930", "\u0905\u0915\u094d\u0924\u0942\u092c\u0930", "\u0928\u0935\u092e\u094d\u092c\u0930", "\u0926\u093f\u0938\u092e\u094d\u092c\u0930"], WEEKDAYS:["\u0930\u0935\u093f\u0935\u093e\u0930", "\u0938\u094b\u092e\u0935\u093e\u0930", "\u092e\u0902\u0917\u0932\u0935\u093e\u0930", "\u092c\u0941\u0927\u0935\u093e\u0930", "\u092c\u0943\u0939\u0938\u094d\u092a\u0924\u093f\u0935\u093e\u0930", "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", "\u0936\u0928\u093f\u0935\u093e\u0930"], STANDALONEWEEKDAYS:["\u0930\u0935\u093f\u0935\u093e\u0930", "\u0938\u094b\u092e\u0935\u093e\u0930", "\u092e\u0902\u0917\u0932\u0935\u093e\u0930", "\u092c\u0941\u0927\u0935\u093e\u0930", "\u092c\u0943\u0939\u0938\u094d\u092a\u0924\u093f\u0935\u093e\u0930", "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", "\u0936\u0928\u093f\u0935\u093e\u0930"], SHORTWEEKDAYS:["\u0930\u0935\u093f.", "\u0938\u094b\u092e.", "\u092e\u0902\u0917\u0932.", "\u092c\u0941\u0927.", "\u092c\u0943\u0939.", "\u0936\u0941\u0915\u094d\u0930.", "\u0936\u0928\u093f."], STANDALONESHORTWEEKDAYS:["\u0930\u0935\u093f.", "\u0938\u094b\u092e.", "\u092e\u0902\u0917\u0932.", "\u092c\u0941\u0927.", "\u092c\u0943\u0939.", "\u0936\u0941\u0915\u094d\u0930.", "\u0936\u0928\u093f."], NARROWWEEKDAYS:["\u0930", "\u0938\u094b", "\u092e\u0902", "\u092c\u0941", "\u0917\u0941", "\u0936\u0941", "\u0936"], STANDALONENARROWWEEKDAYS:["\u0930", "\u0938\u094b", "\u092e\u0902", "\u092c\u0941", "\u0917\u0941", "\u0936\u0941", "\u0936"], SHORTQUARTERS:["\u0924\u093f\u092e\u093e\u0939\u0940", "\u0926\u0942\u0938\u0930\u0940 \u0924\u093f\u092e\u093e\u0939\u0940", "\u0924\u0940\u0938\u0930\u0940 \u0924\u093f\u092e\u093e\u0939\u0940", "\u091a\u094c\u0925\u0940 \u0924\u093f\u092e\u093e\u0939\u0940"], QUARTERS:["\u0924\u093f\u092e\u093e\u0939\u0940", "\u0926\u0942\u0938\u0930\u0940 \u0924\u093f\u092e\u093e\u0939\u0940", "\u0924\u0940\u0938\u0930\u0940 \u0924\u093f\u092e\u093e\u0939\u0940", "\u091a\u094c\u0925\u0940 \u0924\u093f\u092e\u093e\u0939\u0940"], AMPMS:["am", "pm"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "dd-MM-y", "d-M-yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_hr = {ERAS:["p. n. e.", "A. D."], ERANAMES:["Prije Krista", "Poslije Krista"], NARROWMONTHS:["1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10.", "11.", "12."], STANDALONENARROWMONTHS:["1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10.", "11.", "12."], MONTHS:["sije\u010dnja", "velja\u010de", "o\u017eujka", "travnja", "svibnja", "lipnja", "srpnja", "kolovoza", "rujna", "listopada", "studenoga", "prosinca"], STANDALONEMONTHS:["sije\u010danj", "velja\u010da", "o\u017eujak", "travanj", "svibanj", "lipanj", "srpanj", "kolovoz", "rujan", "listopad", "studeni", "prosinac"], SHORTMONTHS:["sij", "velj", "o\u017eu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro"], STANDALONESHORTMONTHS:["sij", "velj", "o\u017eu", "tra", "svi", "lip", "srp", "kol", "ruj", "lis", "stu", "pro"], WEEKDAYS:["nedjelja", "ponedjeljak", "utorak", "srijeda", "\u010detvrtak", "petak", "subota"], STANDALONEWEEKDAYS:["nedjelja", "ponedjeljak", "utorak", "srijeda", "\u010detvrtak", "petak", "subota"], SHORTWEEKDAYS:["ned", "pon", "uto", "sri", "\u010det", "pet", "sub"], STANDALONESHORTWEEKDAYS:["ned", "pon", "uto", "sri", "\u010det", "pet", "sub"], NARROWWEEKDAYS:["N", "P", "U", "S", "\u010c", "P", "S"], STANDALONENARROWWEEKDAYS:["n", "p", "u", "s", "\u010d", "p", "s"], SHORTQUARTERS:["1kv", "2kv", "3kv", "4kv"], QUARTERS:["1. kvartal", "2. kvartal", "3. kvartal", "4. kvartal"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d. MMMM y.", "d. MMMM y.", "d. M. y.", "d.M.y."], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_hu = {ERAS:["i. e.", "i. sz."], ERANAMES:["id\u0151sz\u00e1m\u00edt\u00e1sunk el\u0151tt", "id\u0151sz\u00e1m\u00edt\u00e1sunk szerint"], NARROWMONTHS:["J", "F", "M", "\u00c1", "M", "J", "J", "\u00c1", "Sz", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "\u00c1", "M", "J", "J", "A", "Sz", "O", "N", "D"], MONTHS:["janu\u00e1r", "febru\u00e1r", "m\u00e1rcius", "\u00e1prilis", "m\u00e1jus", "j\u00fanius", "j\u00falius", "augusztus", "szeptember", "okt\u00f3ber", "november", "december"], STANDALONEMONTHS:["janu\u00e1r", "febru\u00e1r", "m\u00e1rcius", "\u00e1prilis", "m\u00e1jus", "j\u00fanius", "j\u00falius", "augusztus", "szeptember", "okt\u00f3ber", "november", "december"], SHORTMONTHS:["jan.", "febr.", "m\u00e1rc.", "\u00e1pr.", "m\u00e1j.", "j\u00fan.", "j\u00fal.", "aug.", "szept.", "okt.", "nov.", "dec."], STANDALONESHORTMONTHS:["jan.", "febr.", "m\u00e1rc.", "\u00e1pr.", "m\u00e1j.", "j\u00fan.", "j\u00fal.", "aug.", "szept.", "okt.", "nov.", "dec."], WEEKDAYS:["vas\u00e1rnap", "h\u00e9tf\u0151", "kedd", "szerda", "cs\u00fct\u00f6rt\u00f6k", "p\u00e9ntek", "szombat"], STANDALONEWEEKDAYS:["vas\u00e1rnap", "h\u00e9tf\u0151", "kedd", "szerda", "cs\u00fct\u00f6rt\u00f6k", "p\u00e9ntek", "szombat"], SHORTWEEKDAYS:["V", "H", "K", "Sze", "Cs", "P", "Szo"], STANDALONESHORTWEEKDAYS:["V", "H", "K", "Sze", "Cs", "P", "Szo"], NARROWWEEKDAYS:["V", "H", "K", "Sz", "Cs", "P", "Sz"], STANDALONENARROWWEEKDAYS:["V", "H", "K", "Sz", "Cs", "P", "Sz"], SHORTQUARTERS:["N1", "N2", "N3", "N4"], QUARTERS:["I. negyed\u00e9v", "II. negyed\u00e9v", "III. negyed\u00e9v", "IV. negyed\u00e9v"], AMPMS:["de.", "du."], DATEFORMATS:["y. MMMM d., EEEE", "y. MMMM d.", "y.MM.dd.", "y.MM.dd."], TIMEFORMATS:["H:mm:ss zzzz", "H:mm:ss z", "H:mm:ss", "H:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_id = {ERAS:["SM", "M"], ERANAMES:["SM", "M"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], STANDALONEMONTHS:["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"], WEEKDAYS:["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"], STANDALONEWEEKDAYS:["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"], SHORTWEEKDAYS:["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], STANDALONESHORTWEEKDAYS:["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], NARROWWEEKDAYS:["M", "S", "S", "R", "K", "J", "S"], STANDALONENARROWWEEKDAYS:["M", "S", "S", "R", "K", "J", "S"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["Kuartal ke-1", "Kuartal ke-2", "Kuartal ke-3", "Kuartal ke-4"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, dd MMMM y", "d MMMM y", "d MMM y", "dd/MM/yy"], TIMEFORMATS:["HH.mm.ss zzzz", "HH.mm.ss z", "HH.mm.ss", "HH.mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_in = {ERAS:["SM", "M"], ERANAMES:["SM", "M"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], STANDALONEMONTHS:["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], SHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"], WEEKDAYS:["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"], STANDALONEWEEKDAYS:["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"], SHORTWEEKDAYS:["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], STANDALONESHORTWEEKDAYS:["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], NARROWWEEKDAYS:["M", "S", "S", "R", "K", "J", "S"], STANDALONENARROWWEEKDAYS:["M", "S", "S", "R", "K", "J", "S"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["Kuartal ke-1", "Kuartal ke-2", "Kuartal ke-3", "Kuartal ke-4"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, dd MMMM y", "d MMMM y", "d MMM y", "dd/MM/yy"], TIMEFORMATS:["HH.mm.ss zzzz", "HH.mm.ss z", "HH.mm.ss", "HH.mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_is = {ERAS:["f.Kr.", "e.Kr."], ERANAMES:["fyrir Krist", "eftir Krist"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "\u00c1", "L", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "\u00c1", "S", "O", "N", "D"], MONTHS:["jan\u00faar", "febr\u00faar", "mars", "apr\u00edl", "ma\u00ed", "j\u00fan\u00ed", "j\u00fal\u00ed", "\u00e1g\u00fast", "september", "okt\u00f3ber", "n\u00f3vember", "desember"], STANDALONEMONTHS:["jan\u00faar", "febr\u00faar", "mars", "apr\u00edl", "ma\u00ed", "j\u00fan\u00ed", "j\u00fal\u00ed", "\u00e1g\u00fast", "september", "okt\u00f3ber", "n\u00f3vember", "desember"], SHORTMONTHS:["jan", "feb", "mar", "apr", "ma\u00ed", "j\u00fan", "j\u00fal", "\u00e1g\u00fa", "sep", "okt", "n\u00f3v", "des"], STANDALONESHORTMONTHS:["jan", "feb", "mar", "apr", "ma\u00ed", "j\u00fan", "j\u00fal", "\u00e1g\u00fa", "sep", "okt", "n\u00f3v", "des"], WEEKDAYS:["sunnudagur", "m\u00e1nudagur", "\u00feri\u00f0judagur", "mi\u00f0vikudagur", "fimmtudagur", "f\u00f6studagur", "laugardagur"], STANDALONEWEEKDAYS:["sunnudagur", "m\u00e1nudagur", "\u00feri\u00f0judagur", "mi\u00f0vikudagur", "fimmtudagur", "f\u00f6studagur", "laugardagur"], SHORTWEEKDAYS:["sun", "m\u00e1n", "\u00feri", "mi\u00f0", "fim", "f\u00f6s", "lau"], STANDALONESHORTWEEKDAYS:["sun", "m\u00e1n", "\u00feri", "mi\u00f0", "fim", "f\u00f6s", "lau"], NARROWWEEKDAYS:["S", "M", "\u00de", "M", "F", "F", "L"], STANDALONENARROWWEEKDAYS:["S", "M", "\u00fe", "M", "F", "F", "L"], SHORTQUARTERS:["F1", "F2", "F3", "F4"], QUARTERS:["1. fj\u00f3r\u00f0ungur", "2. fj\u00f3r\u00f0ungur", "3. fj\u00f3r\u00f0ungur", "4. fj\u00f3r\u00f0ungur"], AMPMS:["f.h.", "e.h."], DATEFORMATS:["EEEE, d. MMMM y", "d. MMMM y", "d.M.y", "d.M.y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_it = {ERAS:["aC", "dC"], ERANAMES:["a.C.", "d.C."], NARROWMONTHS:["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["G", "F", "M", "A", "M", "G", "L", "A", "S", "O", "N", "D"], MONTHS:["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"], STANDALONEMONTHS:["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"], SHORTMONTHS:["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], STANDALONESHORTMONTHS:["gen", "feb", "mar", "apr", "mag", "giu", "lug", "ago", "set", "ott", "nov", "dic"], WEEKDAYS:["domenica", "luned\u00ec", "marted\u00ec", "mercoled\u00ec", "gioved\u00ec", "venerd\u00ec", "sabato"], STANDALONEWEEKDAYS:["Domenica", "Luned\u00ec", "Marted\u00ec", "Mercoled\u00ec", "Gioved\u00ec", "Venerd\u00ec", "Sabato"], SHORTWEEKDAYS:["dom", "lun", "mar", "mer", "gio", "ven", "sab"], STANDALONESHORTWEEKDAYS:["dom", "lun", "mar", "mer", "gio", "ven", "sab"], NARROWWEEKDAYS:["D", "L", "M", "M", "G", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "M", "G", "V", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1o trimestre", "2o trimestre", "3o trimestre", "4o trimestre"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "dd MMMM y", "dd/MMM/y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_iw = {ERAS:["\u05dc\u05e4\u05e0\u05d4\u05f4\u05e1", "\u05dc\u05e1\u05d4\u05f4\u05e0"], ERANAMES:["\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e1\u05e4\u05d9\u05e8\u05d4", "\u05dc\u05e1\u05e4\u05d9\u05e8\u05d4"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["\u05d9\u05e0\u05d5\u05d0\u05e8", "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8\u05d9\u05dc", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0\u05d9", "\u05d9\u05d5\u05dc\u05d9", "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", "\u05d3\u05e6\u05de\u05d1\u05e8"], STANDALONEMONTHS:["\u05d9\u05e0\u05d5\u05d0\u05e8", "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8\u05d9\u05dc", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0\u05d9", "\u05d9\u05d5\u05dc\u05d9", "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", "\u05d3\u05e6\u05de\u05d1\u05e8"], SHORTMONTHS:["\u05d9\u05e0\u05d5", "\u05e4\u05d1\u05e8", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0", "\u05d9\u05d5\u05dc", "\u05d0\u05d5\u05d2", "\u05e1\u05e4\u05d8", "\u05d0\u05d5\u05e7", "\u05e0\u05d5\u05d1", "\u05d3\u05e6\u05de"], STANDALONESHORTMONTHS:["\u05d9\u05e0\u05d5\u05f3", "\u05e4\u05d1\u05e8\u05f3", "\u05de\u05e8\u05e5", "\u05d0\u05e4\u05e8\u05f3", "\u05de\u05d0\u05d9", "\u05d9\u05d5\u05e0\u05f3", "\u05d9\u05d5\u05dc\u05f3", "\u05d0\u05d5\u05d2\u05f3", "\u05e1\u05e4\u05d8\u05f3", "\u05d0\u05d5\u05e7\u05f3", "\u05e0\u05d5\u05d1\u05f3", "\u05d3\u05e6\u05de\u05f3"], WEEKDAYS:["\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"], STANDALONEWEEKDAYS:["\u05d9\u05d5\u05dd \u05e8\u05d0\u05e9\u05d5\u05df", "\u05d9\u05d5\u05dd \u05e9\u05e0\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05dc\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e8\u05d1\u05d9\u05e2\u05d9", "\u05d9\u05d5\u05dd \u05d7\u05de\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d9\u05e9\u05d9", "\u05d9\u05d5\u05dd \u05e9\u05d1\u05ea"], SHORTWEEKDAYS:["\u05d9\u05d5\u05dd \u05d0\u05f3", "\u05d9\u05d5\u05dd \u05d1\u05f3", "\u05d9\u05d5\u05dd \u05d2\u05f3", "\u05d9\u05d5\u05dd \u05d3\u05f3", "\u05d9\u05d5\u05dd \u05d4\u05f3", "\u05d9\u05d5\u05dd \u05d5\u05f3", "\u05e9\u05d1\u05ea"], STANDALONESHORTWEEKDAYS:["\u05d9\u05d5\u05dd \u05d0\u05f3", "\u05d9\u05d5\u05dd \u05d1\u05f3", "\u05d9\u05d5\u05dd \u05d2\u05f3", "\u05d9\u05d5\u05dd \u05d3\u05f3", "\u05d9\u05d5\u05dd \u05d4\u05f3", "\u05d9\u05d5\u05dd \u05d5\u05f3", "\u05e9\u05d1\u05ea"], NARROWWEEKDAYS:["\u05d0'", "\u05d1'", "\u05d2'", "\u05d3'", "\u05d4'", "\u05d5\u05f3", "\u05e9\u05f3"], STANDALONENARROWWEEKDAYS:["\u05d0\u05f3", "\u05d1\u05f3", "\u05d2\u05f3", "\u05d3\u05f3", "\u05d4\u05f3", "\u05d5", "\u05e9"], SHORTQUARTERS:["\u05e8\u05d1\u05e2\u05d5\u05df 1", "\u05e8\u05d1\u05e2\u05d5\u05df 2", "\u05e8\u05d1\u05e2\u05d5\u05df 3", "\u05e8\u05d1\u05e2\u05d5\u05df 4"], QUARTERS:["\u05e8\u05d1\u05e2\u05d5\u05df 1", "\u05e8\u05d1\u05e2\u05d5\u05df 2", "\u05e8\u05d1\u05e2\u05d5\u05df 3", "\u05e8\u05d1\u05e2\u05d5\u05df 4"], AMPMS:["\u05dc\u05e4\u05e0\u05d4\u05f4\u05e6", "\u05d0\u05d7\u05d4\u05f4\u05e6"], DATEFORMATS:["EEEE, d \u05d1MMMM y", "d \u05d1MMMM y", "d \u05d1MMM y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[4, 5], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_ja = {ERAS:["\u7d00\u5143\u524d", "\u897f\u66a6"], ERANAMES:["\u7d00\u5143\u524d", "\u897f\u66a6"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONEMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], SHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONESHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], WEEKDAYS:["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], STANDALONEWEEKDAYS:["\u65e5\u66dc\u65e5", "\u6708\u66dc\u65e5", "\u706b\u66dc\u65e5", "\u6c34\u66dc\u65e5", "\u6728\u66dc\u65e5", "\u91d1\u66dc\u65e5", "\u571f\u66dc\u65e5"], SHORTWEEKDAYS:["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], STANDALONESHORTWEEKDAYS:["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], NARROWWEEKDAYS:["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], STANDALONENARROWWEEKDAYS:["\u65e5", "\u6708", "\u706b", "\u6c34", "\u6728", "\u91d1", "\u571f"], SHORTQUARTERS:["1Q", "2Q", "3Q", "4Q"], QUARTERS:["\u7b2c1\u56db\u534a\u671f", "\u7b2c2\u56db\u534a\u671f", "\u7b2c3\u56db\u534a\u671f", "\u7b2c4\u56db\u534a\u671f"], AMPMS:["\u5348\u524d", "\u5348\u5f8c"], DATEFORMATS:["y\u5e74M\u6708d\u65e5EEEE", "y\u5e74M\u6708d\u65e5", "y/MM/dd", "y/MM/dd"], TIMEFORMATS:["H\u6642mm\u5206ss\u79d2 zzzz", "H:mm:ss z", "H:mm:ss", "H:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_kn = {ERAS:["\u0c95\u0ccd\u0cb0\u0cbf.\u0caa\u0cc2", "\u0c9c\u0cbe\u0cb9\u0cc0"], ERANAMES:["\u0c88\u0cb8\u0caa\u0cc2\u0cb5\u0cef.", "\u0c95\u0ccd\u0cb0\u0cbf\u0cb8\u0ccd\u0ca4 \u0cb6\u0c95"], NARROWMONTHS:["\u0c9c", "\u0cab\u0cc6", "\u0cae\u0cbe", "\u0c8f", "\u0cae\u0cc7", "\u0c9c\u0cc2", "\u0c9c\u0cc1", "\u0c86", "\u0cb8\u0cc6", "\u0c85", "\u0ca8", "\u0ca1\u0cbf"], STANDALONENARROWMONTHS:["\u0c9c", "\u0cab\u0cc6", "\u0cae\u0cbe", "\u0c8e", "\u0cae\u0cc7", "\u0c9c\u0cc2", "\u0c9c\u0cc1", "\u0c86", "\u0cb8\u0cc6", "\u0c85", "\u0ca8", "\u0ca1\u0cbf"], MONTHS:["\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0", "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0", "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd", "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd", "\u0cae\u0cc6", "\u0c9c\u0cc2\u0ca8\u0ccd", "\u0c9c\u0cc1\u0cb2\u0cc8", "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd", "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd", "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd", "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd", "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"], STANDALONEMONTHS:["\u0c9c\u0ca8\u0cb5\u0cb0\u0cc0", "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cc0", "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd", "\u0c8e\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd", "\u0cae\u0cc6", "\u0c9c\u0cc2\u0ca8\u0ccd", "\u0c9c\u0cc1\u0cb2\u0cc8", "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd", "\u0cb8\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd", "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd", "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd", "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"], SHORTMONTHS:["\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf", "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cc1\u0cb5\u0cb0\u0cbf", "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd", "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd\u200c\u200c", "\u0cae\u0cc7", "\u0c9c\u0cc2\u0ca8\u0ccd", "\u0c9c\u0cc1\u0cb2\u0cc8", "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd", "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd\u200c", "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd", "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd", "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"], STANDALONESHORTMONTHS:["\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf", "\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cc1\u0cb5\u0cb0\u0cbf", "\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd", "\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd\u200c\u200c", "\u0cae\u0cc7", "\u0c9c\u0cc2\u0ca8\u0ccd", "\u0c9c\u0cc1\u0cb2\u0cc8", "\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd", "\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd\u200c", "\u0c85\u0c95\u0ccd\u0c9f\u0ccb\u0cac\u0cb0\u0ccd", "\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd", "\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd"], WEEKDAYS:["\u0cb0\u0cb5\u0cbf\u0cb5\u0cbe\u0cb0", "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0", "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0", "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0", "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0", "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0", "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0"], STANDALONEWEEKDAYS:["\u0cb0\u0cb5\u0cbf\u0cb5\u0cbe\u0cb0", "\u0cb8\u0ccb\u0cae\u0cb5\u0cbe\u0cb0", "\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0", "\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0", "\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0", "\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0", "\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0"], SHORTWEEKDAYS:["\u0cb0.", "\u0cb8\u0ccb.", "\u0cae\u0c82.", "\u0cac\u0cc1.", "\u0c97\u0cc1.", "\u0cb6\u0cc1.", "\u0cb6\u0ca8\u0cbf."], STANDALONESHORTWEEKDAYS:["\u0cb0.", "\u0cb8\u0ccb.", "\u0cae\u0c82.", "\u0cac\u0cc1.", "\u0c97\u0cc1.", "\u0cb6\u0cc1.", "\u0cb6\u0ca8\u0cbf."], NARROWWEEKDAYS:["\u0cb0", "\u0cb8\u0ccb", "\u0cae\u0c82", "\u0cac\u0cc1", "\u0c97\u0cc1", "\u0cb6\u0cc1", "\u0cb6"], STANDALONENARROWWEEKDAYS:["\u0cb0", "\u0cb8\u0ccb", "\u0cae\u0c82", "\u0cac\u0cc1", "\u0c97\u0cc1", "\u0cb6\u0cc1", "\u0cb6"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Q1", "Q2", "Q3", "Q4"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "d-M-yy"], TIMEFORMATS:["hh:mm:ss a zzzz", "hh:mm:ss a z", "hh:mm:ss a", "hh:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_ko = {ERAS:["\uae30\uc6d0\uc804", "\uc11c\uae30"], ERANAMES:["\uc11c\ub825\uae30\uc6d0\uc804", "\uc11c\ub825\uae30\uc6d0"], NARROWMONTHS:["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], STANDALONENARROWMONTHS:["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], MONTHS:["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], STANDALONEMONTHS:["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], SHORTMONTHS:["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], STANDALONESHORTMONTHS:["1\uc6d4", "2\uc6d4", "3\uc6d4", "4\uc6d4", "5\uc6d4", "6\uc6d4", "7\uc6d4", "8\uc6d4", "9\uc6d4", "10\uc6d4", "11\uc6d4", "12\uc6d4"], WEEKDAYS:["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], STANDALONEWEEKDAYS:["\uc77c\uc694\uc77c", "\uc6d4\uc694\uc77c", "\ud654\uc694\uc77c", "\uc218\uc694\uc77c", "\ubaa9\uc694\uc77c", "\uae08\uc694\uc77c", "\ud1a0\uc694\uc77c"], SHORTWEEKDAYS:["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], STANDALONESHORTWEEKDAYS:["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], NARROWWEEKDAYS:["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], STANDALONENARROWWEEKDAYS:["\uc77c", "\uc6d4", "\ud654", "\uc218", "\ubaa9", "\uae08", "\ud1a0"], SHORTQUARTERS:["1\ubd84\uae30", "2\ubd84\uae30", "3\ubd84\uae30", "4\ubd84\uae30"], QUARTERS:["\uc81c 1/4\ubd84\uae30", "\uc81c 2/4\ubd84\uae30", "\uc81c 3/4\ubd84\uae30", "\uc81c 4/4\ubd84\uae30"], AMPMS:["\uc624\uc804", "\uc624\ud6c4"], DATEFORMATS:["y\ub144 M\uc6d4 d\uc77c EEEE", "y\ub144 M\uc6d4 d\uc77c", "y. M. d.", "yy. M. d."], TIMEFORMATS:["a h\uc2dc m\ubd84 s\ucd08 zzzz", "a h\uc2dc m\ubd84 s\ucd08 z", "a h:mm:ss", "a h:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_ln = {ERAS:["lib\u00f3so ya", "nsima ya Y"], ERANAMES:["Yambo ya Y\u00e9zu Kr\u00eds", "Nsima ya Y\u00e9zu Kr\u00eds"], NARROWMONTHS:["y", "f", "m", "a", "m", "y", "y", "a", "s", "\u0254", "n", "d"], STANDALONENARROWMONTHS:["y", "f", "m", "a", "m", "y", "y", "a", "s", "\u0254", "n", "d"], MONTHS:["s\u00e1nz\u00e1 ya yambo", "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", "s\u00e1nz\u00e1 ya m\u00ednei", "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", "s\u00e1nz\u00e1 ya nsambo", "s\u00e1nz\u00e1 ya mwambe", "s\u00e1nz\u00e1 ya libwa", "s\u00e1nz\u00e1 ya z\u00f3mi", "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"], STANDALONEMONTHS:["s\u00e1nz\u00e1 ya yambo", "s\u00e1nz\u00e1 ya m\u00edbal\u00e9", "s\u00e1nz\u00e1 ya m\u00eds\u00e1to", "s\u00e1nz\u00e1 ya m\u00ednei", "s\u00e1nz\u00e1 ya m\u00edt\u00e1no", "s\u00e1nz\u00e1 ya mot\u00f3b\u00e1", "s\u00e1nz\u00e1 ya nsambo", "s\u00e1nz\u00e1 ya mwambe", "s\u00e1nz\u00e1 ya libwa", "s\u00e1nz\u00e1 ya z\u00f3mi", "s\u00e1nz\u00e1 ya z\u00f3mi na m\u0254\u030ck\u0254\u0301", "s\u00e1nz\u00e1 ya z\u00f3mi na m\u00edbal\u00e9"], SHORTMONTHS:["yan", "fbl", "msi", "apl", "mai", "yun", "yul", "agt", "stb", "\u0254tb", "nvb", "dsb"], STANDALONESHORTMONTHS:["yan", "fbl", "msi", "apl", "mai", "yun", "yul", "agt", "stb", "\u0254tb", "nvb", "dsb"], WEEKDAYS:["eyenga", "mok\u0254l\u0254 mwa yambo", "mok\u0254l\u0254 mwa m\u00edbal\u00e9", "mok\u0254l\u0254 mwa m\u00eds\u00e1to", "mok\u0254l\u0254 ya m\u00edn\u00e9i", "mok\u0254l\u0254 ya m\u00edt\u00e1no", "mp\u0254\u0301s\u0254"], STANDALONEWEEKDAYS:["eyenga", "mok\u0254l\u0254 mwa yambo", "mok\u0254l\u0254 mwa m\u00edbal\u00e9", "mok\u0254l\u0254 mwa m\u00eds\u00e1to", "mok\u0254l\u0254 ya m\u00edn\u00e9i", "mok\u0254l\u0254 ya m\u00edt\u00e1no", "mp\u0254\u0301s\u0254"], SHORTWEEKDAYS:["eye", "ybo", "mbl", "mst", "min", "mtn", "mps"], STANDALONESHORTWEEKDAYS:["eye", "ybo", "mbl", "mst", "min", "mtn", "mps"], NARROWWEEKDAYS:["e", "y", "m", "m", "m", "m", "p"], STANDALONENARROWWEEKDAYS:["e", "y", "m", "m", "m", "m", "p"], SHORTQUARTERS:["SM1", "SM2", "SM3", "SM4"], QUARTERS:["s\u00e1nz\u00e1 m\u00eds\u00e1to ya yambo", "s\u00e1nz\u00e1 m\u00eds\u00e1to ya m\u00edbal\u00e9", "s\u00e1nz\u00e1 m\u00eds\u00e1to ya m\u00eds\u00e1to", "s\u00e1nz\u00e1 m\u00eds\u00e1to ya m\u00ednei"], AMPMS:["nt\u0254\u0301ng\u0254\u0301", "mp\u00f3kwa"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "d/M/y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_lt = {ERAS:["pr. Kr.", "po Kr."], ERANAMES:["prie\u0161 Krist\u0173", "po Kristaus"], NARROWMONTHS:["S", "V", "K", "B", "G", "B", "L", "R", "R", "S", "L", "G"], STANDALONENARROWMONTHS:["S", "V", "K", "B", "G", "B", "L", "R", "R", "S", "L", "G"], MONTHS:["sausis", "vasaris", "kovas", "balandis", "gegu\u017e\u0117", "bir\u017eelis", "liepa", "rugpj\u016btis", "rugs\u0117jis", "spalis", "lapkritis", "gruodis"], STANDALONEMONTHS:["sausis", "vasaris", "kovas", "balandis", "gegu\u017e\u0117", "bir\u017eelis", "liepa", "rugpj\u016btis", "rugs\u0117jis", "spalis", "lapkritis", "gruodis"], SHORTMONTHS:["saus.", "vas.", "kov.", "bal.", "geg.", "bir\u017e.", "liep.", "rugp.", "rugs.", "spal.", "lapkr.", "gruod."], STANDALONESHORTMONTHS:["saus.", "vas.", "kov.", "bal.", "geg.", "bir\u017e.", "liep.", "rugp.", "rugs.", "spal.", "lapkr.", "gruod."], WEEKDAYS:["sekmadienis", "pirmadienis", "antradienis", "tre\u010diadienis", "ketvirtadienis", "penktadienis", "\u0161e\u0161tadienis"], STANDALONEWEEKDAYS:["sekmadienis", "pirmadienis", "antradienis", "tre\u010diadienis", "ketvirtadienis", "penktadienis", "\u0161e\u0161tadienis"], SHORTWEEKDAYS:["sk", "pr", "an", "tr", "kt", "pn", "\u0161t"], STANDALONESHORTWEEKDAYS:["sk", "pr", "an", "tr", "kt", "pn", "\u0161t"], NARROWWEEKDAYS:["S", "P", "A", "T", "K", "P", "\u0160"], STANDALONENARROWWEEKDAYS:["S", "P", "A", "T", "K", "P", "\u0160"], SHORTQUARTERS:["I k.", "II k.", "III k.", "IV k."], QUARTERS:["I ketvirtis", "II ketvirtis", "III ketvirtis", "IV ketvirtis"], AMPMS:["prie\u0161piet", "popiet"], DATEFORMATS:["y 'm'. MMMM d 'd'., EEEE", "y 'm'. MMMM d 'd'.", "y MMM d", "y-MM-dd"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_lv = {ERAS:["p.m.\u0113.", "m.\u0113."], ERANAMES:["pirms m\u016bsu \u0113ras", "m\u016bsu \u0113r\u0101"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["janv\u0101ris", "febru\u0101ris", "marts", "apr\u012blis", "maijs", "j\u016bnijs", "j\u016blijs", "augusts", "septembris", "oktobris", "novembris", "decembris"], STANDALONEMONTHS:["Janv\u0101ris", "Febru\u0101ris", "Marts", "Apr\u012blis", "Maijs", "J\u016bnijs", "J\u016blijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris"], SHORTMONTHS:["janv.", "febr.", "marts", "apr.", "maijs", "j\u016bn.", "j\u016bl.", "aug.", "sept.", "okt.", "nov.", "dec."], STANDALONESHORTMONTHS:["Janv.", "Febr.", "Marts", "Apr.", "Maijs", "J\u016bn.", "J\u016bl.", "Aug.", "Sept.", "Okt.", "Nov.", "Dec."], WEEKDAYS:["sv\u0113tdiena", "pirmdiena", "otrdiena", "tre\u0161diena", "ceturtdiena", "piektdiena", "sestdiena"], STANDALONEWEEKDAYS:["Sv\u0113tdiena", "Pirmdiena", "Otrdiena", "Tre\u0161diena", "Ceturtdiena", "Piektdiena", "Sestdiena"], SHORTWEEKDAYS:["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "Se"], STANDALONESHORTWEEKDAYS:["Sv", "Pr", "Ot", "Tr", "Ce", "Pk", "Se"], NARROWWEEKDAYS:["S", "P", "O", "T", "C", "P", "S"], STANDALONENARROWWEEKDAYS:["S", "P", "O", "T", "C", "P", "S"], SHORTQUARTERS:["C1", "C2", "C3", "C4"], QUARTERS:["1. ceturksnis", "2. ceturksnis", "3. ceturksnis", "4. ceturksnis"], AMPMS:["priek\u0161pusdien\u0101", "p\u0113cpusdien\u0101"], DATEFORMATS:["EEEE, y. 'gada' d. MMMM", "y. 'gada' d. MMMM", "y. 'gada' d. MMM", "dd.MM.yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_ml = {ERAS:["\u0d15\u0d4d\u0d30\u0d3f.\u0d2e\u0d42", "\u0d15\u0d4d\u0d30\u0d3f.\u0d2a\u0d3f."], ERANAMES:["\u0d15\u0d4d\u0d30\u0d3f\u0d38\u0d4d\u0d24\u0d41\u0d35\u0d3f\u0d28\u0d41\u0d4d \u0d2e\u0d41\u0d2e\u0d4d\u0d2a\u0d4d\u200c", "\u0d15\u0d4d\u0d30\u0d3f\u0d38\u0d4d\u0d24\u0d41\u0d35\u0d3f\u0d28\u0d4d \u0d2a\u0d3f\u0d7b\u0d2a\u0d4d"], NARROWMONTHS:["\u0d1c", "\u0d2b\u0d46", "\u0d2e\u0d3e", "\u0d0f", "\u0d2e\u0d47", "\u0d1c\u0d42", "\u0d1c\u0d42", "\u0d13", "\u0d38\u0d46", "\u0d12", "\u0d28", "\u0d21\u0d3f"], STANDALONENARROWMONTHS:["\u0d1c", "\u0d2b\u0d46", "\u0d2e\u0d3e", "\u0d0f", "\u0d2e\u0d47", "\u0d1c\u0d42", "\u0d1c\u0d42", "\u0d13", "\u0d38\u0d46", "\u0d12", "\u0d28", "\u0d21\u0d3f"], MONTHS:["\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f", "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f", "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d", "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d", "\u0d2e\u0d47\u0d2f\u0d4d", "\u0d1c\u0d42\u0d7a", "\u0d1c\u0d42\u0d32\u0d48", "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d", "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c", "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c", "\u0d28\u0d35\u0d02\u0d2c\u0d7c", "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c"], STANDALONEMONTHS:["\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f", "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f", "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d", "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d", "\u0d2e\u0d47\u0d2f\u0d4d", "\u0d1c\u0d42\u0d7a", "\u0d1c\u0d42\u0d32\u0d48", "\u0d06\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d", "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c", "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c", "\u0d28\u0d35\u0d02\u0d2c\u0d7c", "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c"], SHORTMONTHS:["\u0d1c\u0d28\u0d41", "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41", "\u0d2e\u0d3e\u0d7c", "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f", "\u0d2e\u0d47\u0d2f\u0d4d", "\u0d1c\u0d42\u0d7a", "\u0d1c\u0d42\u0d32\u0d48", "\u0d13\u0d17", "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02", "\u0d12\u0d15\u0d4d\u0d1f\u0d4b", "\u0d28\u0d35\u0d02", "\u0d21\u0d3f\u0d38\u0d02"], STANDALONESHORTMONTHS:["\u0d1c\u0d28\u0d41", "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41", "\u0d2e\u0d3e\u0d7c", "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f", "\u0d2e\u0d47\u0d2f\u0d4d", "\u0d1c\u0d42\u0d7a", "\u0d1c\u0d42\u0d32\u0d48", "\u0d13\u0d17", "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02", "\u0d12\u0d15\u0d4d\u0d1f\u0d4b", "\u0d28\u0d35\u0d02", "\u0d21\u0d3f\u0d38\u0d02"], WEEKDAYS:["\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a", "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a", "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a", "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a", "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a", "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a", "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a"], STANDALONEWEEKDAYS:["\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a", "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a", "\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a", "\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a", "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a", "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a", "\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a"], SHORTWEEKDAYS:["\u0d1e\u0d3e\u0d2f\u0d7c", "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e", "\u0d1a\u0d4a\u0d35\u0d4d\u0d35", "\u0d2c\u0d41\u0d27\u0d7b", "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02", "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f", "\u0d36\u0d28\u0d3f"], STANDALONESHORTWEEKDAYS:["\u0d1e\u0d3e\u0d2f\u0d7c", "\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e", "\u0d1a\u0d4a\u0d35\u0d4d\u0d35", "\u0d2c\u0d41\u0d27\u0d7b", "\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02", "\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f", "\u0d36\u0d28\u0d3f"], NARROWWEEKDAYS:["\u0d1e\u0d3e", "\u0d24\u0d3f", "\u0d1a\u0d4a", "\u0d2c\u0d41", "\u0d35\u0d4d\u0d2f\u0d3e", "\u0d35\u0d46", "\u0d36"], STANDALONENARROWWEEKDAYS:["\u0d1e\u0d3e", "\u0d24\u0d3f", "\u0d1a\u0d4a", "\u0d2c\u0d41", "\u0d35\u0d4d\u0d2f\u0d3e", "\u0d35\u0d46", "\u0d36"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["\u0d12\u0d28\u0d4d\u0d28\u0d3e\u0d02 \u0d2a\u0d3e\u0d26\u0d02", "\u0d30\u0d23\u0d4d\u0d1f\u0d3e\u0d02 \u0d2a\u0d3e\u0d26\u0d02", "\u0d2e\u0d42\u0d28\u0d4d\u0d28\u0d3e\u0d02 \u0d2a\u0d3e\u0d26\u0d02", "\u0d28\u0d3e\u0d32\u0d3e\u0d02 \u0d2a\u0d3e\u0d26\u0d02"], AMPMS:["AM", "PM"], DATEFORMATS:["y, MMMM d, EEEE", "y, MMMM d", "y, MMM d", "dd/MM/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_mr = {ZERODIGIT:2406, ERAS:["\u0908\u0938\u093e\u092a\u0942\u0930\u094d\u0935", "\u0938\u0928"], ERANAMES:["\u0908\u0938\u0935\u0940\u0938\u0928\u092a\u0942\u0930\u094d\u0935", "\u0908\u0938\u0935\u0940\u0938\u0928"], NARROWMONTHS:["\u091c\u093e", "\u092b\u0947", "\u092e\u093e", "\u090f", "\u092e\u0947", "\u091c\u0942", "\u091c\u0941", "\u0911", "\u0938", "\u0911", "\u0928\u094b", "\u0921\u093f"], STANDALONENARROWMONTHS:["\u091c\u093e", "\u092b\u0947", "\u092e\u093e", "\u090f", "\u092e\u0947", "\u091c\u0942", "\u091c\u0941", "\u0911", "\u0938", "\u0911", "\u0928\u094b", "\u0921\u093f"], MONTHS:["\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", "\u092e\u093e\u0930\u094d\u091a", "\u090f\u092a\u094d\u0930\u093f\u0932", "\u092e\u0947", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u0948", "\u0911\u0917\u0938\u094d\u091f", "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930", "\u0911\u0915\u094d\u091f\u094b\u092c\u0930", "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"], STANDALONEMONTHS:["\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940", "\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940", "\u092e\u093e\u0930\u094d\u091a", "\u090f\u092a\u094d\u0930\u093f\u0932", "\u092e\u0947", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u0948", "\u0911\u0917\u0938\u094d\u091f", "\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930", "\u0911\u0915\u094d\u091f\u094b\u092c\u0930", "\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930", "\u0921\u093f\u0938\u0947\u0902\u092c\u0930"], SHORTMONTHS:["\u091c\u093e\u0928\u0947", "\u092b\u0947\u092c\u094d\u0930\u0941", "\u092e\u093e\u0930\u094d\u091a", "\u090f\u092a\u094d\u0930\u093f", "\u092e\u0947", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u0948", "\u0911\u0917", "\u0938\u0947\u092a\u094d\u091f\u0947\u0902", "\u0911\u0915\u094d\u091f", "\u0928\u094b\u0935\u094d\u0939\u0947\u0902", "\u0921\u093f\u0938\u0947\u0902"], STANDALONESHORTMONTHS:["\u091c\u093e\u0928\u0947", "\u092b\u0947\u092c\u094d\u0930\u0941", "\u092e\u093e\u0930\u094d\u091a", "\u090f\u092a\u094d\u0930\u093f", "\u092e\u0947", "\u091c\u0942\u0928", "\u091c\u0941\u0932\u0948", "\u0911\u0917", "\u0938\u0947\u092a\u094d\u091f\u0947\u0902", "\u0911\u0915\u094d\u091f", "\u0928\u094b\u0935\u094d\u0939\u0947\u0902", "\u0921\u093f\u0938\u0947\u0902"], WEEKDAYS:["\u0930\u0935\u093f\u0935\u093e\u0930", "\u0938\u094b\u092e\u0935\u093e\u0930", "\u092e\u0902\u0917\u0933\u0935\u093e\u0930", "\u092c\u0941\u0927\u0935\u093e\u0930", "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", "\u0936\u0928\u093f\u0935\u093e\u0930"], STANDALONEWEEKDAYS:["\u0930\u0935\u093f\u0935\u093e\u0930", "\u0938\u094b\u092e\u0935\u093e\u0930", "\u092e\u0902\u0917\u0933\u0935\u093e\u0930", "\u092c\u0941\u0927\u0935\u093e\u0930", "\u0917\u0941\u0930\u0941\u0935\u093e\u0930", "\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930", "\u0936\u0928\u093f\u0935\u093e\u0930"], SHORTWEEKDAYS:["\u0930\u0935\u093f", "\u0938\u094b\u092e", "\u092e\u0902\u0917\u0933", "\u092c\u0941\u0927", "\u0917\u0941\u0930\u0941", "\u0936\u0941\u0915\u094d\u0930", "\u0936\u0928\u093f"], STANDALONESHORTWEEKDAYS:["\u0930\u0935\u093f", "\u0938\u094b\u092e", "\u092e\u0902\u0917\u0933", "\u092c\u0941\u0927", "\u0917\u0941\u0930\u0941", "\u0936\u0941\u0915\u094d\u0930", "\u0936\u0928\u093f"], NARROWWEEKDAYS:["\u0930", "\u0938\u094b", "\u092e\u0902", "\u092c\u0941", "\u0917\u0941", "\u0936\u0941", "\u0936"], STANDALONENARROWWEEKDAYS:["\u0930", "\u0938\u094b", "\u092e\u0902", "\u092c\u0941", "\u0917\u0941", "\u0936\u0941", "\u0936"], SHORTQUARTERS:["\u0924\u093f 1", "\u0924\u093f 2", "\u0924\u093f 3", "\u0924\u093f 4"], QUARTERS:["\u092a\u094d\u0930\u0925\u092e \u0924\u093f\u092e\u093e\u0939\u0940", "\u0926\u094d\u0935\u093f\u0924\u0940\u092f \u0924\u093f\u092e\u093e\u0939\u0940", "\u0924\u0943\u0924\u0940\u092f \u0924\u093f\u092e\u093e\u0939\u0940", "\u091a\u0924\u0941\u0930\u094d\u0925 \u0924\u093f\u092e\u093e\u0939\u0940"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "d-M-yy"], TIMEFORMATS:["h-mm-ss a zzzz", "h-mm-ss a z", "h-mm-ss a", "h-mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_ms = {ERAS:["S.M.", "TM"], ERANAMES:["S.M.", "TM"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "O", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "O", "S", "O", "N", "D"], MONTHS:["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"], STANDALONEMONTHS:["Januari", "Februari", "Mac", "April", "Mei", "Jun", "Julai", "Ogos", "September", "Oktober", "November", "Disember"], SHORTMONTHS:["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogos", "Sep", "Okt", "Nov", "Dis"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ogos", "Sep", "Okt", "Nov", "Dis"], WEEKDAYS:["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"], STANDALONEWEEKDAYS:["Ahad", "Isnin", "Selasa", "Rabu", "Khamis", "Jumaat", "Sabtu"], SHORTWEEKDAYS:["Ahd", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab"], STANDALONESHORTWEEKDAYS:["Ahd", "Isn", "Sel", "Rab", "Kha", "Jum", "Sab"], NARROWWEEKDAYS:["A", "I", "S", "R", "K", "J", "S"], STANDALONENARROWWEEKDAYS:["A", "I", "S", "R", "K", "J", "S"], SHORTQUARTERS:["Suku 1", "Suku Ke-2", "Suku Ke-3", "Suku Ke-4"], QUARTERS:["Suku pertama", "Suku Ke-2", "Suku Ke-3", "Suku Ke-4"], AMPMS:["PG", "PTG"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "dd/MM/y", "d/MM/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_mt = {ERAS:["QK", "WK"], ERANAMES:["Qabel Kristu", "Wara Kristu"], NARROWMONTHS:["J", "F", "M", "A", "M", "\u0120", "L", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "\u0120", "L", "A", "S", "O", "N", "D"], MONTHS:["Jannar", "Frar", "Marzu", "April", "Mejju", "\u0120unju", "Lulju", "Awwissu", "Settembru", "Ottubru", "Novembru", "Di\u010bembru"], STANDALONEMONTHS:["Jannar", "Frar", "Marzu", "April", "Mejju", "\u0120unju", "Lulju", "Awwissu", "Settembru", "Ottubru", "Novembru", "Di\u010bembru"], SHORTMONTHS:["Jan", "Fra", "Mar", "Apr", "Mej", "\u0120un", "Lul", "Aww", "Set", "Ott", "Nov", "Di\u010b"], STANDALONESHORTMONTHS:["Jan", "Fra", "Mar", "Apr", "Mej", "\u0120un", "Lul", "Aww", "Set", "Ott", "Nov", "Di\u010b"], WEEKDAYS:["Il-\u0126add", "It-Tnejn", "It-Tlieta", "L-Erbg\u0127a", "Il-\u0126amis", "Il-\u0120img\u0127a", "Is-Sibt"], STANDALONEWEEKDAYS:["Il-\u0126add", "It-Tnejn", "It-Tlieta", "L-Erbg\u0127a", "Il-\u0126amis", "Il-\u0120img\u0127a", "Is-Sibt"], SHORTWEEKDAYS:["\u0126ad", "Tne", "Tli", "Erb", "\u0126am", "\u0120im", "Sib"], STANDALONESHORTWEEKDAYS:["\u0126ad", "Tne", "Tli", "Erb", "\u0126am", "\u0120im", "Sib"], NARROWWEEKDAYS:["\u0126", "T", "T", "E", "\u0126", "\u0120", "S"], STANDALONENARROWWEEKDAYS:["\u0126", "T", "T", "E", "\u0126", "\u0120", "S"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["K1", "K2", "K3", "K4"], AMPMS:["QN", "WN"], DATEFORMATS:["EEEE, d 'ta'\u2019 MMMM y", "d 'ta'\u2019 MMMM y", "dd MMM y", "dd/MM/y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_nb = {ERAS:["f.Kr.", "e.Kr."], ERANAMES:["f.Kr.", "e.Kr."], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember"], STANDALONEMONTHS:["januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember"], SHORTMONTHS:["jan.", "feb.", "mars", "apr.", "mai", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "des."], STANDALONESHORTMONTHS:["jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des"], WEEKDAYS:["s\u00f8ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l\u00f8rdag"], STANDALONEWEEKDAYS:["s\u00f8ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l\u00f8rdag"], SHORTWEEKDAYS:["s\u00f8n.", "man.", "tir.", "ons.", "tor.", "fre.", "l\u00f8r."], STANDALONESHORTWEEKDAYS:["s\u00f8.", "ma.", "ti.", "on.", "to.", "fr.", "l\u00f8."], NARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1. kvartal", "2. kvartal", "3. kvartal", "4. kvartal"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d. MMMM y", "d. MMMM y", "d. MMM y", "dd.MM.yy"], TIMEFORMATS:["'kl'. HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} 'kl.' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_nl = {ERAS:["v.Chr.", "n.Chr."], ERANAMES:["Voor Christus", "na Christus"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], STANDALONEMONTHS:["januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december"], SHORTMONTHS:["jan.", "feb.", "mrt.", "apr.", "mei", "jun.", "jul.", "aug.", "sep.", "okt.", "nov.", "dec."], STANDALONESHORTMONTHS:["jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], WEEKDAYS:["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], STANDALONEWEEKDAYS:["zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag"], SHORTWEEKDAYS:["zo", "ma", "di", "wo", "do", "vr", "za"], STANDALONESHORTWEEKDAYS:["zo", "ma", "di", "wo", "do", "vr", "za"], NARROWWEEKDAYS:["Z", "M", "D", "W", "D", "V", "Z"], STANDALONENARROWWEEKDAYS:["Z", "M", "D", "W", "D", "V", "Z"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1e kwartaal", "2e kwartaal", "3e kwartaal", "4e kwartaal"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "dd-MM-yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_no = {ERAS:["f.Kr.", "e.Kr."], ERANAMES:["f.Kr.", "e.Kr."], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember"], STANDALONEMONTHS:["januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember"], SHORTMONTHS:["jan.", "feb.", "mars", "apr.", "mai", "juni", "juli", "aug.", "sep.", "okt.", "nov.", "des."], STANDALONESHORTMONTHS:["jan", "feb", "mar", "apr", "mai", "jun", "jul", "aug", "sep", "okt", "nov", "des"], WEEKDAYS:["s\u00f8ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l\u00f8rdag"], STANDALONEWEEKDAYS:["s\u00f8ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l\u00f8rdag"], SHORTWEEKDAYS:["s\u00f8n.", "man.", "tir.", "ons.", "tor.", "fre.", "l\u00f8r."], STANDALONESHORTWEEKDAYS:["s\u00f8.", "ma.", "ti.", "on.", "to.", "fr.", "l\u00f8."], NARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1. kvartal", "2. kvartal", "3. kvartal", "4. kvartal"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d. MMMM y", "d. MMMM y", "d. MMM y", "dd.MM.yy"], TIMEFORMATS:["'kl'. HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} 'kl.' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_or = {ERAS:["BCE", "CE"], ERANAMES:["BCE", "CE"], NARROWMONTHS:["\u0b1c\u0b3e", "\u0b2b\u0b47", "\u0b2e\u0b3e", "\u0b05", "\u0b2e\u0b47", "\u0b1c\u0b41", "\u0b1c\u0b41", "\u0b05", "\u0b38\u0b47", "\u0b05", "\u0b28", "\u0b21\u0b3f"], STANDALONENARROWMONTHS:["\u0b1c\u0b3e", "\u0b2b\u0b47", "\u0b2e\u0b3e", "\u0b05", "\u0b2e\u0b47", "\u0b1c\u0b41", "\u0b1c\u0b41", "\u0b05", "\u0b38\u0b47", "\u0b05", "\u0b28", "\u0b21\u0b3f"], MONTHS:["\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", "\u0b2e\u0b47", "\u0b1c\u0b41\u0b28", "\u0b1c\u0b41\u0b32\u0b3e\u0b07", "\u0b05\u0b17\u0b37\u0b4d\u0b1f", "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"], STANDALONEMONTHS:["\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", "\u0b2e\u0b47", "\u0b1c\u0b41\u0b28", "\u0b1c\u0b41\u0b32\u0b3e\u0b07", "\u0b05\u0b17\u0b37\u0b4d\u0b1f", "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"], SHORTMONTHS:["\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", "\u0b2e\u0b47", "\u0b1c\u0b41\u0b28", "\u0b1c\u0b41\u0b32\u0b3e\u0b07", "\u0b05\u0b17\u0b37\u0b4d\u0b1f", "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"], STANDALONESHORTMONTHS:["\u0b1c\u0b3e\u0b28\u0b41\u0b06\u0b30\u0b40", "\u0b2b\u0b47\u0b2c\u0b4d\u0b30\u0b41\u0b5f\u0b3e\u0b30\u0b40", "\u0b2e\u0b3e\u0b30\u0b4d\u0b1a\u0b4d\u0b1a", "\u0b05\u0b2a\u0b4d\u0b30\u0b47\u0b32", "\u0b2e\u0b47", "\u0b1c\u0b41\u0b28", "\u0b1c\u0b41\u0b32\u0b3e\u0b07", "\u0b05\u0b17\u0b37\u0b4d\u0b1f", "\u0b38\u0b47\u0b2a\u0b4d\u0b1f\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b05\u0b15\u0b4d\u0b1f\u0b4b\u0b2c\u0b30", "\u0b28\u0b2d\u0b47\u0b2e\u0b4d\u0b2c\u0b30", "\u0b21\u0b3f\u0b38\u0b47\u0b2e\u0b4d\u0b2c\u0b30"], WEEKDAYS:["\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30", "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30", "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30", "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30", "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30", "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30", "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30"], STANDALONEWEEKDAYS:["\u0b30\u0b2c\u0b3f\u0b2c\u0b3e\u0b30", "\u0b38\u0b4b\u0b2e\u0b2c\u0b3e\u0b30", "\u0b2e\u0b19\u0b4d\u0b17\u0b33\u0b2c\u0b3e\u0b30", "\u0b2c\u0b41\u0b27\u0b2c\u0b3e\u0b30", "\u0b17\u0b41\u0b30\u0b41\u0b2c\u0b3e\u0b30", "\u0b36\u0b41\u0b15\u0b4d\u0b30\u0b2c\u0b3e\u0b30", "\u0b36\u0b28\u0b3f\u0b2c\u0b3e\u0b30"], SHORTWEEKDAYS:["\u0b30\u0b2c\u0b3f", "\u0b38\u0b4b\u0b2e", "\u0b2e\u0b19\u0b4d\u0b17\u0b33", "\u0b2c\u0b41\u0b27", "\u0b17\u0b41\u0b30\u0b41", "\u0b36\u0b41\u0b15\u0b4d\u0b30", "\u0b36\u0b28\u0b3f"], STANDALONESHORTWEEKDAYS:["\u0b30\u0b2c\u0b3f", "\u0b38\u0b4b\u0b2e", "\u0b2e\u0b19\u0b4d\u0b17\u0b33", "\u0b2c\u0b41\u0b27", "\u0b17\u0b41\u0b30\u0b41", "\u0b36\u0b41\u0b15\u0b4d\u0b30", "\u0b36\u0b28\u0b3f"], NARROWWEEKDAYS:["\u0b30", "\u0b38\u0b4b", "\u0b2e", "\u0b2c\u0b41", "\u0b17\u0b41", "\u0b36\u0b41", "\u0b36"], STANDALONENARROWWEEKDAYS:["\u0b30", "\u0b38\u0b4b", "\u0b2e", "\u0b2c\u0b41", "\u0b17\u0b41", "\u0b36\u0b41", "\u0b36"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Q1", "Q2", "Q3", "Q4"], AMPMS:["am", "pm"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "d-M-yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_pl = {ERAS:["p.n.e.", "n.e."], ERANAMES:["p.n.e.", "n.e."], NARROWMONTHS:["s", "l", "m", "k", "m", "c", "l", "s", "w", "p", "l", "g"], STANDALONENARROWMONTHS:["s", "l", "m", "k", "m", "c", "l", "s", "w", "p", "l", "g"], MONTHS:["stycznia", "lutego", "marca", "kwietnia", "maja", "czerwca", "lipca", "sierpnia", "wrze\u015bnia", "pa\u017adziernika", "listopada", "grudnia"], STANDALONEMONTHS:["stycze\u0144", "luty", "marzec", "kwiecie\u0144", "maj", "czerwiec", "lipiec", "sierpie\u0144", "wrzesie\u0144", "pa\u017adziernik", "listopad", "grudzie\u0144"], SHORTMONTHS:["sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "pa\u017a", "lis", "gru"], STANDALONESHORTMONTHS:["sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "pa\u017a", "lis", "gru"], WEEKDAYS:["niedziela", "poniedzia\u0142ek", "wtorek", "\u015broda", "czwartek", "pi\u0105tek", "sobota"], STANDALONEWEEKDAYS:["niedziela", "poniedzia\u0142ek", "wtorek", "\u015broda", "czwartek", "pi\u0105tek", "sobota"], SHORTWEEKDAYS:["niedz.", "pon.", "wt.", "\u015br.", "czw.", "pt.", "sob."], STANDALONESHORTWEEKDAYS:["niedz.", "pon.", "wt.", "\u015br.", "czw.", "pt.", "sob."], NARROWWEEKDAYS:["N", "P", "W", "\u015a", "C", "P", "S"], STANDALONENARROWWEEKDAYS:["N", "P", "W", "\u015a", "C", "P", "S"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["I kwarta\u0142", "II kwarta\u0142", "III kwarta\u0142", "IV kwarta\u0142"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "dd.MM.y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_pt = {ERAS:["a.C.", "d.C."], ERANAMES:["Antes de Cristo", "Ano do Senhor"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["janeiro", "fevereiro", "mar\u00e7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], STANDALONEMONTHS:["janeiro", "fevereiro", "mar\u00e7o", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"], SHORTMONTHS:["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], STANDALONESHORTMONTHS:["jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"], WEEKDAYS:["domingo", "segunda-feira", "ter\u00e7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\u00e1bado"], STANDALONEWEEKDAYS:["domingo", "segunda-feira", "ter\u00e7a-feira", "quarta-feira", "quinta-feira", "sexta-feira", "s\u00e1bado"], SHORTWEEKDAYS:["dom", "seg", "ter", "qua", "qui", "sex", "s\u00e1b"], STANDALONESHORTWEEKDAYS:["dom", "seg", "ter", "qua", "qui", "sex", "s\u00e1b"], NARROWWEEKDAYS:["D", "S", "T", "Q", "Q", "S", "S"], STANDALONENARROWWEEKDAYS:["D", "S", "T", "Q", "Q", "S", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1\u00ba trimestre", "2\u00ba trimestre", "3\u00ba trimestre", "4\u00ba trimestre"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d 'de' MMMM 'de' y", "d 'de' MMMM 'de' y", "dd/MM/y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_pt_BR = goog.i18n.DateTimeSymbols_pt; goog.i18n.DateTimeSymbols_pt_PT = {ERAS:["a.C.", "d.C."], ERANAMES:["Antes de Cristo", "Ano do Senhor"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Janeiro", "Fevereiro", "Mar\u00e7o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], STANDALONEMONTHS:["Janeiro", "Fevereiro", "Mar\u00e7o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], SHORTMONTHS:["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], STANDALONESHORTMONTHS:["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], WEEKDAYS:["Domingo", "Segunda-feira", "Ter\u00e7a-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "S\u00e1bado"], STANDALONEWEEKDAYS:["Domingo", "Segunda-feira", "Ter\u00e7a-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "S\u00e1bado"], SHORTWEEKDAYS:["dom", "seg", "ter", "qua", "qui", "sex", "s\u00e1b"], STANDALONESHORTWEEKDAYS:["dom", "seg", "ter", "qua", "qui", "sex", "s\u00e1b"], NARROWWEEKDAYS:["D", "S", "T", "Q", "Q", "S", "S"], STANDALONENARROWWEEKDAYS:["D", "S", "T", "Q", "Q", "S", "S"], SHORTQUARTERS:["T1", "T2", "T3", "T4"], QUARTERS:["1.\u00ba trimestre", "2.\u00ba trimestre", "3.\u00ba trimestre", "4.\u00ba trimestre"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d 'de' MMMM 'de' y", "d 'de' MMMM 'de' y", "dd/MM/y", "dd/MM/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} '\u00e0s' {0}", "{1} '\u00e0s' {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_ro = {ERAS:["\u00ee.Hr.", "d.Hr."], ERANAMES:["\u00eenainte de Hristos", "dup\u0103 Hristos"], NARROWMONTHS:["I", "F", "M", "A", "M", "I", "I", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["I", "F", "M", "A", "M", "I", "I", "A", "S", "O", "N", "D"], MONTHS:["ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie"], STANDALONEMONTHS:["ianuarie", "februarie", "martie", "aprilie", "mai", "iunie", "iulie", "august", "septembrie", "octombrie", "noiembrie", "decembrie"], SHORTMONTHS:["ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec."], STANDALONESHORTMONTHS:["ian.", "feb.", "mar.", "apr.", "mai", "iun.", "iul.", "aug.", "sept.", "oct.", "nov.", "dec."], WEEKDAYS:["duminic\u0103", "luni", "mar\u021bi", "miercuri", "joi", "vineri", "s\u00e2mb\u0103t\u0103"], STANDALONEWEEKDAYS:["duminic\u0103", "luni", "mar\u021bi", "miercuri", "joi", "vineri", "s\u00e2mb\u0103t\u0103"], SHORTWEEKDAYS:["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "S\u00e2"], STANDALONESHORTWEEKDAYS:["Du", "Lu", "Ma", "Mi", "Jo", "Vi", "S\u00e2"], NARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], STANDALONENARROWWEEKDAYS:["D", "L", "M", "M", "J", "V", "S"], SHORTQUARTERS:["trim. I", "trim. II", "trim. III", "trim. IV"], QUARTERS:["trimestrul I", "trimestrul al II-lea", "trimestrul al III-lea", "trimestrul al IV-lea"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "dd.MM.y", "dd.MM.y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1}, {0}", "{1}, {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_ru = {ERAS:["\u0434\u043e \u043d.\u044d.", "\u043d.\u044d."], ERANAMES:["\u0434\u043e \u043d.\u044d.", "\u043d.\u044d."], NARROWMONTHS:["\u042f", "\u0424", "\u041c", "\u0410", "\u041c", "\u0418", "\u0418", "\u0410", "\u0421", "\u041e", "\u041d", "\u0414"], STANDALONENARROWMONTHS:["\u042f", "\u0424", "\u041c", "\u0410", "\u041c", "\u0418", "\u0418", "\u0410", "\u0421", "\u041e", "\u041d", "\u0414"], MONTHS:["\u044f\u043d\u0432\u0430\u0440\u044f", "\u0444\u0435\u0432\u0440\u0430\u043b\u044f", "\u043c\u0430\u0440\u0442\u0430", "\u0430\u043f\u0440\u0435\u043b\u044f", "\u043c\u0430\u044f", "\u0438\u044e\u043d\u044f", "\u0438\u044e\u043b\u044f", "\u0430\u0432\u0433\u0443\u0441\u0442\u0430", "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f", "\u043e\u043a\u0442\u044f\u0431\u0440\u044f", "\u043d\u043e\u044f\u0431\u0440\u044f", "\u0434\u0435\u043a\u0430\u0431\u0440\u044f"], STANDALONEMONTHS:["\u042f\u043d\u0432\u0430\u0440\u044c", "\u0424\u0435\u0432\u0440\u0430\u043b\u044c", "\u041c\u0430\u0440\u0442", "\u0410\u043f\u0440\u0435\u043b\u044c", "\u041c\u0430\u0439", "\u0418\u044e\u043d\u044c", "\u0418\u044e\u043b\u044c", "\u0410\u0432\u0433\u0443\u0441\u0442", "\u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c", "\u041e\u043a\u0442\u044f\u0431\u0440\u044c", "\u041d\u043e\u044f\u0431\u0440\u044c", "\u0414\u0435\u043a\u0430\u0431\u0440\u044c"], SHORTMONTHS:["\u044f\u043d\u0432.", "\u0444\u0435\u0432\u0440.", "\u043c\u0430\u0440\u0442\u0430", "\u0430\u043f\u0440.", "\u043c\u0430\u044f", "\u0438\u044e\u043d\u044f", "\u0438\u044e\u043b\u044f", "\u0430\u0432\u0433.", "\u0441\u0435\u043d\u0442.", "\u043e\u043a\u0442.", "\u043d\u043e\u044f\u0431.", "\u0434\u0435\u043a."], STANDALONESHORTMONTHS:["\u042f\u043d\u0432.", "\u0424\u0435\u0432\u0440.", "\u041c\u0430\u0440\u0442", "\u0410\u043f\u0440.", "\u041c\u0430\u0439", "\u0418\u044e\u043d\u044c", "\u0418\u044e\u043b\u044c", "\u0410\u0432\u0433.", "\u0421\u0435\u043d\u0442.", "\u041e\u043a\u0442.", "\u041d\u043e\u044f\u0431.", "\u0414\u0435\u043a."], WEEKDAYS:["\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", "\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", "\u0432\u0442\u043e\u0440\u043d\u0438\u043a", "\u0441\u0440\u0435\u0434\u0430", "\u0447\u0435\u0442\u0432\u0435\u0440\u0433", "\u043f\u044f\u0442\u043d\u0438\u0446\u0430", "\u0441\u0443\u0431\u0431\u043e\u0442\u0430"], STANDALONEWEEKDAYS:["\u0412\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435", "\u041f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a", "\u0412\u0442\u043e\u0440\u043d\u0438\u043a", "\u0421\u0440\u0435\u0434\u0430", "\u0427\u0435\u0442\u0432\u0435\u0440\u0433", "\u041f\u044f\u0442\u043d\u0438\u0446\u0430", "\u0421\u0443\u0431\u0431\u043e\u0442\u0430"], SHORTWEEKDAYS:["\u0432\u0441", "\u043f\u043d", "\u0432\u0442", "\u0441\u0440", "\u0447\u0442", "\u043f\u0442", "\u0441\u0431"], STANDALONESHORTWEEKDAYS:["\u0412\u0441", "\u041f\u043d", "\u0412\u0442", "\u0421\u0440", "\u0427\u0442", "\u041f\u0442", "\u0421\u0431"], NARROWWEEKDAYS:["\u0432\u0441", "\u043f\u043d", "\u0432\u0442", "\u0441\u0440", "\u0447\u0442", "\u043f\u0442", "\u0441\u0431"], STANDALONENARROWWEEKDAYS:["\u0412", "\u041f", "\u0412", "\u0421", "\u0427", "\u041f", "\u0421"], SHORTQUARTERS:["1-\u0439 \u043a\u0432.", "2-\u0439 \u043a\u0432.", "3-\u0439 \u043a\u0432.", "4-\u0439 \u043a\u0432."], QUARTERS:["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b", "2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b", "3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b", "4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"], AMPMS:["\u0434\u043e \u043f\u043e\u043b\u0443\u0434\u043d\u044f", "\u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0434\u043d\u044f"], DATEFORMATS:["EEEE, d MMMM y '\u0433'.", "d MMMM y '\u0433'.", "dd MMM y '\u0433'.", "dd.MM.yy"], TIMEFORMATS:["H:mm:ss zzzz", "H:mm:ss z", "H:mm:ss", "H:mm"], DATETIMEFORMATS:["{1}, {0}", "{1}, {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_sk = {ERAS:["pred n.l.", "n.l."], ERANAMES:["pred n.l.", "n.l."], NARROWMONTHS:["j", "f", "m", "a", "m", "j", "j", "a", "s", "o", "n", "d"], STANDALONENARROWMONTHS:["j", "f", "m", "a", "m", "j", "j", "a", "s", "o", "n", "d"], MONTHS:["janu\u00e1ra", "febru\u00e1ra", "marca", "apr\u00edla", "m\u00e1ja", "j\u00fana", "j\u00fala", "augusta", "septembra", "okt\u00f3bra", "novembra", "decembra"], STANDALONEMONTHS:["janu\u00e1r", "febru\u00e1r", "marec", "apr\u00edl", "m\u00e1j", "j\u00fan", "j\u00fal", "august", "september", "okt\u00f3ber", "november", "december"], SHORTMONTHS:["jan", "feb", "mar", "apr", "m\u00e1j", "j\u00fan", "j\u00fal", "aug", "sep", "okt", "nov", "dec"], STANDALONESHORTMONTHS:["jan", "feb", "mar", "apr", "m\u00e1j", "j\u00fan", "j\u00fal", "aug", "sep", "okt", "nov", "dec"], WEEKDAYS:["nede\u013ea", "pondelok", "utorok", "streda", "\u0161tvrtok", "piatok", "sobota"], STANDALONEWEEKDAYS:["nede\u013ea", "pondelok", "utorok", "streda", "\u0161tvrtok", "piatok", "sobota"], SHORTWEEKDAYS:["ne", "po", "ut", "st", "\u0161t", "pi", "so"], STANDALONESHORTWEEKDAYS:["ne", "po", "ut", "st", "\u0161t", "pi", "so"], NARROWWEEKDAYS:["N", "P", "U", "S", "\u0160", "P", "S"], STANDALONENARROWWEEKDAYS:["N", "P", "U", "S", "\u0160", "P", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1. \u0161tvr\u0165rok", "2. \u0161tvr\u0165rok", "3. \u0161tvr\u0165rok", "4. \u0161tvr\u0165rok"], AMPMS:["dopoludnia", "popoludn\u00ed"], DATEFORMATS:["EEEE, d. MMMM y", "d. MMMM y", "d.M.y", "d.M.y"], TIMEFORMATS:["H:mm:ss zzzz", "H:mm:ss z", "H:mm:ss", "H:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_sl = {ERAS:["pr. n. \u0161t.", "po Kr."], ERANAMES:["pred na\u0161im \u0161tetjem", "na\u0161e \u0161tetje"], NARROWMONTHS:["j", "f", "m", "a", "m", "j", "j", "a", "s", "o", "n", "d"], STANDALONENARROWMONTHS:["j", "f", "m", "a", "m", "j", "j", "a", "s", "o", "n", "d"], MONTHS:["januar", "februar", "marec", "april", "maj", "junij", "julij", "avgust", "september", "oktober", "november", "december"], STANDALONEMONTHS:["januar", "februar", "marec", "april", "maj", "junij", "julij", "avgust", "september", "oktober", "november", "december"], SHORTMONTHS:["jan.", "feb.", "mar.", "apr.", "maj", "jun.", "jul.", "avg.", "sep.", "okt.", "nov.", "dec."], STANDALONESHORTMONTHS:["jan", "feb", "mar", "apr", "maj", "jun", "jul", "avg", "sep", "okt", "nov", "dec"], WEEKDAYS:["nedelja", "ponedeljek", "torek", "sreda", "\u010detrtek", "petek", "sobota"], STANDALONEWEEKDAYS:["nedelja", "ponedeljek", "torek", "sreda", "\u010detrtek", "petek", "sobota"], SHORTWEEKDAYS:["ned.", "pon.", "tor.", "sre.", "\u010det.", "pet.", "sob."], STANDALONESHORTWEEKDAYS:["ned", "pon", "tor", "sre", "\u010det", "pet", "sob"], NARROWWEEKDAYS:["n", "p", "t", "s", "\u010d", "p", "s"], STANDALONENARROWWEEKDAYS:["n", "p", "t", "s", "\u010d", "p", "s"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["1. \u010detrtletje", "2. \u010detrtletje", "3. \u010detrtletje", "4. \u010detrtletje"], AMPMS:["dop.", "pop."], DATEFORMATS:["EEEE, dd. MMMM y", "dd. MMMM y", "d. MMM y", "d. MM. yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_sq = {ERAS:["p.e.r.", "n.e.r."], ERANAMES:["p.e.r.", "n.e.r."], NARROWMONTHS:["J", "S", "M", "P", "M", "Q", "K", "G", "S", "T", "N", "D"], STANDALONENARROWMONTHS:["J", "S", "M", "P", "M", "Q", "K", "G", "S", "T", "N", "D"], MONTHS:["janar", "shkurt", "mars", "prill", "maj", "qershor", "korrik", "gusht", "shtator", "tetor", "n\u00ebntor", "dhjetor"], STANDALONEMONTHS:["janar", "shkurt", "mars", "prill", "maj", "qershor", "korrik", "gusht", "shtator", "tetor", "n\u00ebntor", "dhjetor"], SHORTMONTHS:["Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Kor", "Gsh", "Sht", "Tet", "N\u00ebn", "Dhj"], STANDALONESHORTMONTHS:["Jan", "Shk", "Mar", "Pri", "Maj", "Qer", "Kor", "Gsh", "Sht", "Tet", "N\u00ebn", "Dhj"], WEEKDAYS:["e diel", "e h\u00ebn\u00eb", "e mart\u00eb", "e m\u00ebrkur\u00eb", "e enjte", "e premte", "e shtun\u00eb"], STANDALONEWEEKDAYS:["e diel", "e h\u00ebn\u00eb", "e mart\u00eb", "e m\u00ebrkur\u00eb", "e enjte", "e premte", "e shtun\u00eb"], SHORTWEEKDAYS:["Die", "H\u00ebn", "Mar", "M\u00ebr", "Enj", "Pre", "Sht"], STANDALONESHORTWEEKDAYS:["Die", "H\u00ebn", "Mar", "M\u00ebr", "Enj", "Pre", "Sht"], NARROWWEEKDAYS:["D", "H", "M", "M", "E", "P", "S"], STANDALONENARROWWEEKDAYS:["D", "H", "M", "M", "E", "P", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Q1", "Q2", "Q3", "Q4"], AMPMS:["PD", "MD"], DATEFORMATS:["EEEE, dd MMMM y", "dd MMMM y", "y-MM-dd", "yy-MM-dd"], TIMEFORMATS:["h.mm.ss.a zzzz", "h.mm.ss.a z", "h.mm.ss.a", "h.mm.a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_sr = {ERAS:["\u043f. \u043d. \u0435.", "\u043d. \u0435."], ERANAMES:["\u041f\u0440\u0435 \u043d\u043e\u0432\u0435 \u0435\u0440\u0435", "\u041d\u043e\u0432\u0435 \u0435\u0440\u0435"], NARROWMONTHS:["\u0458", "\u0444", "\u043c", "\u0430", "\u043c", "\u0458", "\u0458", "\u0430", "\u0441", "\u043e", "\u043d", "\u0434"], STANDALONENARROWMONTHS:["\u0458", "\u0444", "\u043c", "\u0430", "\u043c", "\u0458", "\u0458", "\u0430", "\u0441", "\u043e", "\u043d", "\u0434"], MONTHS:["\u0458\u0430\u043d\u0443\u0430\u0440", "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", "\u043c\u0430\u0440\u0442", "\u0430\u043f\u0440\u0438\u043b", "\u043c\u0430\u0458", "\u0458\u0443\u043d", "\u0458\u0443\u043b", "\u0430\u0432\u0433\u0443\u0441\u0442", "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"], STANDALONEMONTHS:["\u0458\u0430\u043d\u0443\u0430\u0440", "\u0444\u0435\u0431\u0440\u0443\u0430\u0440", "\u043c\u0430\u0440\u0442", "\u0430\u043f\u0440\u0438\u043b", "\u043c\u0430\u0458", "\u0458\u0443\u043d", "\u0458\u0443\u043b", "\u0430\u0432\u0433\u0443\u0441\u0442", "\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440", "\u043e\u043a\u0442\u043e\u0431\u0430\u0440", "\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440", "\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440"], SHORTMONTHS:["\u0458\u0430\u043d", "\u0444\u0435\u0431", "\u043c\u0430\u0440", "\u0430\u043f\u0440", "\u043c\u0430\u0458", "\u0458\u0443\u043d", "\u0458\u0443\u043b", "\u0430\u0432\u0433", "\u0441\u0435\u043f", "\u043e\u043a\u0442", "\u043d\u043e\u0432", "\u0434\u0435\u0446"], STANDALONESHORTMONTHS:["\u0458\u0430\u043d", "\u0444\u0435\u0431", "\u043c\u0430\u0440", "\u0430\u043f\u0440", "\u043c\u0430\u0458", "\u0458\u0443\u043d", "\u0458\u0443\u043b", "\u0430\u0432\u0433", "\u0441\u0435\u043f", "\u043e\u043a\u0442", "\u043d\u043e\u0432", "\u0434\u0435\u0446"], WEEKDAYS:["\u043d\u0435\u0434\u0435\u0459\u0430", "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", "\u0443\u0442\u043e\u0440\u0430\u043a", "\u0441\u0440\u0435\u0434\u0430", "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", "\u043f\u0435\u0442\u0430\u043a", "\u0441\u0443\u0431\u043e\u0442\u0430"], STANDALONEWEEKDAYS:["\u043d\u0435\u0434\u0435\u0459\u0430", "\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a", "\u0443\u0442\u043e\u0440\u0430\u043a", "\u0441\u0440\u0435\u0434\u0430", "\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a", "\u043f\u0435\u0442\u0430\u043a", "\u0441\u0443\u0431\u043e\u0442\u0430"], SHORTWEEKDAYS:["\u043d\u0435\u0434", "\u043f\u043e\u043d", "\u0443\u0442\u043e", "\u0441\u0440\u0435", "\u0447\u0435\u0442", "\u043f\u0435\u0442", "\u0441\u0443\u0431"], STANDALONESHORTWEEKDAYS:["\u043d\u0435\u0434", "\u043f\u043e\u043d", "\u0443\u0442\u043e", "\u0441\u0440\u0435", "\u0447\u0435\u0442", "\u043f\u0435\u0442", "\u0441\u0443\u0431"], NARROWWEEKDAYS:["\u043d", "\u043f", "\u0443", "\u0441", "\u0447", "\u043f", "\u0441"], STANDALONENARROWWEEKDAYS:["\u043d", "\u043f", "\u0443", "\u0441", "\u0447", "\u043f", "\u0441"], SHORTQUARTERS:["\u041a1", "\u041a2", "\u041a3", "\u041a4"], QUARTERS:["\u041f\u0440\u0432\u043e \u0442\u0440\u043e\u043c\u0435\u0441\u0435\u0447\u0458\u0435", "\u0414\u0440\u0443\u0433\u043e \u0442\u0440\u043e\u043c\u0435\u0441\u0435\u0447\u0458\u0435", "\u0422\u0440\u0435\u045b\u0435 \u0442\u0440\u043e\u043c\u0435\u0441\u0435\u0447\u0458\u0435", "\u0427\u0435\u0442\u0432\u0440\u0442\u043e \u0442\u0440\u043e\u043c\u0435\u0441\u0435\u0447\u0458\u0435"], AMPMS:["\u043f\u0440\u0435 \u043f\u043e\u0434\u043d\u0435", "\u043f\u043e\u043f\u043e\u0434\u043d\u0435"], DATEFORMATS:["EEEE, dd. MMMM y.", "dd. MMMM y.", "dd.MM.y.", "d.M.yy."], TIMEFORMATS:["HH.mm.ss zzzz", "HH.mm.ss z", "HH.mm.ss", "HH.mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_sv = {ERAS:["f.Kr.", "e.Kr."], ERANAMES:["f\u00f6re Kristus", "efter Kristus"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["januari", "februari", "mars", "april", "maj", "juni", "juli", "augusti", "september", "oktober", "november", "december"], STANDALONEMONTHS:["Januari", "Februari", "Mars", "April", "Maj", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"], SHORTMONTHS:["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], WEEKDAYS:["s\u00f6ndag", "m\u00e5ndag", "tisdag", "onsdag", "torsdag", "fredag", "l\u00f6rdag"], STANDALONEWEEKDAYS:["S\u00f6ndag", "M\u00e5ndag", "Tisdag", "Onsdag", "Torsdag", "Fredag", "L\u00f6rdag"], SHORTWEEKDAYS:["s\u00f6n", "m\u00e5n", "tis", "ons", "tors", "fre", "l\u00f6r"], STANDALONESHORTWEEKDAYS:["S\u00f6n", "M\u00e5n", "Tis", "Ons", "Tor", "Fre", "L\u00f6r"], NARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "O", "T", "F", "L"], SHORTQUARTERS:["K1", "K2", "K3", "K4"], QUARTERS:["1:a kvartalet", "2:a kvartalet", "3:e kvartalet", "4:e kvartalet"], AMPMS:["fm", "em"], DATEFORMATS:["EEEE'en' 'den' d:'e' MMMM y", "d MMMM y", "d MMM y", "y-MM-dd"], TIMEFORMATS:["'kl'. HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:3}; goog.i18n.DateTimeSymbols_sw = {ERAS:["KK", "BK"], ERANAMES:["Kabla ya Kristo", "Baada ya Kristo"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"], STANDALONEMONTHS:["Januari", "Februari", "Machi", "Aprili", "Mei", "Juni", "Julai", "Agosti", "Septemba", "Oktoba", "Novemba", "Desemba"], SHORTMONTHS:["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mac", "Apr", "Mei", "Jun", "Jul", "Ago", "Sep", "Okt", "Nov", "Des"], WEEKDAYS:["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi"], STANDALONEWEEKDAYS:["Jumapili", "Jumatatu", "Jumanne", "Jumatano", "Alhamisi", "Ijumaa", "Jumamosi"], SHORTWEEKDAYS:["J2", "J3", "J4", "J5", "Alh", "Ij", "J1"], STANDALONESHORTWEEKDAYS:["J2", "J3", "J4", "J5", "Alh", "Ij", "J1"], NARROWWEEKDAYS:["2", "3", "4", "5", "A", "I", "1"], STANDALONENARROWWEEKDAYS:["2", "3", "4", "5", "A", "I", "1"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Robo 1", "Robo 2", "Robo 3", "Robo 4"], AMPMS:["asubuhi", "alasiri"], DATEFORMATS:["EEEE, d MMMM y", "d MMMM y", "d MMM y", "dd/MM/y"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_ta = {ERAS:["\u0b95\u0bbf.\u0bae\u0bc1.", "\u0b95\u0bbf.\u0baa\u0bbf."], ERANAMES:["\u0b95\u0bbf\u0bb1\u0bbf\u0bb8\u0bcd\u0ba4\u0bc1\u0bb5\u0bc1\u0b95\u0bcd\u0b95\u0bc1 \u0bae\u0bc1\u0ba9\u0bcd", "\u0b85\u0ba9\u0bcb \u0b9f\u0bcb\u0bae\u0bbf\u0ba9\u0bbf"], NARROWMONTHS:["\u0b9c", "\u0baa\u0bbf", "\u0bae\u0bbe", "\u0b8f", "\u0bae\u0bc7", "\u0b9c\u0bc2", "\u0b9c\u0bc2", "\u0b86", "\u0b9a\u0bc6", "\u0b85", "\u0ba8", "\u0b9f\u0bbf"], STANDALONENARROWMONTHS:["\u0b9c", "\u0baa\u0bbf", "\u0bae\u0bbe", "\u0b8f", "\u0bae\u0bc7", "\u0b9c\u0bc2", "\u0b9c\u0bc2", "\u0b86", "\u0b9a\u0bc6", "\u0b85", "\u0ba8", "\u0b9f\u0bbf"], MONTHS:["\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", "\u0bae\u0bc7", "\u0b9c\u0bc2\u0ba9\u0bcd", "\u0b9c\u0bc2\u0bb2\u0bc8", "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd", "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd"], STANDALONEMONTHS:["\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf", "\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf", "\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd", "\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd", "\u0bae\u0bc7", "\u0b9c\u0bc2\u0ba9\u0bcd", "\u0b9c\u0bc2\u0bb2\u0bc8", "\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bc1", "\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bae\u0bcd\u0baa\u0bb0\u0bcd", "\u0b85\u0b95\u0bcd\u0b9f\u0bcb\u0baa\u0bb0\u0bcd", "\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd", "\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd"], SHORTMONTHS:["\u0b9c\u0ba9.", "\u0baa\u0bbf\u0baa\u0bcd.", "\u0bae\u0bbe\u0bb0\u0bcd.", "\u0b8f\u0baa\u0bcd.", "\u0bae\u0bc7", "\u0b9c\u0bc2\u0ba9\u0bcd", "\u0b9c\u0bc2\u0bb2\u0bc8", "\u0b86\u0b95.", "\u0b9a\u0bc6\u0baa\u0bcd.", "\u0b85\u0b95\u0bcd.", "\u0ba8\u0bb5.", "\u0b9f\u0bbf\u0b9a."], STANDALONESHORTMONTHS:["\u0b9c\u0ba9.", "\u0baa\u0bbf\u0baa\u0bcd.", "\u0bae\u0bbe\u0bb0\u0bcd.", "\u0b8f\u0baa\u0bcd.", "\u0bae\u0bc7", "\u0b9c\u0bc2\u0ba9\u0bcd", "\u0b9c\u0bc2\u0bb2\u0bc8", "\u0b86\u0b95.", "\u0b9a\u0bc6\u0baa\u0bcd.", "\u0b85\u0b95\u0bcd.", "\u0ba8\u0bb5.", "\u0b9f\u0bbf\u0b9a."], WEEKDAYS:["\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", "\u0b9a\u0ba9\u0bbf"], STANDALONEWEEKDAYS:["\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1", "\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd", "\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd", "\u0baa\u0bc1\u0ba4\u0ba9\u0bcd", "\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd", "\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf", "\u0b9a\u0ba9\u0bbf"], SHORTWEEKDAYS:["\u0b9e\u0bbe", "\u0ba4\u0bbf", "\u0b9a\u0bc6", "\u0baa\u0bc1", "\u0bb5\u0bbf", "\u0bb5\u0bc6", "\u0b9a"], STANDALONESHORTWEEKDAYS:["\u0b9e\u0bbe", "\u0ba4\u0bbf", "\u0b9a\u0bc6", "\u0baa\u0bc1", "\u0bb5\u0bbf", "\u0bb5\u0bc6", "\u0b9a"], NARROWWEEKDAYS:["\u0b9e\u0bbe", "\u0ba4\u0bbf", "\u0b9a\u0bc6", "\u0baa\u0bc1", "\u0bb5\u0bbf", "\u0bb5\u0bc6", "\u0b9a"], STANDALONENARROWWEEKDAYS:["\u0b9e\u0bbe", "\u0ba4\u0bbf", "\u0b9a\u0bc6", "\u0baa\u0bc1", "\u0bb5\u0bbf", "\u0bb5\u0bc6", "\u0b9a"], SHORTQUARTERS:["\u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc11", "\u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc12", "\u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc13", "\u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc14"], QUARTERS:["\u0bae\u0bc1\u0ba4\u0bb2\u0bcd \u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc1", "\u0b87\u0bb0\u0ba3\u0bcd\u0b9f\u0bbe\u0bae\u0bcd \u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc1", "\u0bae\u0bc2\u0ba9\u0bcd\u0bb1\u0bbe\u0bae\u0bcd \u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc1", "\u0ba8\u0bbe\u0ba9\u0bcd\u0b95\u0bbe\u0bae\u0bcd \u0b95\u0bbe\u0bb2\u0bbe\u0ba3\u0bcd\u0b9f\u0bc1"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, d MMMM, y", "d MMMM, y", "d MMM, y", "d-M-yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_te = {ERAS:["\u0c15\u0c4d\u0c30\u0c40\u0c2a\u0c42", "\u0c15\u0c4d\u0c30\u0c40\u0c36"], ERANAMES:["\u0c08\u0c38\u0c3e\u0c2a\u0c42\u0c30\u0c4d\u0c35.", "\u0c38\u0c28\u0c4d."], NARROWMONTHS:["\u0c1c", "\u0c2b\u0c3f", "\u0c2e\u0c3e", "\u0c0f", "\u0c2e\u0c47", "\u0c1c\u0c42", "\u0c1c\u0c41", "\u0c06", "\u0c38\u0c46", "\u0c05", "\u0c28", "\u0c21\u0c3f"], STANDALONENARROWMONTHS:["\u0c1c", "\u0c2b\u0c3f", "\u0c2e\u0c3e", "\u0c0f", "\u0c2e\u0c47", "\u0c1c\u0c41", "\u0c1c\u0c41", "\u0c06", "\u0c38\u0c46", "\u0c05", "\u0c28", "\u0c21\u0c3f"], MONTHS:["\u0c1c\u0c28\u0c35\u0c30\u0c3f", "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f", "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d", "\u0c2e\u0c47", "\u0c1c\u0c42\u0c28\u0c4d", "\u0c1c\u0c42\u0c32\u0c48", "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41", "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d", "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d", "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d", "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"], STANDALONEMONTHS:["\u0c1c\u0c28\u0c35\u0c30\u0c3f", "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f", "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", "\u0c0e\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d", "\u0c2e\u0c47", "\u0c1c\u0c42\u0c28\u0c4d", "\u0c1c\u0c42\u0c32\u0c48", "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41", "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d", "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d", "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d", "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"], SHORTMONTHS:["\u0c1c\u0c28", "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30", "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f", "\u0c2e\u0c47", "\u0c1c\u0c42\u0c28\u0c4d", "\u0c1c\u0c42\u0c32\u0c48", "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41", "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d", "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d", "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d", "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d"], STANDALONESHORTMONTHS:["\u0c1c\u0c28", "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30", "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f", "\u0c2e\u0c47", "\u0c1c\u0c42\u0c28\u0c4d", "\u0c1c\u0c42\u0c32\u0c48", "\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41", "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02", "\u0c05\u0c15\u0c4d\u0c1f\u0c4b", "\u0c28\u0c35\u0c02", "\u0c21\u0c3f\u0c38\u0c46\u0c02"], WEEKDAYS:["\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02", "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02", "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02", "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02", "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02", "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02", "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02"], STANDALONEWEEKDAYS:["\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02", "\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02", "\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02", "\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02", "\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02", "\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02", "\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02"], SHORTWEEKDAYS:["\u0c06\u0c26\u0c3f", "\u0c38\u0c4b\u0c2e", "\u0c2e\u0c02\u0c17\u0c33", "\u0c2c\u0c41\u0c27", "\u0c17\u0c41\u0c30\u0c41", "\u0c36\u0c41\u0c15\u0c4d\u0c30", "\u0c36\u0c28\u0c3f"], STANDALONESHORTWEEKDAYS:["\u0c06\u0c26\u0c3f", "\u0c38\u0c4b\u0c2e", "\u0c2e\u0c02\u0c17\u0c33", "\u0c2c\u0c41\u0c27", "\u0c17\u0c41\u0c30\u0c41", "\u0c36\u0c41\u0c15\u0c4d\u0c30", "\u0c36\u0c28\u0c3f"], NARROWWEEKDAYS:["\u0c06", "\u0c38\u0c4b", "\u0c2e", "\u0c2c\u0c41", "\u0c17\u0c41", "\u0c36\u0c41", "\u0c36"], STANDALONENARROWWEEKDAYS:["\u0c06", "\u0c38\u0c4b", "\u0c2e", "\u0c2c\u0c41", "\u0c17\u0c41", "\u0c36\u0c41", "\u0c36"], SHORTQUARTERS:["\u0c24\u0c4d\u0c30\u0c481", "\u0c24\u0c4d\u0c30\u0c482", "\u0c24\u0c4d\u0c30\u0c483", "\u0c24\u0c4d\u0c30\u0c484"], QUARTERS:["1\u0c35 \u0c24\u0c4d\u0c30\u0c48\u0c2e\u0c3e\u0c38\u0c02", "2\u0c35 \u0c24\u0c4d\u0c30\u0c48\u0c2e\u0c3e\u0c38\u0c02", "3\u0c35 \u0c24\u0c4d\u0c30\u0c48\u0c2e\u0c3e\u0c38\u0c02", "4\u0c35 \u0c24\u0c4d\u0c30\u0c48\u0c2e\u0c3e\u0c38\u0c02"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE d MMMM y", "d MMMM y", "d MMM y", "dd-MM-yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[6, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_th = {ERAS:["\u0e1b\u0e35\u0e01\u0e48\u0e2d\u0e19 \u0e04.\u0e28.", "\u0e04.\u0e28."], ERANAMES:["\u0e1b\u0e35\u0e01\u0e48\u0e2d\u0e19\u0e04\u0e23\u0e34\u0e2a\u0e15\u0e4c\u0e28\u0e31\u0e01\u0e23\u0e32\u0e0a", "\u0e04\u0e23\u0e34\u0e2a\u0e15\u0e4c\u0e28\u0e31\u0e01\u0e23\u0e32\u0e0a"], NARROWMONTHS:["\u0e21.\u0e04.", "\u0e01.\u0e1e.", "\u0e21\u0e35.\u0e04.", "\u0e40\u0e21.\u0e22.", "\u0e1e.\u0e04.", "\u0e21\u0e34.\u0e22", "\u0e01.\u0e04.", "\u0e2a.\u0e04.", "\u0e01.\u0e22.", "\u0e15.\u0e04.", "\u0e1e.\u0e22.", "\u0e18.\u0e04."], STANDALONENARROWMONTHS:["\u0e21.\u0e04.", "\u0e01.\u0e1e.", "\u0e21\u0e35.\u0e04.", "\u0e40\u0e21.\u0e22.", "\u0e1e.\u0e04.", "\u0e21\u0e34.\u0e22.", "\u0e01.\u0e04.", "\u0e2a.\u0e04.", "\u0e01.\u0e22.", "\u0e15.\u0e04.", "\u0e1e.\u0e22.", "\u0e18.\u0e04."], MONTHS:["\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21", "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c", "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21", "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19", "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21", "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19", "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21", "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21", "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19", "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21", "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19", "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"], STANDALONEMONTHS:["\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21", "\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c", "\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21", "\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19", "\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21", "\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19", "\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21", "\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21", "\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19", "\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21", "\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19", "\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21"], SHORTMONTHS:["\u0e21.\u0e04.", "\u0e01.\u0e1e.", "\u0e21\u0e35.\u0e04.", "\u0e40\u0e21.\u0e22.", "\u0e1e.\u0e04.", "\u0e21\u0e34.\u0e22.", "\u0e01.\u0e04.", "\u0e2a.\u0e04.", "\u0e01.\u0e22.", "\u0e15.\u0e04.", "\u0e1e.\u0e22.", "\u0e18.\u0e04."], STANDALONESHORTMONTHS:["\u0e21.\u0e04.", "\u0e01.\u0e1e.", "\u0e21\u0e35.\u0e04.", "\u0e40\u0e21.\u0e22.", "\u0e1e.\u0e04.", "\u0e21\u0e34.\u0e22.", "\u0e01.\u0e04.", "\u0e2a.\u0e04.", "\u0e01.\u0e22.", "\u0e15.\u0e04.", "\u0e1e.\u0e22.", "\u0e18.\u0e04."], WEEKDAYS:["\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c", "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c", "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23", "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18", "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35", "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c", "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c"], STANDALONEWEEKDAYS:["\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c", "\u0e27\u0e31\u0e19\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c", "\u0e27\u0e31\u0e19\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23", "\u0e27\u0e31\u0e19\u0e1e\u0e38\u0e18", "\u0e27\u0e31\u0e19\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35", "\u0e27\u0e31\u0e19\u0e28\u0e38\u0e01\u0e23\u0e4c", "\u0e27\u0e31\u0e19\u0e40\u0e2a\u0e32\u0e23\u0e4c"], SHORTWEEKDAYS:["\u0e2d\u0e32.", "\u0e08.", "\u0e2d.", "\u0e1e.", "\u0e1e\u0e24.", "\u0e28.", "\u0e2a."], STANDALONESHORTWEEKDAYS:["\u0e2d\u0e32.", "\u0e08.", "\u0e2d.", "\u0e1e.", "\u0e1e\u0e24.", "\u0e28.", "\u0e2a."], NARROWWEEKDAYS:["\u0e2d\u0e32.", "\u0e08.", "\u0e2d.", "\u0e1e.", "\u0e1e\u0e24.", "\u0e28.", "\u0e2a."], STANDALONENARROWWEEKDAYS:["\u0e2d\u0e32.", "\u0e08.", "\u0e2d.", "\u0e1e.", "\u0e1e\u0e24.", "\u0e28.", "\u0e2a."], SHORTQUARTERS:["\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 1", "\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 2", "\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 3", "\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 4"], QUARTERS:["\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 1", "\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 2", "\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 3", "\u0e44\u0e15\u0e23\u0e21\u0e32\u0e2a 4"], AMPMS:["\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07", "\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"], DATEFORMATS:["EEEE\u0e17\u0e35\u0e48 d MMMM G y", "d MMMM y", "d MMM y", "d/M/yy"], TIMEFORMATS:["H \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32 mm \u0e19\u0e32\u0e17\u0e35 ss \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 zzzz", "H \u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32 mm \u0e19\u0e32\u0e17\u0e35 ss \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1}, {0}", "{1}, {0}", "{1}, {0}", "{1}, {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_tl = {ERAS:["BC", "AD"], ERANAMES:["BC", "AD"], NARROWMONTHS:["E", "P", "M", "A", "M", "H", "H", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["E", "P", "M", "A", "M", "H", "H", "A", "S", "O", "N", "D"], MONTHS:["Enero", "Pebrero", "Marso", "Abril", "Mayo", "Hunyo", "Hulyo", "Agosto", "Setyembre", "Oktubre", "Nobyembre", "Disyembre"], STANDALONEMONTHS:["Enero", "Pebrero", "Marso", "Abril", "Mayo", "Hunyo", "Hulyo", "Agosto", "Setyembre", "Oktubre", "Nobyembre", "Disyembre"], SHORTMONTHS:["Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis"], STANDALONESHORTMONTHS:["Ene", "Peb", "Mar", "Abr", "May", "Hun", "Hul", "Ago", "Set", "Okt", "Nob", "Dis"], WEEKDAYS:["Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado"], STANDALONEWEEKDAYS:["Linggo", "Lunes", "Martes", "Miyerkules", "Huwebes", "Biyernes", "Sabado"], SHORTWEEKDAYS:["Lin", "Lun", "Mar", "Mye", "Huw", "Bye", "Sab"], STANDALONESHORTWEEKDAYS:["Lin", "Lun", "Mar", "Miy", "Huw", "Biy", "Sab"], NARROWWEEKDAYS:["L", "L", "M", "M", "H", "B", "S"], STANDALONENARROWWEEKDAYS:["L", "L", "M", "M", "H", "B", "S"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["ika-1 sangkapat", "ika-2 sangkapat", "ika-3 quarter", "ika-4 na quarter"], AMPMS:["AM", "PM"], DATEFORMATS:["EEEE, MMMM dd y", "MMMM d, y", "MMM d, y", "M/d/yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_tr = {ERAS:["M\u00d6", "MS"], ERANAMES:["Milattan \u00d6nce", "Milattan Sonra"], NARROWMONTHS:["O", "\u015e", "M", "N", "M", "H", "T", "A", "E", "E", "K", "A"], STANDALONENARROWMONTHS:["O", "\u015e", "M", "N", "M", "H", "T", "A", "E", "E", "K", "A"], MONTHS:["Ocak", "\u015eubat", "Mart", "Nisan", "May\u0131s", "Haziran", "Temmuz", "A\u011fustos", "Eyl\u00fcl", "Ekim", "Kas\u0131m", "Aral\u0131k"], STANDALONEMONTHS:["Ocak", "\u015eubat", "Mart", "Nisan", "May\u0131s", "Haziran", "Temmuz", "A\u011fustos", "Eyl\u00fcl", "Ekim", "Kas\u0131m", "Aral\u0131k"], SHORTMONTHS:["Oca", "\u015eub", "Mar", "Nis", "May", "Haz", "Tem", "A\u011fu", "Eyl", "Eki", "Kas", "Ara"], STANDALONESHORTMONTHS:["Oca", "\u015eub", "Mar", "Nis", "May", "Haz", "Tem", "A\u011fu", "Eyl", "Eki", "Kas", "Ara"], WEEKDAYS:["Pazar", "Pazartesi", "Sal\u0131", "\u00c7ar\u015famba", "Per\u015fembe", "Cuma", "Cumartesi"], STANDALONEWEEKDAYS:["Pazar", "Pazartesi", "Sal\u0131", "\u00c7ar\u015famba", "Per\u015fembe", "Cuma", "Cumartesi"], SHORTWEEKDAYS:["Paz", "Pzt", "Sal", "\u00c7ar", "Per", "Cum", "Cmt"], STANDALONESHORTWEEKDAYS:["Paz", "Pzt", "Sal", "\u00c7ar", "Per", "Cum", "Cmt"], NARROWWEEKDAYS:["P", "P", "S", "\u00c7", "P", "C", "C"], STANDALONENARROWWEEKDAYS:["P", "P", "S", "\u00c7", "P", "C", "C"], SHORTQUARTERS:["\u00c71", "\u00c72", "\u00c73", "\u00c74"], QUARTERS:["1. \u00e7eyrek", "2. \u00e7eyrek", "3. \u00e7eyrek", "4. \u00e7eyrek"], AMPMS:["\u00d6\u00d6", "\u00d6S"], DATEFORMATS:["d MMMM y EEEE", "d MMMM y", "d MMM y", "d MM y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_uk = {ERAS:["\u0434\u043e \u043d.\u0435.", "\u043d.\u0435."], ERANAMES:["\u0434\u043e \u043d\u0430\u0448\u043e\u0457 \u0435\u0440\u0438", "\u043d\u0430\u0448\u043e\u0457 \u0435\u0440\u0438"], NARROWMONTHS:["\u0421", "\u041b", "\u0411", "\u041a", "\u0422", "\u0427", "\u041b", "\u0421", "\u0412", "\u0416", "\u041b", "\u0413"], STANDALONENARROWMONTHS:["\u0421", "\u041b", "\u0411", "\u041a", "\u0422", "\u0427", "\u041b", "\u0421", "\u0412", "\u0416", "\u041b", "\u0413"], MONTHS:["\u0441\u0456\u0447\u043d\u044f", "\u043b\u044e\u0442\u043e\u0433\u043e", "\u0431\u0435\u0440\u0435\u0437\u043d\u044f", "\u043a\u0432\u0456\u0442\u043d\u044f", "\u0442\u0440\u0430\u0432\u043d\u044f", "\u0447\u0435\u0440\u0432\u043d\u044f", "\u043b\u0438\u043f\u043d\u044f", "\u0441\u0435\u0440\u043f\u043d\u044f", "\u0432\u0435\u0440\u0435\u0441\u043d\u044f", "\u0436\u043e\u0432\u0442\u043d\u044f", "\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430", "\u0433\u0440\u0443\u0434\u043d\u044f"], STANDALONEMONTHS:["\u0421\u0456\u0447\u0435\u043d\u044c", "\u041b\u044e\u0442\u0438\u0439", "\u0411\u0435\u0440\u0435\u0437\u0435\u043d\u044c", "\u041a\u0432\u0456\u0442\u0435\u043d\u044c", "\u0422\u0440\u0430\u0432\u0435\u043d\u044c", "\u0427\u0435\u0440\u0432\u0435\u043d\u044c", "\u041b\u0438\u043f\u0435\u043d\u044c", "\u0421\u0435\u0440\u043f\u0435\u043d\u044c", "\u0412\u0435\u0440\u0435\u0441\u0435\u043d\u044c", "\u0416\u043e\u0432\u0442\u0435\u043d\u044c", "\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434", "\u0413\u0440\u0443\u0434\u0435\u043d\u044c"], SHORTMONTHS:["\u0441\u0456\u0447.", "\u043b\u044e\u0442.", "\u0431\u0435\u0440.", "\u043a\u0432\u0456\u0442.", "\u0442\u0440\u0430\u0432.", "\u0447\u0435\u0440\u0432.", "\u043b\u0438\u043f.", "\u0441\u0435\u0440\u043f.", "\u0432\u0435\u0440.", "\u0436\u043e\u0432\u0442.", "\u043b\u0438\u0441\u0442.", "\u0433\u0440\u0443\u0434."], STANDALONESHORTMONTHS:["\u0421\u0456\u0447", "\u041b\u044e\u0442", "\u0411\u0435\u0440", "\u041a\u0432\u0456", "\u0422\u0440\u0430", "\u0427\u0435\u0440", "\u041b\u0438\u043f", "\u0421\u0435\u0440", "\u0412\u0435\u0440", "\u0416\u043e\u0432", "\u041b\u0438\u0441", "\u0413\u0440\u0443"], WEEKDAYS:["\u041d\u0435\u0434\u0456\u043b\u044f", "\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a", "\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a", "\u0421\u0435\u0440\u0435\u0434\u0430", "\u0427\u0435\u0442\u0432\u0435\u0440", "\u041f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f", "\u0421\u0443\u0431\u043e\u0442\u0430"], STANDALONEWEEKDAYS:["\u041d\u0435\u0434\u0456\u043b\u044f", "\u041f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a", "\u0412\u0456\u0432\u0442\u043e\u0440\u043e\u043a", "\u0421\u0435\u0440\u0435\u0434\u0430", "\u0427\u0435\u0442\u0432\u0435\u0440", "\u041f\u02bc\u044f\u0442\u043d\u0438\u0446\u044f", "\u0421\u0443\u0431\u043e\u0442\u0430"], SHORTWEEKDAYS:["\u041d\u0434", "\u041f\u043d", "\u0412\u0442", "\u0421\u0440", "\u0427\u0442", "\u041f\u0442", "\u0421\u0431"], STANDALONESHORTWEEKDAYS:["\u041d\u0434", "\u041f\u043d", "\u0412\u0442", "\u0421\u0440", "\u0427\u0442", "\u041f\u0442", "\u0421\u0431"], NARROWWEEKDAYS:["\u041d", "\u041f", "\u0412", "\u0421", "\u0427", "\u041f", "\u0421"], STANDALONENARROWWEEKDAYS:["\u041d", "\u041f", "\u0412", "\u0421", "\u0427", "\u041f", "\u0421"], SHORTQUARTERS:["I \u043a\u0432.", "II \u043a\u0432.", "III \u043a\u0432.", "IV \u043a\u0432."], QUARTERS:["I \u043a\u0432\u0430\u0440\u0442\u0430\u043b", "II \u043a\u0432\u0430\u0440\u0442\u0430\u043b", "III \u043a\u0432\u0430\u0440\u0442\u0430\u043b", "IV \u043a\u0432\u0430\u0440\u0442\u0430\u043b"], AMPMS:["\u0434\u043f", "\u043f\u043f"], DATEFORMATS:["EEEE, d MMMM y '\u0440'.", "d MMMM y '\u0440'.", "d MMM y", "dd.MM.yy"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_ur = {ERAS:["\u0642 \u0645", "\u0639\u06cc\u0633\u0648\u06cc \u0633\u0646"], ERANAMES:["\u0642\u0628\u0644 \u0645\u0633\u06cc\u062d", "\u0639\u06cc\u0633\u0648\u06cc \u0633\u0646"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["\u062c\u0646\u0648\u0631\u06cc", "\u0641\u0631\u0648\u0631\u06cc", "\u0645\u0627\u0631\u0686", "\u0627\u067e\u0631\u06cc\u0644", "\u0645\u0626", "\u062c\u0648\u0646", "\u062c\u0648\u0644\u0627\u0626", "\u0627\u06af\u0633\u062a", "\u0633\u062a\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0648\u0628\u0631", "\u0646\u0648\u0645\u0628\u0631", "\u062f\u0633\u0645\u0628\u0631"], STANDALONEMONTHS:["\u062c\u0646\u0648\u0631\u06cc", "\u0641\u0631\u0648\u0631\u06cc", "\u0645\u0627\u0631\u0686", "\u0627\u067e\u0631\u06cc\u0644", "\u0645\u0626", "\u062c\u0648\u0646", "\u062c\u0648\u0644\u0627\u0626", "\u0627\u06af\u0633\u062a", "\u0633\u062a\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0648\u0628\u0631", "\u0646\u0648\u0645\u0628\u0631", "\u062f\u0633\u0645\u0628\u0631"], SHORTMONTHS:["\u062c\u0646\u0648\u0631\u06cc", "\u0641\u0631\u0648\u0631\u06cc", "\u0645\u0627\u0631\u0686", "\u0627\u067e\u0631\u06cc\u0644", "\u0645\u0626", "\u062c\u0648\u0646", "\u062c\u0648\u0644\u0627\u0626", "\u0627\u06af\u0633\u062a", "\u0633\u062a\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0648\u0628\u0631", "\u0646\u0648\u0645\u0628\u0631", "\u062f\u0633\u0645\u0628\u0631"], STANDALONESHORTMONTHS:["\u062c\u0646\u0648\u0631\u06cc", "\u0641\u0631\u0648\u0631\u06cc", "\u0645\u0627\u0631\u0686", "\u0627\u067e\u0631\u06cc\u0644", "\u0645\u0626", "\u062c\u0648\u0646", "\u062c\u0648\u0644\u0627\u0626", "\u0627\u06af\u0633\u062a", "\u0633\u062a\u0645\u0628\u0631", "\u0627\u06a9\u062a\u0648\u0628\u0631", "\u0646\u0648\u0645\u0628\u0631", "\u062f\u0633\u0645\u0628\u0631"], WEEKDAYS:["\u0627\u062a\u0648\u0627\u0631", "\u067e\u06cc\u0631", "\u0645\u0646\u06af\u0644", "\u0628\u062f\u0647", "\u062c\u0645\u0639\u0631\u0627\u062a", "\u062c\u0645\u0639\u06c1", "\u06c1\u0641\u062a\u06c1"], STANDALONEWEEKDAYS:["\u0627\u062a\u0648\u0627\u0631", "\u067e\u06cc\u0631", "\u0645\u0646\u06af\u0644", "\u0628\u062f\u0647", "\u062c\u0645\u0639\u0631\u0627\u062a", "\u062c\u0645\u0639\u06c1", "\u06c1\u0641\u062a\u06c1"], SHORTWEEKDAYS:["\u0627\u062a\u0648\u0627\u0631", "\u067e\u06cc\u0631", "\u0645\u0646\u06af\u0644", "\u0628\u062f\u0647", "\u062c\u0645\u0639\u0631\u0627\u062a", "\u062c\u0645\u0639\u06c1", "\u06c1\u0641\u062a\u06c1"], STANDALONESHORTWEEKDAYS:["\u0627\u062a\u0648\u0627\u0631", "\u067e\u06cc\u0631", "\u0645\u0646\u06af\u0644", "\u0628\u062f\u0647", "\u062c\u0645\u0639\u0631\u0627\u062a", "\u062c\u0645\u0639\u06c1", "\u06c1\u0641\u062a\u06c1"], NARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], STANDALONENARROWWEEKDAYS:["S", "M", "T", "W", "T", "F", "S"], SHORTQUARTERS:["\u067e\u06c1\u0644\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc", "\u062f\u0648\u0633\u0631\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc", "\u062a\u06cc\u0633\u0631\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc", "\u0686\u0648\u062a\u0647\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc"], QUARTERS:["\u067e\u06c1\u0644\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc", "\u062f\u0648\u0633\u0631\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc", "\u062a\u06cc\u0633\u0631\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc", "\u0686\u0648\u062a\u0647\u06cc \u0633\u06c1 \u0645\u0627\u06c1\u06cc"], AMPMS:["\u0642\u0628\u0644 \u062f\u0648\u067e\u06c1\u0631", "\u0628\u0639\u062f \u062f\u0648\u067e\u06c1\u0631"], DATEFORMATS:["EEEE\u060c d MMMM\u060c y", "d MMMM\u060c y", "d MMM\u060c y", "d/M/yy"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_vi = {ERAS:["tr. CN", "sau CN"], ERANAMES:["tr. CN", "sau CN"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["th\u00e1ng m\u1ed9t", "th\u00e1ng hai", "th\u00e1ng ba", "th\u00e1ng t\u01b0", "th\u00e1ng n\u0103m", "th\u00e1ng s\u00e1u", "th\u00e1ng b\u1ea3y", "th\u00e1ng t\u00e1m", "th\u00e1ng ch\u00edn", "th\u00e1ng m\u01b0\u1eddi", "th\u00e1ng m\u01b0\u1eddi m\u1ed9t", "th\u00e1ng m\u01b0\u1eddi hai"], STANDALONEMONTHS:["th\u00e1ng m\u1ed9t", "th\u00e1ng hai", "th\u00e1ng ba", "th\u00e1ng t\u01b0", "th\u00e1ng n\u0103m", "th\u00e1ng s\u00e1u", "th\u00e1ng b\u1ea3y", "th\u00e1ng t\u00e1m", "th\u00e1ng ch\u00edn", "th\u00e1ng m\u01b0\u1eddi", "th\u00e1ng m\u01b0\u1eddi m\u1ed9t", "th\u00e1ng m\u01b0\u1eddi hai"], SHORTMONTHS:["thg 1", "thg 2", "thg 3", "thg 4", "thg 5", "thg 6", "thg 7", "thg 8", "thg 9", "thg 10", "thg 11", "thg 12"], STANDALONESHORTMONTHS:["thg 1", "thg 2", "thg 3", "thg 4", "thg 5", "thg 6", "thg 7", "thg 8", "thg 9", "thg 10", "thg 11", "thg 12"], WEEKDAYS:["Ch\u1ee7 nh\u1eadt", "Th\u1ee9 hai", "Th\u1ee9 ba", "Th\u1ee9 t\u01b0", "Th\u1ee9 n\u0103m", "Th\u1ee9 s\u00e1u", "Th\u1ee9 b\u1ea3y"], STANDALONEWEEKDAYS:["Ch\u1ee7 nh\u1eadt", "Th\u1ee9 hai", "Th\u1ee9 ba", "Th\u1ee9 t\u01b0", "Th\u1ee9 n\u0103m", "Th\u1ee9 s\u00e1u", "Th\u1ee9 b\u1ea3y"], SHORTWEEKDAYS:["CN", "Th 2", "Th 3", "Th 4", "Th 5", "Th 6", "Th 7"], STANDALONESHORTWEEKDAYS:["CN", "Th 2", "Th 3", "Th 4", "Th 5", "Th 6", "Th 7"], NARROWWEEKDAYS:["CN", "T2", "T3", "T4", "T5", "T6", "T7"], STANDALONENARROWWEEKDAYS:["CN", "T2", "T3", "T4", "T5", "T6", "T7"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["Qu\u00fd 1", "Qu\u00fd 2", "Qu\u00fd 3", "Qu\u00fd 4"], AMPMS:["SA", "CH"], DATEFORMATS:["EEEE, 'ng\u00e0y' dd MMMM 'n\u0103m' y", "'Ng\u00e0y' dd 'th\u00e1ng' M 'n\u0103m' y", "dd-MM-y", "dd/MM/y"], TIMEFORMATS:["HH:mm:ss zzzz", "HH:mm:ss z", "HH:mm:ss", "HH:mm"], DATETIMEFORMATS:["{0} {1}", "{0} {1}", "{0} {1}", "{0} {1}"], FIRSTDAYOFWEEK:0, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:6}; goog.i18n.DateTimeSymbols_zh = {ERAS:["\u516c\u5143\u524d", "\u516c\u5143"], ERANAMES:["\u516c\u5143\u524d", "\u516c\u5143"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], STANDALONEMONTHS:["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], SHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONESHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], WEEKDAYS:["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], STANDALONEWEEKDAYS:["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], SHORTWEEKDAYS:["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], STANDALONESHORTWEEKDAYS:["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], NARROWWEEKDAYS:["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], STANDALONENARROWWEEKDAYS:["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], SHORTQUARTERS:["1\u5b63\u5ea6", "2\u5b63\u5ea6", "3\u5b63\u5ea6", "4\u5b63\u5ea6"], QUARTERS:["\u7b2c\u4e00\u5b63\u5ea6", "\u7b2c\u4e8c\u5b63\u5ea6", "\u7b2c\u4e09\u5b63\u5ea6", "\u7b2c\u56db\u5b63\u5ea6"], AMPMS:["\u4e0a\u5348", "\u4e0b\u5348"], DATEFORMATS:["y\u5e74M\u6708d\u65e5EEEE", "y\u5e74M\u6708d\u65e5", "y\u5e74M\u6708d\u65e5", "yy-M-d"], TIMEFORMATS:["zzzzah:mm:ss", "zah:mm:ss", "ah:mm:ss", "ah:mm"], DATETIMEFORMATS:["{1}{0}", "{1}{0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_zh_CN = goog.i18n.DateTimeSymbols_zh; goog.i18n.DateTimeSymbols_zh_HK = {ERAS:["\u897f\u5143\u524d", "\u897f\u5143"], ERANAMES:["\u516c\u5143\u524d", "\u516c\u5143"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONEMONTHS:["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], SHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONESHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], WEEKDAYS:["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], STANDALONEWEEKDAYS:["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], SHORTWEEKDAYS:["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], STANDALONESHORTWEEKDAYS:["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], NARROWWEEKDAYS:["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], STANDALONENARROWWEEKDAYS:["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], SHORTQUARTERS:["1\u5b63", "2\u5b63", "3\u5b63", "4\u5b63"], QUARTERS:["\u7b2c1\u5b63", "\u7b2c2\u5b63", "\u7b2c3\u5b63", "\u7b2c4\u5b63"], AMPMS:["\u4e0a\u5348", "\u4e0b\u5348"], DATEFORMATS:["y\u5e74M\u6708d\u65e5EEEE", "y\u5e74M\u6708d\u65e5", "y\u5e74M\u6708d\u65e5", "d/M/yy"], TIMEFORMATS:["ah:mm:ss [zzzz]", "ah:mm:ss [z]", "ahh:mm:ss", "ah:mm"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1}{0}", "{1}{0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_zh_TW = {ERAS:["\u897f\u5143\u524d", "\u897f\u5143"], ERANAMES:["\u516c\u5143\u524d", "\u516c\u5143"], NARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], STANDALONENARROWMONTHS:["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], MONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONEMONTHS:["\u4e00\u6708", "\u4e8c\u6708", "\u4e09\u6708", "\u56db\u6708", "\u4e94\u6708", "\u516d\u6708", "\u4e03\u6708", "\u516b\u6708", "\u4e5d\u6708", "\u5341\u6708", "\u5341\u4e00\u6708", "\u5341\u4e8c\u6708"], SHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], STANDALONESHORTMONTHS:["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], WEEKDAYS:["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], STANDALONEWEEKDAYS:["\u661f\u671f\u65e5", "\u661f\u671f\u4e00", "\u661f\u671f\u4e8c", "\u661f\u671f\u4e09", "\u661f\u671f\u56db", "\u661f\u671f\u4e94", "\u661f\u671f\u516d"], SHORTWEEKDAYS:["\u9031\u65e5", "\u9031\u4e00", "\u9031\u4e8c", "\u9031\u4e09", "\u9031\u56db", "\u9031\u4e94", "\u9031\u516d"], STANDALONESHORTWEEKDAYS:["\u5468\u65e5", "\u5468\u4e00", "\u5468\u4e8c", "\u5468\u4e09", "\u5468\u56db", "\u5468\u4e94", "\u5468\u516d"], NARROWWEEKDAYS:["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], STANDALONENARROWWEEKDAYS:["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d"], SHORTQUARTERS:["1\u5b63", "2\u5b63", "3\u5b63", "4\u5b63"], QUARTERS:["\u7b2c1\u5b63", "\u7b2c2\u5b63", "\u7b2c3\u5b63", "\u7b2c4\u5b63"], AMPMS:["\u4e0a\u5348", "\u4e0b\u5348"], DATEFORMATS:["y\u5e74M\u6708d\u65e5EEEE", "y\u5e74M\u6708d\u65e5", "y/M/d", "y/M/d"], TIMEFORMATS:["zzzzah\u6642mm\u5206ss\u79d2", "zah\u6642mm\u5206ss\u79d2", "ah:mm:ss", "ah:mm"], DATETIMEFORMATS:["{1}{0}", "{1}{0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; goog.i18n.DateTimeSymbols_zu = {ERAS:["BC", "AD"], ERANAMES:["BC", "AD"], NARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], STANDALONENARROWMONTHS:["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"], MONTHS:["Januwari", "Februwari", "Mashi", "Apreli", "Meyi", "Juni", "Julayi", "Agasti", "Septhemba", "Okthoba", "Novemba", "Disemba"], STANDALONEMONTHS:["uJanuwari", "uFebruwari", "uMashi", "u-Apreli", "uMeyi", "uJuni", "uJulayi", "uAgasti", "uSepthemba", "u-Okthoba", "uNovemba", "uDisemba"], SHORTMONTHS:["Jan", "Feb", "Mas", "Apr", "Mey", "Jun", "Jul", "Aga", "Sep", "Okt", "Nov", "Dis"], STANDALONESHORTMONTHS:["Jan", "Feb", "Mas", "Apr", "Mey", "Jun", "Jul", "Aga", "Sep", "Okt", "Nov", "Dis"], WEEKDAYS:["Sonto", "Msombuluko", "Lwesibili", "Lwesithathu", "uLwesine", "Lwesihlanu", "Mgqibelo"], STANDALONEWEEKDAYS:["Sonto", "Msombuluko", "Lwesibili", "Lwesithathu", "uLwesine", "Lwesihlanu", "Mgqibelo"], SHORTWEEKDAYS:["Son", "Mso", "Bil", "Tha", "Sin", "Hla", "Mgq"], STANDALONESHORTWEEKDAYS:["Son", "Mso", "Bil", "Tha", "Sin", "Hla", "Mgq"], NARROWWEEKDAYS:["S", "M", "B", "T", "S", "H", "M"], STANDALONENARROWWEEKDAYS:["S", "M", "B", "T", "S", "H", "M"], SHORTQUARTERS:["Q1", "Q2", "Q3", "Q4"], QUARTERS:["ikota yoku-1", "ikota yesi-2", "ikota yesi-3", "ikota yesi-4"], AMPMS:["Ekuseni", "Ntambama"], DATEFORMATS:["EEEE dd MMMM y", "d MMMM y", "d MMM y", "y-MM-dd"], TIMEFORMATS:["h:mm:ss a zzzz", "h:mm:ss a z", "h:mm:ss a", "h:mm a"], DATETIMEFORMATS:["{1} {0}", "{1} {0}", "{1} {0}", "{1} {0}"], FIRSTDAYOFWEEK:6, WEEKENDRANGE:[5, 6], FIRSTWEEKCUTOFFDAY:5}; if(goog.LOCALE == "af") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_af }else { if(goog.LOCALE == "am") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_am }else { if(goog.LOCALE == "ar") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ar }else { if(goog.LOCALE == "bg") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_bg }else { if(goog.LOCALE == "bn") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_bn }else { if(goog.LOCALE == "br") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_br }else { if(goog.LOCALE == "ca") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ca }else { if(goog.LOCALE == "chr") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_chr }else { if(goog.LOCALE == "cs") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_cs }else { if(goog.LOCALE == "cy") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_cy }else { if(goog.LOCALE == "da") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_da }else { if(goog.LOCALE == "de") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_de }else { if(goog.LOCALE == "de_AT" || goog.LOCALE == "de-AT") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_de_AT }else { if(goog.LOCALE == "de_CH" || goog.LOCALE == "de-CH") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_de }else { if(goog.LOCALE == "el") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_el }else { if(goog.LOCALE == "en") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en }else { if(goog.LOCALE == "en_AU" || goog.LOCALE == "en-AU") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_AU }else { if(goog.LOCALE == "en_GB" || goog.LOCALE == "en-GB") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_GB }else { if(goog.LOCALE == "en_IE" || goog.LOCALE == "en-IE") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_IE }else { if(goog.LOCALE == "en_IN" || goog.LOCALE == "en-IN") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_IN }else { if(goog.LOCALE == "en_SG" || goog.LOCALE == "en-SG") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_SG }else { if(goog.LOCALE == "en_US" || goog.LOCALE == "en-US") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en }else { if(goog.LOCALE == "en_ZA" || goog.LOCALE == "en-ZA") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en_ZA }else { if(goog.LOCALE == "es") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_es }else { if(goog.LOCALE == "es_419" || goog.LOCALE == "es-419") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_es_419 }else { if(goog.LOCALE == "es_ES" || goog.LOCALE == "es-ES") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_es }else { if(goog.LOCALE == "et") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_et }else { if(goog.LOCALE == "eu") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_eu }else { if(goog.LOCALE == "fa") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fa }else { if(goog.LOCALE == "fi") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fi }else { if(goog.LOCALE == "fil") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fil }else { if(goog.LOCALE == "fr") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fr }else { if(goog.LOCALE == "fr_CA" || goog.LOCALE == "fr-CA") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_fr_CA }else { if(goog.LOCALE == "gl") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_gl }else { if(goog.LOCALE == "gsw") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_gsw }else { if(goog.LOCALE == "gu") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_gu }else { if(goog.LOCALE == "haw") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_haw }else { if(goog.LOCALE == "he") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_he }else { if(goog.LOCALE == "hi") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_hi }else { if(goog.LOCALE == "hr") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_hr }else { if(goog.LOCALE == "hu") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_hu }else { if(goog.LOCALE == "id") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_id }else { if(goog.LOCALE == "in") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_in }else { if(goog.LOCALE == "is") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_is }else { if(goog.LOCALE == "it") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_it }else { if(goog.LOCALE == "iw") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_iw }else { if(goog.LOCALE == "ja") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ja }else { if(goog.LOCALE == "kn") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_kn }else { if(goog.LOCALE == "ko") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ko }else { if(goog.LOCALE == "ln") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ln }else { if(goog.LOCALE == "lt") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_lt }else { if(goog.LOCALE == "lv") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_lv }else { if(goog.LOCALE == "ml") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ml }else { if(goog.LOCALE == "mr") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_mr }else { if(goog.LOCALE == "ms") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ms }else { if(goog.LOCALE == "mt") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_mt }else { if(goog.LOCALE == "nb") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_nb }else { if(goog.LOCALE == "nl") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_nl }else { if(goog.LOCALE == "no") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_no }else { if(goog.LOCALE == "or") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_or }else { if(goog.LOCALE == "pl") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_pl }else { if(goog.LOCALE == "pt") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_pt }else { if(goog.LOCALE == "pt_BR" || goog.LOCALE == "pt-BR") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_pt }else { if(goog.LOCALE == "pt_PT" || goog.LOCALE == "pt-PT") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_pt_PT }else { if(goog.LOCALE == "ro") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ro }else { if(goog.LOCALE == "ru") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ru }else { if(goog.LOCALE == "sk") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_sk }else { if(goog.LOCALE == "sl") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_sl }else { if(goog.LOCALE == "sq") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_sq }else { if(goog.LOCALE == "sr") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_sr }else { if(goog.LOCALE == "sv") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_sv }else { if(goog.LOCALE == "sw") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_sw }else { if(goog.LOCALE == "ta") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ta }else { if(goog.LOCALE == "te") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_te }else { if(goog.LOCALE == "th") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_th }else { if(goog.LOCALE == "tl") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_tl }else { if(goog.LOCALE == "tr") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_tr }else { if(goog.LOCALE == "uk") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_uk }else { if(goog.LOCALE == "ur") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_ur }else { if(goog.LOCALE == "vi") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_vi }else { if(goog.LOCALE == "zh") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh }else { if(goog.LOCALE == "zh_CN" || goog.LOCALE == "zh-CN") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh }else { if(goog.LOCALE == "zh_HK" || goog.LOCALE == "zh-HK") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh_HK }else { if(goog.LOCALE == "zh_TW" || goog.LOCALE == "zh-TW") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zh_TW }else { if(goog.LOCALE == "zu") { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_zu }else { goog.i18n.DateTimeSymbols = goog.i18n.DateTimeSymbols_en } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } } ;goog.provide("goog.date"); goog.provide("goog.date.Date"); goog.provide("goog.date.DateTime"); goog.provide("goog.date.Interval"); goog.provide("goog.date.month"); goog.provide("goog.date.weekDay"); goog.require("goog.asserts"); goog.require("goog.date.DateLike"); goog.require("goog.i18n.DateTimeSymbols"); goog.require("goog.string"); goog.date.weekDay = {MON:0, TUE:1, WED:2, THU:3, FRI:4, SAT:5, SUN:6}; goog.date.month = {JAN:0, FEB:1, MAR:2, APR:3, MAY:4, JUN:5, JUL:6, AUG:7, SEP:8, OCT:9, NOV:10, DEC:11}; goog.date.formatMonthAndYear = function(monthName, yearNum) { var MSG_MONTH_AND_YEAR = goog.getMsg("{$monthName} {$yearNum}", {"monthName":monthName, "yearNum":yearNum}); return MSG_MONTH_AND_YEAR }; goog.date.splitDateStringRegex_ = new RegExp("^(\\d{4})(?:(?:-?(\\d{2})(?:-?(\\d{2}))?)|" + "(?:-?(\\d{3}))|(?:-?W(\\d{2})(?:-?([1-7]))?))?$"); goog.date.splitTimeStringRegex_ = /^(\d{2})(?::?(\d{2})(?::?(\d{2})(\.\d+)?)?)?$/; goog.date.splitTimezoneStringRegex_ = /Z|(?:([-+])(\d{2})(?::?(\d{2}))?)$/; goog.date.splitDurationRegex_ = new RegExp("^(-)?P(?:(\\d+)Y)?(?:(\\d+)M)?(?:(\\d+)D)?" + "(T(?:(\\d+)H)?(?:(\\d+)M)?(?:(\\d+(?:\\.\\d+)?)S)?)?$"); goog.date.isLeapYear = function(year) { return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) }; goog.date.isLongIsoYear = function(year) { var n = 5 * year + 12 - 4 * (Math.floor(year / 100) - Math.floor(year / 400)); n += Math.floor((year - 100) / 400) - Math.floor((year - 102) / 400); n += Math.floor((year - 200) / 400) - Math.floor((year - 199) / 400); return n % 28 < 5 }; goog.date.getNumberOfDaysInMonth = function(year, month) { switch(month) { case goog.date.month.FEB: return goog.date.isLeapYear(year) ? 29 : 28; case goog.date.month.JUN: ; case goog.date.month.SEP: ; case goog.date.month.NOV: ; case goog.date.month.APR: return 30 } return 31 }; goog.date.isSameDay = function(date, opt_now) { var now = opt_now || new Date(goog.now()); return date.getDate() == now.getDate() && goog.date.isSameMonth(date, now) }; goog.date.isSameMonth = function(date, opt_now) { var now = opt_now || new Date(goog.now()); return date.getMonth() == now.getMonth() && goog.date.isSameYear(date, now) }; goog.date.isSameYear = function(date, opt_now) { var now = opt_now || new Date(goog.now()); return date.getFullYear() == now.getFullYear() }; goog.date.getWeekNumber = function(year, month, date, opt_weekDay, opt_firstDayOfWeek) { var d = new Date(year, month, date); var cutoff = opt_weekDay || goog.date.weekDay.THU; var firstday = opt_firstDayOfWeek || goog.date.weekDay.MON; var ONE_DAY = 24 * 60 * 60 * 1E3; var isoday = (d.getDay() + 6) % 7; var daypos = (isoday - firstday + 7) % 7; var cutoffpos = (cutoff - firstday + 7) % 7; var cutoffSameWeek = d.valueOf() + (cutoffpos - daypos) * ONE_DAY; var jan1 = (new Date((new Date(cutoffSameWeek)).getFullYear(), 0, 1)).valueOf(); return Math.floor(Math.round((cutoffSameWeek - jan1) / ONE_DAY) / 7) + 1 }; goog.date.min = function(date1, date2) { return date1 < date2 ? date1 : date2 }; goog.date.max = function(date1, date2) { return date1 > date2 ? date1 : date2 }; goog.date.fromIsoString = function(formatted) { var ret = new goog.date.DateTime(2E3); return goog.date.setIso8601DateTime(ret, formatted) ? ret : null }; goog.date.setIso8601DateTime = function(dateTime, formatted) { formatted = goog.string.trim(formatted); var delim = formatted.indexOf("T") == -1 ? " " : "T"; var parts = formatted.split(delim); return goog.date.setIso8601DateOnly_(dateTime, parts[0]) && (parts.length < 2 || goog.date.setIso8601TimeOnly_(dateTime, parts[1])) }; goog.date.setIso8601DateOnly_ = function(d, formatted) { var parts = formatted.match(goog.date.splitDateStringRegex_); if(!parts) { return false } var year = Number(parts[1]); var month = Number(parts[2]); var date = Number(parts[3]); var dayOfYear = Number(parts[4]); var week = Number(parts[5]); var dayOfWeek = Number(parts[6]) || 1; d.setFullYear(year); if(dayOfYear) { d.setDate(1); d.setMonth(0); var offset = dayOfYear - 1; d.add(new goog.date.Interval(goog.date.Interval.DAYS, offset)) }else { if(week) { goog.date.setDateFromIso8601Week_(d, week, dayOfWeek) }else { if(month) { d.setDate(1); d.setMonth(month - 1) } if(date) { d.setDate(date) } } } return true }; goog.date.setDateFromIso8601Week_ = function(d, week, dayOfWeek) { d.setMonth(0); d.setDate(1); var jsDay = d.getDay(); var jan1WeekDay = jsDay || 7; var THURSDAY = 4; if(jan1WeekDay <= THURSDAY) { var startDelta = 1 - jan1WeekDay }else { startDelta = 8 - jan1WeekDay } var absoluteDays = Number(dayOfWeek) + 7 * (Number(week) - 1); var delta = startDelta + absoluteDays - 1; var interval = new goog.date.Interval(goog.date.Interval.DAYS, delta); d.add(interval) }; goog.date.setIso8601TimeOnly_ = function(d, formatted) { var parts = formatted.match(goog.date.splitTimezoneStringRegex_); var offset = 0; if(parts) { if(parts[0] != "Z") { offset = parts[2] * 60 + Number(parts[3]); offset *= parts[1] == "-" ? 1 : -1 } offset -= d.getTimezoneOffset(); formatted = formatted.substr(0, formatted.length - parts[0].length) } parts = formatted.match(goog.date.splitTimeStringRegex_); if(!parts) { return false } d.setHours(Number(parts[1])); d.setMinutes(Number(parts[2]) || 0); d.setSeconds(Number(parts[3]) || 0); d.setMilliseconds(parts[4] ? parts[4] * 1E3 : 0); if(offset != 0) { d.setTime(d.getTime() + offset * 6E4) } return true }; goog.date.Interval = function(opt_years, opt_months, opt_days, opt_hours, opt_minutes, opt_seconds) { if(goog.isString(opt_years)) { var type = opt_years; var interval = (opt_months); this.years = type == goog.date.Interval.YEARS ? interval : 0; this.months = type == goog.date.Interval.MONTHS ? interval : 0; this.days = type == goog.date.Interval.DAYS ? interval : 0; this.hours = type == goog.date.Interval.HOURS ? interval : 0; this.minutes = type == goog.date.Interval.MINUTES ? interval : 0; this.seconds = type == goog.date.Interval.SECONDS ? interval : 0 }else { this.years = (opt_years) || 0; this.months = opt_months || 0; this.days = opt_days || 0; this.hours = opt_hours || 0; this.minutes = opt_minutes || 0; this.seconds = opt_seconds || 0 } }; goog.date.Interval.fromIsoString = function(duration) { var parts = duration.match(goog.date.splitDurationRegex_); if(!parts) { return null } var timeEmpty = !(parts[6] || parts[7] || parts[8]); var dateTimeEmpty = timeEmpty && !(parts[2] || parts[3] || parts[4]); if(dateTimeEmpty || timeEmpty && parts[5]) { return null } var negative = parts[1]; var years = parseInt(parts[2], 10) || 0; var months = parseInt(parts[3], 10) || 0; var days = parseInt(parts[4], 10) || 0; var hours = parseInt(parts[6], 10) || 0; var minutes = parseInt(parts[7], 10) || 0; var seconds = parseFloat(parts[8]) || 0; return negative ? new goog.date.Interval(-years, -months, -days, -hours, -minutes, -seconds) : new goog.date.Interval(years, months, days, hours, minutes, seconds) }; goog.date.Interval.prototype.toIsoString = function(opt_verbose) { var minField = Math.min(this.years, this.months, this.days, this.hours, this.minutes, this.seconds); var maxField = Math.max(this.years, this.months, this.days, this.hours, this.minutes, this.seconds); if(minField < 0 && maxField > 0) { return null } if(!opt_verbose && minField == 0 && maxField == 0) { return"PT0S" } var res = []; if(minField < 0) { res.push("-") } res.push("P"); if(this.years || opt_verbose) { res.push(Math.abs(this.years) + "Y") } if(this.months || opt_verbose) { res.push(Math.abs(this.months) + "M") } if(this.days || opt_verbose) { res.push(Math.abs(this.days) + "D") } if(this.hours || this.minutes || this.seconds || opt_verbose) { res.push("T"); if(this.hours || opt_verbose) { res.push(Math.abs(this.hours) + "H") } if(this.minutes || opt_verbose) { res.push(Math.abs(this.minutes) + "M") } if(this.seconds || opt_verbose) { res.push(Math.abs(this.seconds) + "S") } } return res.join("") }; goog.date.Interval.prototype.equals = function(other) { return other.years == this.years && other.months == this.months && other.days == this.days && other.hours == this.hours && other.minutes == this.minutes && other.seconds == this.seconds }; goog.date.Interval.prototype.clone = function() { return new goog.date.Interval(this.years, this.months, this.days, this.hours, this.minutes, this.seconds) }; goog.date.Interval.YEARS = "y"; goog.date.Interval.MONTHS = "m"; goog.date.Interval.DAYS = "d"; goog.date.Interval.HOURS = "h"; goog.date.Interval.MINUTES = "n"; goog.date.Interval.SECONDS = "s"; goog.date.Interval.prototype.isZero = function() { return this.years == 0 && this.months == 0 && this.days == 0 && this.hours == 0 && this.minutes == 0 && this.seconds == 0 }; goog.date.Interval.prototype.getInverse = function() { return this.times(-1) }; goog.date.Interval.prototype.times = function(n) { return new goog.date.Interval(this.years * n, this.months * n, this.days * n, this.hours * n, this.minutes * n, this.seconds * n) }; goog.date.Interval.prototype.getTotalSeconds = function() { goog.asserts.assert(this.years == 0 && this.months == 0); return((this.days * 24 + this.hours) * 60 + this.minutes) * 60 + this.seconds }; goog.date.Interval.prototype.add = function(interval) { this.years += interval.years; this.months += interval.months; this.days += interval.days; this.hours += interval.hours; this.minutes += interval.minutes; this.seconds += interval.seconds }; goog.date.Date = function(opt_year, opt_month, opt_date) { if(goog.isNumber(opt_year)) { this.date_ = new Date(opt_year, opt_month || 0, opt_date || 1); this.maybeFixDst_(opt_date || 1) }else { if(goog.isObject(opt_year)) { this.date_ = new Date(opt_year.getFullYear(), opt_year.getMonth(), opt_year.getDate()); this.maybeFixDst_(opt_year.getDate()) }else { this.date_ = new Date(goog.now()); this.date_.setHours(0); this.date_.setMinutes(0); this.date_.setSeconds(0); this.date_.setMilliseconds(0) } } }; goog.date.Date.prototype.firstDayOfWeek_ = goog.i18n.DateTimeSymbols.FIRSTDAYOFWEEK; goog.date.Date.prototype.firstWeekCutOffDay_ = goog.i18n.DateTimeSymbols.FIRSTWEEKCUTOFFDAY; goog.date.Date.prototype.clone = function() { var date = new goog.date.Date(this.date_); date.firstDayOfWeek_ = this.firstDayOfWeek_; date.firstWeekCutOffDay_ = this.firstWeekCutOffDay_; return date }; goog.date.Date.prototype.getFullYear = function() { return this.date_.getFullYear() }; goog.date.Date.prototype.getYear = function() { return this.getFullYear() }; goog.date.Date.prototype.getMonth = function() { return(this.date_.getMonth()) }; goog.date.Date.prototype.getDate = function() { return this.date_.getDate() }; goog.date.Date.prototype.getTime = function() { return this.date_.getTime() }; goog.date.Date.prototype.getDay = function() { return(this.date_.getDay()) }; goog.date.Date.prototype.getIsoWeekday = function() { return(this.getDay() + 6) % 7 }; goog.date.Date.prototype.getWeekday = function() { return(this.getIsoWeekday() - this.firstDayOfWeek_ + 7) % 7 }; goog.date.Date.prototype.getUTCFullYear = function() { return this.date_.getUTCFullYear() }; goog.date.Date.prototype.getUTCMonth = function() { return(this.date_.getUTCMonth()) }; goog.date.Date.prototype.getUTCDate = function() { return this.date_.getUTCDate() }; goog.date.Date.prototype.getUTCDay = function() { return(this.date_.getDay()) }; goog.date.Date.prototype.getUTCHours = function() { return this.date_.getUTCHours() }; goog.date.Date.prototype.getUTCMinutes = function() { return this.date_.getUTCMinutes() }; goog.date.Date.prototype.getUTCIsoWeekday = function() { return(this.date_.getUTCDay() + 6) % 7 }; goog.date.Date.prototype.getUTCWeekday = function() { return(this.getUTCIsoWeekday() - this.firstDayOfWeek_ + 7) % 7 }; goog.date.Date.prototype.getFirstDayOfWeek = function() { return this.firstDayOfWeek_ }; goog.date.Date.prototype.getFirstWeekCutOffDay = function() { return this.firstWeekCutOffDay_ }; goog.date.Date.prototype.getNumberOfDaysInMonth = function() { return goog.date.getNumberOfDaysInMonth(this.getFullYear(), this.getMonth()) }; goog.date.Date.prototype.getWeekNumber = function() { return goog.date.getWeekNumber(this.getFullYear(), this.getMonth(), this.getDate(), this.firstWeekCutOffDay_, this.firstDayOfWeek_) }; goog.date.Date.prototype.getDayOfYear = function() { var dayOfYear = this.getDate(); var year = this.getFullYear(); for(var m = this.getMonth() - 1;m >= 0;m--) { dayOfYear += goog.date.getNumberOfDaysInMonth(year, m) } return dayOfYear }; goog.date.Date.prototype.getTimezoneOffset = function() { return this.date_.getTimezoneOffset() }; goog.date.Date.prototype.getTimezoneOffsetString = function() { var tz; var offset = this.getTimezoneOffset(); if(offset == 0) { tz = "Z" }else { var n = Math.abs(offset) / 60; var h = Math.floor(n); var m = (n - h) * 60; tz = (offset > 0 ? "-" : "+") + goog.string.padNumber(h, 2) + ":" + goog.string.padNumber(m, 2) } return tz }; goog.date.Date.prototype.set = function(date) { this.date_ = new Date(date.getFullYear(), date.getMonth(), date.getDate()) }; goog.date.Date.prototype.setFullYear = function(year) { this.date_.setFullYear(year) }; goog.date.Date.prototype.setYear = function(year) { this.setFullYear(year) }; goog.date.Date.prototype.setMonth = function(month) { this.date_.setMonth(month) }; goog.date.Date.prototype.setDate = function(date) { this.date_.setDate(date) }; goog.date.Date.prototype.setTime = function(ms) { this.date_.setTime(ms) }; goog.date.Date.prototype.setUTCFullYear = function(year) { this.date_.setUTCFullYear(year) }; goog.date.Date.prototype.setUTCMonth = function(month) { this.date_.setUTCMonth(month) }; goog.date.Date.prototype.setUTCDate = function(date) { this.date_.setUTCDate(date) }; goog.date.Date.prototype.setFirstDayOfWeek = function(day) { this.firstDayOfWeek_ = day }; goog.date.Date.prototype.setFirstWeekCutOffDay = function(day) { this.firstWeekCutOffDay_ = day }; goog.date.Date.prototype.add = function(interval) { if(interval.years || interval.months) { var month = this.getMonth() + interval.months + interval.years * 12; var year = this.getYear() + Math.floor(month / 12); month %= 12; if(month < 0) { month += 12 } var daysInTargetMonth = goog.date.getNumberOfDaysInMonth(year, month); var date = Math.min(daysInTargetMonth, this.getDate()); this.setDate(1); this.setFullYear(year); this.setMonth(month); this.setDate(date) } if(interval.days) { var noon = new Date(this.getYear(), this.getMonth(), this.getDate(), 12); var result = new Date(noon.getTime() + interval.days * 864E5); this.setDate(1); this.setFullYear(result.getFullYear()); this.setMonth(result.getMonth()); this.setDate(result.getDate()); this.maybeFixDst_(result.getDate()) } }; goog.date.Date.prototype.toIsoString = function(opt_verbose, opt_tz) { var str = [this.getFullYear(), goog.string.padNumber(this.getMonth() + 1, 2), goog.string.padNumber(this.getDate(), 2)]; return str.join(opt_verbose ? "-" : "") + (opt_tz ? this.getTimezoneOffsetString() : "") }; goog.date.Date.prototype.toUTCIsoString = function(opt_verbose, opt_tz) { var str = [this.getUTCFullYear(), goog.string.padNumber(this.getUTCMonth() + 1, 2), goog.string.padNumber(this.getUTCDate(), 2)]; return str.join(opt_verbose ? "-" : "") + (opt_tz ? "Z" : "") }; goog.date.Date.prototype.equals = function(other) { return!!(other && this.getYear() == other.getYear() && this.getMonth() == other.getMonth() && this.getDate() == other.getDate()) }; goog.date.Date.prototype.toString = function() { return this.toIsoString() }; goog.date.Date.prototype.maybeFixDst_ = function(expected) { if(this.getDate() != expected) { var dir = this.getDate() < expected ? 1 : -1; this.date_.setUTCHours(this.date_.getUTCHours() + dir) } }; goog.date.Date.prototype.valueOf = function() { return this.date_.valueOf() }; goog.date.Date.compare = function(date1, date2) { return date1.getTime() - date2.getTime() }; goog.date.DateTime = function(opt_year, opt_month, opt_date, opt_hours, opt_minutes, opt_seconds, opt_milliseconds) { if(goog.isNumber(opt_year)) { this.date_ = new Date(opt_year, opt_month || 0, opt_date || 1, opt_hours || 0, opt_minutes || 0, opt_seconds || 0, opt_milliseconds || 0) }else { this.date_ = new Date(opt_year ? opt_year.getTime() : goog.now()) } }; goog.inherits(goog.date.DateTime, goog.date.Date); goog.date.DateTime.fromRfc822String = function(formatted) { var date = new Date(formatted); return!isNaN(date.getTime()) ? new goog.date.DateTime(date) : null }; goog.date.DateTime.prototype.getHours = function() { return this.date_.getHours() }; goog.date.DateTime.prototype.getMinutes = function() { return this.date_.getMinutes() }; goog.date.DateTime.prototype.getSeconds = function() { return this.date_.getSeconds() }; goog.date.DateTime.prototype.getMilliseconds = function() { return this.date_.getMilliseconds() }; goog.date.DateTime.prototype.getUTCDay = function() { return(this.date_.getUTCDay()) }; goog.date.DateTime.prototype.getUTCHours = function() { return this.date_.getUTCHours() }; goog.date.DateTime.prototype.getUTCMinutes = function() { return this.date_.getUTCMinutes() }; goog.date.DateTime.prototype.getUTCSeconds = function() { return this.date_.getUTCSeconds() }; goog.date.DateTime.prototype.getUTCMilliseconds = function() { return this.date_.getUTCMilliseconds() }; goog.date.DateTime.prototype.setHours = function(hours) { this.date_.setHours(hours) }; goog.date.DateTime.prototype.setMinutes = function(minutes) { this.date_.setMinutes(minutes) }; goog.date.DateTime.prototype.setSeconds = function(seconds) { this.date_.setSeconds(seconds) }; goog.date.DateTime.prototype.setMilliseconds = function(ms) { this.date_.setMilliseconds(ms) }; goog.date.DateTime.prototype.setUTCHours = function(hours) { this.date_.setUTCHours(hours) }; goog.date.DateTime.prototype.setUTCMinutes = function(minutes) { this.date_.setUTCMinutes(minutes) }; goog.date.DateTime.prototype.setUTCSeconds = function(seconds) { this.date_.setUTCSeconds(seconds) }; goog.date.DateTime.prototype.setUTCMilliseconds = function(ms) { this.date_.setUTCMilliseconds(ms) }; goog.date.DateTime.prototype.isMidnight = function() { return this.getHours() == 0 && this.getMinutes() == 0 && this.getSeconds() == 0 && this.getMilliseconds() == 0 }; goog.date.DateTime.prototype.add = function(interval) { goog.date.Date.prototype.add.call(this, interval); if(interval.hours) { this.setHours(this.date_.getHours() + interval.hours) } if(interval.minutes) { this.setMinutes(this.date_.getMinutes() + interval.minutes) } if(interval.seconds) { this.setSeconds(this.date_.getSeconds() + interval.seconds) } }; goog.date.DateTime.prototype.toIsoString = function(opt_verbose, opt_tz) { var dateString = goog.date.Date.prototype.toIsoString.call(this, opt_verbose); if(opt_verbose) { return dateString + " " + goog.string.padNumber(this.getHours(), 2) + ":" + goog.string.padNumber(this.getMinutes(), 2) + ":" + goog.string.padNumber(this.getSeconds(), 2) + (opt_tz ? this.getTimezoneOffsetString() : "") } return dateString + "T" + goog.string.padNumber(this.getHours(), 2) + goog.string.padNumber(this.getMinutes(), 2) + goog.string.padNumber(this.getSeconds(), 2) + (opt_tz ? this.getTimezoneOffsetString() : "") }; goog.date.DateTime.prototype.toXmlDateTime = function(opt_timezone) { return goog.date.Date.prototype.toIsoString.call(this, true) + "T" + goog.string.padNumber(this.getHours(), 2) + ":" + goog.string.padNumber(this.getMinutes(), 2) + ":" + goog.string.padNumber(this.getSeconds(), 2) + (opt_timezone ? this.getTimezoneOffsetString() : "") }; goog.date.DateTime.prototype.toUTCIsoString = function(opt_verbose, opt_tz) { var dateStr = goog.date.Date.prototype.toUTCIsoString.call(this, opt_verbose); if(opt_verbose) { return dateStr + " " + goog.string.padNumber(this.getUTCHours(), 2) + ":" + goog.string.padNumber(this.getUTCMinutes(), 2) + ":" + goog.string.padNumber(this.getUTCSeconds(), 2) + (opt_tz ? "Z" : "") } return dateStr + "T" + goog.string.padNumber(this.getUTCHours(), 2) + goog.string.padNumber(this.getUTCMinutes(), 2) + goog.string.padNumber(this.getUTCSeconds(), 2) + (opt_tz ? "Z" : "") }; goog.date.DateTime.prototype.equals = function(other) { return this.getTime() == other.getTime() }; goog.date.DateTime.prototype.toString = function() { return this.toIsoString() }; goog.date.DateTime.prototype.toUsTimeString = function(opt_padHours, opt_showAmPm, opt_omitZeroMinutes) { var hours = this.getHours(); if(!goog.isDef(opt_showAmPm)) { opt_showAmPm = true } var isPM = hours == 12; if(hours > 12) { hours -= 12; isPM = true } if(hours == 0 && opt_showAmPm) { hours = 12 } var label = opt_padHours ? goog.string.padNumber(hours, 2) : String(hours); var minutes = this.getMinutes(); if(!opt_omitZeroMinutes || minutes > 0) { label += ":" + goog.string.padNumber(minutes, 2) } if(opt_showAmPm) { var MSG_TIME_AM = goog.getMsg("am"); var MSG_TIME_PM = goog.getMsg("pm"); label += isPM ? MSG_TIME_PM : MSG_TIME_AM } return label }; goog.date.DateTime.prototype.toIsoTimeString = function(opt_showSeconds) { var hours = this.getHours(); var label = goog.string.padNumber(hours, 2) + ":" + goog.string.padNumber(this.getMinutes(), 2); if(!goog.isDef(opt_showSeconds) || opt_showSeconds) { label += ":" + goog.string.padNumber(this.getSeconds(), 2) } return label }; goog.date.DateTime.prototype.clone = function() { var date = new goog.date.DateTime(this.date_); date.setFirstDayOfWeek(this.getFirstDayOfWeek()); date.setFirstWeekCutOffDay(this.getFirstWeekCutOffDay()); return date }; goog.provide("ol.style.Icon"); goog.require("goog.asserts"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Literal"); goog.require("ol.geom.GeometryType"); goog.require("ol.style.IconLiteral"); goog.require("ol.style.Point"); ol.style.Icon = function(options) { goog.asserts.assert(options.url, "url must be set"); this.url_ = options.url instanceof ol.expr.Expression ? options.url : new ol.expr.Literal(options.url); this.width_ = !goog.isDef(options.width) ? null : options.width instanceof ol.expr.Expression ? options.width : new ol.expr.Literal(options.width); this.height_ = !goog.isDef(options.height) ? null : options.height instanceof ol.expr.Expression ? options.height : new ol.expr.Literal(options.height); this.opacity_ = !goog.isDef(options.opacity) ? new ol.expr.Literal(ol.style.IconDefaults.opacity) : options.opacity instanceof ol.expr.Expression ? options.opacity : new ol.expr.Literal(options.opacity); this.rotation_ = !goog.isDef(options.rotation) ? new ol.expr.Literal(ol.style.IconDefaults.rotation) : options.rotation instanceof ol.expr.Expression ? options.rotation : new ol.expr.Literal(options.rotation); this.xOffset_ = !goog.isDef(options.xOffset) ? new ol.expr.Literal(ol.style.IconDefaults.xOffset) : options.xOffset instanceof ol.expr.Expression ? options.xOffset : new ol.expr.Literal(options.xOffset); this.yOffset_ = !goog.isDef(options.yOffset) ? new ol.expr.Literal(ol.style.IconDefaults.yOffset) : options.yOffset instanceof ol.expr.Expression ? options.yOffset : new ol.expr.Literal(options.yOffset) }; ol.style.Icon.prototype.createLiteral = function(featureOrType) { var feature, type; if(featureOrType instanceof ol.Feature) { feature = featureOrType; var geometry = feature.getGeometry(); type = geometry ? geometry.getType() : null }else { type = featureOrType } var literal = null; if(type === ol.geom.GeometryType.POINT || type === ol.geom.GeometryType.MULTIPOINT) { var url = ol.expr.evaluateFeature(this.url_, feature); goog.asserts.assertString(url, "url must be a string"); goog.asserts.assert(url != "#", 'url must not be "#"'); var width; if(!goog.isNull(this.width_)) { width = Number(ol.expr.evaluateFeature(this.width_, feature)); goog.asserts.assert(!isNaN(width), "width must be a number") } var height; if(!goog.isNull(this.height_)) { height = Number(ol.expr.evaluateFeature(this.height_, feature)); goog.asserts.assertNumber(height, "height must be a number") } var opacity = Number(ol.expr.evaluateFeature(this.opacity_, feature)); goog.asserts.assert(!isNaN(opacity), "opacity must be a number"); var rotation = Number(ol.expr.evaluateFeature(this.rotation_, feature)); goog.asserts.assert(!isNaN(rotation), "rotation must be a number"); var xOffset = Number(ol.expr.evaluateFeature(this.xOffset_, feature)); goog.asserts.assert(!isNaN(xOffset), "xOffset must be a number"); var yOffset = Number(ol.expr.evaluateFeature(this.yOffset_, feature)); goog.asserts.assert(!isNaN(yOffset), "yOffset must be a number"); literal = new ol.style.IconLiteral({url:url, width:width, height:height, opacity:opacity, rotation:rotation, xOffset:xOffset, yOffset:yOffset}) } return literal }; ol.style.Icon.prototype.getHeight = function() { return this.height_ }; ol.style.Icon.prototype.getOpacity = function() { return this.opacity_ }; ol.style.Icon.prototype.getRotation = function() { return this.rotation_ }; ol.style.Icon.prototype.getUrl = function() { return this.url_ }; ol.style.Icon.prototype.getWidth = function() { return this.width_ }; ol.style.Icon.prototype.getXOffset = function() { return this.xOffset_ }; ol.style.Icon.prototype.getYOffset = function() { return this.yOffset_ }; ol.style.Icon.prototype.setHeight = function(height) { goog.asserts.assertInstanceof(height, ol.expr.Expression); this.height_ = height }; ol.style.Icon.prototype.setOpacity = function(opacity) { goog.asserts.assertInstanceof(opacity, ol.expr.Expression); this.opacity_ = opacity }; ol.style.Icon.prototype.setRotation = function(rotation) { goog.asserts.assertInstanceof(rotation, ol.expr.Expression); this.rotation_ = rotation }; ol.style.Icon.prototype.setUrl = function(url) { goog.asserts.assertInstanceof(url, ol.expr.Expression); this.url_ = url }; ol.style.Icon.prototype.setWidth = function(width) { goog.asserts.assertInstanceof(width, ol.expr.Expression); this.width_ = width }; ol.style.Icon.prototype.setXOffset = function(xOffset) { goog.asserts.assertInstanceof(xOffset, ol.expr.Expression); this.xOffset_ = xOffset }; ol.style.Icon.prototype.setYOffset = function(yOffset) { goog.asserts.assertInstanceof(yOffset, ol.expr.Expression); this.yOffset_ = yOffset }; ol.style.IconDefaults = {opacity:1, rotation:0, xOffset:0, yOffset:0}; goog.provide("ol.parser.KML"); goog.require("goog.array"); goog.require("goog.async.Deferred"); goog.require("goog.async.DeferredList"); goog.require("goog.date"); goog.require("goog.dispose"); goog.require("goog.dom.xml"); goog.require("goog.events"); goog.require("goog.net.EventType"); goog.require("goog.net.XhrIo"); goog.require("goog.object"); goog.require("goog.string"); goog.require("ol.Feature"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.geom.SharedVertices"); goog.require("ol.parser.AsyncObjectFeatureParser"); goog.require("ol.parser.AsyncStringFeatureParser"); goog.require("ol.parser.DomFeatureParser"); goog.require("ol.parser.ReadFeaturesOptions"); goog.require("ol.parser.StringFeatureParser"); goog.require("ol.parser.XML"); goog.require("ol.style.Fill"); goog.require("ol.style.Icon"); goog.require("ol.style.Stroke"); ol.parser.KML = function(opt_options) { var options = (goog.isDef(opt_options) ? opt_options : {}); this.extractAttributes = goog.isDef(options.extractAttributes) ? options.extractAttributes : true; this.extractStyles = goog.isDef(options.extractStyles) ? options.extractStyles : false; this.schemaLocation = "http://www.opengis.net/kml/2.2 " + "http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd"; this.dimension = goog.isDef(options.dimension) ? options.dimension : 3; this.maxDepth = goog.isDef(options.maxDepth) ? options.maxDepth : 0; this.trackAttributes = goog.isDef(options.trackAttributes) ? options.trackAttributes : null; this.defaultNamespaceURI = "http://www.opengis.net/kml/2.2"; this.readers = {"http://www.opengis.net/kml/2.2":{"kml":function(node, obj) { if(!goog.isDef(obj.features)) { obj.features = [] } if(!goog.isDef(obj.links)) { obj.links = [] } this.readChildNodes(node, obj) }, "Document":function(node, obj) { this.readChildNodes(node, obj) }, "*":function(node, obj) { if(this.extractAttributes === true) { var len = node.childNodes.length; if((len === 1 || len === 2) && (node.firstChild.nodeType === 3 || node.firstChild.nodeType === 4)) { var readers = this.readers[this.defaultNamespaceURI]; readers["_attribute"].apply(this, arguments) } } }, "NetworkLink":function(node, obj) { var link = {}; this.readChildNodes(node, link); obj.links.push(link) }, "Link":function(node, obj) { this.readChildNodes(node, obj) }, "_attribute":function(node, obj) { var local = node.localName || node.nodeName.split(":").pop(); var value = this.getChildValue(node); if(obj.properties) { obj.properties[local] = value.replace(this.regExes.trimSpace, "") }else { obj[local] = value.replace(this.regExes.trimSpace, "") } }, "Placemark":function(node, obj) { var container = {properties:{}}; var sharedVertices, callback; var id = node.getAttribute("id"); this.readChildNodes(node, container); if(goog.isDef(container.track)) { var track = container.track, j, jj; delete container.track; for(var i = 0, ii = track.whens.length;i < ii;++i) { if(this.trackAttributes) { for(j = 0, jj = this.trackAttributes.length;j < jj;++j) { var name = this.trackAttributes[j]; container.properties[name] = track.attributes[name][i] } } container.properties["when"] = track.whens[i]; if(goog.isDef(track.angles[i])) { container.properties["heading"] = parseFloat(track.angles[i][0]); container.properties["tilt"] = parseFloat(track.angles[i][1]); container.properties["roll"] = parseFloat(track.angles[i][2]) } if(track.points[i].coordinates.length === 3) { container.properties["altitude"] = track.points[i].coordinates[2] } var feature = new ol.Feature(container.properties); if(!goog.isNull(id)) { feature.setFeatureId(id) } var geom = track.points[i]; if(geom) { sharedVertices = undefined; if(this.readFeaturesOptions_) { callback = this.readFeaturesOptions_.callback; if(callback) { sharedVertices = callback(feature, geom.type) } } var geometry = this.createGeometry_({geometry:geom}, sharedVertices); if(goog.isDef(geometry)) { feature.setGeometry(geometry) } } obj.features.push(feature) } }else { if(goog.isDef(container.geometry)) { var styleUrl = container.properties["styleUrl"]; if(goog.isDef(styleUrl)) { if(!goog.string.startsWith(styleUrl, "#")) { obj.links.push({href:styleUrl}) } } feature = new ol.Feature(container.properties); if(!goog.isNull(id)) { feature.setFeatureId(id) } if(container.geometry) { sharedVertices = undefined; if(this.readFeaturesOptions_) { callback = this.readFeaturesOptions_.callback; if(callback) { sharedVertices = callback(feature, container.geometry.type) } } geometry = this.createGeometry_(container, sharedVertices); if(goog.isDef(geometry)) { feature.setGeometry(geometry) } } var symbolizers = undefined; if(goog.isDef(container.styles)) { symbolizers = container.styles[0].symbolizers } this.applyStyle_(feature, obj["styles"], symbolizers); obj.features.push(feature) } } }, "MultiGeometry":function(node, container) { var parts = []; this.readChildNodes(node, parts); var buckets = goog.array.bucket(parts, function(val) { return val.type }); var obj = {}; if(goog.object.getCount(buckets) === 1) { var type = goog.object.getAnyKey(buckets); switch(type) { case ol.geom.GeometryType.POINT: obj.geometry = {type:ol.geom.GeometryType.MULTIPOINT, parts:parts}; break; case ol.geom.GeometryType.LINESTRING: obj.geometry = {type:ol.geom.GeometryType.MULTILINESTRING, parts:parts}; break; case ol.geom.GeometryType.POLYGON: obj.geometry = {type:ol.geom.GeometryType.MULTIPOLYGON, parts:parts}; break; default: break } }else { obj.geometry = {type:ol.geom.GeometryType.GEOMETRYCOLLECTION, parts:parts} } if(goog.isArray(container)) { container.push(obj.geometry) }else { container.geometry = obj.geometry } }, "Point":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); var point = {type:ol.geom.GeometryType.POINT, coordinates:coordinates[0][0]}; if(goog.isArray(container)) { container.push(point) }else { container.geometry = point } }, "Polygon":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); var polygon = {type:ol.geom.GeometryType.POLYGON, coordinates:coordinates}; if(goog.isArray(container)) { container.push(polygon) }else { container.geometry = polygon } }, "LineString":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); var linestring = {type:ol.geom.GeometryType.LINESTRING, coordinates:coordinates[0]}; if(goog.isArray(container)) { container.push(linestring) }else { container.geometry = linestring } }, "outerBoundaryIs":function(node, coordinates) { this.readChildNodes(node, coordinates) }, "LinearRing":function(node, coordinates) { this.readChildNodes(node, coordinates) }, "coordinates":function(node, coordinates) { var coordstr = this.getChildValue(node); var reg = this.regExes; var coords = coordstr.replace(reg.trimSpace, "").split(reg.splitSpace); var coordArray = []; for(var i = 0, ii = coords.length;i < ii;i++) { var array = coords[i].replace(reg.removeSpace, "").split(","); var pair = []; var jj = Math.min(array.length, this.dimension); for(var j = 0;j < jj;j++) { pair.push(parseFloat(array[j])) } coordArray.push(pair) } coordinates.push(coordArray) }, "innerBoundaryIs":function(node, coordinates) { this.readChildNodes(node, coordinates) }, "Folder":function(node, obj) { this.readChildNodes(node, obj) }, "ExtendedData":function(node, container) { this.readChildNodes(node, container.properties) }, "SchemaData":function(node, attributes) { this.readChildNodes(node, attributes) }, "SimpleData":function(node, attributes) { attributes[node.getAttribute("name")] = this.getChildValue(node) }, "Data":function(node, attributes) { var data = {}; this.readChildNodes(node, data); attributes[node.getAttribute("name")] = data["value"] }, "when":function(node, container) { var value = this.getChildValue(node); var split1 = value.split("T"); if(split1.length === 2) { var split2 = split1[1].split("-"); if(split2.length === 2) { value += ":00" } } container.whens.push(goog.date.fromIsoString(value).date_) }, "_trackPointAttribute":function(node, container) { var name = node.nodeName.split(":").pop(); container.attributes[name].push(this.getChildValue(node)) }, "Style":function(node, obj) { if(this.extractStyles === true) { if(!obj["styles"]) { obj["styles"] = [] } var style = {"symbolizers":[], "ids":[]}; var id = node.getAttribute("id"); if(!goog.isNull(id)) { style["id"] = id } this.readChildNodes(node, style); obj["styles"].push(style) } }, "LineStyle":function(node, obj) { var style = {}; var options = {}; this.readChildNodes(node, style); if(style.color) { options.color = style.color.color; options.opacity = style.color.opacity } if(style.width) { options.width = parseFloat(style.width) } obj["ids"].push(node.getAttribute("id")); obj["symbolizers"].push(new ol.style.Stroke(options)) }, "PolyStyle":function(node, obj) { var style = {}; var options = {}; this.readChildNodes(node, style); if(!(style.fill === "0" || style.fill === "false")) { if(style.color) { options.color = style.color.color; options.opacity = style.color.opacity }else { options.color = "#ffffff"; options.opacity = 1 } obj["symbolizers"].push(new ol.style.Fill(options)) } if(!(style.outline === "0" || style.outline === "false")) { if(style.color) { options.color = style.color.color; options.opacity = style.color.opacity }else { options.color = "#ffffff"; options.opacity = 1 } obj["symbolizers"].push(new ol.style.Stroke(options)) } obj["ids"].push(node.getAttribute("id")) }, "fill":function(node, obj) { obj.fill = this.getChildValue(node) }, "outline":function(node, obj) { obj.outline = this.getChildValue(node) }, "scale":function(node, obj) { obj.scale = parseFloat(this.getChildValue(node)) }, "Icon":function(node, obj) { obj.icon = {}; this.readChildNodes(node, obj.icon) }, "href":function(node, obj) { obj.href = this.getChildValue(node) }, "w":function(node, obj) { obj.w = this.getChildValue(node) }, "h":function(node, obj) { obj.h = this.getChildValue(node) }, "x":function(node, obj) { obj.x = this.getChildValue(node) }, "y":function(node, obj) { obj.y = this.getChildValue(node) }, "hotSpot":function(node, obj) { obj.hotSpot = {x:parseFloat(node.getAttribute("x")), y:parseFloat(node.getAttribute("y")), xunits:node.getAttribute("xunits"), yunits:node.getAttribute("yunits")} }, "IconStyle":function(node, obj) { var style = {}; var options = {}; this.readChildNodes(node, style); var scale = style.scale || 1; var width = 32 * scale; var height = 32 * scale; var x, y; if(goog.isDef(style.icon)) { var href = style.icon.href; if(goog.isDef(href)) { var w = style.icon.w; var h = style.icon.h; var google = "http://maps.google.com/mapfiles/kml"; if(goog.string.startsWith(href, google) && !goog.isDef(w) && !goog.isDef(h)) { w = 64; h = 64; scale = scale / 2 } w = w || h; h = h || w; if(w) { width = parseInt(w, 10) * scale } if(h) { height = parseInt(h, 10) * scale } var matches = href.match(this.regExes.kmlIconPalette); if(matches) { var palette = matches[1]; var file_extension = matches[2]; x = style.icon.x; y = style.icon.y; var posX = x ? x / 32 : 0; var posY = y ? 7 - y / 32 : 7; var pos = posY * 8 + posX; href = "http://maps.google.com/mapfiles/kml/pal" + palette + "/icon" + pos + file_extension } options.opacity = 1; options.url = href } } if(goog.isDef(style.hotSpot)) { x = style.hotSpot.x; y = style.hotSpot.y; var xUnits = style.hotSpot.xunits, yUnits = style.hotSpot.yunits; if(xUnits === "pixels") { options.xOffset = -x * scale }else { if(xUnits === "insetPixels") { options.xOffset = -width + x * scale }else { if(xUnits === "fraction") { options.xOffset = -width * x } } } if(yUnits == "pixels") { options.yOffset = -height + y * scale + 1 }else { if(yUnits == "insetPixels") { options.yOffset = -(y * scale) + 1 }else { if(yUnits == "fraction") { options.yOffset = -height * (1 - y) + 1 } } } } options.width = width; options.height = height; obj["ids"].push(node.getAttribute("id")); obj["symbolizers"].push(new ol.style.Icon(options)) }, "color":function(node, obj) { var kmlColor = this.getChildValue(node); if(kmlColor) { var matches = kmlColor.match(this.regExes.kmlColor); if(matches) { obj.color = {color:"#" + matches[4] + matches[3] + matches[2], opacity:parseInt(matches[1], 16) / 255} } } }, "width":function(node, obj) { obj.width = this.getChildValue(node) }}, "http://www.google.com/kml/ext/2.2":{"Track":function(node, container) { container.track = {whens:[], points:[], angles:[]}; if(this.trackAttributes) { var name; container.track.attributes = {}; for(var i = 0, ii = this.trackAttributes.length;i < ii;++i) { name = this.trackAttributes[i]; container.track.attributes[name] = []; var readers = this.readers[this.defaultNamespaceURI]; if(!(name in readers)) { readers[name] = readers["_trackPointAttribute"] } } } this.readChildNodes(node, container.track); if(container.track.whens.length !== container.track.points.length) { throw new Error("gx:Track with unequal number of when (" + container.track.whens.length + ") and gx:coord (" + container.track.points.length + ") elements."); } var hasAngles = container.track.angles.length > 0; if(hasAngles && container.track.whens.length !== container.track.angles.length) { throw new Error("gx:Track with unequal number of when (" + container.track.whens.length + ") and gx:angles (" + container.track.angles.length + ") elements."); } }, "coord":function(node, container) { var str = this.getChildValue(node); var coords = str.replace(this.regExes.trimSpace, "").split(/\s+/); for(var i = 0, ii = this.dimension;i < ii;++i) { coords[i] = parseFloat(coords[i]) } var point = {type:ol.geom.GeometryType.POINT, coordinates:coords}; container.points.push(point) }, "angles":function(node, container) { var str = this.getChildValue(node); var parts = str.replace(this.regExes.trimSpace, "").split(/\s+/); container.angles.push(parts) }}}; this.writers = {"http://www.opengis.net/kml/2.2":{"kml":function(options) { var node = this.createElementNS("kml"); this.writeNode("Document", options, null, node); return node }, "Document":function(options) { var node = this.createElementNS("Document"); for(var key in options) { if(options.hasOwnProperty(key) && goog.isString(options[key])) { var child = this.createElementNS(key); child.appendChild(this.createTextNode(options[key])); node.appendChild(child) } } var i, ii; if(goog.isDef(options.styles)) { for(i = 0, ii = options.styles.length;i < ii;++i) { this.writeNode("_style", options.styles[i], null, node) } } for(i = 0, ii = options.features.length;i < ii;++i) { this.writeNode("_feature", options.features[i], null, node) } return node }, "_style":function(style) { var node = this.createElementNS("Style"); if(goog.isDef(style.id)) { this.setAttributeNS(node, null, "id", style.id) } for(var i = 0, ii = style.symbolizers.length;i < ii;++i) { this.writeNode("_symbolizer", {symbolizer:style.symbolizers[i], id:style.ids ? style.ids[i] : undefined}, null, node) } return node }, "_symbolizer":function(obj) { var symbolizer = obj.symbolizer; if(symbolizer instanceof ol.style.Icon) { return this.writeNode("IconStyle", obj) }else { if(symbolizer instanceof ol.style.Stroke) { return this.writeNode("LineStyle", obj) }else { if(symbolizer instanceof ol.style.Fill) { return this.writeNode("PolyStyle", obj) } } } }, "PolyStyle":function(obj) { var node = this.createElementNS("PolyStyle"); if(obj.id) { this.setAttributeNS(node, null, "id", obj.id) } var literal = obj.symbolizer.createLiteral(ol.geom.GeometryType.POLYGON); var color, opacity; if(literal.fillOpacity !== 0) { this.writeNode("fill", "1", null, node); color = literal.fillColor; opacity = literal.fillOpacity }else { this.writeNode("fill", "0", null, node) } if(literal.strokeOpacity) { this.writeNode("outline", "1", null, node); color = color || literal.strokeColor; opacity = opacity || literal.strokeOpacity }else { this.writeNode("outline", "0", null, node) } if(color && opacity) { this.writeNode("color", {color:color.substring(1), opacity:opacity}, null, node) } return node }, "fill":function(fill) { var node = this.createElementNS("fill"); node.appendChild(this.createTextNode(fill)); return node }, "outline":function(outline) { var node = this.createElementNS("outline"); node.appendChild(this.createTextNode(outline)); return node }, "LineStyle":function(obj) { var node = this.createElementNS("LineStyle"); if(obj.id) { this.setAttributeNS(node, null, "id", obj.id) } var literal = obj.symbolizer.createLiteral(ol.geom.GeometryType.LINESTRING); this.writeNode("color", {color:literal.color.substring(1), opacity:literal.opacity}, null, node); this.writeNode("width", literal.width, null, node); return node }, "color":function(colorObj) { var color = colorObj.color; var text = (colorObj.opacity * 255).toString(16) + color.substring(4, 6) + color.substring(2, 4) + color.substring(0, 2); var node = this.createElementNS("color"); node.appendChild(this.createTextNode(text)); return node }, "width":function(width) { var node = this.createElementNS("width"); node.appendChild(this.createTextNode(width)); return node }, "IconStyle":function(obj) { var node = this.createElementNS("IconStyle"); this.setAttributeNS(node, null, "id", obj.id); this.writeNode("Icon", obj.symbolizer.createLiteral(ol.geom.GeometryType.POINT).url, null, node); return node }, "Icon":function(url) { var node = this.createElementNS("Icon"); this.writeNode("href", url, null, node); return node }, "href":function(url) { var node = this.createElementNS("href"); node.appendChild(this.createTextNode(url)); return node }, "_feature":function(feature) { var node = this.createElementNS("Placemark"); var fid = feature.getFeatureId(); if(goog.isDef(fid)) { node.setAttribute("id", fid) } this.writeNode("name", feature, null, node); this.writeNode("description", feature, null, node); if(goog.isDef(feature.get("styleUrl"))) { this.writeNode("styleUrl", feature, null, node) }else { var symbolizers = feature.getSymbolizers(); if(!goog.isNull(symbolizers)) { this.writeNode("_style", {symbolizers:symbolizers}, null, node) } } this.writeNode("_geometry", feature.getGeometry(), null, node); return node }, "name":function(feature) { var name = feature.get("name"); if(goog.isDef(name)) { var node = this.createElementNS("name"); node.appendChild(this.createTextNode(name)); return node } }, "description":function(feature) { var description = feature.get("description"); if(goog.isDef(description)) { var node = this.createElementNS("description"); node.appendChild(this.createTextNode(description)); return node } }, "styleUrl":function(feature) { var styleUrl = feature.get("styleUrl"); var node = this.createElementNS("styleUrl"); node.appendChild(this.createTextNode(styleUrl)); return node }, "_geometry":function(geometry) { if(geometry instanceof ol.geom.Point) { return this.writeNode("Point", geometry) }else { if(geometry instanceof ol.geom.LineString) { return this.writeNode("LineString", geometry) }else { if(geometry instanceof ol.geom.Polygon) { return this.writeNode("Polygon", geometry) }else { if(geometry instanceof ol.geom.AbstractCollection) { return this.writeNode("MultiGeometry", geometry) } } } } }, "MultiGeometry":function(geometry) { var node = this.createElementNS("MultiGeometry"); for(var i = 0, ii = geometry.components.length;i < ii;++i) { this.writeNode("_geometry", geometry.components[i], null, node) } return node }, "Point":function(geometry) { var node = this.createElementNS("Point"); var coords = geometry.getCoordinates(); this.writeNode("coordinates", [coords], null, node); return node }, "LineString":function(geometry) { var node = this.createElementNS("LineString"); this.writeNode("coordinates", geometry.getCoordinates(), null, node); return node }, "Polygon":function(geometry) { var node = this.createElementNS("Polygon"); var coordinates = geometry.getCoordinates(); this.writeNode("outerBoundaryIs", coordinates[0], null, node); for(var i = 1, ii = coordinates.length;i < ii;++i) { this.writeNode("innerBoundaryIs", coordinates[i], null, node) } return node }, "outerBoundaryIs":function(vertexArray) { var node = this.createElementNS("outerBoundaryIs"); this.writeNode("LinearRing", vertexArray, null, node); return node }, "innerBoundaryIs":function(vertexArray) { var node = this.createElementNS("innerBoundaryIs"); this.writeNode("LinearRing", vertexArray, null, node); return node }, "LinearRing":function(vertexArray) { var node = this.createElementNS("LinearRing"); this.writeNode("coordinates", vertexArray, null, node); return node }, "coordinates":function(vertexArray) { var node = this.createElementNS("coordinates"); var coordstr = ""; for(var i = 0, ii = vertexArray.length;i < ii;++i) { for(var j = 0, jj = vertexArray[i].length;j < jj;++j) { coordstr += vertexArray[i][j]; if(j < jj - 1) { coordstr += "," } } if(i < ii - 1) { coordstr += " " } } node.appendChild(this.createTextNode(coordstr)); return node }}}; goog.base(this); goog.object.extend(this.regExes, {kmlColor:/(\w{2})(\w{2})(\w{2})(\w{2})/, kmlIconPalette:/root:\/\/icons\/palette-(\d+)(\.\w+)/, straightBracket:/\$\[(.*?)\]/g}) }; goog.inherits(ol.parser.KML, ol.parser.XML); ol.parser.KML.prototype.readFeaturesFromObjectAsync = function(obj, callback, opt_options) { this.readFeaturesOptions_ = opt_options; this.read(obj, callback) }; ol.parser.KML.prototype.readFeaturesFromStringAsync = function(str, callback, opt_options) { this.readFeaturesOptions_ = opt_options; this.read(str, callback) }; ol.parser.KML.prototype.readFeaturesFromString = function(str, opt_options) { this.readFeaturesOptions_ = opt_options; return(this.read(str)) }; ol.parser.KML.prototype.readFeaturesFromNode = function(node, opt_options) { this.readFeaturesOptions_ = opt_options; return(this.read(node)) }; ol.parser.KML.prototype.readFeaturesFromObject = function(obj, opt_options) { this.readFeaturesOptions_ = opt_options; return(this.read(obj)) }; ol.parser.KML.prototype.parseLinks = function(deferreds, obj, done) { var unvisited; if(this.depth_ < this.maxDepth) { this.depth_++; for(var i = 0, ii = obj.links.length;i < ii;++i) { var link = obj.links[i]; if(link.visited !== true) { unvisited = true; var deferred = new goog.async.Deferred; var xhr = new goog.net.XhrIo; var me = this; goog.events.listen(xhr, goog.net.EventType.COMPLETE, function(e) { if(e.target.isSuccess()) { var data = e.target.getResponseXml() || e.target.getResponseText(); if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } goog.dispose(e.target); if(data) { if(data.nodeType == 9) { data = data.documentElement } me.readNode(data, obj) } me.parseLinks(deferreds, obj, done); this.callback(data) } }, false, deferred); deferreds.push(deferred); xhr.send(link.href); link.visited = true } } } if(unvisited !== true && this.callbackCalled_ !== true) { done.call(this) } }; ol.parser.KML.prototype.read = function(data, opt_callback) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } if(data && data.nodeType == 9) { data = data.documentElement } var obj = ({metadata:{projection:"EPSG:4326"}}); this.readNode(data, obj); if(goog.isDef(opt_callback)) { var deferreds = []; this.depth_ = 0; this.callbackCalled_ = false; this.parseLinks(deferreds, obj, function() { this.callbackCalled_ = true; goog.async.DeferredList.gatherResults(deferreds).addCallbacks(function(datas) { for(var i = 0, ii = obj.features.length;i < ii;++i) { var feature = obj.features[i]; this.applyStyle_(feature, obj["styles"]) } opt_callback.call(null, obj) }, function() { throw new Error("KML: parsing of NetworkLinks failed"); }, this) }) }else { return obj } }; ol.parser.KML.prototype.applyStyle_ = function(feature, styles, opt_symbolizers) { var symbolizers = opt_symbolizers; var i, ii; if(feature.get("styleUrl") && feature.getSymbolizers() === null) { var styleUrl = feature.get("styleUrl"); styleUrl = styleUrl.substring(styleUrl.indexOf("#") + 1); if(goog.isDef(styles)) { for(i = 0, ii = styles.length;i < ii;++i) { if(styles[i]["id"] === styleUrl) { symbolizers = styles[i]["symbolizers"]; break } } } } if(goog.isDef(symbolizers)) { feature.setSymbolizers(symbolizers) } }; ol.parser.KML.prototype.createGeometry_ = function(container, opt_vertices) { var geometry = null, coordinates, i, ii; switch(container.geometry.type) { case ol.geom.GeometryType.POINT: geometry = new ol.geom.Point(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.LINESTRING: geometry = new ol.geom.LineString(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.POLYGON: geometry = new ol.geom.Polygon(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.MULTIPOINT: coordinates = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { coordinates.push(container.geometry.parts[i].coordinates) } geometry = new ol.geom.MultiPoint(coordinates, opt_vertices); break; case ol.geom.GeometryType.MULTILINESTRING: coordinates = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { coordinates.push(container.geometry.parts[i].coordinates) } geometry = new ol.geom.MultiLineString(coordinates, opt_vertices); break; case ol.geom.GeometryType.MULTIPOLYGON: coordinates = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { coordinates.push(container.geometry.parts[i].coordinates) } geometry = new ol.geom.MultiPolygon(coordinates, opt_vertices); break; case ol.geom.GeometryType.GEOMETRYCOLLECTION: var geometries = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { geometries.push(this.createGeometry_({geometry:container.geometry.parts[i]}, opt_vertices)) } geometry = new ol.geom.GeometryCollection(geometries); break; default: break } return geometry }; ol.parser.KML.prototype.write = function(obj) { var root = this.writeNode("kml", obj); this.setAttributeNS(root, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation); return this.serialize(root) }; goog.provide("ol.parser.TopoJSON"); goog.require("ol.Coordinate"); goog.require("ol.CoordinateArray"); goog.require("ol.Feature"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.parser.Parser"); goog.require("ol.parser.ReadFeaturesOptions"); goog.require("ol.parser.StringFeatureParser"); ol.parser.TopoJSON = function() { this.feature_ = new ol.Feature }; goog.inherits(ol.parser.TopoJSON, ol.parser.Parser); goog.addSingletonGetter(ol.parser.TopoJSON); ol.parser.TopoJSON.prototype.concatenateArcs_ = function(indices, arcs) { var coordinates = []; var index, arc; for(var i = 0, ii = indices.length;i < ii;++i) { index = indices[i]; if(i > 0) { coordinates.pop() } if(index >= 0) { arc = arcs[index] }else { arc = arcs[~index].slice().reverse() } coordinates.push.apply(coordinates, arc) } return coordinates }; ol.parser.TopoJSON.prototype.read = function(str) { var topology = (JSON.parse(str)); return this.readFeaturesFromObject(topology).features }; ol.parser.TopoJSON.prototype.readFeaturesFromString = function(str, opt_options) { var topology = (JSON.parse(str)); if(topology.type !== "Topology") { throw new Error('Not a "Topology" type object'); } return{features:this.readFeaturesFromTopology_(topology, opt_options), metadata:{projection:"EPSG:4326"}} }; ol.parser.TopoJSON.prototype.readFeaturesFromObject = function(topology, opt_options) { if(topology.type !== "Topology") { throw new Error('Not a "Topology" type object'); } return{features:this.readFeaturesFromTopology_(topology, opt_options), metadata:{projection:"EPSG:4326"}} }; ol.parser.TopoJSON.prototype.readFeatureFromGeometry_ = function(object, arcs, scale, translate, opt_options) { var geometry; var type = object.type; if(type === "Point") { geometry = this.readPoint_((object), scale, translate, opt_options) }else { if(type === "LineString") { geometry = this.readLineString_((object), arcs, opt_options) }else { if(type === "Polygon") { geometry = this.readPolygon_((object), arcs, opt_options) }else { if(type === "MultiPoint") { geometry = this.readMultiPoint_((object), scale, translate, opt_options) }else { if(type === "MultiLineString") { geometry = this.readMultiLineString_((object), arcs, opt_options) }else { if(type === "MultiPolygon") { geometry = this.readMultiPolygon_((object), arcs, opt_options) }else { throw new Error("Unsupported geometry type: " + type); } } } } } } var feature = new ol.Feature; feature.setGeometry(geometry); if(goog.isDef(object.id)) { feature.setFeatureId(String(object.id)) } return feature }; ol.parser.TopoJSON.prototype.readFeaturesFromGeometryCollection_ = function(collection, arcs, scale, translate, opt_options) { var geometries = collection.geometries; var num = geometries.length; var features = new Array(num); for(var i = 0;i < num;++i) { features[i] = this.readFeatureFromGeometry_(geometries[i], arcs, scale, translate, opt_options) } return features }; ol.parser.TopoJSON.prototype.readFeaturesFromTopology_ = function(topology, opt_options) { var transform = topology.transform; var scale = transform.scale; var translate = transform.translate; var arcs = topology.arcs; this.transformArcs_(arcs, scale, translate); var objects = topology.objects; var features = []; for(var key in objects) { if(objects[key].type === "GeometryCollection") { features.push.apply(features, this.readFeaturesFromGeometryCollection_((objects[key]), arcs, scale, translate, opt_options)) }else { features.push(this.readFeatureFromGeometry_((objects[key]), arcs, scale, translate, opt_options)) } } return features }; ol.parser.TopoJSON.prototype.readLineString_ = function(object, arcs, opt_options) { var coordinates = this.concatenateArcs_(object.arcs, arcs); var callback = opt_options && opt_options.callback; var sharedVertices; if(callback) { sharedVertices = callback(this.feature_, ol.geom.GeometryType.LINESTRING) } return new ol.geom.LineString(coordinates, sharedVertices) }; ol.parser.TopoJSON.prototype.readMultiLineString_ = function(object, arcs, opt_options) { var array = object.arcs; var num = array.length; var coordinates = new Array(num); for(var i = 0;i < num;++i) { coordinates[i] = this.concatenateArcs_(array[i], arcs) } var callback = opt_options && opt_options.callback; var sharedVertices; if(callback) { sharedVertices = callback(this.feature_, ol.geom.GeometryType.MULTILINESTRING) } return new ol.geom.MultiLineString(coordinates, sharedVertices) }; ol.parser.TopoJSON.prototype.readMultiPoint_ = function(object, scale, translate, opt_options) { var coordinates = object.coordinates; for(var i = 0, ii = coordinates.length;i < ii;++i) { this.transformVertex_(coordinates[i], scale, translate) } var callback = opt_options && opt_options.callback; var sharedVertices; if(callback) { sharedVertices = callback(this.feature_, ol.geom.GeometryType.MULTIPOINT) } return new ol.geom.MultiPoint(coordinates, sharedVertices) }; ol.parser.TopoJSON.prototype.readMultiPolygon_ = function(object, arcs, opt_options) { var array = object.arcs; var numPolys = array.length; var coordinates = new Array(numPolys); var polyArray, numRings, ringCoords, j; for(var i = 0;i < numPolys;++i) { polyArray = array[i]; numRings = polyArray.length; ringCoords = new Array(numRings); for(j = 0;j < numRings;++j) { ringCoords[j] = this.concatenateArcs_(polyArray[j], arcs) } coordinates[i] = ringCoords } var callback = opt_options && opt_options.callback; var sharedVertices; if(callback) { sharedVertices = callback(this.feature_, ol.geom.GeometryType.MULTIPOLYGON) } return new ol.geom.MultiPolygon(coordinates, sharedVertices) }; ol.parser.TopoJSON.prototype.readPoint_ = function(object, scale, translate, opt_options) { var coordinates = object.coordinates; this.transformVertex_(coordinates, scale, translate); var callback = opt_options && opt_options.callback; var sharedVertices; if(callback) { sharedVertices = callback(this.feature_, ol.geom.GeometryType.POINT) } return new ol.geom.Point(coordinates, sharedVertices) }; ol.parser.TopoJSON.prototype.readPolygon_ = function(object, arcs, opt_options) { var array = object.arcs; var num = array.length; var coordinates = new Array(num); for(var i = 0;i < num;++i) { coordinates[i] = this.concatenateArcs_(array[i], arcs) } var callback = opt_options && opt_options.callback; var sharedVertices; if(callback) { sharedVertices = callback(this.feature_, ol.geom.GeometryType.POLYGON) } return new ol.geom.Polygon(coordinates, sharedVertices) }; ol.parser.TopoJSON.prototype.transformArcs_ = function(arcs, scale, translate) { for(var i = 0, ii = arcs.length;i < ii;++i) { this.transformArc_(arcs[i], scale, translate) } }; ol.parser.TopoJSON.prototype.transformArc_ = function(arc, scale, translate) { var x = 0; var y = 0; var vertex; for(var i = 0, ii = arc.length;i < ii;++i) { vertex = arc[i]; x += vertex[0]; y += vertex[1]; vertex[0] = x; vertex[1] = y; this.transformVertex_(vertex, scale, translate) } }; ol.parser.TopoJSON.prototype.transformVertex_ = function(vertex, scale, translate) { vertex[0] = vertex[0] * scale[0] + translate[0]; vertex[1] = vertex[1] * scale[1] + translate[1] }; ol.parser.TopoJSON.read = function(str) { return ol.parser.TopoJSON.getInstance().read(str) }; goog.provide("ol.parser.WKT"); goog.require("goog.array"); goog.require("goog.string"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.parser.Parser"); ol.parser.WKT = function() { }; goog.inherits(ol.parser.WKT, ol.parser.Parser); goog.addSingletonGetter(ol.parser.WKT); ol.parser.WKT.regExes = {typeStr:/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/, spaces:/\s+/, parenComma:/\)\s*,\s*\(/, doubleParenComma:/\)\s*\)\s*,\s*\(\s*\(/, trimParens:/^\s*\(?(.*?)\)?\s*$/, geomCollection:/,\s*([A-Za-z])/g, removeNewLine:/[\n\r]/g}; ol.parser.WKT.prototype.parsePoint_ = function(str) { var coords = goog.string.trim(str).split(ol.parser.WKT.regExes.spaces); return new ol.geom.Point(goog.array.map(coords, parseFloat)) }; ol.parser.WKT.prototype.parseLineString_ = function(str) { var points = goog.string.trim(str).split(","); var coordinates = []; for(var i = 0, ii = points.length;i < ii;++i) { coordinates.push(this.parsePoint_.apply(this, [points[i]]).getCoordinates()) } return new ol.geom.LineString(coordinates) }; ol.parser.WKT.prototype.parseMultiPoint_ = function(str) { var point; var points = goog.string.trim(str).split(","); var parts = []; for(var i = 0, ii = points.length;i < ii;++i) { point = points[i].replace(ol.parser.WKT.regExes.trimParens, "$1"); parts.push(this.parsePoint_.apply(this, [point])) } return ol.geom.MultiPoint.fromParts(parts) }; ol.parser.WKT.prototype.parseMultiLineString_ = function(str) { var line; var lines = goog.string.trim(str).split(ol.parser.WKT.regExes.parenComma); var parts = []; for(var i = 0, ii = lines.length;i < ii;++i) { line = lines[i].replace(ol.parser.WKT.regExes.trimParens, "$1"); parts.push(this.parseLineString_.apply(this, [line])) } return ol.geom.MultiLineString.fromParts(parts) }; ol.parser.WKT.prototype.parsePolygon_ = function(str) { var ring, linestring, linearring; var rings = goog.string.trim(str).split(ol.parser.WKT.regExes.parenComma); var coordinates = []; for(var i = 0, ii = rings.length;i < ii;++i) { ring = rings[i].replace(ol.parser.WKT.regExes.trimParens, "$1"); linestring = this.parseLineString_.apply(this, [ring]).getCoordinates(); coordinates.push(linestring) } return new ol.geom.Polygon(coordinates) }; ol.parser.WKT.prototype.parseMultiPolygon_ = function(str) { var polygon; var polygons = goog.string.trim(str).split(ol.parser.WKT.regExes.doubleParenComma); var parts = []; for(var i = 0, ii = polygons.length;i < ii;++i) { polygon = polygons[i].replace(ol.parser.WKT.regExes.trimParens, "$1"); parts.push(this.parsePolygon_.apply(this, [polygon])) } return ol.geom.MultiPolygon.fromParts(parts) }; ol.parser.WKT.prototype.parseGeometryCollection_ = function(str) { str = str.replace(ol.parser.WKT.regExes.geomCollection, "|$1"); var wktArray = goog.string.trim(str).split("|"); var components = []; for(var i = 0, ii = wktArray.length;i < ii;++i) { components.push(this.parse_.apply(this, [wktArray[i]])) } return new ol.geom.GeometryCollection(components) }; ol.parser.WKT.prototype.encodePoint_ = function(geom) { var coordinates = geom.getCoordinates(); return coordinates[0] + " " + coordinates[1] }; ol.parser.WKT.prototype.encodeMultiPoint_ = function(geom) { var array = []; for(var i = 0, ii = geom.components.length;i < ii;++i) { array.push("(" + this.encodePoint_.apply(this, [geom.components[i]]) + ")") } return array.join(",") }; ol.parser.WKT.prototype.encodeGeometryCollection_ = function(geom) { var array = []; for(var i = 0, ii = geom.components.length;i < ii;++i) { array.push(this.encode_.apply(this, [geom.components[i]])) } return array.join(",") }; ol.parser.WKT.prototype.encodeLineString_ = function(geom) { var coordinates = geom.getCoordinates(); var array = []; for(var i = 0, ii = coordinates.length;i < ii;++i) { array.push(coordinates[i][0] + " " + coordinates[i][1]) } return array.join(",") }; ol.parser.WKT.prototype.encodeMultiLineString_ = function(geom) { var array = []; for(var i = 0, ii = geom.components.length;i < ii;++i) { array.push("(" + this.encodeLineString_.apply(this, [geom.components[i]]) + ")") } return array.join(",") }; ol.parser.WKT.prototype.encodePolygon_ = function(geom) { var array = []; for(var i = 0, ii = geom.rings.length;i < ii;++i) { array.push("(" + this.encodeLineString_.apply(this, [geom.rings[i]]) + ")") } return array.join(",") }; ol.parser.WKT.prototype.encodeMultiPolygon_ = function(geom) { var array = []; for(var i = 0, ii = geom.components.length;i < ii;++i) { array.push("(" + this.encodePolygon_.apply(this, [geom.components[i]]) + ")") } return array.join(",") }; ol.parser.WKT.prototype.parse_ = function(wkt) { wkt = wkt.replace(ol.parser.WKT.regExes.removeNewLine, " "); var matches = ol.parser.WKT.regExes.typeStr.exec(wkt); var geometry; if(matches) { var type = matches[1].toLowerCase(); var str = matches[2]; switch(type) { case "point": geometry = this.parsePoint_(str); break; case "multipoint": geometry = this.parseMultiPoint_(str); break; case "linestring": geometry = this.parseLineString_(str); break; case "multilinestring": geometry = this.parseMultiLineString_(str); break; case "polygon": geometry = this.parsePolygon_(str); break; case "multipolygon": geometry = this.parseMultiPolygon_(str); break; case "geometrycollection": geometry = this.parseGeometryCollection_(str); break; default: throw new Error("Bad geometry type: " + type); } } return geometry }; ol.parser.WKT.prototype.encode_ = function(geom) { var type = geom.getType(); var result = type.toUpperCase() + "("; if(geom instanceof ol.geom.Point) { result += this.encodePoint_(geom) }else { if(geom instanceof ol.geom.MultiPoint) { result += this.encodeMultiPoint_(geom) }else { if(geom instanceof ol.geom.LineString) { result += this.encodeLineString_(geom) }else { if(geom instanceof ol.geom.MultiLineString) { result += this.encodeMultiLineString_(geom) }else { if(geom instanceof ol.geom.Polygon) { result += this.encodePolygon_(geom) }else { if(geom instanceof ol.geom.MultiPolygon) { result += this.encodeMultiPolygon_(geom) }else { if(geom instanceof ol.geom.GeometryCollection) { result += this.encodeGeometryCollection_(geom) }else { throw new Error("Bad geometry type: " + type); } } } } } } } return result + ")" }; ol.parser.WKT.prototype.read = function(str) { return this.parse_(str) }; ol.parser.WKT.prototype.write = function(geom) { return this.encode_(geom) }; ol.parser.WKT.read = function(str) { return ol.parser.WKT.getInstance().read(str) }; ol.parser.WKT.write = function(geom) { return ol.parser.WKT.getInstance().write(geom) }; goog.provide("ol.parser.ogc.ExceptionReport"); goog.require("goog.dom.xml"); goog.require("ol.parser.XML"); ol.parser.ogc.ExceptionReport = function() { var exceptionReader = function(node, exceptionReport) { var exception = {code:node.getAttribute("exceptionCode"), locator:node.getAttribute("locator"), texts:[]}; exceptionReport.exceptions.push(exception); this.readChildNodes(node, exception) }; var exceptionTextReader = function(node, exception) { var text = this.getChildValue(node); exception.texts.push(text) }; this.readers = {"http://www.opengis.net/ogc":{"ServiceExceptionReport":function(node, obj) { obj["exceptionReport"] = {}; obj["exceptionReport"]["exceptions"] = []; this.readChildNodes(node, obj["exceptionReport"]) }, "ServiceException":function(node, exceptionReport) { var exception = {}; exception["code"] = node.getAttribute("code"); exception["locator"] = node.getAttribute("locator"); exception["text"] = this.getChildValue(node); exceptionReport["exceptions"].push(exception) }}, "http://www.opengis.net/ows":{"ExceptionReport":function(node, obj) { obj.success = false; obj.exceptionReport = {version:node.getAttribute("version"), language:node.getAttribute("language"), exceptions:[]}; this.readChildNodes(node, obj.exceptionReport) }, "Exception":function(node, exceptionReport) { exceptionReader.apply(this, arguments) }, "ExceptionText":function(node, exception) { exceptionTextReader.apply(this, arguments) }}, "http://www.opengis.net/ows/1.1":{"ExceptionReport":function(node, obj) { obj.exceptionReport = {version:node.getAttribute("version"), language:node.getAttribute("xml:lang"), exceptions:[]}; this.readChildNodes(node, obj.exceptionReport) }, "Exception":function(node, exceptionReport) { exceptionReader.apply(this, arguments) }, "ExceptionText":function(node, exception) { exceptionTextReader.apply(this, arguments) }}}; goog.base(this) }; goog.inherits(ol.parser.ogc.ExceptionReport, ol.parser.XML); ol.parser.ogc.ExceptionReport.prototype.read = function(data) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } var exceptionInfo = {}; exceptionInfo["exceptionReport"] = null; if(data) { this.readChildNodes(data, exceptionInfo) } return exceptionInfo }; goog.provide("ol.parser.ogc.Filter_v1"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.xml"); goog.require("goog.object"); goog.require("goog.string"); goog.require("ol.expr"); goog.require("ol.expr.Call"); goog.require("ol.expr.Comparison"); goog.require("ol.expr.ComparisonOp"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Literal"); goog.require("ol.expr.Logical"); goog.require("ol.expr.LogicalOp"); goog.require("ol.expr.Not"); goog.require("ol.expr.functions"); goog.require("ol.parser.XML"); ol.parser.ogc.Filter_v1 = function() { this.defaultNamespaceURI = "http://www.opengis.net/ogc"; this.errorProperty = "filter"; this.readers = {"http://www.opengis.net/ogc":{_expression:function(node) { var expressions = []; var obj, value, numValue, expr; for(var child = node.firstChild;child;child = child.nextSibling) { switch(child.nodeType) { case 1: obj = this.readNode(child); if(obj.property) { expressions.push(obj.property) }else { if(goog.isDef(obj.value)) { expressions.push(obj.value) } } break; case 3: ; case 4: value = goog.string.trim(child.nodeValue); if(value) { numValue = goog.string.toNumber(value); if(!isNaN(numValue)) { value = numValue } expressions.push(new ol.expr.Literal(value)) } break; default: break } } var num = expressions.length; if(num === 1) { expr = expressions[0] }else { expr = new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.CONCAT), expressions) } return expr }, "Filter":function(node, obj) { var container = {filters:[]}; this.readChildNodes(node, container); if(goog.isDef(container.fids)) { obj.filter = new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.FID), goog.object.getValues(container.fids)) }else { if(container.filters.length > 0) { obj.filter = container.filters[0] } } }, "FeatureId":function(node, obj) { var fid = node.getAttribute("fid"); if(fid) { if(!goog.isDef(obj.fids)) { obj.fids = {} } if(!obj.fids.hasOwnProperty(fid)) { obj.fids[fid] = new ol.expr.Literal(fid) } } }, "And":function(node, obj) { var container = {filters:[]}; this.readChildNodes(node, container); var filter = this.aggregateLogical_(container.filters, ol.expr.LogicalOp.AND); obj.filters.push(filter) }, "Or":function(node, obj) { var container = {filters:[]}; this.readChildNodes(node, container); var filter = this.aggregateLogical_(container.filters, ol.expr.LogicalOp.OR); obj.filters.push(filter) }, "Not":function(node, obj) { var container = {filters:[]}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Not(container.filters[0])) }, "PropertyIsNull":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.EQ, container.property, new ol.expr.Literal(null))) }, "PropertyIsLessThan":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.LT, container.property, container.value)) }, "PropertyIsGreaterThan":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.GT, container.property, container.value)) }, "PropertyIsLessThanOrEqualTo":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.LTE, container.property, container.value)) }, "PropertyIsGreaterThanOrEqualTo":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.GTE, container.property, container.value)) }, "PropertyIsBetween":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Logical(ol.expr.LogicalOp.AND, new ol.expr.Comparison(ol.expr.ComparisonOp.GTE, container.property, container.lowerBoundary), new ol.expr.Comparison(ol.expr.ComparisonOp.LTE, container.property, container.upperBoundary))) }, "Literal":function(node, obj) { var nodeValue = this.getChildValue(node); var value = goog.string.toNumber(nodeValue); obj.value = new ol.expr.Literal(isNaN(value) ? nodeValue : value) }, "PropertyName":function(node, obj) { obj.property = new ol.expr.Identifier(this.getChildValue(node)) }, "LowerBoundary":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; obj.lowerBoundary = readers._expression.call(this, node) }, "UpperBoundary":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; obj.upperBoundary = readers._expression.call(this, node) }, _spatial:function(node, obj, identifier) { var args = [], container = {}; this.readChildNodes(node, container); if(goog.isDef(container.geometry)) { args.push(new ol.expr.Literal(this.gml_.createGeometry(container))) }else { args = [new ol.expr.Literal(container.bounds[0]), new ol.expr.Literal(container.bounds[1]), new ol.expr.Literal(container.bounds[2]), new ol.expr.Literal(container.bounds[3])] } if(goog.isDef(container.distance)) { args.push(container.distance) } if(goog.isDef(container.distanceUnits)) { args.push(container.distanceUnits) } args.push(new ol.expr.Literal(container.projection)); if(goog.isDef(container.property)) { args.push(container.property) } obj.filters.push(new ol.expr.Call(new ol.expr.Identifier(identifier), args)) }, "BBOX":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; readers._spatial.call(this, node, obj, ol.expr.functions.EXTENT) }, "Intersects":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; readers._spatial.call(this, node, obj, ol.expr.functions.INTERSECTS) }, "Within":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; readers._spatial.call(this, node, obj, ol.expr.functions.WITHIN) }, "Contains":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; readers._spatial.call(this, node, obj, ol.expr.functions.CONTAINS) }, "DWithin":function(node, obj) { var readers = this.readers[this.defaultNamespaceURI]; readers._spatial.call(this, node, obj, ol.expr.functions.DWITHIN) }, "Distance":function(node, obj) { var value = goog.string.toNumber(this.getChildValue(node)); obj.distance = new ol.expr.Literal(value); obj.distanceUnits = new ol.expr.Literal(node.getAttribute("units")) }}}; this.writers = {"http://www.opengis.net/ogc":{"Filter":function(filter) { var node = this.createElementNS("ogc:Filter"); this.writeNode(this.getFilterType_(filter), filter, null, node); return node }, "_featureIds":function(filter) { var node = this.createDocumentFragment(); var args = filter.getArgs(); for(var i = 0, ii = args.length;i < ii;i++) { goog.asserts.assert(args[i] instanceof ol.expr.Literal); this.writeNode("FeatureId", args[i].getValue(), null, node) } return node }, "FeatureId":function(fid) { var node = this.createElementNS("ogc:FeatureId"); node.setAttribute("fid", fid); return node }, "And":function(filter) { var node = this.createElementNS("ogc:And"); var subFilters = []; this.getSubfiltersForLogical_(filter, subFilters); for(var i = 0, ii = subFilters.length;i < ii;++i) { var subFilter = subFilters[i]; if(goog.isDefAndNotNull(subFilter)) { this.writeNode(this.getFilterType_(subFilter), subFilter, null, node) } } return node }, "Or":function(filter) { var node = this.createElementNS("ogc:Or"); var subFilters = []; this.getSubfiltersForLogical_(filter, subFilters); for(var i = 0, ii = subFilters.length;i < ii;++i) { var subFilter = subFilters[i]; if(goog.isDefAndNotNull(subFilter)) { this.writeNode(this.getFilterType_(subFilter), subFilter, null, node) } } return node }, "Not":function(filter) { var node = this.createElementNS("ogc:Not"); var childFilter = filter.getArgument(); this.writeNode(this.getFilterType_(childFilter), childFilter, null, node); return node }, "PropertyIsLessThan":function(filter) { var node = this.createElementNS("ogc:PropertyIsLessThan"); this.writeNode("PropertyName", filter.getLeft(), null, node); this.writeOgcExpression(filter.getRight(), node); return node }, "PropertyIsGreaterThan":function(filter) { var node = this.createElementNS("ogc:PropertyIsGreaterThan"); this.writeNode("PropertyName", filter.getLeft(), null, node); this.writeOgcExpression(filter.getRight(), node); return node }, "PropertyIsLessThanOrEqualTo":function(filter) { var node = this.createElementNS("ogc:PropertyIsLessThanOrEqualTo"); this.writeNode("PropertyName", filter.getLeft(), null, node); this.writeOgcExpression(filter.getRight(), node); return node }, "PropertyIsGreaterThanOrEqualTo":function(filter) { var node = this.createElementNS("ogc:PropertyIsGreaterThanOrEqualTo"); this.writeNode("PropertyName", filter.getLeft(), null, node); this.writeOgcExpression(filter.getRight(), node); return node }, "PropertyIsBetween":function(filter) { var node = this.createElementNS("ogc:PropertyIsBetween"); var property = filter.getLeft().getLeft(); this.writeNode("PropertyName", property, null, node); var lower, upper; var filters = new Array(2); filters[0] = filter.getLeft(); filters[1] = filter.getRight(); for(var i = 0;i < 2;++i) { var expr = filters[i].getRight(); if(filters[i].getOperator() === ol.expr.ComparisonOp.GTE) { lower = expr }else { if(filters[i].getOperator() === ol.expr.ComparisonOp.LTE) { upper = expr } } } this.writeNode("LowerBoundary", lower, null, node); this.writeNode("UpperBoundary", upper, null, node); return node }, "PropertyName":function(expr) { goog.asserts.assert(expr instanceof ol.expr.Identifier); var node = this.createElementNS("ogc:PropertyName"); node.appendChild(this.createTextNode(expr.getName())); return node }, "Literal":function(expr) { goog.asserts.assert(expr instanceof ol.expr.Literal); var node = this.createElementNS("ogc:Literal"); node.appendChild(this.createTextNode(expr.getValue())); return node }, "LowerBoundary":function(expr) { var node = this.createElementNS("ogc:LowerBoundary"); this.writeOgcExpression(expr, node); return node }, "UpperBoundary":function(expr) { var node = this.createElementNS("ogc:UpperBoundary"); this.writeOgcExpression(expr, node); return node }, "INTERSECTS":function(filter) { return this.writeSpatial_(filter, "Intersects") }, "WITHIN":function(filter) { return this.writeSpatial_(filter, "Within") }, "CONTAINS":function(filter) { return this.writeSpatial_(filter, "Contains") }, "DWITHIN":function(filter) { var node = this.writeSpatial_(filter, "DWithin"); this.writeNode("Distance", filter, null, node); return node }, "Distance":function(filter) { var node = this.createElementNS("ogc:Distance"); var args = filter.getArgs(); goog.asserts.assert(args[2] instanceof ol.expr.Literal); node.setAttribute("units", args[2].getValue()); goog.asserts.assert(args[1] instanceof ol.expr.Literal); node.appendChild(this.createTextNode(args[1].getValue())); return node }, "Function":function(filter) { var node = this.createElementNS("ogc:Function"); node.setAttribute("name", filter.getCallee().getName()); var params = filter.getArgs(); for(var i = 0, len = params.length;i < len;i++) { this.writeOgcExpression(params[i], node) } return node }, "PropertyIsNull":function(filter) { var node = this.createElementNS("ogc:PropertyIsNull"); this.writeNode("PropertyName", filter.getLeft(), null, node); return node }}}; goog.base(this) }; goog.inherits(ol.parser.ogc.Filter_v1, ol.parser.XML); ol.parser.ogc.Filter_v1.filterMap_ = {"\x26\x26":"And", "||":"Or", "!":"Not", "\x3d\x3d":"PropertyIsEqualTo", "!\x3d":"PropertyIsNotEqualTo", "\x3c":"PropertyIsLessThan", "\x3e":"PropertyIsGreaterThan", "\x3c\x3d":"PropertyIsLessThanOrEqualTo", "\x3e\x3d":"PropertyIsGreaterThanOrEqualTo", "..":"PropertyIsBetween", "like":"PropertyIsLike", "null":"PropertyIsNull", "extent":"BBOX", "dwithin":"DWITHIN", "within":"WITHIN", "contains":"CONTAINS", "intersects":"INTERSECTS", "fid":"_featureIds", "ieq":"PropertyIsEqualTo", "ineq":"PropertyIsNotEqualTo"}; ol.parser.ogc.Filter_v1.prototype.getFilterType_ = function(filter) { var type; if(filter instanceof ol.expr.Logical || filter instanceof ol.expr.Comparison) { type = filter.getOperator(); var left = filter.getLeft(); var right = filter.getRight(); var isNull = type === ol.expr.ComparisonOp.EQ && right instanceof ol.expr.Literal && right.getValue() === null; if(isNull) { type = "null" } var isBetween = type === ol.expr.LogicalOp.AND && left instanceof ol.expr.Comparison && right instanceof ol.expr.Comparison && left.getLeft() instanceof ol.expr.Identifier && right.getLeft() instanceof ol.expr.Identifier && left.getLeft().getName() === right.getLeft().getName() && (left.getOperator() === ol.expr.ComparisonOp.LTE || left.getOperator() === ol.expr.ComparisonOp.GTE) && (right.getOperator() === ol.expr.ComparisonOp.LTE || right.getOperator() === ol.expr.ComparisonOp.GTE); if(isBetween) { type = ".." } }else { if(filter instanceof ol.expr.Call) { var callee = filter.getCallee(); goog.asserts.assert(callee instanceof ol.expr.Identifier); type = callee.getName() }else { if(filter instanceof ol.expr.Not) { type = "!" } } } var filterType = ol.parser.ogc.Filter_v1.filterMap_[type]; if(!filterType) { throw new Error("Filter writing not supported for rule type: " + type); } return filterType }; ol.parser.ogc.Filter_v1.prototype.read = function(data) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } if(data && data.nodeType == 9) { data = data.documentElement } var obj = {}; this.readNode(data, obj); return obj.filter }; ol.parser.ogc.Filter_v1.prototype.write = function(filter) { var root = this.writeNode("Filter", filter); this.setAttributeNS(root, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation); return this.serialize(root) }; ol.parser.ogc.Filter_v1.prototype.writeOgcExpression = function(expr, node) { if(expr instanceof ol.expr.Call) { this.writeNode("Function", expr, null, node) }else { if(expr instanceof ol.expr.Literal) { this.writeNode("Literal", expr, null, node) }else { if(expr instanceof ol.expr.Identifier) { this.writeNode("PropertyName", expr, null, node) } } } return node }; ol.parser.ogc.Filter_v1.prototype.getSubfiltersForLogical_ = function(filter, subFilters) { var operator = filter.getOperator(); var filters = new Array(2); filters[0] = filter.getLeft(); filters[1] = filter.getRight(); for(var i = 0;i < 2;++i) { if(filters[i] instanceof ol.expr.Logical && filters[i].getOperator() === operator) { this.getSubfiltersForLogical_(filters[i], subFilters) }else { subFilters.push(filters[i]) } } }; ol.parser.ogc.Filter_v1.prototype.aggregateLogical_ = function(filters, operator) { var subFilters = []; var newFilters = []; if(filters.length > 2) { while(filters.length) { subFilters.push(filters.pop()); if(subFilters.length === 2) { newFilters.push(new ol.expr.Logical(operator, subFilters[0], subFilters[1])); subFilters.length = 0 } } if(subFilters.length === 1) { newFilters.push(subFilters[0]) } return this.aggregateLogical_(newFilters, operator) }else { return new ol.expr.Logical(operator, filters[0], filters[1]) } }; ol.parser.ogc.Filter_v1.prototype.setGmlParser = function(gml) { this.gml_ = gml; for(var uri in this.gml_.readers) { for(var key in this.gml_.readers[uri]) { if(!goog.isDef(this.readers[uri])) { this.readers[uri] = {} } this.readers[uri][key] = goog.bind(this.gml_.readers[uri][key], this.gml_) } } for(uri in this.gml_.writers) { for(key in this.gml_.writers[uri]) { if(!goog.isDef(this.writers[uri])) { this.writers[uri] = {} } this.writers[uri][key] = goog.bind(this.gml_.writers[uri][key], this.gml_) } } }; goog.provide("ol.parser.ogc.GML"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.xml"); goog.require("ol.Feature"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.parser.StringFeatureParser"); goog.require("ol.parser.XML"); goog.require("ol.proj"); ol.parser.ogc.GML = function(opt_options) { var options = (goog.isDef(opt_options) ? opt_options : {}); this.extractAttributes = goog.isDef(options.extractAttributes) ? options.extractAttributes : true; this.surface = goog.isDef(options.surface) ? options.surface : false; this.curve = goog.isDef(options.curve) ? options.curve : false; this.multiCurve = goog.isDef(options.multiCurve) ? options.multiCurve : true; this.multiSurface = goog.isDef(options.multiSurface) ? options.multiSurface : true; this.readOptions = options.readOptions; this.writeOptions = options.writeOptions; this.srsName; this.axisOrientation; if(goog.isDef(options.schemaLocation)) { this.schemaLocation = options.schemaLocation } if(goog.isDef(options.featureNS)) { this.featureNS = options.featureNS } if(goog.isDef(options.featureType)) { this.featureType = options.featureType } this.singleFeatureType = !goog.isDef(opt_options) || goog.isString(opt_options.featureType); this.defaultNamespaceURI = "http://www.opengis.net/gml"; this.readers = {"http://www.opengis.net/wfs":{"FeatureCollection":function(node, obj) { this.readChildNodes(node, obj) }}, "http://www.opengis.net/gml":{"_inherit":function(node, obj, container) { var srsName; if(!goog.isDef(this.srsName)) { srsName = this.srsName = node.getAttribute("srsName") } if(!goog.isDef(this.axisOrientation)) { if(goog.isDefAndNotNull(srsName)) { this.axisOrientation = ol.proj.get(srsName).getAxisOrientation() }else { this.axisOrientation = "enu" } } }, "name":function(node, obj) { obj.name = this.getChildValue(node) }, "featureMember":function(node, obj) { this.readChildNodes(node, obj) }, "featureMembers":function(node, obj) { this.readChildNodes(node, obj) }, "GeometryCollection":function(node, container) { var parts = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, parts, container]); this.readChildNodes(node, parts); container.geometry = {type:ol.geom.GeometryType.GEOMETRYCOLLECTION, parts:parts} }, "geometryMember":function(node, obj) { this.readChildNodes(node, obj) }, "MultiPoint":function(node, container) { var parts = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, parts, container]); this.readChildNodes(node, parts); container.geometry = {type:ol.geom.GeometryType.MULTIPOINT, parts:parts} }, "pointMember":function(node, obj) { this.readChildNodes(node, obj) }, "MultiLineString":function(node, container) { var parts = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, parts, container]); this.readChildNodes(node, parts); container.geometry = {type:ol.geom.GeometryType.MULTILINESTRING, parts:parts} }, "lineStringMember":function(node, obj) { this.readChildNodes(node, obj) }, "MultiPolygon":function(node, container) { var parts = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, parts, container]); this.readChildNodes(node, parts); container.geometry = {type:ol.geom.GeometryType.MULTIPOLYGON, parts:parts} }, "polygonMember":function(node, obj) { this.readChildNodes(node, obj) }, "Point":function(node, container) { var coordinates = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, coordinates, container]); this.readChildNodes(node, coordinates); var point = {type:ol.geom.GeometryType.POINT, coordinates:coordinates[0][0]}; if(goog.isArray(container)) { container.push(point) }else { container.geometry = point } }, "LineString":function(node, container) { var coordinates = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, coordinates, container]); this.readChildNodes(node, coordinates); var linestring = {type:ol.geom.GeometryType.LINESTRING, coordinates:coordinates[0]}; if(goog.isArray(container)) { container.push(linestring) }else { container.geometry = linestring } }, "Polygon":function(node, container) { var obj = {outer:null, inner:[]}; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, obj, container]); this.readChildNodes(node, obj); obj.inner.unshift(obj.outer); var polygon = {type:ol.geom.GeometryType.POLYGON, coordinates:obj.inner}; if(goog.isArray(container)) { container.push(polygon) }else { container.geometry = polygon } }, "LinearRing":function(node, container) { var coordinates = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, coordinates, container]); this.readChildNodes(node, coordinates); if(goog.isArray(container)) { container.push(coordinates) }else { container.geometry = {type:ol.geom.GeometryType.LINEARRING, coordinates:coordinates[0]} } }, "coordinates":function(node, coordinates) { var str = this.getChildValue(node).replace(this.regExes.trimSpace, ""); str = str.replace(this.regExes.trimComma, ","); var coords; var cs = node.getAttribute("cs") || ","; var ts = node.getAttribute("ts") || this.regExes.splitSpace; var pointList = str.split(ts); var numPoints = pointList.length; var points = new Array(numPoints); for(var i = 0;i < numPoints;++i) { coords = goog.array.map(pointList[i].split(cs), parseFloat); if(this.axisOrientation.substr(0, 2) === "en") { points[i] = coords }else { if(coords.length === 2) { points[i] = coords.reverse() }else { if(coords.length === 3) { points[i] = [coords[1], coords[0], coords[2]] } } } } coordinates.push(points) }, "coord":function(node, coordinates) { var coord = {}; if(coordinates.length === 0) { coordinates.push([]) } this.readChildNodes(node, coord); if(goog.isDef(coord.z)) { coordinates.push([coord.x, coord.y, coord.z]) }else { coordinates[0].push([coord.x, coord.y]) } }, "X":function(node, coord) { coord.x = parseFloat(this.getChildValue(node)) }, "Y":function(node, coord) { coord.y = parseFloat(this.getChildValue(node)) }, "Z":function(node, coord) { coord.z = parseFloat(this.getChildValue(node)) }}}; this.featureNSReaders_ = {"*":function(node, obj) { var name; var local = node.localName || node.nodeName.split(":").pop(); if(obj.features) { if(!this.singleFeatureType && goog.array.indexOf(this.featureType, local) !== -1) { name = "_typeName" }else { if(local === this.featureType) { name = "_typeName" } } }else { if(node.childNodes.length === 0 || node.childNodes.length === 1 && node.firstChild.nodeType === 3) { if(this.extractAttributes) { name = "_attribute" } }else { name = "_geometry" } } if(name) { this.readers[this.featureNS][name].apply(this, [node, obj]) } }, "_typeName":function(node, obj) { var container = {properties:{}}; this.readChildNodes(node, container); if(container.name) { container.properties.name = container.name } var feature = new ol.Feature(container.properties); var geom = container.geometry; if(geom) { var sharedVertices = undefined; if(this.readFeaturesOptions_) { var callback = this.readFeaturesOptions_.callback; if(callback) { sharedVertices = callback(feature, geom.type) } } var geometry = this.createGeometry({geometry:geom}, sharedVertices); if(goog.isDef(geometry)) { feature.setGeometry(geometry) } } var fid = node.getAttribute("fid") || this.getAttributeNS(node, this.defaultNamespaceURI, "id"); if(!goog.isNull(fid)) { feature.setFeatureId(fid) } obj.features.push(feature) }, "_geometry":function(node, obj) { if(!this.geometryName) { this.geometryName = node.nodeName.split(":").pop() } this.readChildNodes(node, obj) }, "_attribute":function(node, obj) { var local = node.localName || node.nodeName.split(":").pop(); var value = this.getChildValue(node); obj.properties[local] = value }}; if(goog.isDef(this.featureNS)) { this.readers[this.featureNS] = this.featureNSReaders_ } this.writers = {"http://www.opengis.net/gml":{"featureMember":function(obj) { var node = this.createElementNS("gml:featureMember"); this.writeNode("_typeName", obj, this.featureNS, node); return node }, "MultiPoint":function(geometry) { var node = this.createElementNS("gml:MultiPoint"); for(var i = 0, ii = geometry.components.length;i < ii;++i) { this.writeNode("pointMember", geometry.components[i], null, node) } return node }, "pointMember":function(geometry) { var node = this.createElementNS("gml:pointMember"); this.writeNode("Point", geometry, null, node); return node }, "MultiLineString":function(geometry) { var node = this.createElementNS("gml:MultiLineString"); for(var i = 0, ii = geometry.components.length;i < ii;++i) { this.writeNode("lineStringMember", geometry.components[i], null, node) } return node }, "lineStringMember":function(geometry) { var node = this.createElementNS("gml:lineStringMember"); this.writeNode("LineString", geometry, null, node); return node }, "MultiPolygon":function(geometry) { var node = this.createElementNS("gml:MultiPolygon"); for(var i = 0, ii = geometry.components.length;i < ii;++i) { this.writeNode("polygonMember", geometry.components[i], null, node) } return node }, "polygonMember":function(geometry) { var node = this.createElementNS("gml:polygonMember"); this.writeNode("Polygon", geometry, null, node); return node }, "GeometryCollection":function(geometry) { var node = this.createElementNS("gml:GeometryCollection"); for(var i = 0, ii = geometry.components.length;i < ii;++i) { this.writeNode("geometryMember", geometry.components[i], null, node) } return node }, "geometryMember":function(geometry) { var node = this.createElementNS("gml:geometryMember"); var child = this.writeNode("_geometry", geometry, this.featureNS); node.appendChild(child.firstChild); return node }}, "http://www.opengis.net/wfs":{"FeatureCollection":function(features) { var node = this.createElementNS("wfs:FeatureCollection", "http://www.opengis.net/wfs"); for(var i = 0, ii = features.length;i < ii;++i) { this.writeNode("featureMember", features[i], null, node) } return node }}}; this.featureNSWiters_ = {"_typeName":function(feature) { var node = this.createElementNS("feature:" + this.featureType, this.featureNS); var fid = feature.getFeatureId(); if(goog.isDef(fid)) { this.setAttributeNS(node, this.defaultNamespaceURI, "fid", fid) } if(feature.getGeometry() !== null) { this.writeNode("_geometry", feature.getGeometry(), this.featureNS, node) } var attributes = feature.getAttributes(); for(var name in attributes) { var value = attributes[name]; if(goog.isDefAndNotNull(value) && !(value instanceof ol.geom.Geometry)) { this.writeNode("_attribute", {name:name, value:value}, this.featureNS, node) } } return node }, "_geometry":function(geometry) { var node = this.createElementNS("feature:" + this.geometryName, this.featureNS); var type = geometry.getType(), child; if(type === ol.geom.GeometryType.POINT) { child = this.writeNode("Point", geometry, null, node) }else { if(type === ol.geom.GeometryType.MULTIPOINT) { child = this.writeNode("MultiPoint", geometry, null, node) }else { if(type === ol.geom.GeometryType.LINEARRING) { child = this.writeNode("LinearRing", geometry.getCoordinates(), null, node) }else { if(type === ol.geom.GeometryType.LINESTRING) { child = this.writeNode("LineString", geometry, null, node) }else { if(type === ol.geom.GeometryType.MULTILINESTRING) { child = this.writeNode("MultiLineString", geometry, null, node) }else { if(type === ol.geom.GeometryType.POLYGON) { child = this.writeNode("Polygon", geometry, null, node) }else { if(type === ol.geom.GeometryType.MULTIPOLYGON) { child = this.writeNode("MultiPolygon", geometry, null, node) }else { if(type === ol.geom.GeometryType.GEOMETRYCOLLECTION) { child = this.writeNode("GeometryCollection", geometry, null, node) } } } } } } } } if(goog.isDefAndNotNull(this.srsName)) { this.setAttributeNS(child, null, "srsName", this.srsName) } return node }, "_attribute":function(obj) { var node = this.createElementNS("feature:" + obj.name, this.featureNS); node.appendChild(this.createTextNode(obj.value)); return node }}; if(goog.isDef(this.featureNS)) { this.writers[this.featureNS] = this.featureNSWiters_ } goog.base(this) }; goog.inherits(ol.parser.ogc.GML, ol.parser.XML); ol.parser.ogc.GML.prototype.read = function(data, opt_options) { var srsName; if(goog.isDef(opt_options) && goog.isDef(opt_options.srsName)) { srsName = opt_options.srsName }else { if(goog.isDef(this.readOptions) && goog.isDef(this.readOptions.srsName)) { srsName = this.readOptions.srsName } } if(goog.isDef(srsName)) { this.srsName = goog.isString(srsName) ? srsName : srsName.getCode() } if(goog.isDef(opt_options) && goog.isDef(opt_options.axisOrientation)) { this.axisOrientation = opt_options.axisOrientation }else { if(goog.isDef(this.readOptions) && goog.isDef(this.readOptions.axisOrientation)) { this.axisOrientation = this.readOptions.axisOrientation } } if(typeof data == "string") { data = goog.dom.xml.loadXml(data) } if(data && data.nodeType == 9) { data = data.documentElement } var obj = ({features:[], metadata:{}}); this.readNode(data, obj, true); obj.metadata.projection = this.srsName; delete this.srsName; delete this.axisOrientation; return obj }; ol.parser.ogc.GML.prototype.readNode = function(node, obj, opt_first) { if(opt_first === true && this.autoConfig === true) { this.featureType = null; delete this.readers[this.featureNS]; delete this.writers[this.featureNS]; this.featureNS = null } if(!this.featureNS && !(node.namespaceURI in this.readers) && node.parentNode.namespaceURI == this.defaultNamespaceURI && /^(.*:)?featureMembers?$/.test(node.parentNode.nodeName)) { this.featureType = node.nodeName.split(":").pop(); this.readers[node.namespaceURI] = this.featureNSReaders_; this.writers[node.namespaceURI] = this.featureNSWiters_; this.featureNS = node.namespaceURI; this.autoConfig = true } return ol.parser.XML.prototype.readNode.apply(this, [node, obj]) }; ol.parser.ogc.GML.prototype.createGeometry = function(container, opt_vertices) { var geometry = null, coordinates, i, ii; switch(container.geometry.type) { case ol.geom.GeometryType.POINT: geometry = new ol.geom.Point(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.LINEARRING: geometry = new ol.geom.LinearRing(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.LINESTRING: geometry = new ol.geom.LineString(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.POLYGON: geometry = new ol.geom.Polygon(container.geometry.coordinates, opt_vertices); break; case ol.geom.GeometryType.MULTIPOINT: coordinates = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { coordinates.push(container.geometry.parts[i].coordinates) } geometry = new ol.geom.MultiPoint(coordinates, opt_vertices); break; case ol.geom.GeometryType.MULTILINESTRING: coordinates = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { coordinates.push(container.geometry.parts[i].coordinates) } geometry = new ol.geom.MultiLineString(coordinates, opt_vertices); break; case ol.geom.GeometryType.MULTIPOLYGON: coordinates = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { coordinates.push(container.geometry.parts[i].coordinates) } geometry = new ol.geom.MultiPolygon(coordinates, opt_vertices); break; case ol.geom.GeometryType.GEOMETRYCOLLECTION: var geometries = []; for(i = 0, ii = container.geometry.parts.length;i < ii;i++) { geometries.push(this.createGeometry({geometry:container.geometry.parts[i]}, opt_vertices)) } geometry = new ol.geom.GeometryCollection(geometries); break; default: break } return geometry }; ol.parser.ogc.GML.prototype.readFeaturesFromString = function(str, opt_options) { this.readFeaturesOptions_ = opt_options; return this.read(str) }; ol.parser.ogc.GML.prototype.applyWriteOptions = function(obj, opt_options) { var srsName; if(goog.isDef(opt_options) && goog.isDef(opt_options.srsName)) { srsName = opt_options.srsName }else { if(goog.isDef(this.writeOptions) && goog.isDef(this.writeOptions.srsName)) { srsName = this.writeOptions.srsName }else { if(goog.isDef(obj.metadata)) { srsName = obj.metadata.projection } } } goog.asserts.assert(goog.isDef(srsName), "srsName required for writing GML"); this.srsName = goog.isString(srsName) ? srsName : srsName.getCode(); if(goog.isDef(opt_options) && goog.isDef(opt_options.axisOrientation)) { this.axisOrientation = opt_options.axisOrientation }else { if(goog.isDef(this.writeOptions) && goog.isDef(this.writeOptions.axisOrientation)) { this.axisOrientation = this.writeOptions.axisOrientation }else { this.axisOrientation = ol.proj.get(this.srsName).getAxisOrientation() } } }; goog.provide("ol.parser.ogc.GML_v2"); goog.require("goog.array"); goog.require("goog.object"); goog.require("ol.parser.ogc.GML"); ol.parser.ogc.GML_v2 = function(opt_options) { this.schemaLocation = "http://www.opengis.net/gml " + "http://schemas.opengis.net/gml/2.1.2/feature.xsd"; goog.base(this, opt_options); goog.object.extend(this.readers["http://www.opengis.net/gml"], {"outerBoundaryIs":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); container["outer"] = coordinates[0][0] }, "innerBoundaryIs":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); container.inner.push(coordinates[0][0]) }, "Box":function(node, container) { var coordinates = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, coordinates, container]); this.readChildNodes(node, coordinates); container.projection = node.getAttribute("srsName"); container.bounds = [coordinates[0][0][0], coordinates[0][1][0], coordinates[0][0][1], coordinates[0][1][1]] }}); goog.object.extend(this.writers["http://www.opengis.net/gml"], {"Point":function(geometry) { var node = this.createElementNS("gml:Point"); this.writeNode("coordinates", [geometry.getCoordinates()], null, node); return node }, "coordinates":function(coordinates) { var numCoordinates = coordinates.length; var parts = new Array(numCoordinates); for(var i = 0;i < numCoordinates;++i) { var coord = coordinates[i]; var part = goog.array.concat(coord); if(this.axisOrientation.substr(0, 2) !== "en") { part[0] = coord[1]; part[1] = coord[0] } parts[i] = part.join(",") } var value = parts.join(" "); var node = this.createElementNS("gml:coordinates"); this.setAttributeNS(node, null, "decimal", "."); this.setAttributeNS(node, null, "cs", ","); this.setAttributeNS(node, null, "ts", " "); node.appendChild(this.createTextNode(value)); return node }, "LineString":function(geometry) { var node = this.createElementNS("gml:LineString"); this.writeNode("coordinates", geometry.getCoordinates(), null, node); return node }, "Polygon":function(geometry) { var node = this.createElementNS("gml:Polygon"); var coordinates = geometry.getCoordinates(); this.writeNode("outerBoundaryIs", coordinates[0].reverse(), null, node); for(var i = 1;i < coordinates.length;++i) { this.writeNode("innerBoundaryIs", coordinates[i].reverse(), null, node) } return node }, "outerBoundaryIs":function(ring) { var node = this.createElementNS("gml:outerBoundaryIs"); this.writeNode("LinearRing", ring, null, node); return node }, "innerBoundaryIs":function(ring) { var node = this.createElementNS("gml:innerBoundaryIs"); this.writeNode("LinearRing", ring, null, node); return node }, "LinearRing":function(ring) { var node = this.createElementNS("gml:LinearRing"); this.writeNode("coordinates", ring, null, node); return node }, "Box":function(extent) { var node = this.createElementNS("gml:Box"); this.writeNode("coordinates", [[extent[0], extent[1]], [extent[2], extent[3]]], null, node); if(goog.isDefAndNotNull(this.srsName)) { node.setAttribute("srsName", this.srsName) } return node }}) }; goog.inherits(ol.parser.ogc.GML_v2, ol.parser.ogc.GML); ol.parser.ogc.GML_v2.prototype.write = function(obj, opt_options) { this.applyWriteOptions(obj, opt_options); var root = this.writeNode("FeatureCollection", obj.features, "http://www.opengis.net/wfs"); this.setAttributeNS(root, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation); var gml = this.serialize(root); delete this.srsName; delete this.axisOrientation; return gml }; goog.provide("ol.parser.ogc.Filter_v1_0_0"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.expr"); goog.require("ol.expr.Call"); goog.require("ol.expr.Comparison"); goog.require("ol.expr.ComparisonOp"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Literal"); goog.require("ol.expr.functions"); goog.require("ol.geom.Geometry"); goog.require("ol.parser.ogc.Filter_v1"); goog.require("ol.parser.ogc.GML_v2"); ol.parser.ogc.Filter_v1_0_0 = function() { goog.base(this); this.version = "1.0.0"; this.schemaLocation = "http://www.opengis.net/ogc " + "http://schemas.opengis.net/filter/1.0.0/filter.xsd"; goog.object.extend(this.readers["http://www.opengis.net/ogc"], {"PropertyIsEqualTo":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.EQ, container.property, container.value)) }, "PropertyIsNotEqualTo":function(node, obj) { var container = {}; this.readChildNodes(node, container); obj.filters.push(new ol.expr.Comparison(ol.expr.ComparisonOp.NEQ, container.property, container.value)) }, "PropertyIsLike":function(node, obj) { var container = {}; this.readChildNodes(node, container); var args = []; args.push(container.property, container.value, new ol.expr.Literal(node.getAttribute("wildCard")), new ol.expr.Literal(node.getAttribute("singleChar")), new ol.expr.Literal(node.getAttribute("escape"))); obj.filters.push(new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.LIKE), args)) }}); goog.object.extend(this.writers["http://www.opengis.net/ogc"], {"PropertyIsEqualTo":function(filter) { var node = this.createElementNS("ogc:PropertyIsEqualTo"); var property = filter.getLeft(); this.writeNode("PropertyName", property, null, node); this.writeOgcExpression(filter.getRight(), node); return node }, "PropertyIsNotEqualTo":function(filter) { var node = this.createElementNS("ogc:PropertyIsNotEqualTo"); var property = filter.getLeft(); this.writeNode("PropertyName", property, null, node); this.writeOgcExpression(filter.getRight(), node); return node }, "PropertyIsLike":function(filter) { var node = this.createElementNS("ogc:PropertyIsLike"); var args = filter.getArgs(); goog.asserts.assert(args[2] instanceof ol.expr.Literal); node.setAttribute("wildCard", args[2].getValue()); goog.asserts.assert(args[3] instanceof ol.expr.Literal); node.setAttribute("singleChar", args[3].getValue()); goog.asserts.assert(args[4] instanceof ol.expr.Literal); node.setAttribute("escape", args[4].getValue()); var property = args[0]; if(goog.isDef(property)) { this.writeNode("PropertyName", property, null, node) } this.writeNode("Literal", args[1], null, node); return node }, "BBOX":function(filter) { var node = this.createElementNS("ogc:BBOX"); var args = filter.getArgs(); goog.asserts.assert(args[0] instanceof ol.expr.Literal); goog.asserts.assert(args[1] instanceof ol.expr.Literal); goog.asserts.assert(args[2] instanceof ol.expr.Literal); goog.asserts.assert(args[3] instanceof ol.expr.Literal); goog.asserts.assert(args[4] instanceof ol.expr.Literal); var property = args[5], bbox = [args[0].getValue(), args[1].getValue(), args[2].getValue(), args[3].getValue()], projection = args[4].getValue(); if(goog.isDefAndNotNull(property)) { this.writeNode("PropertyName", property, null, node) } var box = this.writeNode("Box", bbox, "http://www.opengis.net/gml"); if(goog.isDefAndNotNull(projection)) { box.setAttribute("srsName", projection) } node.appendChild(box); return node }}); this.setGmlParser(new ol.parser.ogc.GML_v2({featureNS:"http://foo"})) }; goog.inherits(ol.parser.ogc.Filter_v1_0_0, ol.parser.ogc.Filter_v1); ol.parser.ogc.Filter_v1_0_0.prototype.writeSpatial_ = function(filter, name) { var node = this.createElementNS("ogc:" + name); var args = filter.getArgs(); var property, geom = null, bbox, call, projection; if(args[0] instanceof ol.expr.Literal && goog.isNumber(args[0].getValue())) { goog.asserts.assert(args[1] instanceof ol.expr.Literal); goog.asserts.assert(args[2] instanceof ol.expr.Literal); goog.asserts.assert(args[3] instanceof ol.expr.Literal); bbox = [args[0].getValue(), args[1].getValue(), args[2].getValue(), args[3].getValue()]; projection = args[4]; property = args[5] }else { if(args[0] instanceof ol.expr.Literal && args[0].getValue() instanceof ol.geom.Geometry) { geom = args[0].getValue(); if(name === "DWithin") { projection = args[3]; property = args[4] }else { projection = args[1]; property = args[2] } }else { if(args[0] instanceof ol.expr.Call) { call = args[0]; if(name === "DWithin") { projection = args[3]; property = args[4] }else { projection = args[1]; property = args[2] } } } } if(goog.isDefAndNotNull(property)) { this.writeNode("PropertyName", property, null, node) } if(goog.isDef(call)) { this.writeNode("Function", call, null, node) }else { var child; if(geom !== null) { child = this.writeNode("_geometry", geom, this.gml_.featureNS).firstChild }else { if(bbox.length === 4) { child = this.writeNode("Box", bbox, "http://www.opengis.net/gml") } } if(goog.isDef(child)) { goog.asserts.assert(projection instanceof ol.expr.Literal); if(goog.isDefAndNotNull(projection.getValue())) { child.setAttribute("srsName", projection.getValue()) } node.appendChild(child) } } return node }; goog.provide("ol.parser.ogc.GML_v3"); goog.require("goog.array"); goog.require("goog.functions"); goog.require("goog.object"); goog.require("ol.geom.GeometryType"); goog.require("ol.parser.ogc.GML"); ol.parser.ogc.GML_v3 = function(opt_options) { this.schemaLocation = "http://www.opengis.net/gml " + "http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/" + "1.0.0/gmlsf.xsd"; goog.base(this, opt_options); this.featureNSWiters_["_geometry"] = function(geometry) { var node = this.createElementNS("feature:" + this.geometryName, this.featureNS); var type = geometry.getType(), child; if(type === ol.geom.GeometryType.POINT) { child = this.writeNode("Point", geometry, null, node) }else { if(type === ol.geom.GeometryType.MULTIPOINT) { child = this.writeNode("MultiPoint", geometry, null, node) }else { if(type === ol.geom.GeometryType.LINESTRING) { if(this.curve === true) { child = this.writeNode("Curve", geometry, null, node) }else { child = this.writeNode("LineString", geometry, null, node) } }else { if(type === ol.geom.GeometryType.LINEARRING) { child = this.writeNode("LinearRing", geometry.getCoordinates(), null, node) }else { if(type === ol.geom.GeometryType.MULTILINESTRING) { if(this.multiCurve === false) { child = this.writeNode("MultiLineString", geometry, null, node) }else { child = this.writeNode("MultiCurve", geometry, null, node) } }else { if(type === ol.geom.GeometryType.POLYGON) { if(this.surface === true) { child = this.writeNode("Surface", geometry, null, node) }else { child = this.writeNode("Polygon", geometry, null, node) } }else { if(type === ol.geom.GeometryType.MULTIPOLYGON) { if(this.multiSurface === false) { child = this.writeNode("MultiPolygon", geometry, null, node) }else { child = this.writeNode("MultiSurface", geometry, null, node) } }else { if(type === ol.geom.GeometryType.GEOMETRYCOLLECTION) { child = this.writeNode("MultiGeometry", geometry, null, node) } } } } } } } } if(goog.isDefAndNotNull(this.srsName)) { this.setAttributeNS(child, null, "srsName", this.srsName) } return node }; goog.object.extend(this.readers["http://www.opengis.net/gml"], {"_inherit":goog.functions.sequence(this.readers["http://www.opengis.net/gml"]["_inherit"], function(node, obj, container) { var dim = parseInt(node.getAttribute("srsDimension"), 10) || container && container.srsDimension; if(dim) { obj.srsDimension = dim } }), "featureMembers":function(node, obj) { this.readChildNodes(node, obj) }, "Curve":function(node, container) { var coordinates = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, coordinates, container]); this.readChildNodes(node, coordinates); var linestring = {type:ol.geom.GeometryType.LINESTRING, coordinates:coordinates[0]}; if(goog.isArray(container)) { container.push(linestring) }else { container.geometry = linestring } }, "segments":function(node, obj) { this.readChildNodes(node, obj) }, "LineStringSegment":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); container.push(coordinates[0]) }, "pos":function(node, obj) { var str = this.getChildValue(node).replace(this.regExes.trimSpace, ""); var coords = goog.array.map(str.split(this.regExes.splitSpace), parseFloat); if(this.axisOrientation.substr(0, 2) === "en") { obj.push([coords]) }else { if(coords.length === 2) { obj.push([coords.reverse()]) }else { if(coords.length === 3) { obj.push([coords[1], coords[0], coords[2]]) } } } }, "posList":function(node, obj) { var str = this.getChildValue(node).replace(this.regExes.trimSpace, ""); var coords = str.split(this.regExes.splitSpace); var dim = obj.srsDimension || parseInt(node.getAttribute("srsDimension") || node.getAttribute("dimension"), 10) || 2; var x, y, z; var numPoints = coords.length / dim; var points = new Array(numPoints); for(var i = 0, ii = coords.length;i < ii;i += dim) { x = parseFloat(coords[i]); y = parseFloat(coords[i + 1]); var xy = this.axisOrientation.substr(0, 2) === "en"; if(dim === 3) { if(xy) { points[i / dim] = [x, y, parseFloat(coords[i + 2])] }else { points[i / dim] = [y, x, parseFloat(coords[i + 2])] } }else { if(dim === 2) { if(xy) { points[i / dim] = [x, y] }else { points[i / dim] = [y, x] } } } } obj.push(points) }, "Surface":function(node, obj) { this.readChildNodes(node, obj) }, "patches":function(node, obj) { this.readChildNodes(node, obj) }, "PolygonPatch":function(node, obj) { this.readers[this.defaultNamespaceURI]["Polygon"].apply(this, [node, obj]) }, "exterior":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); container.outer = coordinates[0][0] }, "interior":function(node, container) { var coordinates = []; this.readChildNodes(node, coordinates); container.inner.push(coordinates[0][0]) }, "MultiCurve":function(node, container) { var parts = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, parts, container]); this.readChildNodes(node, parts); container.geometry = {type:ol.geom.GeometryType.MULTILINESTRING, parts:parts} }, "curveMember":function(node, obj) { this.readChildNodes(node, obj) }, "MultiSurface":function(node, container) { var parts = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, parts, container]); this.readChildNodes(node, parts); container.geometry = {type:ol.geom.GeometryType.MULTIPOLYGON, parts:parts} }, "surfaceMember":function(node, obj) { this.readChildNodes(node, obj) }, "surfaceMembers":function(node, obj) { this.readChildNodes(node, obj) }, "pointMembers":function(node, obj) { this.readChildNodes(node, obj) }, "lineStringMembers":function(node, obj) { this.readChildNodes(node, obj) }, "polygonMembers":function(node, obj) { this.readChildNodes(node, obj) }, "geometryMembers":function(node, obj) { this.readChildNodes(node, obj) }, "Envelope":function(node, container) { var coordinates = []; this.readers[this.defaultNamespaceURI]["_inherit"].apply(this, [node, coordinates, container]); this.readChildNodes(node, coordinates); container.projection = node.getAttribute("srsName"); container.bounds = [coordinates[0][0][0][0], coordinates[1][0][0][0], coordinates[0][0][0][1], coordinates[1][0][0][1]] }, "lowerCorner":function(node, envelope) { var coordinates = []; this.readers[this.defaultNamespaceURI]["pos"].apply(this, [node, coordinates]); envelope.push(coordinates) }, "upperCorner":function(node, envelope) { var coordinates = []; this.readers[this.defaultNamespaceURI]["pos"].apply(this, [node, coordinates]); envelope.push(coordinates) }}); goog.object.extend(this.writers["http://www.opengis.net/gml"], {"featureMembers":function(features) { var node = this.createElementNS("gml:featureMembers"); for(var i = 0, ii = features.length;i < ii;++i) { this.writeNode("_typeName", features[i], this.featureNS, node) } return node }, "Point":function(geometry) { var node = this.createElementNS("gml:Point"); this.writeNode("pos", geometry.getCoordinates(), null, node); return node }, "pos":function(point) { var pos; if(this.axisOrientation.substr(0, 2) === "en") { pos = point[0] + " " + point[1] }else { pos = point[1] + " " + point[0] } var node = this.createElementNS("gml:pos"); node.appendChild(this.createTextNode(pos)); return node }, "LineString":function(geometry) { var node = this.createElementNS("gml:LineString"); this.writeNode("posList", geometry.getCoordinates(), null, node); return node }, "Curve":function(geometry) { var node = this.createElementNS("gml:Curve"); this.writeNode("segments", geometry, null, node); return node }, "segments":function(geometry) { var node = this.createElementNS("gml:segments"); this.writeNode("LineStringSegment", geometry, null, node); return node }, "LineStringSegment":function(geometry) { var node = this.createElementNS("gml:LineStringSegment"); this.writeNode("posList", geometry.getCoordinates(), null, node); return node }, "posList":function(points) { var len = points.length; var parts = new Array(len); var point; for(var i = 0;i < len;++i) { point = points[i]; if(this.axisOrientation.substr(0, 2) === "en") { parts[i] = point[0] + " " + point[1] }else { parts[i] = point[1] + " " + point[0] } } var node = this.createElementNS("gml:posList"); node.appendChild(this.createTextNode(parts.join(" "))); return node }, "Surface":function(geometry) { var node = this.createElementNS("gml:Surface"); this.writeNode("patches", geometry, null, node); return node }, "patches":function(geometry) { var node = this.createElementNS("gml:patches"); this.writeNode("PolygonPatch", geometry, null, node); return node }, "PolygonPatch":function(geometry) { var node = this.createElementNS("gml:PolygonPatch"); node.setAttribute("interpolation", "planar"); var coordinates = geometry.getCoordinates(); this.writeNode("exterior", coordinates[0].reverse(), null, node); for(var i = 1, len = coordinates.length;i < len;++i) { this.writeNode("interior", coordinates[i].reverse(), null, node) } return node }, "Polygon":function(geometry) { var node = this.createElementNS("gml:Polygon"); var coordinates = geometry.getCoordinates(); this.writeNode("exterior", coordinates[0].reverse(), null, node); for(var i = 1, len = coordinates.length;i < len;++i) { this.writeNode("interior", coordinates[i].reverse(), null, node) } return node }, "exterior":function(ring) { var node = this.createElementNS("gml:exterior"); this.writeNode("LinearRing", ring, null, node); return node }, "interior":function(ring) { var node = this.createElementNS("gml:interior"); this.writeNode("LinearRing", ring, null, node); return node }, "LinearRing":function(ring) { var node = this.createElementNS("gml:LinearRing"); this.writeNode("posList", ring, null, node); return node }, "MultiCurve":function(geometry) { var node = this.createElementNS("gml:MultiCurve"); for(var i = 0, len = geometry.components.length;i < len;++i) { this.writeNode("curveMember", geometry.components[i], null, node) } return node }, "curveMember":function(geometry) { var node = this.createElementNS("gml:curveMember"); if(this.curve) { this.writeNode("Curve", geometry, null, node) }else { this.writeNode("LineString", geometry, null, node) } return node }, "MultiSurface":function(geometry) { var node = this.createElementNS("gml:MultiSurface"); for(var i = 0, len = geometry.components.length;i < len;++i) { this.writeNode("surfaceMember", geometry.components[i], null, node) } return node }, "surfaceMember":function(polygon) { var node = this.createElementNS("gml:surfaceMember"); if(this.surface) { this.writeNode("Surface", polygon, null, node) }else { this.writeNode("Polygon", polygon, null, node) } return node }, "Envelope":function(bounds) { var node = this.createElementNS("gml:Envelope"); this.writeNode("lowerCorner", bounds, null, node); this.writeNode("upperCorner", bounds, null, node); if(goog.isDef(this.srsName)) { node.setAttribute("srsName", this.srsName) } return node }, "lowerCorner":function(bounds) { var pos; if(this.axisOrientation.substr(0, 2) === "en") { pos = bounds[0] + " " + bounds[2] }else { pos = bounds[2] + " " + bounds[0] } var node = this.createElementNS("gml:lowerCorner"); node.appendChild(this.createTextNode(pos)); return node }, "upperCorner":function(bounds) { var pos; if(this.axisOrientation.substr(0, 2) === "en") { pos = bounds[1] + " " + bounds[3] }else { pos = bounds[3] + " " + bounds[1] } var node = this.createElementNS("gml:upperCorner"); node.appendChild(this.createTextNode(pos)); return node }}) }; goog.inherits(ol.parser.ogc.GML_v3, ol.parser.ogc.GML); ol.parser.ogc.GML_v3.prototype.write = function(obj, opt_options) { this.applyWriteOptions(obj, opt_options); var root = this.writeNode("featureMembers", obj.features); this.setAttributeNS(root, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation); var gml = this.serialize(root); delete this.srsName; delete this.axisOrientation; return gml }; goog.provide("ol.parser.ogc.Filter_v1_1_0"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.expr"); goog.require("ol.expr.Call"); goog.require("ol.expr.Comparison"); goog.require("ol.expr.ComparisonOp"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Literal"); goog.require("ol.expr.functions"); goog.require("ol.geom.Geometry"); goog.require("ol.parser.ogc.Filter_v1"); goog.require("ol.parser.ogc.GML_v3"); ol.parser.ogc.Filter_v1_1_0 = function() { goog.base(this); this.version = "1.1.0"; this.schemaLocation = "http://www.opengis.net/ogc " + "http://schemas.opengis.net/filter/1.1.0/filter.xsd"; goog.object.extend(this.readers["http://www.opengis.net/ogc"], {"PropertyIsEqualTo":function(node, obj) { var matchCase = node.getAttribute("matchCase"); var container = {}, filter; this.readChildNodes(node, container); if(matchCase === "false" || matchCase === "0") { filter = new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.IEQ), [container.property, container.value]) }else { filter = new ol.expr.Comparison(ol.expr.ComparisonOp.EQ, container.property, container.value) } obj.filters.push(filter) }, "PropertyIsNotEqualTo":function(node, obj) { var matchCase = node.getAttribute("matchCase"); var container = {}, filter; this.readChildNodes(node, container); if(matchCase === "false" || matchCase === "0") { filter = new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.INEQ), [container.property, container.value]) }else { filter = new ol.expr.Comparison(ol.expr.ComparisonOp.NEQ, container.property, container.value) } obj.filters.push(filter) }, "PropertyIsLike":function(node, obj) { var container = {}; this.readChildNodes(node, container); var args = []; args.push(container.property, container.value, new ol.expr.Literal(node.getAttribute("wildCard")), new ol.expr.Literal(node.getAttribute("singleChar")), new ol.expr.Literal(node.getAttribute("escapeChar")), new ol.expr.Literal(node.getAttribute("matchCase"))); obj.filters.push(new ol.expr.Call(new ol.expr.Identifier(ol.expr.functions.LIKE), args)) }}); goog.object.extend(this.writers["http://www.opengis.net/ogc"], {"PropertyIsEqualTo":function(filter) { var node = this.createElementNS("ogc:PropertyIsEqualTo"); var property, value; if(filter instanceof ol.expr.Call) { var args = filter.getArgs(); property = args[0]; value = args[1]; node.setAttribute("matchCase", false) }else { property = filter.getLeft(); value = filter.getRight() } this.writeNode("PropertyName", property, null, node); this.writeOgcExpression(value, node); return node }, "PropertyIsNotEqualTo":function(filter) { var node = this.createElementNS("ogc:PropertyIsNotEqualTo"); var property, value; if(filter instanceof ol.expr.Call) { var args = filter.getArgs(); property = args[0]; value = args[1]; node.setAttribute("matchCase", false) }else { property = filter.getLeft(); value = filter.getRight() } this.writeNode("PropertyName", property, null, node); this.writeOgcExpression(value, node); return node }, "PropertyIsLike":function(filter) { var node = this.createElementNS("ogc:PropertyIsLike"); var args = filter.getArgs(); goog.asserts.assert(args[2] instanceof ol.expr.Literal); goog.asserts.assert(args[3] instanceof ol.expr.Literal); goog.asserts.assert(args[4] instanceof ol.expr.Literal); node.setAttribute("wildCard", args[2].getValue()); node.setAttribute("singleChar", args[3].getValue()); node.setAttribute("escapeChar", args[4].getValue()); if(goog.isDefAndNotNull(args[5])) { goog.asserts.assert(args[5] instanceof ol.expr.Literal); node.setAttribute("matchCase", args[5].getValue()) } var property = args[0]; if(goog.isDef(property)) { this.writeNode("PropertyName", property, null, node) } this.writeNode("Literal", args[1], null, node); return node }, "BBOX":function(filter) { var node = this.createElementNS("ogc:BBOX"); var args = filter.getArgs(); goog.asserts.assert(args[0] instanceof ol.expr.Literal); goog.asserts.assert(args[1] instanceof ol.expr.Literal); goog.asserts.assert(args[2] instanceof ol.expr.Literal); goog.asserts.assert(args[3] instanceof ol.expr.Literal); goog.asserts.assert(args[4] instanceof ol.expr.Literal); var property = args[5], bbox = [args[0].getValue(), args[1].getValue(), args[2].getValue(), args[3].getValue()], projection = args[4].getValue(); if(goog.isDefAndNotNull(property)) { this.writeNode("PropertyName", property, null, node) } var box = this.writeNode("Envelope", bbox, "http://www.opengis.net/gml"); if(goog.isDefAndNotNull(projection)) { box.setAttribute("srsName", projection) } node.appendChild(box); return node }, "SortBy":function(sortProperties) { var node = this.createElementNS("ogc:SortBy"); for(var i = 0, l = sortProperties.length;i < l;i++) { this.writeNode("SortProperty", sortProperties[i], null, node) } return node }, "SortProperty":function(sortProperty) { var node = this.createElementNS("ogc:SortProperty"); this.writeNode("PropertyName", sortProperty["property"], null, node); goog.asserts.assert(sortProperty["order"] instanceof ol.expr.Literal); this.writeNode("SortOrder", sortProperty["order"].getValue() == "DESC" ? "DESC" : "ASC", null, node); return node }, "SortOrder":function(value) { var node = this.createElementNS("ogc:SortOrder"); node.appendChild(this.createTextNode(value)); return node }}); this.setGmlParser(new ol.parser.ogc.GML_v3) }; goog.inherits(ol.parser.ogc.Filter_v1_1_0, ol.parser.ogc.Filter_v1); ol.parser.ogc.Filter_v1_1_0.prototype.writeSpatial_ = function(filter, name) { var node = this.createElementNS("ogc:" + name); var args = filter.getArgs(); var property, geom = null, bbox, call, projection; if(args[0] instanceof ol.expr.Literal && goog.isNumber(args[0].getValue())) { goog.asserts.assert(args[1] instanceof ol.expr.Literal); goog.asserts.assert(args[2] instanceof ol.expr.Literal); goog.asserts.assert(args[3] instanceof ol.expr.Literal); bbox = [args[0].getValue(), args[1].getValue(), args[2].getValue(), args[3].getValue()]; projection = args[4]; property = args[5] }else { if(args[0] instanceof ol.expr.Literal && args[0].getValue() instanceof ol.geom.Geometry) { geom = args[0].getValue(); if(name === "DWithin") { projection = args[3]; property = args[4] }else { projection = args[1]; property = args[2] } }else { if(args[0] instanceof ol.expr.Call) { call = args[0]; if(name === "DWithin") { projection = args[3]; property = args[4] }else { projection = args[1]; property = args[2] } } } } if(goog.isDefAndNotNull(property)) { this.writeNode("PropertyName", property, null, node) } if(goog.isDef(call)) { this.writeNode("Function", call, null, node) }else { var child; if(geom !== null) { child = this.writeNode("_geometry", geom, this.gml_.featureNS).firstChild }else { if(bbox.length === 4) { child = this.writeNode("Envelope", bbox, "http://www.opengis.net/gml") } } if(goog.isDef(child)) { goog.asserts.assert(projection instanceof ol.expr.Literal); if(goog.isDefAndNotNull(projection.getValue())) { child.setAttribute("srsName", projection.getValue()) } node.appendChild(child) } } return node }; goog.provide("ol.parser.ogc.Versioned"); goog.require("goog.dom.xml"); goog.require("ol.parser.ogc.ExceptionReport"); ol.parser.ogc.Versioned = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.options = options; this.defaultVersion = options.defaultVersion || null; this.version = options.version; this.profile = options.profile; if(goog.isDef(options.allowFallback)) { this.allowFallback = options.allowFallback }else { this.allowFallback = false } if(goog.isDef(options.stringifyOutput)) { this.stringifyOutput = options.stringifyOutput }else { this.stringifyOutput = false } }; ol.parser.ogc.Versioned.prototype.getVersion = function(root, opt_options) { var version; if(root) { version = this.version; if(!version) { version = root.getAttribute("version"); if(!version) { version = this.defaultVersion } } }else { version = opt_options && opt_options.version || this.version || this.defaultVersion } return version }; ol.parser.ogc.Versioned.prototype.getParser = function(version) { version = version || this.defaultVersion; var profile = this.profile ? "_" + this.profile : ""; if(!this.parser || this.parser.VERSION != version) { var format = this.parsers["v" + version.replace(/\./g, "_") + profile]; if(!format) { if(profile !== "" && this.allowFallback) { profile = ""; format = this.parsers["v" + version.replace(/\./g, "_") + profile] } if(!format) { throw"Can't find a parser for version " + version + profile; } } this.parser = new format(this.options) } return this.parser }; ol.parser.ogc.Versioned.prototype.write = function(obj, opt_options) { var version = this.getVersion(null, opt_options); this.parser = this.getParser(version); var root = this.parser.write(obj, opt_options); if(this.stringifyOutput === false) { return root }else { return goog.dom.xml.serialize(root) } }; ol.parser.ogc.Versioned.prototype.read = function(data, opt_options) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } var root = data.documentElement; var version = this.getVersion(root); this.parser = this.getParser(version); var obj = this.parser.read(data, opt_options); var errorProperty = this.parser.errorProperty || null; if(errorProperty !== null && obj[errorProperty] === undefined) { var format = new ol.parser.ogc.ExceptionReport; obj.error = format.read(data) } obj.version = version; return obj }; goog.provide("ol.parser.ogc.Filter"); goog.require("ol.parser.ogc.Filter_v1_0_0"); goog.require("ol.parser.ogc.Filter_v1_1_0"); goog.require("ol.parser.ogc.Versioned"); ol.ENABLE_OGCFILTER_1_0_0 = true; ol.ENABLE_OGCFILTER_1_1_0 = true; ol.parser.ogc.Filter = function(opt_options) { opt_options = opt_options || {}; opt_options["defaultVersion"] = "1.0.0"; this.parsers = {}; if(ol.ENABLE_OGCFILTER_1_0_0) { this.parsers["v1_0_0"] = ol.parser.ogc.Filter_v1_0_0 } if(ol.ENABLE_OGCFILTER_1_1_0) { this.parsers["v1_1_0"] = ol.parser.ogc.Filter_v1_1_0 } goog.base(this, opt_options) }; goog.inherits(ol.parser.ogc.Filter, ol.parser.ogc.Versioned); goog.provide("ol.parser.ogc.OWSCommon_v1"); goog.require("ol.parser.XML"); ol.parser.ogc.OWSCommon_v1 = function() { this.readers = {"http://www.opengis.net/ows":{"ServiceIdentification":function(node, obj) { obj["serviceIdentification"] = {}; this.readChildNodes(node, obj["serviceIdentification"]) }, "Title":function(node, obj) { obj["title"] = this.getChildValue(node) }, "Abstract":function(node, serviceIdentification) { serviceIdentification["abstract"] = this.getChildValue(node) }, "Keywords":function(node, serviceIdentification) { serviceIdentification["keywords"] = {}; this.readChildNodes(node, serviceIdentification["keywords"]) }, "Keyword":function(node, keywords) { keywords[this.getChildValue(node)] = true }, "ServiceType":function(node, serviceIdentification) { serviceIdentification["serviceType"] = {"codeSpace":node.getAttribute("codeSpace"), "value":this.getChildValue(node)} }, "ServiceTypeVersion":function(node, serviceIdentification) { serviceIdentification["serviceTypeVersion"] = this.getChildValue(node) }, "Fees":function(node, serviceIdentification) { serviceIdentification["fees"] = this.getChildValue(node) }, "AccessConstraints":function(node, serviceIdentification) { serviceIdentification["accessConstraints"] = this.getChildValue(node) }, "ServiceProvider":function(node, obj) { obj["serviceProvider"] = {}; this.readChildNodes(node, obj["serviceProvider"]) }, "ProviderName":function(node, serviceProvider) { serviceProvider["providerName"] = this.getChildValue(node) }, "ProviderSite":function(node, serviceProvider) { serviceProvider["providerSite"] = this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href") }, "ServiceContact":function(node, serviceProvider) { serviceProvider["serviceContact"] = {}; this.readChildNodes(node, serviceProvider["serviceContact"]) }, "IndividualName":function(node, serviceContact) { serviceContact["individualName"] = this.getChildValue(node) }, "PositionName":function(node, serviceContact) { serviceContact["positionName"] = this.getChildValue(node) }, "ContactInfo":function(node, serviceContact) { serviceContact["contactInfo"] = {}; this.readChildNodes(node, serviceContact["contactInfo"]) }, "Phone":function(node, contactInfo) { contactInfo["phone"] = {}; this.readChildNodes(node, contactInfo["phone"]) }, "Voice":function(node, phone) { phone["voice"] = this.getChildValue(node) }, "Address":function(node, contactInfo) { contactInfo["address"] = {}; this.readChildNodes(node, contactInfo["address"]) }, "DeliveryPoint":function(node, address) { address["deliveryPoint"] = this.getChildValue(node) }, "City":function(node, address) { address["city"] = this.getChildValue(node) }, "AdministrativeArea":function(node, address) { address["administrativeArea"] = this.getChildValue(node) }, "PostalCode":function(node, address) { address["postalCode"] = this.getChildValue(node) }, "Country":function(node, address) { address["country"] = this.getChildValue(node) }, "ElectronicMailAddress":function(node, address) { address["electronicMailAddress"] = this.getChildValue(node) }, "Role":function(node, serviceContact) { serviceContact["role"] = this.getChildValue(node) }, "OperationsMetadata":function(node, obj) { obj["operationsMetadata"] = {}; this.readChildNodes(node, obj["operationsMetadata"]) }, "Operation":function(node, operationsMetadata) { var name = node.getAttribute("name"); operationsMetadata[name] = {}; this.readChildNodes(node, operationsMetadata[name]) }, "DCP":function(node, operation) { operation["dcp"] = {}; this.readChildNodes(node, operation["dcp"]) }, "HTTP":function(node, dcp) { dcp["http"] = {}; this.readChildNodes(node, dcp["http"]) }, "Get":function(node, http) { if(!http["get"]) { http["get"] = [] } var obj = {"url":this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href")}; this.readChildNodes(node, obj); http["get"].push(obj) }, "Post":function(node, http) { if(!http["post"]) { http["post"] = [] } var obj = {"url":this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href")}; this.readChildNodes(node, obj); http["post"].push(obj) }, "Parameter":function(node, operation) { if(!operation["parameters"]) { operation["parameters"] = {} } var name = node.getAttribute("name"); operation["parameters"][name] = {}; this.readChildNodes(node, operation["parameters"][name]) }, "Constraint":function(node, obj) { if(!obj["constraints"]) { obj["constraints"] = {} } var name = node.getAttribute("name"); obj["constraints"][name] = {}; this.readChildNodes(node, obj["constraints"][name]) }, "Value":function(node, allowedValues) { allowedValues[this.getChildValue(node)] = true }, "OutputFormat":function(node, obj) { obj["formats"].push({"value":this.getChildValue(node)}); this.readChildNodes(node, obj) }, "WGS84BoundingBox":function(node, obj) { var boundingBox = {}; boundingBox["crs"] = node.getAttribute("crs"); if(obj["BoundingBox"]) { obj["BoundingBox"].push(boundingBox) }else { obj["projection"] = boundingBox["crs"]; boundingBox = obj } this.readChildNodes(node, boundingBox) }, "BoundingBox":function(node, obj) { var readers = this.readers[node.namespaceURI]; readers["WGS84BoundingBox"].apply(this, [node, obj]) }, "LowerCorner":function(node, obj) { var str = this.getChildValue(node).replace(this.regExes.trimSpace, ""); str = str.replace(this.regExes.trimComma, ","); var pointList = str.split(this.regExes.splitSpace); obj["left"] = pointList[0]; obj["bottom"] = pointList[1] }, "UpperCorner":function(node, obj) { var str = this.getChildValue(node).replace(this.regExes.trimSpace, ""); str = str.replace(this.regExes.trimComma, ","); var pointList = str.split(this.regExes.splitSpace); obj["right"] = pointList[0]; obj["top"] = pointList[1]; obj["bounds"] = [parseFloat(obj["left"]), parseFloat(obj["right"]), parseFloat(obj["bottom"]), parseFloat(obj["top"])]; delete obj["left"]; delete obj["bottom"]; delete obj["right"]; delete obj["top"] }, "Language":function(node, obj) { obj["language"] = this.getChildValue(node) }}}; goog.base(this) }; goog.inherits(ol.parser.ogc.OWSCommon_v1, ol.parser.XML); goog.provide("ol.parser.ogc.OWSCommon_v1_1_0"); goog.require("goog.object"); goog.require("ol.parser.ogc.OWSCommon_v1"); ol.parser.ogc.OWSCommon_v1_1_0 = function() { goog.base(this); this.readers["http://www.opengis.net/ows/1.1"] = this.readers["http://www.opengis.net/ows"]; goog.object.extend(this.readers["http://www.opengis.net/ows/1.1"], {"AllowedValues":function(node, parameter) { parameter["allowedValues"] = {}; this.readChildNodes(node, parameter["allowedValues"]) }, "AnyValue":function(node, parameter) { parameter["anyValue"] = true }, "DataType":function(node, parameter) { parameter["dataType"] = this.getChildValue(node) }, "Range":function(node, allowedValues) { allowedValues["range"] = {}; this.readChildNodes(node, allowedValues["range"]) }, "MinimumValue":function(node, range) { range["minValue"] = this.getChildValue(node) }, "MaximumValue":function(node, range) { range["maxValue"] = this.getChildValue(node) }, "Identifier":function(node, obj) { obj["identifier"] = this.getChildValue(node) }, "SupportedCRS":function(node, obj) { obj["supportedCRS"] = this.getChildValue(node) }}) }; goog.inherits(ol.parser.ogc.OWSCommon_v1_1_0, ol.parser.ogc.OWSCommon_v1); goog.provide("ol.parser.ogc.WMSCapabilities_v1"); goog.require("goog.dom.xml"); goog.require("goog.object"); goog.require("ol.parser.XML"); ol.parser.ogc.WMSCapabilities_v1 = function() { this.defaultNamespaceURI = "http://www.opengis.net/wms"; this.errorProperty = "service"; this.readers = {"http://www.opengis.net/wms":{"Service":function(node, obj) { obj["service"] = {}; this.readChildNodes(node, obj["service"]) }, "Name":function(node, obj) { obj["name"] = this.getChildValue(node) }, "Title":function(node, obj) { obj["title"] = this.getChildValue(node) }, "Abstract":function(node, obj) { obj["abstract"] = this.getChildValue(node) }, "BoundingBox":function(node, obj) { var bbox = {}; bbox["bbox"] = [parseFloat(node.getAttribute("minx")), parseFloat(node.getAttribute("miny")), parseFloat(node.getAttribute("maxx")), parseFloat(node.getAttribute("maxy"))]; var res = {x:parseFloat(node.getAttribute("resx")), y:parseFloat(node.getAttribute("resy"))}; if(!(isNaN(res.x) && isNaN(res.y))) { bbox["res"] = res } return bbox }, "OnlineResource":function(node, obj) { obj["href"] = this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href") }, "ContactInformation":function(node, obj) { obj["contactInformation"] = {}; this.readChildNodes(node, obj["contactInformation"]) }, "ContactPersonPrimary":function(node, obj) { obj["personPrimary"] = {}; this.readChildNodes(node, obj["personPrimary"]) }, "ContactPerson":function(node, obj) { obj["person"] = this.getChildValue(node) }, "ContactOrganization":function(node, obj) { obj["organization"] = this.getChildValue(node) }, "ContactPosition":function(node, obj) { obj["position"] = this.getChildValue(node) }, "ContactAddress":function(node, obj) { obj["contactAddress"] = {}; this.readChildNodes(node, obj["contactAddress"]) }, "AddressType":function(node, obj) { obj["type"] = this.getChildValue(node) }, "Address":function(node, obj) { obj["address"] = this.getChildValue(node) }, "City":function(node, obj) { obj["city"] = this.getChildValue(node) }, "StateOrProvince":function(node, obj) { obj["stateOrProvince"] = this.getChildValue(node) }, "PostCode":function(node, obj) { obj["postcode"] = this.getChildValue(node) }, "Country":function(node, obj) { obj["country"] = this.getChildValue(node) }, "ContactVoiceTelephone":function(node, obj) { obj["phone"] = this.getChildValue(node) }, "ContactFacsimileTelephone":function(node, obj) { obj["fax"] = this.getChildValue(node) }, "ContactElectronicMailAddress":function(node, obj) { obj["email"] = this.getChildValue(node) }, "Fees":function(node, obj) { var fees = this.getChildValue(node); if(fees && fees.toLowerCase() != "none") { obj["fees"] = fees } }, "AccessConstraints":function(node, obj) { var constraints = this.getChildValue(node); if(constraints && constraints.toLowerCase() != "none") { obj["accessConstraints"] = constraints } }, "Capability":function(node, obj) { obj["capability"] = {}; obj["capability"]["nestedLayers"] = []; obj["capability"]["layers"] = []; this.readChildNodes(node, obj["capability"]) }, "Request":function(node, obj) { obj["request"] = {}; this.readChildNodes(node, obj["request"]) }, "GetCapabilities":function(node, obj) { obj["getcapabilities"] = {}; obj["getcapabilities"]["formats"] = []; this.readChildNodes(node, obj["getcapabilities"]) }, "Format":function(node, obj) { if(goog.isArray(obj["formats"])) { obj["formats"].push(this.getChildValue(node)) }else { obj["format"] = this.getChildValue(node) } }, "DCPType":function(node, obj) { this.readChildNodes(node, obj) }, "HTTP":function(node, obj) { this.readChildNodes(node, obj) }, "Get":function(node, obj) { obj["get"] = {}; this.readChildNodes(node, obj["get"]) }, "Post":function(node, obj) { obj["post"] = {}; this.readChildNodes(node, obj["post"]) }, "GetMap":function(node, obj) { obj["getmap"] = {}; obj["getmap"]["formats"] = []; this.readChildNodes(node, obj["getmap"]) }, "GetFeatureInfo":function(node, obj) { obj["getfeatureinfo"] = {}; obj["getfeatureinfo"]["formats"] = []; this.readChildNodes(node, obj["getfeatureinfo"]) }, "Exception":function(node, obj) { obj["exception"] = {}; obj["exception"]["formats"] = []; this.readChildNodes(node, obj["exception"]) }, "Layer":function(node, obj) { var parentLayer, capability; if(obj["capability"]) { capability = obj["capability"]; parentLayer = obj }else { capability = obj } var attrNode = node.getAttributeNode("queryable"); var queryable = attrNode && attrNode.specified ? node.getAttribute("queryable") : null; attrNode = node.getAttributeNode("cascaded"); var cascaded = attrNode && attrNode.specified ? node.getAttribute("cascaded") : null; attrNode = node.getAttributeNode("opaque"); var opaque = attrNode && attrNode.specified ? node.getAttribute("opaque") : null; var noSubsets = node.getAttribute("noSubsets"); var fixedWidth = node.getAttribute("fixedWidth"); var fixedHeight = node.getAttribute("fixedHeight"); var parent = parentLayer || {}; var layer = {"nestedLayers":[], "styles":parentLayer ? [].concat(parentLayer["styles"]) : [], "srs":{}, "metadataURLs":[], "bbox":{}, "llbbox":parent["llbbox"], "dimensions":{}, "authorityURLs":{}, "identifiers":{}, "keywords":[], "queryable":queryable && queryable !== "" ? queryable === "1" || queryable === "true" : parent["queryable"] || false, "cascaded":cascaded !== null ? parseInt(cascaded, 10) : parent["cascaded"] || 0, "opaque":opaque ? opaque === "1" || opaque === "true" : parent["opaque"] || false, "noSubsets":noSubsets !== null ? noSubsets === "1" || noSubsets === "true" : parent["noSubsets"] || false, "fixedWidth":fixedWidth !== null ? parseInt(fixedWidth, 10) : parent["fixedWidth"] || 0, "fixedHeight":fixedHeight !== null ? parseInt(fixedHeight, 10) : parent["fixedHeight"] || 0, "minScale":parent["minScale"], "maxScale":parent["maxScale"], "attribution":parent["attribution"]}; if(parentLayer) { goog.object.extend(layer["srs"], parent["srs"]); goog.object.extend(layer["bbox"], parent["bbox"]); goog.object.extend(layer["dimensions"], parent["dimensions"]); goog.object.extend(layer["authorityURLs"], parent["authorityURLs"]) } obj["nestedLayers"].push(layer); layer["capability"] = capability; this.readChildNodes(node, layer); delete layer["capability"]; if(layer["name"]) { var parts = layer["name"].split(":"), request = capability["request"], gfi = request["getfeatureinfo"]; if(parts.length > 0) { layer["prefix"] = parts[0] } capability["layers"].push(layer); if(!goog.isDef(layer["formats"])) { layer["formats"] = request["getmap"]["formats"] } if(!goog.isDef(layer["infoFormats"]) && gfi) { layer["infoFormats"] = gfi["formats"] } } }, "Attribution":function(node, obj) { obj["attribution"] = {}; this.readChildNodes(node, obj["attribution"]) }, "LogoURL":function(node, obj) { obj["logo"] = {"width":node.getAttribute("width"), "height":node.getAttribute("height")}; this.readChildNodes(node, obj["logo"]) }, "Style":function(node, obj) { var style = {}; obj["styles"].push(style); this.readChildNodes(node, style) }, "LegendURL":function(node, obj) { var legend = {"width":node.getAttribute("width"), "height":node.getAttribute("height")}; obj["legend"] = legend; this.readChildNodes(node, legend) }, "MetadataURL":function(node, obj) { var metadataURL = {"type":node.getAttribute("type")}; obj["metadataURLs"].push(metadataURL); this.readChildNodes(node, metadataURL) }, "DataURL":function(node, obj) { obj["dataURL"] = {}; this.readChildNodes(node, obj["dataURL"]) }, "FeatureListURL":function(node, obj) { obj["featureListURL"] = {}; this.readChildNodes(node, obj["featureListURL"]) }, "AuthorityURL":function(node, obj) { var name = node.getAttribute("name"); var authority = {}; this.readChildNodes(node, authority); obj["authorityURLs"][name] = authority["href"] }, "Identifier":function(node, obj) { var authority = node.getAttribute("authority"); obj["identifiers"][authority] = this.getChildValue(node) }, "KeywordList":function(node, obj) { this.readChildNodes(node, obj) }, "SRS":function(node, obj) { obj["srs"][this.getChildValue(node)] = true }}}; goog.base(this) }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1, ol.parser.XML); ol.parser.ogc.WMSCapabilities_v1.prototype.read = function(data) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } if(data && data.nodeType == 9) { data = data.documentElement } var obj = {}; this.readNode(data, obj); return obj }; goog.provide("ol.parser.ogc.WMSCapabilities_v1_1"); goog.require("goog.object"); goog.require("ol.parser.ogc.WMSCapabilities_v1"); ol.parser.ogc.WMSCapabilities_v1_1 = function() { goog.base(this); var bboxreader = this.readers["http://www.opengis.net/wms"]["BoundingBox"]; goog.object.extend(this.readers["http://www.opengis.net/wms"], {"WMT_MS_Capabilities":function(node, obj) { this.readChildNodes(node, obj) }, "Keyword":function(node, obj) { if(obj["keywords"]) { obj["keywords"].push({"value":this.getChildValue(node)}) } }, "DescribeLayer":function(node, obj) { obj["describelayer"] = {"formats":[]}; this.readChildNodes(node, obj["describelayer"]) }, "GetLegendGraphic":function(node, obj) { obj["getlegendgraphic"] = {"formats":[]}; this.readChildNodes(node, obj["getlegendgraphic"]) }, "GetStyles":function(node, obj) { obj["getstyles"] = {"formats":[]}; this.readChildNodes(node, obj["getstyles"]) }, "PutStyles":function(node, obj) { obj["putstyles"] = {"formats":[]}; this.readChildNodes(node, obj["putstyles"]) }, "UserDefinedSymbolization":function(node, obj) { var userSymbols = {"supportSLD":parseInt(node.getAttribute("SupportSLD"), 10) == 1, "userLayer":parseInt(node.getAttribute("UserLayer"), 10) == 1, "userStyle":parseInt(node.getAttribute("UserStyle"), 10) == 1, "remoteWFS":parseInt(node.getAttribute("RemoteWFS"), 10) == 1}; obj["userSymbols"] = userSymbols }, "LatLonBoundingBox":function(node, obj) { obj["llbbox"] = [parseFloat(node.getAttribute("minx")), parseFloat(node.getAttribute("miny")), parseFloat(node.getAttribute("maxx")), parseFloat(node.getAttribute("maxy"))] }, "BoundingBox":function(node, obj) { var bbox = bboxreader.apply(this, arguments); bbox["srs"] = node.getAttribute("SRS"); obj["bbox"][bbox["srs"]] = bbox }, "ScaleHint":function(node, obj) { var min = parseFloat(node.getAttribute("min")); var max = parseFloat(node.getAttribute("max")); var rad2 = Math.pow(2, 0.5); var dpi = 25.4 / 0.28; var ipm = 39.37; if(min !== 0) { obj["maxScale"] = parseFloat(min / rad2 * ipm * dpi) } if(max != Infinity) { obj["minScale"] = parseFloat(max / rad2 * ipm * dpi) } }, "Dimension":function(node, obj) { var name = node.getAttribute("name").toLowerCase(); var dim = {"name":name, "units":node.getAttribute("units"), "unitsymbol":node.getAttribute("unitSymbol")}; obj["dimensions"][dim.name] = dim }, "Extent":function(node, obj) { var name = node.getAttribute("name").toLowerCase(); if(name in obj["dimensions"]) { var extent = obj["dimensions"][name]; extent["nearestVal"] = node.getAttribute("nearestValue") === "1"; extent["multipleVal"] = node.getAttribute("multipleValues") === "1"; extent["current"] = node.getAttribute("current") === "1"; extent["default"] = node.getAttribute("default") || ""; var values = this.getChildValue(node); extent["values"] = values.split(",") } }}) }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1_1, ol.parser.ogc.WMSCapabilities_v1); goog.provide("ol.parser.ogc.WMSCapabilities_v1_1_0"); goog.require("goog.object"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1"); ol.parser.ogc.WMSCapabilities_v1_1_0 = function() { goog.base(this); this.version = "1.1.0"; goog.object.extend(this.readers["http://www.opengis.net/wms"], {"SRS":function(node, obj) { var srs = this.getChildValue(node); var values = srs.split(/ +/); for(var i = 0, ii = values.length;i < ii;i++) { obj["srs"][values[i]] = true } }}) }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1_1_0, ol.parser.ogc.WMSCapabilities_v1_1); goog.provide("ol.parser.ogc.WMSCapabilities_v1_0_0"); goog.require("goog.object"); goog.require("goog.string"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_0"); ol.parser.ogc.WMSCapabilities_v1_0_0 = function() { goog.base(this); this.version = "1.0.0"; goog.object.extend(this.readers["http://www.opengis.net/wms"], {"Format":function(node, obj) { for(var i = 0, ii = node.childNodes.length;i < ii;i++) { var child = node.childNodes[i]; var local = child.localName || child.nodeName.split(":").pop(); if(goog.isArray(obj["formats"])) { obj["formats"].push(local) }else { obj["format"] = local } } }, "Keywords":function(node, obj) { if(!goog.isDef(obj["keywords"])) { obj["keywords"] = [] } var keywords = this.getChildValue(node).split(/ +/); for(var i = 0, ii = keywords.length;i < ii;++i) { if(!goog.string.isEmpty(keywords[i])) { obj["keywords"].push({"value":keywords[i]}) } } }, "OnlineResource":function(node, obj) { obj["href"] = this.getChildValue(node) }, "Get":function(node, obj) { obj["get"] = {"href":node.getAttribute("onlineResource")} }, "Post":function(node, obj) { obj["post"] = {"href":node.getAttribute("onlineResource")} }, "Map":function(node, obj) { var reader = this.readers[this.defaultNamespaceURI]["GetMap"]; reader.apply(this, arguments) }, "Capabilities":function(node, obj) { var reader = this.readers[this.defaultNamespaceURI]["GetCapabilities"]; reader.apply(this, arguments) }, "FeatureInfo":function(node, obj) { var reader = this.readers[this.defaultNamespaceURI]["GetFeatureInfo"]; reader.apply(this, arguments) }}) }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1_0_0, ol.parser.ogc.WMSCapabilities_v1_1_0); goog.provide("ol.parser.ogc.WMSCapabilities_v1_1_1"); goog.require("goog.object"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1"); ol.parser.ogc.WMSCapabilities_v1_1_1 = function() { goog.base(this); this.version = "1.1.1"; goog.object.extend(this.readers["http://www.opengis.net/wms"], {"SRS":function(node, obj) { obj["srs"][this.getChildValue(node)] = true }}) }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1_1_1, ol.parser.ogc.WMSCapabilities_v1_1); goog.provide("ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC"); goog.require("goog.object"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_1"); ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC = function() { goog.base(this); this.profile = "WMSC"; goog.object.extend(this.readers["http://www.opengis.net/wms"], {"VendorSpecificCapabilities":function(node, obj) { obj["vendorSpecific"] = {"tileSets":[]}; this.readChildNodes(node, obj["vendorSpecific"]) }, "TileSet":function(node, vendorSpecific) { var tileset = {"srs":{}, "bbox":{}, "resolutions":[]}; this.readChildNodes(node, tileset); vendorSpecific.tileSets.push(tileset) }, "Resolutions":function(node, tileset) { var res = this.getChildValue(node).split(" "); for(var i = 0, ii = res.length;i < ii;i++) { if(res[i] !== "") { tileset["resolutions"].push(parseFloat(res[i])) } } }, "Width":function(node, tileset) { tileset["width"] = parseInt(this.getChildValue(node), 10) }, "Height":function(node, tileset) { tileset["height"] = parseInt(this.getChildValue(node), 10) }, "Layers":function(node, tileset) { tileset["layers"] = this.getChildValue(node) }, "Styles":function(node, tileset) { tileset["styles"] = this.getChildValue(node) }}) }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC, ol.parser.ogc.WMSCapabilities_v1_1_1); goog.provide("ol.parser.ogc.WMSCapabilities_v1_3_0"); goog.require("goog.object"); goog.require("ol.parser.ogc.WMSCapabilities_v1"); ol.parser.ogc.WMSCapabilities_v1_3_0 = function() { goog.base(this); var bboxreader = this.readers["http://www.opengis.net/wms"]["BoundingBox"]; goog.object.extend(this.readers["http://www.opengis.net/wms"], {"WMS_Capabilities":function(node, obj) { this.readChildNodes(node, obj) }, "LayerLimit":function(node, obj) { obj["layerLimit"] = parseInt(this.getChildValue(node), 10) }, "MaxWidth":function(node, obj) { obj["maxWidth"] = parseInt(this.getChildValue(node), 10) }, "MaxHeight":function(node, obj) { obj["maxHeight"] = parseInt(this.getChildValue(node), 10) }, "BoundingBox":function(node, obj) { var bbox = bboxreader.apply(this, arguments); bbox["srs"] = node.getAttribute("CRS"); obj["bbox"][bbox["srs"]] = bbox }, "CRS":function(node, obj) { this.readers["http://www.opengis.net/wms"]["SRS"].apply(this, arguments) }, "EX_GeographicBoundingBox":function(node, obj) { obj["llbbox"] = []; this.readChildNodes(node, obj["llbbox"]) }, "westBoundLongitude":function(node, obj) { obj[0] = this.getChildValue(node) }, "eastBoundLongitude":function(node, obj) { obj[2] = this.getChildValue(node) }, "southBoundLatitude":function(node, obj) { obj[1] = this.getChildValue(node) }, "northBoundLatitude":function(node, obj) { obj[3] = this.getChildValue(node) }, "MinScaleDenominator":function(node, obj) { obj["maxScale"] = parseFloat(this.getChildValue(node)).toPrecision(16) }, "MaxScaleDenominator":function(node, obj) { obj["minScale"] = parseFloat(this.getChildValue(node)).toPrecision(16) }, "Dimension":function(node, obj) { var name = node.getAttribute("name").toLowerCase(); var dim = {"name":name, "units":node.getAttribute("units"), "unitsymbol":node.getAttribute("unitSymbol"), "nearestVal":node.getAttribute("nearestValue") === "1", "multipleVal":node.getAttribute("multipleValues") === "1", "default":node.getAttribute("default") || "", "current":node.getAttribute("current") === "1", "values":this.getChildValue(node).split(",")}; obj["dimensions"][dim["name"]] = dim }, "Keyword":function(node, obj) { var keyword = {"value":this.getChildValue(node), "vocabulary":node.getAttribute("vocabulary")}; if(obj["keywords"]) { obj["keywords"].push(keyword) } }}); this.readers["sld"] = {"UserDefinedSymbolization":function(node, obj) { var readers = this.readers["http://www.opengis.net/wms"]; readers.UserDefinedSymbolization.apply(this, arguments); var value = node.getAttribute("InlineFeature"); obj["userSymbols"]["inlineFeature"] = parseInt(value, 10) == 1; value = node.getAttribute("RemoteWCS"); obj["userSymbols"]["remoteWCS"] = parseInt(value, 10) == 1 }, "DescribeLayer":function(node, obj) { var readers = this.readers["http://www.opengis.net/wms"]; readers.DescribeLayer.apply(this, arguments) }, "GetLegendGraphic":function(node, obj) { var readers = this.readers["http://www.opengis.net/wms"]; readers.GetLegendGraphic.apply(this, arguments) }} }; goog.inherits(ol.parser.ogc.WMSCapabilities_v1_3_0, ol.parser.ogc.WMSCapabilities_v1); goog.provide("ol.parser.ogc.WMSCapabilities"); goog.require("ol.parser.ogc.Versioned"); goog.require("ol.parser.ogc.WMSCapabilities_v1_0_0"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_0"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_1"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC"); goog.require("ol.parser.ogc.WMSCapabilities_v1_3_0"); ol.ENABLE_WMSCAPS_1_0_0 = false; ol.ENABLE_WMSCAPS_1_1_0 = true; ol.ENABLE_WMSCAPS_1_1_1 = true; ol.ENABLE_WMSCAPS_1_3_0 = true; ol.ENABLE_WMSCAPS_1_1_1_WMSC = true; ol.parser.ogc.WMSCapabilities = function(opt_options) { opt_options = opt_options || {}; opt_options["defaultVersion"] = "1.1.1"; this.parsers = {}; if(ol.ENABLE_WMSCAPS_1_0_0) { this.parsers["v1_0_0"] = ol.parser.ogc.WMSCapabilities_v1_0_0 } if(ol.ENABLE_WMSCAPS_1_1_0) { this.parsers["v1_1_0"] = ol.parser.ogc.WMSCapabilities_v1_1_0 } if(ol.ENABLE_WMSCAPS_1_1_1) { this.parsers["v1_1_1"] = ol.parser.ogc.WMSCapabilities_v1_1_1 } if(ol.ENABLE_WMSCAPS_1_1_1_WMSC) { this.parsers["v1_1_1_WMSC"] = ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC } if(ol.ENABLE_WMSCAPS_1_3_0) { this.parsers["v1_3_0"] = ol.parser.ogc.WMSCapabilities_v1_3_0 } goog.base(this, opt_options) }; goog.inherits(ol.parser.ogc.WMSCapabilities, ol.parser.ogc.Versioned); goog.provide("ol.parser.ogc.WMTSCapabilities_v1_0_0"); goog.require("goog.dom.xml"); goog.require("ol.coordinate"); goog.require("ol.parser.XML"); goog.require("ol.parser.ogc.OWSCommon_v1_1_0"); goog.require("ol.proj"); ol.parser.ogc.WMTSCapabilities_v1_0_0 = function() { this.defaultNamespaceURI = "http://www.opengis.net/wmts/1.0"; this.errorProperty = "serviceIdentification"; this.readers = {"http://www.opengis.net/wmts/1.0":{"Capabilities":function(node, obj) { this.readChildNodes(node, obj) }, "Contents":function(node, obj) { obj["contents"] = {}; obj["contents"]["layers"] = []; obj["contents"]["tileMatrixSets"] = {}; this.readChildNodes(node, obj["contents"]) }, "Layer":function(node, obj) { var layer = {"styles":[], "formats":[], "dimensions":[], "tileMatrixSetLinks":[]}; layer["layers"] = []; this.readChildNodes(node, layer); obj["layers"].push(layer) }, "Style":function(node, obj) { var style = {}; style["isDefault"] = node.getAttribute("isDefault") === "true"; this.readChildNodes(node, style); obj["styles"].push(style) }, "Format":function(node, obj) { obj["formats"].push(this.getChildValue(node)) }, "TileMatrixSetLink":function(node, obj) { var tileMatrixSetLink = {}; this.readChildNodes(node, tileMatrixSetLink); obj["tileMatrixSetLinks"].push(tileMatrixSetLink) }, "TileMatrixSet":function(node, obj) { if(obj["layers"]) { var tileMatrixSet = {"matrixIds":[]}; this.readChildNodes(node, tileMatrixSet); obj["tileMatrixSets"][tileMatrixSet["identifier"]] = tileMatrixSet }else { obj["tileMatrixSet"] = this.getChildValue(node) } }, "TileMatrix":function(node, obj) { var tileMatrix = {"supportedCRS":obj["supportedCRS"]}; this.readChildNodes(node, tileMatrix); obj["matrixIds"].push(tileMatrix) }, "ScaleDenominator":function(node, obj) { obj["scaleDenominator"] = parseFloat(this.getChildValue(node)) }, "TopLeftCorner":function(node, obj) { var topLeftCorner = this.getChildValue(node); var coords = topLeftCorner.split(" "); var axisOrientation = ol.proj.get(obj["supportedCRS"]).getAxisOrientation(); obj["topLeftCorner"] = ol.coordinate.fromProjectedArray([parseFloat(coords[0]), parseFloat(coords[1])], axisOrientation) }, "TileWidth":function(node, obj) { obj["tileWidth"] = parseInt(this.getChildValue(node), 10) }, "TileHeight":function(node, obj) { obj["tileHeight"] = parseInt(this.getChildValue(node), 10) }, "MatrixWidth":function(node, obj) { obj["matrixWidth"] = parseInt(this.getChildValue(node), 10) }, "MatrixHeight":function(node, obj) { obj["matrixHeight"] = parseInt(this.getChildValue(node), 10) }, "ResourceURL":function(node, obj) { var resourceType = node.getAttribute("resourceType"); var format = node.getAttribute("format"); var template = node.getAttribute("template"); if(!obj["resourceUrls"]) { obj["resourceUrls"] = {} } if(!obj["resourceUrls"][resourceType]) { obj["resourceUrls"][resourceType] = {} } if(!obj["resourceUrls"][resourceType][format]) { obj["resourceUrls"][resourceType][format] = [] } obj["resourceUrls"][resourceType][format].push(template) }, "WSDL":function(node, obj) { obj["wsdl"] = {}; obj["wsdl"]["href"] = this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href") }, "ServiceMetadataURL":function(node, obj) { obj["serviceMetadataUrl"] = {}; obj["serviceMetadataUrl"]["href"] = this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href") }, "LegendURL":function(node, obj) { obj["legend"] = {}; obj["legend"]["href"] = this.getAttributeNS(node, "http://www.w3.org/1999/xlink", "href"); obj["legend"]["format"] = node.getAttribute("format") }, "Dimension":function(node, obj) { var dimension = {"values":[]}; this.readChildNodes(node, dimension); obj["dimensions"].push(dimension) }, "Default":function(node, obj) { obj["default"] = this.getChildValue(node) }, "Value":function(node, obj) { obj["values"].push(this.getChildValue(node)) }}}; var ows = new ol.parser.ogc.OWSCommon_v1_1_0; this.readers["http://www.opengis.net/ows/1.1"] = ows.readers["http://www.opengis.net/ows/1.1"]; goog.base(this) }; goog.inherits(ol.parser.ogc.WMTSCapabilities_v1_0_0, ol.parser.XML); ol.parser.ogc.WMTSCapabilities_v1_0_0.prototype.read = function(data) { if(goog.isString(data)) { data = goog.dom.xml.loadXml(data) } if(data && data.nodeType == 9) { data = data.documentElement } var obj = {}; this.readNode(data, obj); return obj }; goog.provide("ol.parser.ogc.WMTSCapabilities"); goog.require("ol.parser.ogc.Versioned"); goog.require("ol.parser.ogc.WMTSCapabilities_v1_0_0"); ol.parser.ogc.WMTSCapabilities = function(opt_options) { opt_options = opt_options || {}; opt_options["defaultVersion"] = "1.0.0"; this.parsers = {}; this.parsers["v1_0_0"] = ol.parser.ogc.WMTSCapabilities_v1_0_0; goog.base(this, opt_options) }; goog.inherits(ol.parser.ogc.WMTSCapabilities, ol.parser.ogc.Versioned); goog.provide("ol.parser.polyline"); ol.parser.polyline.encodeFlatCoordinates = function(flatPoints, opt_dimension) { var dimension = opt_dimension || 2; return ol.parser.polyline.encodeDeltas(flatPoints, dimension) }; ol.parser.polyline.decodeFlatCoordinates = function(encoded, opt_dimension) { var dimension = opt_dimension || 2; return ol.parser.polyline.decodeDeltas(encoded, dimension) }; ol.parser.polyline.encodeDeltas = function(numbers, dimension, opt_factor) { var factor = opt_factor || 1E5; var d; var lastNumbers = new Array(dimension); for(d = 0;d < dimension;++d) { lastNumbers[d] = 0 } var numbersLength = numbers.length; for(var i = 0;i < numbersLength;) { for(d = 0;d < dimension;++d, ++i) { var num = numbers[i]; var delta = num - lastNumbers[d]; lastNumbers[d] = num; numbers[i] = delta } } return ol.parser.polyline.encodeFloats(numbers, factor) }; ol.parser.polyline.decodeDeltas = function(encoded, dimension, opt_factor) { var factor = opt_factor || 1E5; var d; var lastNumbers = new Array(dimension); for(d = 0;d < dimension;++d) { lastNumbers[d] = 0 } var numbers = ol.parser.polyline.decodeFloats(encoded, factor); var numbersLength = numbers.length; for(var i = 0;i < numbersLength;) { for(d = 0;d < dimension;++d, ++i) { lastNumbers[d] += numbers[i]; numbers[i] = lastNumbers[d] } } return numbers }; ol.parser.polyline.encodeFloats = function(numbers, opt_factor) { var factor = opt_factor || 1E5; var numbersLength = numbers.length; for(var i = 0;i < numbersLength;++i) { numbers[i] = Math.round(numbers[i] * factor) } return ol.parser.polyline.encodeSignedIntegers(numbers) }; ol.parser.polyline.decodeFloats = function(encoded, opt_factor) { var factor = opt_factor || 1E5; var numbers = ol.parser.polyline.decodeSignedIntegers(encoded); var numbersLength = numbers.length; for(var i = 0;i < numbersLength;++i) { numbers[i] /= factor } return numbers }; ol.parser.polyline.encodeSignedIntegers = function(numbers) { var numbersLength = numbers.length; for(var i = 0;i < numbersLength;++i) { var num = numbers[i]; var signedNum = num << 1; if(num < 0) { signedNum = ~signedNum } numbers[i] = signedNum } return ol.parser.polyline.encodeUnsignedIntegers(numbers) }; ol.parser.polyline.decodeSignedIntegers = function(encoded) { var numbers = ol.parser.polyline.decodeUnsignedIntegers(encoded); var numbersLength = numbers.length; for(var i = 0;i < numbersLength;++i) { var num = numbers[i]; numbers[i] = num & 1 ? ~(num >> 1) : num >> 1 } return numbers }; ol.parser.polyline.encodeUnsignedIntegers = function(numbers) { var encoded = ""; var numbersLength = numbers.length; for(var i = 0;i < numbersLength;++i) { encoded += ol.parser.polyline.encodeUnsignedInteger(numbers[i]) } return encoded }; ol.parser.polyline.decodeUnsignedIntegers = function(encoded) { var numbers = []; var current = 0; var shift = 0; var encodedLength = encoded.length; for(var i = 0;i < encodedLength;++i) { var b = encoded.charCodeAt(i) - 63; current |= (b & 31) << shift; if(b < 32) { numbers.push(current); current = 0; shift = 0 }else { shift += 5 } } return numbers }; ol.parser.polyline.encodeFloat = function(num, opt_factor) { num = Math.round(num * (opt_factor || 1E5)); return ol.parser.polyline.encodeSignedInteger(num) }; ol.parser.polyline.decodeFloat = function(encoded, opt_factor) { var result = ol.parser.polyline.decodeSignedInteger(encoded); return result / (opt_factor || 1E5) }; ol.parser.polyline.encodeSignedInteger = function(num) { var signedNum = num << 1; if(num < 0) { signedNum = ~signedNum } return ol.parser.polyline.encodeUnsignedInteger(signedNum) }; ol.parser.polyline.decodeSignedInteger = function(encoded) { var result = ol.parser.polyline.decodeUnsignedInteger(encoded); return result & 1 ? ~(result >> 1) : result >> 1 }; ol.parser.polyline.encodeUnsignedInteger = function(num) { var value, encoded = ""; while(num >= 32) { value = (32 | num & 31) + 63; encoded += String.fromCharCode(value); num >>= 5 } value = num + 63; encoded += String.fromCharCode(value); return encoded }; ol.parser.polyline.decodeUnsignedInteger = function(encoded) { var result = 0; var shift = 0; var encodedLength = encoded.length; for(var i = 0;i < encodedLength;++i) { var b = encoded.charCodeAt(i) - 63; result |= (b & 31) << shift; if(b < 32) { break } shift += 5 } return result }; goog.provide("ol.proj.CH"); goog.provide("ol.proj.EPSG2056"); goog.provide("ol.proj.EPSG21781"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("ol.Projection"); goog.require("ol.ProjectionUnits"); goog.require("ol.ellipsoid.BESSEL1841"); goog.require("ol.proj"); goog.require("ol.proj.EPSG4326"); ol.proj.CH = function(options) { goog.base(this, {code:options.code, extent:options.extent, global:false, units:ol.ProjectionUnits.METERS}) }; goog.inherits(ol.proj.CH, ol.Projection); ol.proj.CH.PHI0 = goog.math.toRadians((3600 * 46 + 60 * 57 + 8.66) / 3600); ol.proj.CH.LAMBDA0 = goog.math.toRadians((3600 * 7 + 60 * 26 + 22.5) / 3600); ol.proj.CH.ELLIPSOID = ol.ellipsoid.BESSEL1841; ol.proj.CH.COS_PHI0 = Math.cos(ol.proj.CH.PHI0); ol.proj.CH.SIN_PHI0 = Math.sin(ol.proj.CH.PHI0); ol.proj.CH.R = ol.proj.CH.ELLIPSOID.a * Math.sqrt(1 - ol.proj.CH.ELLIPSOID.eSquared) / (1 - ol.proj.CH.ELLIPSOID.eSquared * ol.proj.CH.SIN_PHI0 * ol.proj.CH.SIN_PHI0); ol.proj.CH.ALPHA = Math.sqrt(1 + ol.proj.CH.ELLIPSOID.eSquared * Math.pow(ol.proj.CH.COS_PHI0, 4) / (1 - ol.proj.CH.ELLIPSOID.eSquared)); ol.proj.CH.SIN_B0 = ol.proj.CH.SIN_PHI0 / ol.proj.CH.ALPHA; ol.proj.CH.B0 = Math.asin(ol.proj.CH.SIN_B0); ol.proj.CH.COS_B0 = Math.cos(ol.proj.CH.B0); ol.proj.CH.K = Math.log(Math.tan(Math.PI / 4 + ol.proj.CH.B0 / 2)) - ol.proj.CH.ALPHA * Math.log(Math.tan(Math.PI / 4 + ol.proj.CH.PHI0 / 2)) + ol.proj.CH.ALPHA * ol.proj.CH.ELLIPSOID.e * Math.log((1 + ol.proj.CH.ELLIPSOID.e * ol.proj.CH.SIN_PHI0) / (1 - ol.proj.CH.ELLIPSOID.e * ol.proj.CH.SIN_PHI0)) / 2; ol.proj.CH.add = function() { ol.proj.EPSG2056.add(); ol.proj.EPSG21781.add(); var epsg2056 = ol.proj.get("EPSG:2056"); var epsg21781 = ol.proj.get("EPSG:21781"); ol.proj.addTransform(epsg2056, epsg21781, goog.partial(ol.proj.CH.translate_, -2E6, -1E6)); ol.proj.addTransform(epsg21781, epsg2056, goog.partial(ol.proj.CH.translate_, 2E6, 1E6)) }; ol.proj.CH.fromEPSG4326Approximate_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var auxLat, auxLon, i; for(i = 0;i < n;i += dimension) { auxLat = 36 * input[i + 1] / 100 - 16.902866; auxLon = 36 * input[i] / 100 - 2.67825; output[i] = offsetY + 72.37 + 211455.93 * auxLon - 10938.51 * auxLon * auxLat - 0.36 * auxLon * auxLat * auxLat - 44.54 * auxLon * auxLon * auxLon; output[i + 1] = offsetX + 147.07 + 308807.95 * auxLat + 3745.25 * auxLon * auxLon + 76.63 * auxLat * auxLat - 194.56 * auxLon * auxLon * auxLat + 119.79 * auxLat * auxLat * auxLat } return output }; ol.proj.CH.fromEPSG4326Rigorous_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var b, bBar, eSinPhi, i, l, lambda, lBar, phi, s; for(i = 0;i < n;i += dimension) { lambda = goog.math.toRadians(input[i]); phi = goog.math.toRadians(input[i + 1]); eSinPhi = ol.proj.CH.ELLIPSOID.e * Math.sin(phi); s = ol.proj.CH.ALPHA * Math.log(Math.tan(Math.PI / 4 + phi / 2)) - ol.proj.CH.ALPHA * ol.proj.CH.ELLIPSOID.e * Math.log((1 + eSinPhi) / (1 - eSinPhi)) / 2 + ol.proj.CH.K; b = 2 * (Math.atan(Math.exp(s)) - Math.PI / 4); l = ol.proj.CH.ALPHA * (lambda - ol.proj.CH.LAMBDA0); lBar = Math.atan2(Math.sin(l), ol.proj.CH.SIN_B0 * Math.tan(b) + ol.proj.CH.COS_B0 * Math.cos(l)); bBar = Math.asin(ol.proj.CH.COS_B0 * Math.sin(b) - ol.proj.CH.SIN_B0 * Math.cos(b) * Math.cos(l)); output[i] = offsetY + ol.proj.CH.R * lBar; output[i + 1] = offsetX + ol.proj.CH.R * Math.log((1 + Math.sin(bBar)) / (1 - Math.sin(bBar))) / 2 } return output }; ol.proj.CH.toEPSG4326Approximate_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var auxX, auxY, i; for(i = 0;i < n;i += dimension) { auxY = (input[i] - offsetY) / 1E6; auxX = (input[i + 1] - offsetX) / 1E6; output[i] = 100 * (2.6779094 + 4.728982 * auxY + 0.791484 * auxY * auxX + 0.1306 * auxY * auxX * auxX - 0.0436 * auxY * auxY * auxY) / 36; output[i + 1] = 100 * (16.9023892 + 3.238272 * auxX - 0.270978 * auxY * auxY - 0.002528 * auxX * auxX - 0.0447 * auxY * auxY * auxX - 0.014 * auxX * auxX * auxX) / 36 } return output }; ol.proj.CH.toEPSG4326Rigorous_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var b, bBar, eSinPhi, i, iterations, l, lambda, lastPhi, lBar, phi, s, x, y; for(i = 0;i < n;i += dimension) { y = input[i] - offsetY; x = input[i + 1] - offsetX; lBar = y / ol.proj.CH.R; bBar = 2 * (Math.atan(Math.exp(x / ol.proj.CH.R)) - Math.PI / 4); b = Math.asin(ol.proj.CH.COS_B0 * Math.sin(bBar) + ol.proj.CH.SIN_B0 * Math.cos(bBar) * Math.cos(lBar)); l = Math.atan2(Math.sin(lBar), ol.proj.CH.COS_B0 * Math.cos(lBar) - ol.proj.CH.SIN_B0 * Math.tan(bBar)); lambda = ol.proj.CH.LAMBDA0 + l / ol.proj.CH.ALPHA; lastPhi = phi = b; for(iterations = 20;iterations > 0;--iterations) { s = (Math.log(Math.tan(Math.PI / 4 + b / 2)) - ol.proj.CH.K) / ol.proj.CH.ALPHA + ol.proj.CH.ELLIPSOID.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(ol.proj.CH.ELLIPSOID.e * Math.sin(phi)) / 2)); phi = 2 * Math.atan(Math.exp(s)) - Math.PI / 2; if(Math.abs(phi - lastPhi) < 1E-7) { break } lastPhi = phi } goog.asserts.assert(iterations !== 0); output[i] = goog.math.toDegrees(lambda); output[i + 1] = goog.math.toDegrees(phi) } return output }; ol.proj.CH.translate_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var i; for(i = 0;i < n;i += dimension) { output[i] = input[i] + offsetY; output[i + 1] = input[i + 1] + offsetX } return output }; ol.proj.CH.prototype.getPointResolution = function(resolution, point) { return resolution }; ol.proj.EPSG2056 = function() { goog.base(this, {code:"EPSG:2056", extent:ol.proj.EPSG2056.EXTENT}) }; goog.inherits(ol.proj.EPSG2056, ol.proj.CH); ol.proj.EPSG2056.EXTENT = [2485869.5728, 2837076.5648, 1076443.1884, 1299941.7864]; ol.proj.EPSG2056.add = function() { ol.proj.addEquivalentProjections(ol.proj.EPSG4326.PROJECTIONS); var epsg2056 = new ol.proj.EPSG2056; ol.proj.addProjection(epsg2056); ol.proj.addEquivalentTransforms(ol.proj.EPSG4326.PROJECTIONS, [epsg2056], goog.partial(ol.proj.CH.fromEPSG4326Rigorous_, 26E5, 12E5), goog.partial(ol.proj.CH.toEPSG4326Rigorous_, 26E5, 12E5)) }; ol.proj.EPSG21781 = function() { goog.base(this, {code:"EPSG:21781", extent:ol.proj.EPSG21781.EXTENT}) }; goog.inherits(ol.proj.EPSG21781, ol.proj.CH); ol.proj.EPSG21781.EXTENT = [485869.5728, 837076.5648, 76443.1884, 299941.7864]; ol.proj.EPSG21781.add = function() { ol.proj.addEquivalentProjections(ol.proj.EPSG4326.PROJECTIONS); var epsg21781 = new ol.proj.EPSG21781; ol.proj.addProjection(epsg21781); ol.proj.addEquivalentTransforms(ol.proj.EPSG4326.PROJECTIONS, [epsg21781], goog.partial(ol.proj.CH.fromEPSG4326Rigorous_, 6E5, 2E5), goog.partial(ol.proj.CH.toEPSG4326Rigorous_, 6E5, 2E5)) }; goog.provide("goog.net.jsloader"); goog.provide("goog.net.jsloader.Error"); goog.provide("goog.net.jsloader.ErrorCode"); goog.provide("goog.net.jsloader.Options"); goog.require("goog.array"); goog.require("goog.async.Deferred"); goog.require("goog.debug.Error"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.net.jsloader.GLOBAL_VERIFY_OBJS_ = "closure_verification"; goog.net.jsloader.DEFAULT_TIMEOUT = 5E3; goog.net.jsloader.Options; goog.net.jsloader.scriptsToLoad_ = []; goog.net.jsloader.loadMany = function(uris, opt_options) { if(!uris.length) { return } var isAnotherModuleLoading = goog.net.jsloader.scriptsToLoad_.length; goog.array.extend(goog.net.jsloader.scriptsToLoad_, uris); if(isAnotherModuleLoading) { return } uris = goog.net.jsloader.scriptsToLoad_; var popAndLoadNextScript = function() { var uri = uris.shift(); var deferred = goog.net.jsloader.load(uri, opt_options); if(uris.length) { deferred.addBoth(popAndLoadNextScript) } }; popAndLoadNextScript() }; goog.net.jsloader.load = function(uri, opt_options) { var options = opt_options || {}; var doc = options.document || document; var script = goog.dom.createElement(goog.dom.TagName.SCRIPT); var request = {script_:script, timeout_:undefined}; var deferred = new goog.async.Deferred(goog.net.jsloader.cancel_, request); var timeout = null; var timeoutDuration = goog.isDefAndNotNull(options.timeout) ? options.timeout : goog.net.jsloader.DEFAULT_TIMEOUT; if(timeoutDuration > 0) { timeout = window.setTimeout(function() { goog.net.jsloader.cleanup_(script, true); deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.TIMEOUT, "Timeout reached for loading script " + uri)) }, timeoutDuration); request.timeout_ = timeout } script.onload = script.onreadystatechange = function() { if(!script.readyState || script.readyState == "loaded" || script.readyState == "complete") { var removeScriptNode = options.cleanupWhenDone || false; goog.net.jsloader.cleanup_(script, removeScriptNode, timeout); deferred.callback(null) } }; script.onerror = function() { goog.net.jsloader.cleanup_(script, true, timeout); deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.LOAD_ERROR, "Error while loading script " + uri)) }; goog.dom.setProperties(script, {"type":"text/javascript", "charset":"UTF-8", "src":uri}); var scriptParent = goog.net.jsloader.getScriptParentElement_(doc); scriptParent.appendChild(script); return deferred }; goog.net.jsloader.loadAndVerify = function(uri, verificationObjName, options) { if(!goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_]) { goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_] = {} } var verifyObjs = goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_]; if(goog.isDef(verifyObjs[verificationObjName])) { return goog.async.Deferred.fail(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.VERIFY_OBJECT_ALREADY_EXISTS, "Verification object " + verificationObjName + " already defined.")) } var sendDeferred = goog.net.jsloader.load(uri, options); var deferred = new goog.async.Deferred(goog.bind(sendDeferred.cancel, sendDeferred)); sendDeferred.addCallback(function() { var result = verifyObjs[verificationObjName]; if(goog.isDef(result)) { deferred.callback(result); delete verifyObjs[verificationObjName] }else { deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.VERIFY_ERROR, "Script " + uri + " loaded, but verification object " + verificationObjName + " was not defined.")) } }); sendDeferred.addErrback(function(error) { if(goog.isDef(verifyObjs[verificationObjName])) { delete verifyObjs[verificationObjName] } deferred.errback(error) }); return deferred }; goog.net.jsloader.getScriptParentElement_ = function(doc) { var headElements = doc.getElementsByTagName(goog.dom.TagName.HEAD); if(!headElements || goog.array.isEmpty(headElements)) { return doc.documentElement }else { return headElements[0] } }; goog.net.jsloader.cancel_ = function() { var request = this; if(request && request.script_) { var scriptNode = request.script_; if(scriptNode && scriptNode.tagName == "SCRIPT") { goog.net.jsloader.cleanup_(scriptNode, true, request.timeout_) } } }; goog.net.jsloader.cleanup_ = function(scriptNode, removeScriptNode, opt_timeout) { if(goog.isDefAndNotNull(opt_timeout)) { goog.global.clearTimeout(opt_timeout) } scriptNode.onload = goog.nullFunction; scriptNode.onerror = goog.nullFunction; scriptNode.onreadystatechange = goog.nullFunction; if(removeScriptNode) { window.setTimeout(function() { goog.dom.removeNode(scriptNode) }, 0) } }; goog.net.jsloader.ErrorCode = {LOAD_ERROR:0, TIMEOUT:1, VERIFY_ERROR:2, VERIFY_OBJECT_ALREADY_EXISTS:3}; goog.net.jsloader.Error = function(code, opt_message) { var msg = "Jsloader error (code #" + code + ")"; if(opt_message) { msg += ": " + opt_message } goog.base(this, msg); this.code = code }; goog.inherits(goog.net.jsloader.Error, goog.debug.Error); goog.provide("goog.net.Jsonp"); goog.require("goog.Uri"); goog.require("goog.net.jsloader"); goog.net.Jsonp = function(uri, opt_callbackParamName) { this.uri_ = new goog.Uri(uri); this.callbackParamName_ = opt_callbackParamName ? opt_callbackParamName : "callback"; this.timeout_ = 5E3 }; goog.net.Jsonp.CALLBACKS = "_callbacks_"; goog.net.Jsonp.scriptCounter_ = 0; goog.net.Jsonp.prototype.setRequestTimeout = function(timeout) { this.timeout_ = timeout }; goog.net.Jsonp.prototype.getRequestTimeout = function() { return this.timeout_ }; goog.net.Jsonp.prototype.send = function(opt_payload, opt_replyCallback, opt_errorCallback, opt_callbackParamValue) { var payload = opt_payload || null; var id = opt_callbackParamValue || "_" + (goog.net.Jsonp.scriptCounter_++).toString(36) + goog.now().toString(36); if(!goog.global[goog.net.Jsonp.CALLBACKS]) { goog.global[goog.net.Jsonp.CALLBACKS] = {} } var uri = this.uri_.clone(); if(payload) { goog.net.Jsonp.addPayloadToUri_(payload, uri) } if(opt_replyCallback) { var reply = goog.net.Jsonp.newReplyHandler_(id, opt_replyCallback); goog.global[goog.net.Jsonp.CALLBACKS][id] = reply; uri.setParameterValues(this.callbackParamName_, goog.net.Jsonp.CALLBACKS + "." + id) } var deferred = goog.net.jsloader.load(uri.toString(), {timeout:this.timeout_, cleanupWhenDone:true}); var error = goog.net.Jsonp.newErrorHandler_(id, payload, opt_errorCallback); deferred.addErrback(error); return{id_:id, deferred_:deferred} }; goog.net.Jsonp.prototype.cancel = function(request) { if(request) { if(request.deferred_) { request.deferred_.cancel() } if(request.id_) { goog.net.Jsonp.cleanup_(request.id_, false) } } }; goog.net.Jsonp.newErrorHandler_ = function(id, payload, opt_errorCallback) { return function() { goog.net.Jsonp.cleanup_(id, false); if(opt_errorCallback) { opt_errorCallback(payload) } } }; goog.net.Jsonp.newReplyHandler_ = function(id, replyCallback) { return function(var_args) { goog.net.Jsonp.cleanup_(id, true); replyCallback.apply(undefined, arguments) } }; goog.net.Jsonp.cleanup_ = function(id, deleteReplyHandler) { if(goog.global[goog.net.Jsonp.CALLBACKS][id]) { if(deleteReplyHandler) { delete goog.global[goog.net.Jsonp.CALLBACKS][id] }else { goog.global[goog.net.Jsonp.CALLBACKS][id] = goog.nullFunction } } }; goog.net.Jsonp.addPayloadToUri_ = function(payload, uri) { for(var name in payload) { if(!payload.hasOwnProperty || payload.hasOwnProperty(name)) { uri.setParameterValues(name, payload[name]) } } return uri }; goog.provide("ol.source.TileImage"); goog.require("goog.asserts"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.ImageTile"); goog.require("ol.Projection"); goog.require("ol.Tile"); goog.require("ol.TileCache"); goog.require("ol.TileCoord"); goog.require("ol.TileState"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.source.Tile"); goog.require("ol.tilegrid.TileGrid"); ol.source.TileImageOptions; ol.source.TileImage = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, opaque:options.opaque, projection:options.projection, tileGrid:options.tileGrid}); this.tileUrlFunction = goog.isDef(options.tileUrlFunction) ? options.tileUrlFunction : ol.TileUrlFunction.nullTileUrlFunction; this.crossOrigin_ = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; this.tileCache_ = new ol.TileCache }; goog.inherits(ol.source.TileImage, ol.source.Tile); ol.source.TileImage.prototype.canExpireCache = function() { return this.tileCache_.canExpireCache() }; ol.source.TileImage.prototype.expireCache = function(usedTiles) { this.tileCache_.expireCache(usedTiles) }; ol.source.TileImage.prototype.getTile = function(z, x, y, projection) { var tileCoordKey = this.getKeyZXY(z, x, y); if(this.tileCache_.containsKey(tileCoordKey)) { return(this.tileCache_.get(tileCoordKey)) }else { goog.asserts.assert(projection); var tileCoord = new ol.TileCoord(z, x, y); var tileUrl = this.tileUrlFunction(tileCoord, projection); var tile = new ol.ImageTile(tileCoord, goog.isDef(tileUrl) ? ol.TileState.IDLE : ol.TileState.EMPTY, goog.isDef(tileUrl) ? tileUrl : "", this.crossOrigin_); this.tileCache_.set(tileCoordKey, tile); return tile } }; ol.source.TileImage.prototype.setTileUrlFunction = function(tileUrlFunction) { this.tileCache_.clear(); this.tileUrlFunction = tileUrlFunction; this.dispatchChangeEvent() }; ol.source.TileImage.prototype.useTile = function(z, x, y) { var tileCoordKey = this.getKeyZXY(z, x, y); if(this.tileCache_.containsKey(tileCoordKey)) { this.tileCache_.get(tileCoordKey) } }; goog.provide("ol.tilegrid.XYZ"); goog.require("goog.math"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.proj"); goog.require("ol.proj.EPSG3857"); goog.require("ol.tilegrid.TileGrid"); ol.tilegrid.XYZ = function(options) { var resolutions = new Array(options.maxZoom + 1); var z; var size = 2 * ol.proj.EPSG3857.HALF_SIZE / ol.DEFAULT_TILE_SIZE; for(z = 0;z <= options.maxZoom;++z) { resolutions[z] = size / Math.pow(2, z) } goog.base(this, {minZoom:options.minZoom, origin:[-ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE], resolutions:resolutions, tileSize:[ol.DEFAULT_TILE_SIZE, ol.DEFAULT_TILE_SIZE]}) }; goog.inherits(ol.tilegrid.XYZ, ol.tilegrid.TileGrid); ol.tilegrid.XYZ.prototype.createTileCoordTransform = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var minZ = this.minZoom; var maxZ = this.maxZoom; var wrapX = goog.isDef(options.wrapX) ? options.wrapX : true; var tmpTileCoord = new ol.TileCoord(0, 0, 0); var tileRangeByZ = null; if(goog.isDef(options.extent)) { tileRangeByZ = new Array(maxZ + 1); var z; for(z = 0;z <= maxZ;++z) { if(z < minZ) { tileRangeByZ[z] = null }else { tileRangeByZ[z] = this.getTileRangeForExtentAndZ(options.extent, z) } } } return function(tileCoord, projection, opt_tileCoord) { var z = tileCoord.z; if(z < minZ || maxZ < z) { return null } var n = Math.pow(2, z); var x = tileCoord.x; if(wrapX) { x = goog.math.modulo(x, n) }else { if(x < 0 || n <= x) { return null } } var y = tileCoord.y; if(y < -n || -1 < y) { return null } if(!goog.isNull(tileRangeByZ)) { tmpTileCoord.z = z; tmpTileCoord.x = x; tmpTileCoord.y = y; if(!tileRangeByZ[z].contains(tmpTileCoord)) { return null } } if(goog.isDef(opt_tileCoord)) { opt_tileCoord.z = z; opt_tileCoord.x = x; opt_tileCoord.y = -y - 1; return opt_tileCoord }else { return new ol.TileCoord(z, x, -y - 1) } } }; ol.tilegrid.XYZ.prototype.getTileCoordChildTileRange = function(tileCoord, opt_tileRange) { if(tileCoord.z < this.maxZoom) { return ol.TileRange.createOrUpdate(2 * tileCoord.x, 2 * (tileCoord.x + 1), 2 * tileCoord.y, 2 * (tileCoord.y + 1), opt_tileRange) }else { return null } }; ol.tilegrid.XYZ.prototype.forEachTileCoordParentTileRange = function(tileCoord, callback, opt_obj, opt_tileRange) { var tileRange = ol.TileRange.createOrUpdate(0, tileCoord.x, 0, tileCoord.y, opt_tileRange); var z; for(z = tileCoord.z - 1;z >= this.minZoom;--z) { tileRange.minX = tileRange.maxX >>= 1; tileRange.minY = tileRange.maxY >>= 1; if(callback.call(opt_obj, z, tileRange)) { return true } } return false }; goog.provide("ol.source.BingMaps"); goog.require("goog.Uri"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.net.Jsonp"); goog.require("ol.Attribution"); goog.require("ol.TileRange"); goog.require("ol.TileUrlFunction"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.XYZ"); ol.source.BingMaps = function(options) { goog.base(this, {crossOrigin:"anonymous", opaque:true, projection:ol.proj.get("EPSG:3857")}); this.culture_ = goog.isDef(options.culture) ? options.culture : "en-us"; this.ready_ = false; var uri = new goog.Uri("//dev.virtualearth.net/REST/v1/Imagery/Metadata/" + options.style); var jsonp = new goog.net.Jsonp(uri, "jsonp"); jsonp.send({"include":"ImageryProviders", "key":options.key}, goog.bind(this.handleImageryMetadataResponse, this)) }; goog.inherits(ol.source.BingMaps, ol.source.TileImage); ol.source.BingMaps.prototype.handleImageryMetadataResponse = function(response) { goog.asserts.assert(response.authenticationResultCode == "ValidCredentials"); goog.asserts.assert(response.statusCode == 200); goog.asserts.assert(response.statusDescription == "OK"); var brandLogoUri = response.brandLogoUri; goog.asserts.assert(response.resourceSets.length == 1); var resourceSet = response.resourceSets[0]; goog.asserts.assert(resourceSet.resources.length == 1); var resource = resourceSet.resources[0]; var tileGrid = new ol.tilegrid.XYZ({minZoom:resource.zoomMin, maxZoom:resource.zoomMax, tileSize:[resource.imageWidth, resource.imageHeight]}); this.tileGrid = tileGrid; var culture = this.culture_; this.tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(tileGrid.createTileCoordTransform(), ol.TileUrlFunction.createFromTileUrlFunctions(goog.array.map(resource.imageUrlSubdomains, function(subdomain) { var imageUrl = resource.imageUrl.replace("{subdomain}", subdomain).replace("{culture}", culture); return function(tileCoord, projection) { goog.asserts.assert(ol.proj.equivalent(projection, this.getProjection())); if(goog.isNull(tileCoord)) { return undefined }else { return imageUrl.replace("{quadkey}", tileCoord.quadKey()) } } }))); var transform = ol.proj.getTransformFromProjections(ol.proj.get("EPSG:4326"), this.getProjection()); var attributions = goog.array.map(resource.imageryProviders, function(imageryProvider) { var html = imageryProvider.attribution; var tileRanges = {}; goog.array.forEach(imageryProvider.coverageAreas, function(coverageArea) { var minZ = coverageArea.zoomMin; var maxZ = coverageArea.zoomMax; var bbox = coverageArea.bbox; var epsg4326Extent = [bbox[1], bbox[3], bbox[0], bbox[2]]; var extent = ol.extent.transform(epsg4326Extent, transform); var tileRange, z, zKey; for(z = minZ;z <= maxZ;++z) { zKey = z.toString(); tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); if(zKey in tileRanges) { tileRanges[zKey].push(tileRange) }else { tileRanges[zKey] = [tileRange] } } }); return new ol.Attribution({html:html, tileRanges:tileRanges}) }); this.setAttributions(attributions); this.setLogo(brandLogoUri); this.ready_ = true; this.dispatchLoadEvent() }; ol.source.BingMaps.prototype.isReady = function() { return this.ready_ }; goog.provide("ol.source.FeatureInfoSource"); ol.source.FeatureInfoSource = function() { }; ol.source.FeatureInfoSource.prototype.getFeatureInfoForPixel = goog.abstractMethod; goog.provide("ol.source.ImageStatic"); goog.require("ol.Image"); goog.require("ol.ImageUrlFunctionType"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.Image"); ol.source.ImageStatic = function(options) { var imageFunction = ol.source.ImageStatic.createImageFunction(options.url); var imageExtent = options.imageExtent; var imageSize = options.imageSize; var imageResolution = (imageExtent[3] - imageExtent[2]) / imageSize[1]; var projection = ol.proj.get(options.projection); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, projection:options.projection, imageUrlFunction:imageFunction, resolutions:[imageResolution]}); this.image_ = this.createImage(imageExtent, imageResolution, imageSize, projection) }; goog.inherits(ol.source.ImageStatic, ol.source.Image); ol.source.ImageStatic.prototype.getImage = function(extent, resolution, projection) { if(ol.extent.intersects(extent, this.image_.getExtent())) { return this.image_ } return null }; ol.source.ImageStatic.createImageFunction = function(url) { return function(extent, size, projection) { return url } }; goog.provide("ol.source.WMSGetFeatureInfoMethod"); goog.provide("ol.source.wms"); goog.require("goog.net.XhrIo"); goog.require("goog.object"); goog.require("goog.uri.utils"); ol.source.WMSGetFeatureInfoMethod = {IFRAME:"iframe", XHR_GET:"xhr_get"}; ol.source.wms.getUrl = function(baseUrl, params, extent, size, projection) { var baseParams = {"SERVICE":"WMS", "VERSION":"1.3.0", "REQUEST":"GetMap", "FORMAT":"image/png", "TRANSPARENT":true, "WIDTH":Math.round(size[0]), "HEIGHT":Math.round(size[1])}; goog.object.extend(baseParams, params); var stylesParam = "STYLES"; baseParams[stylesParam] = params[stylesParam] || new String(""); var wms13 = baseParams["VERSION"] > "1.3"; baseParams[wms13 ? "CRS" : "SRS"] = projection.getCode(); var axisOrientation = projection.getAxisOrientation(); var bboxValues = wms13 && axisOrientation.substr(0, 2) == "ne" ? [extent[2], extent[0], extent[3], extent[1]] : [extent[0], extent[2], extent[1], extent[3]]; baseParams["BBOX"] = bboxValues.join(","); return goog.uri.utils.appendParamsFromMap(baseUrl, baseParams) }; ol.source.wms.getFeatureInfo = function(url, pixel, options, success, opt_error) { url = url.replace("REQUEST\x3dGetMap", "REQUEST\x3dGetFeatureInfo").replace(ol.source.wms.regExes.layers, "LAYERS\x3d$1\x26QUERY_LAYERS\x3d$1"); options = (goog.isDef(options) ? goog.object.clone(options) : {}); var localOptions = ({method:ol.source.WMSGetFeatureInfoMethod.IFRAME, params:{}}); goog.object.extend(localOptions, options); var params = {"INFO_FORMAT":"text/html"}, version = parseFloat(url.match(ol.source.wms.regExes.version)[1]), x = Math.round(pixel[0]), y = Math.round(pixel[1]); if(version >= 1.3) { goog.object.extend(params, {"I":x, "J":y}) }else { goog.object.extend(params, {"X":x, "Y":y}) } goog.object.extend(params, localOptions.params); url = goog.uri.utils.appendParamsFromMap(url, params); if(localOptions.method == ol.source.WMSGetFeatureInfoMethod.IFRAME) { goog.global.setTimeout(function() { success('\x3ciframe seamless src\x3d"' + url + '"\x3e\x3c/iframe\x3e') }, 0) }else { if(localOptions.method == ol.source.WMSGetFeatureInfoMethod.XHR_GET) { goog.net.XhrIo.send(url, function(event) { var xhr = event.target; if(xhr.isSuccess()) { success(xhr.getResponseText()) }else { if(goog.isDef(opt_error)) { opt_error() } } }) } } }; ol.source.wms.regExes = {layers:/LAYERS=([^&]+)/, version:/VERSION=([^&]+)/}; goog.provide("ol.source.ImageWMS"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.Image"); goog.require("ol.ImageUrlFunction"); goog.require("ol.extent"); goog.require("ol.source.FeatureInfoSource"); goog.require("ol.source.Image"); goog.require("ol.source.wms"); ol.source.ImageWMS = function(options) { this.params_ = options.params; var imageUrlFunction = goog.isDef(options.url) ? ol.ImageUrlFunction.createFromParamsFunction(options.url, this.params_, ol.source.wms.getUrl) : ol.ImageUrlFunction.nullImageUrlFunction; goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, projection:options.projection, resolutions:options.resolutions, imageUrlFunction:imageUrlFunction}); this.getFeatureInfoOptions_ = goog.isDef(options.getFeatureInfoOptions) ? options.getFeatureInfoOptions : {}; this.image_ = null; this.ratio_ = goog.isDef(options.ratio) ? options.ratio : 1.5 }; goog.inherits(ol.source.ImageWMS, ol.source.Image); ol.source.ImageWMS.prototype.getParams = function() { return this.params_ }; ol.source.ImageWMS.prototype.getImage = function(extent, resolution, projection) { resolution = this.findNearestResolution(resolution); var image = this.image_; if(!goog.isNull(image) && image.getResolution() == resolution && ol.extent.containsExtent(image.getExtent(), extent)) { return image } extent = extent.slice(); ol.extent.scaleFromCenter(extent, this.ratio_); var width = (extent[1] - extent[0]) / resolution; var height = (extent[3] - extent[2]) / resolution; var size = [width, height]; this.image_ = this.createImage(extent, resolution, size, projection); return this.image_ }; ol.source.ImageWMS.prototype.getFeatureInfoForPixel = function(pixel, map, success, opt_error) { var view2D = map.getView().getView2D(), projection = view2D.getProjection(), size = map.getSize(), bottomLeft = map.getCoordinateFromPixel([0, size[1]]), topRight = map.getCoordinateFromPixel([size[0], 0]), extent = [bottomLeft[0], topRight[0], bottomLeft[1], topRight[1]], url = this.imageUrlFunction(extent, size, projection); goog.asserts.assert(goog.isDef(url), "ol.source.ImageWMS#imageUrlFunction does not return a url"); ol.source.wms.getFeatureInfo(url, pixel, this.getFeatureInfoOptions_, success, opt_error) }; ol.source.ImageWMS.prototype.updateParams = function(params) { goog.object.extend(this.params_, params); this.image_ = null; this.dispatchChangeEvent() }; goog.provide("ol.source.XYZ"); goog.require("ol.Attribution"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.proj"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.XYZ"); ol.source.XYZ = function(options) { var projection = options.projection || ol.proj.get("EPSG:3857"); var maxZoom = goog.isDef(options.maxZoom) ? options.maxZoom : 18; var tileGrid = new ol.tilegrid.XYZ({maxZoom:maxZoom}); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, logo:options.logo, projection:projection, tileGrid:tileGrid, tileUrlFunction:ol.TileUrlFunction.nullTileUrlFunction}); this.tileCoordTransform_ = tileGrid.createTileCoordTransform({extent:options.extent}); if(goog.isDef(options.tileUrlFunction)) { this.setTileUrlFunction(options.tileUrlFunction) }else { if(goog.isDef(options.urls)) { this.setUrls(options.urls) }else { if(goog.isDef(options.url)) { this.setUrl(options.url) } } } }; goog.inherits(ol.source.XYZ, ol.source.TileImage); ol.source.XYZ.prototype.setTileUrlFunction = function(tileUrlFunction) { goog.base(this, "setTileUrlFunction", ol.TileUrlFunction.withTileCoordTransform(this.tileCoordTransform_, tileUrlFunction)) }; ol.source.XYZ.prototype.setUrl = function(url) { this.setTileUrlFunction(ol.TileUrlFunction.createFromTemplates(ol.TileUrlFunction.expandUrl(url))) }; ol.source.XYZ.prototype.setUrls = function(urls) { this.setTileUrlFunction(ol.TileUrlFunction.createFromTemplates(urls)) }; goog.provide("ol.source.OSM"); goog.require("ol.Attribution"); goog.require("ol.source.XYZ"); ol.source.OSM = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var attributions; if(goog.isDef(options.attributions)) { attributions = options.attributions }else { if(goog.isDef(options.attribution)) { attributions = [options.attribution] }else { attributions = ol.source.OSM.ATTRIBUTIONS } } var url = goog.isDef(options.url) ? options.url : "http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png"; goog.base(this, {attributions:attributions, crossOrigin:"anonymous", opaque:true, maxZoom:options.maxZoom, url:url}) }; goog.inherits(ol.source.OSM, ol.source.XYZ); ol.source.OSM.DATA_ATTRIBUTION = new ol.Attribution({html:"Data \x26copy; " + '\x3ca href\x3d"http://www.openstreetmap.org/"\x3eOpenStreetMap\x3c/a\x3e ' + "contributors, " + '\x3ca href\x3d"http://www.openstreetmap.org/copyright"\x3eODbL\x3c/a\x3e'}); ol.source.OSM.TILE_ATTRIBUTION = new ol.Attribution({html:"Tiles \x26copy; " + '\x3ca href\x3d"http://www.openstreetmap.org/"\x3eOpenStreetMap\x3c/a\x3e ' + "contributors, " + '\x3ca href\x3d"http://creativecommons.org/licenses/by-sa/2.0/"\x3eCC BY-SA\x3c/a\x3e'}); ol.source.OSM.ATTRIBUTIONS = [ol.source.OSM.TILE_ATTRIBUTION, ol.source.OSM.DATA_ATTRIBUTION]; goog.provide("ol.source.MapQuestOSM"); goog.provide("ol.source.MapQuestOpenAerial"); goog.require("ol.Attribution"); goog.require("ol.source.OSM"); goog.require("ol.source.XYZ"); ol.source.MapQuestOSM = function() { var attributions = [new ol.Attribution({html:"Tiles Courtesy of " + '\x3ca href\x3d"http://www.mapquest.com/" target\x3d"_blank"\x3eMapQuest\x3c/a\x3e'}), ol.source.OSM.DATA_ATTRIBUTION]; goog.base(this, {attributions:attributions, crossOrigin:"anonymous", logo:"http://developer.mapquest.com/content/osm/mq_logo.png", opaque:true, maxZoom:28, url:"http://otile{1-4}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg"}) }; goog.inherits(ol.source.MapQuestOSM, ol.source.XYZ); ol.source.MapQuestOpenAerial = function() { var attributions = [new ol.Attribution({html:"Tiles Courtesy of " + '\x3ca href\x3d"http://www.mapquest.com/" target\x3d"_blank"\x3eMapQuest\x3c/a\x3e'}), new ol.Attribution({html:"Portions Courtesy NASA/JPL-Caltech and " + "U.S. Depart. of Agriculture, Farm Service Agency"})]; goog.base(this, {attributions:attributions, crossOrigin:"anonymous", logo:"http://developer.mapquest.com/content/osm/mq_logo.png", maxZoom:18, opaque:true, url:"http://oatile{1-4}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg"}) }; goog.inherits(ol.source.MapQuestOpenAerial, ol.source.XYZ); goog.provide("ol.source.Stamen"); goog.require("goog.asserts"); goog.require("ol.Attribution"); goog.require("ol.source.OSM"); goog.require("ol.source.XYZ"); ol.source.StamenLayerConfig = {"terrain":{extension:"jpg", opaque:true}, "terrain-background":{extension:"jpg", opaque:true}, "terrain-labels":{extension:"png", opaque:false}, "terrain-lines":{extension:"png", opaque:false}, "toner-background":{extension:"png", opaque:true}, "toner":{extension:"png", opaque:true}, "toner-hybrid":{extension:"png", opaque:false}, "toner-labels":{extension:"png", opaque:false}, "toner-lines":{extension:"png", opaque:false}, "toner-lite":{extension:"png", opaque:true}, "watercolor":{extension:"jpg", opaque:true}}; ol.source.StamenProviderConfig = {"terrain":{minZoom:4, maxZoom:18}, "toner":{minZoom:0, maxZoom:20}, "watercolor":{minZoom:3, maxZoom:16}}; ol.source.Stamen = function(options) { var i = options.layer.indexOf("-"); var provider = i == -1 ? options.layer : options.layer.slice(0, i); goog.asserts.assert(provider in ol.source.StamenProviderConfig); var providerConfig = ol.source.StamenProviderConfig[provider]; goog.asserts.assert(options.layer in ol.source.StamenLayerConfig); var layerConfig = ol.source.StamenLayerConfig[options.layer]; var url = goog.isDef(options.url) ? options.url : "http://{a-d}.tile.stamen.com/" + options.layer + "/{z}/{x}/{y}." + layerConfig.extension; goog.base(this, {attributions:ol.source.Stamen.ATTRIBUTIONS, crossOrigin:"anonymous", maxZoom:providerConfig.maxZoom, opaque:layerConfig.opaque, url:url}) }; goog.inherits(ol.source.Stamen, ol.source.XYZ); ol.source.Stamen.ATTRIBUTIONS = [new ol.Attribution({html:'Map tiles by \x3ca href\x3d"http://stamen.com/"\x3eStamen Design\x3c/a\x3e, ' + 'under \x3ca href\x3d"http://creativecommons.org/licenses/by/3.0/"\x3eCC BY' + " 3.0\x3c/a\x3e."}), ol.source.OSM.DATA_ATTRIBUTION]; goog.provide("ol.source.TileDebug"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("ol.Size"); goog.require("ol.Tile"); goog.require("ol.TileCache"); goog.require("ol.TileCoord"); goog.require("ol.TileState"); goog.require("ol.source.Tile"); goog.require("ol.tilegrid.TileGrid"); ol.DebugTile_ = function(tileCoord, tileGrid) { goog.base(this, tileCoord, ol.TileState.LOADED); this.tileCoord_ = tileCoord; this.tileSize_ = tileGrid.getTileSize(tileCoord.z); this.canvasByContext_ = {} }; goog.inherits(ol.DebugTile_, ol.Tile); ol.DebugTile_.prototype.getImage = function(opt_context) { var key = goog.isDef(opt_context) ? goog.getUid(opt_context) : -1; if(key in this.canvasByContext_) { return this.canvasByContext_[key] }else { var tileSize = this.tileSize_; var canvas = (goog.dom.createElement(goog.dom.TagName.CANVAS)); canvas.width = tileSize[0]; canvas.height = tileSize[1]; var context = canvas.getContext("2d"); context.strokeStyle = "black"; context.strokeRect(0.5, 0.5, tileSize[0] + 0.5, tileSize[1] + 0.5); context.fillStyle = "black"; context.textAlign = "center"; context.textBaseline = "middle"; context.font = "24px sans-serif"; context.fillText(this.tileCoord_.toString(), tileSize[0] / 2, tileSize[1] / 2); this.canvasByContext_[key] = canvas; return canvas } }; ol.source.TileDebug = function(options) { goog.base(this, {extent:options.extent, opaque:false, projection:options.projection, tileGrid:options.tileGrid}); this.tileCache_ = new ol.TileCache }; goog.inherits(ol.source.TileDebug, ol.source.Tile); ol.source.TileDebug.prototype.canExpireCache = function() { return this.tileCache_.canExpireCache() }; ol.source.TileDebug.prototype.expireCache = function(usedTiles) { this.tileCache_.expireCache(usedTiles) }; ol.source.TileDebug.prototype.getTile = function(z, x, y) { var tileCoordKey = this.getKeyZXY(z, x, y); if(this.tileCache_.containsKey(tileCoordKey)) { return(this.tileCache_.get(tileCoordKey)) }else { var tile = new ol.DebugTile_(new ol.TileCoord(z, x, y), this.tileGrid); this.tileCache_.set(tileCoordKey, tile); return tile } }; goog.provide("ol.source.TileJSON"); goog.provide("ol.tilejson"); goog.require("goog.asserts"); goog.require("goog.net.jsloader"); goog.require("ol.Attribution"); goog.require("ol.TileRange"); goog.require("ol.TileUrlFunction"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.XYZ"); ol.tilejson.grids_ = []; var grid = function(tileJSON) { ol.tilejson.grids_.push(tileJSON) }; goog.exportSymbol("grid", grid); ol.source.TileJSON = function(options) { goog.base(this, {crossOrigin:options.crossOrigin, projection:ol.proj.get("EPSG:3857")}); this.ready_ = false; this.deferred_ = goog.net.jsloader.load(options.url, {cleanupWhenDone:true}); this.deferred_.addCallback(this.handleTileJSONResponse, this) }; goog.inherits(ol.source.TileJSON, ol.source.TileImage); ol.source.TileJSON.prototype.handleTileJSONResponse = function() { var tileJSON = ol.tilejson.grids_.pop(); var epsg4326Projection = ol.proj.get("EPSG:4326"); var extent; if(goog.isDef(tileJSON.bounds)) { var bounds = tileJSON.bounds; var epsg4326Extent = [bounds[0], bounds[2], bounds[1], bounds[3]]; var transform = ol.proj.getTransformFromProjections(epsg4326Projection, this.getProjection()); extent = ol.extent.transform(epsg4326Extent, transform); this.setExtent(extent) } if(goog.isDef(tileJSON.scheme)) { goog.asserts.assert(tileJSON.scheme == "xyz") } var minZoom = tileJSON.minzoom || 0; var maxZoom = tileJSON.maxzoom || 22; var tileGrid = new ol.tilegrid.XYZ({maxZoom:maxZoom, minZoom:minZoom}); this.tileGrid = tileGrid; this.tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(tileGrid.createTileCoordTransform({extent:extent}), ol.TileUrlFunction.createFromTemplates(tileJSON.tiles)); if(goog.isDef(tileJSON.attribution)) { var attributionExtent = goog.isDef(extent) ? extent : epsg4326Projection.getExtent(); var tileRanges = {}; var z, zKey; for(z = minZoom;z <= maxZoom;++z) { zKey = z.toString(); tileRanges[zKey] = [tileGrid.getTileRangeForExtentAndZ(attributionExtent, z)] } this.setAttributions([new ol.Attribution({html:tileJSON.attribution, tileRanges:tileRanges})]) } this.ready_ = true; this.dispatchLoadEvent() }; ol.source.TileJSON.prototype.isReady = function() { return this.ready_ }; goog.provide("ol.source.TileWMS"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("goog.object"); goog.require("ol.TileCoord"); goog.require("ol.TileUrlFunction"); goog.require("ol.extent"); goog.require("ol.source.FeatureInfoSource"); goog.require("ol.source.TileImage"); goog.require("ol.source.wms"); ol.source.TileWMS = function(options) { var tileGrid; if(goog.isDef(options.tileGrid)) { tileGrid = options.tileGrid } var tileUrlFunction = ol.TileUrlFunction.nullTileUrlFunction; var urls = options.urls; if(!goog.isDef(urls) && goog.isDef(options.url)) { urls = ol.TileUrlFunction.expandUrl(options.url) } this.params_ = options.params; this.coordKeyPrefix_ = ""; this.resetCoordKeyPrefix_(); if(goog.isDef(urls)) { var tileUrlFunctions = goog.array.map(urls, function(url) { return ol.TileUrlFunction.createFromParamsFunction(url, this.params_, ol.source.wms.getUrl) }, this); tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions(tileUrlFunctions) } var transparent = goog.isDef(options.params["TRANSPARENT"]) ? options.params["TRANSPARENT"] : true; var extent = options.extent; var tileCoordTransform = function(tileCoord, projection) { var tileGrid = this.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.getForProjection(projection) } if(tileGrid.getResolutions().length <= tileCoord.z) { return null } var x = tileCoord.x; var tileExtent = tileGrid.getTileCoordExtent(tileCoord); var projectionExtent = projection.getExtent(); extent = goog.isDef(extent) ? extent : projectionExtent; if(!goog.isNull(extent) && projection.isGlobal() && extent[0] === projectionExtent[0] && extent[1] === projectionExtent[1]) { var numCols = Math.ceil((extent[1] - extent[0]) / (tileExtent[1] - tileExtent[0])); x = goog.math.modulo(x, numCols); tileExtent = tileGrid.getTileCoordExtent(new ol.TileCoord(tileCoord.z, x, tileCoord.y)) } if(!goog.isNull(extent) && !ol.extent.intersects(tileExtent, extent)) { return null } return new ol.TileCoord(tileCoord.z, x, tileCoord.y) }; goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:extent, tileGrid:options.tileGrid, opaque:!transparent, projection:options.projection, tileUrlFunction:ol.TileUrlFunction.withTileCoordTransform(tileCoordTransform, tileUrlFunction)}); this.getFeatureInfoOptions_ = goog.isDef(options.getFeatureInfoOptions) ? options.getFeatureInfoOptions : {} }; goog.inherits(ol.source.TileWMS, ol.source.TileImage); ol.source.TileWMS.prototype.getKeyZXY = function(z, x, y) { return this.coordKeyPrefix_ + goog.base(this, "getKeyZXY", z, x, y) }; ol.source.TileWMS.prototype.getParams = function() { return this.params_ }; ol.source.TileWMS.prototype.getFeatureInfoForPixel = function(pixel, map, success, opt_error) { var coord = map.getCoordinateFromPixel(pixel), view2D = map.getView().getView2D(), projection = view2D.getProjection(), tileGrid = goog.isNull(this.tileGrid) ? ol.tilegrid.getForProjection(projection) : this.tileGrid, tileCoord = tileGrid.getTileCoordForCoordAndResolution(coord, view2D.getResolution()), tileExtent = tileGrid.getTileCoordExtent(tileCoord), offset = map.getPixelFromCoordinate(ol.extent.getTopLeft(tileExtent)), url = this.tileUrlFunction(tileCoord, projection); goog.asserts.assert(goog.isDef(url), "ol.source.TileWMS#tileUrlFunction does not return a url"); ol.source.wms.getFeatureInfo(url, [pixel[0] - offset[0], pixel[1] - offset[1]], this.getFeatureInfoOptions_, success, opt_error) }; ol.source.TileWMS.prototype.resetCoordKeyPrefix_ = function() { var i = 0; var res = []; for(var key in this.params_) { res[i++] = key + "-" + this.params_[key] } this.coordKeyPrefix_ = res.join("/") }; ol.source.TileWMS.prototype.updateParams = function(params) { goog.object.extend(this.params_, params); this.resetCoordKeyPrefix_(); this.dispatchChangeEvent() }; goog.provide("ol.tilegrid.WMTS"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.proj"); goog.require("ol.tilegrid.TileGrid"); ol.tilegrid.WMTS = function(options) { goog.asserts.assert(options.resolutions.length == options.matrixIds.length); this.matrixIds_ = options.matrixIds; goog.base(this, {origin:options.origin, origins:options.origins, resolutions:options.resolutions, tileSize:options.tileSize, tileSizes:options.tileSizes}) }; goog.inherits(ol.tilegrid.WMTS, ol.tilegrid.TileGrid); ol.tilegrid.WMTS.prototype.getMatrixId = function(z) { goog.asserts.assert(0 <= z && z < this.matrixIds_.length); return this.matrixIds_[z] }; ol.tilegrid.WMTS.prototype.getMatrixIds = function() { return this.matrixIds_ }; ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet = function(matrixSet) { var resolutions = []; var matrixIds = []; var origins = []; var tileSizes = []; var supportedCRSPropName = "supportedCRS"; var matrixIdsPropName = "matrixIds"; var identifierPropName = "identifier"; var scaleDenominatorPropName = "scaleDenominator"; var topLeftCornerPropName = "topLeftCorner"; var tileWidthPropName = "tileWidth"; var tileHeightPropName = "tileHeight"; var projection = ol.proj.get(matrixSet[supportedCRSPropName]); var metersPerUnit = projection.getMetersPerUnit(); goog.array.sort(matrixSet[matrixIdsPropName], function(a, b) { return b[scaleDenominatorPropName] - a[scaleDenominatorPropName] }); goog.array.forEach(matrixSet[matrixIdsPropName], function(elt, index, array) { matrixIds.push(elt[identifierPropName]); origins.push(elt[topLeftCornerPropName]); resolutions.push(elt[scaleDenominatorPropName] * 2.8E-4 / metersPerUnit); tileSizes.push([elt[tileWidthPropName], elt[tileHeightPropName]]) }); return new ol.tilegrid.WMTS({origins:origins, resolutions:resolutions, matrixIds:matrixIds, tileSizes:tileSizes}) }; goog.provide("ol.source.WMTS"); goog.provide("ol.source.WMTSRequestEncoding"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("goog.object"); goog.require("goog.uri.utils"); goog.require("ol.TileCoord"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.WMTS"); ol.source.WMTSRequestEncoding = {KVP:"KVP", REST:"REST"}; ol.source.WMTS = function(options) { var version = goog.isDef(options.version) ? options.version : "1.0.0"; var format = goog.isDef(options.format) ? options.format : "image/jpeg"; this.dimensions_ = options.dimensions || {}; this.coordKeyPrefix_ = ""; this.resetCoordKeyPrefix_(); var requestEncoding = goog.isDef(options.requestEncoding) ? options.requestEncoding : ol.source.WMTSRequestEncoding.KVP; var tileGrid = options.tileGrid; var context = {"Layer":options.layer, "style":options.style, "Style":options.style, "TileMatrixSet":options.matrixSet}; if(requestEncoding == ol.source.WMTSRequestEncoding.KVP) { goog.object.extend(context, {"Service":"WMTS", "Request":"GetTile", "Version":version, "Format":format}) } function createFromWMTSTemplate(template) { template = requestEncoding == ol.source.WMTSRequestEncoding.KVP ? goog.uri.utils.appendParamsFromMap(template, context) : template.replace(/\{(\w+?)\}/g, function(m, p) { return p in context ? context[p] : m }); return function(tileCoord, projection) { if(goog.isNull(tileCoord)) { return undefined }else { var localContext = {"TileMatrix":tileGrid.getMatrixId(tileCoord.z), "TileCol":tileCoord.x, "TileRow":tileCoord.y}; goog.object.extend(localContext, this.dimensions_); var url = template; if(requestEncoding == ol.source.WMTSRequestEncoding.KVP) { url = goog.uri.utils.appendParamsFromMap(url, localContext) }else { url = url.replace(/\{(\w+?)\}/g, function(m, p) { return localContext[p] }) } return url } } } var tileUrlFunction = ol.TileUrlFunction.nullTileUrlFunction; var urls = options.urls; if(!goog.isDef(urls) && goog.isDef(options.url)) { urls = ol.TileUrlFunction.expandUrl(options.url) } if(goog.isDef(urls)) { tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions(goog.array.map(urls, createFromWMTSTemplate)) } var tmpExtent = ol.extent.createEmpty(); var tmpTileCoord = new ol.TileCoord(0, 0, 0); tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(function(tileCoord, projection, opt_tileCoord) { var tileGrid = this.getTileGrid(); goog.asserts.assert(!goog.isNull(tileGrid)); if(tileGrid.getResolutions().length <= tileCoord.z) { return null } var x = tileCoord.x; var y = -tileCoord.y - 1; var tileExtent = tileGrid.getTileCoordExtent(tileCoord); var projectionExtent = projection.getExtent(); var extent = goog.isDef(options.extent) ? options.extent : projectionExtent; if(!goog.isNull(extent) && projection.isGlobal() && extent[0] === projectionExtent[0] && extent[1] === projectionExtent[1]) { var numCols = Math.ceil((extent[1] - extent[0]) / (tileExtent[1] - tileExtent[0])); x = goog.math.modulo(x, numCols); tmpTileCoord.z = tileCoord.z; tmpTileCoord.x = x; tmpTileCoord.y = tileCoord.y; tileExtent = tileGrid.getTileCoordExtent(tmpTileCoord, tmpExtent) } if(!ol.extent.intersects(tileExtent, extent)) { return null } return new ol.TileCoord(tileCoord.z, x, y) }, tileUrlFunction); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, projection:options.projection, tileGrid:tileGrid, tileUrlFunction:tileUrlFunction}) }; goog.inherits(ol.source.WMTS, ol.source.TileImage); ol.source.WMTS.prototype.getDimensions = function() { return this.dimensions_ }; ol.source.WMTS.prototype.getKeyZXY = function(z, x, y) { return this.coordKeyPrefix_ + goog.base(this, "getKeyZXY", z, x, y) }; ol.source.WMTS.prototype.resetCoordKeyPrefix_ = function() { var i = 0; var res = []; for(var key in this.dimensions_) { res[i++] = key + "-" + this.dimensions_[key] } this.coordKeyPrefix_ = res.join("/") }; ol.source.WMTS.prototype.updateDimensions = function(dimensions) { goog.object.extend(this.dimensions_, dimensions); this.resetCoordKeyPrefix_(); this.dispatchChangeEvent() }; ol.source.WMTS.optionsFromCapabilities = function(wmtsCap, layer) { var layers = wmtsCap["contents"]["layers"]; var l = goog.array.find(layers, function(elt, index, array) { return elt["identifier"] == layer }); goog.asserts.assert(!goog.isNull(l)); goog.asserts.assert(l["tileMatrixSetLinks"].length > 0); var matrixSet = (l["tileMatrixSetLinks"][0]["tileMatrixSet"]); var format = (l["formats"][0]); var idx = goog.array.findIndex(l["styles"], function(elt, index, array) { return elt["isDefault"] }); if(idx < 0) { idx = 0 } var style = (l["styles"][idx]["identifier"]); var dimensions = {}; goog.array.forEach(l["dimensions"], function(elt, index, array) { var key = elt["identifier"]; var value = elt["default"]; if(goog.isDef(value)) { goog.asserts.assert(goog.array.indexOf(elt["values"], value) >= 0) }else { value = elt["values"][0] } goog.asserts.assert(goog.isDef(value)); dimensions[key] = value }); var matrixSets = wmtsCap["contents"]["tileMatrixSets"]; goog.asserts.assert(matrixSet in matrixSets); var matrixSetObj = matrixSets[matrixSet]; var tileGrid = ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet(matrixSetObj); var projection = ol.proj.get(matrixSetObj["supportedCRS"]); var gets = wmtsCap["operationsMetadata"]["GetTile"]["dcp"]["http"]["get"]; var encodings = goog.object.getKeys(gets[0]["constraints"]["GetEncoding"]["allowedValues"]); goog.asserts.assert(encodings.length > 0); var urls; var requestEncoding; switch(encodings[0]) { case "REST": ; case "RESTful": requestEncoding = ol.source.WMTSRequestEncoding.REST; goog.asserts.assert(l["resourceUrls"].hasOwnProperty("tile")); goog.asserts.assert(l["resourceUrls"]["tile"].hasOwnProperty(format)); urls = (l["resourceUrls"]["tile"][format]); break; case "KVP": requestEncoding = ol.source.WMTSRequestEncoding.KVP; urls = []; goog.array.forEach(gets, function(elt, index, array) { if(elt["constraints"]["GetEncoding"]["allowedValues"].hasOwnProperty(ol.source.WMTSRequestEncoding.KVP)) { urls.push((elt["url"])) } }); goog.asserts.assert(urls.length > 0); break; default: goog.asserts.fail() } return{urls:urls, layer:layer, matrixSet:matrixSet, format:format, projection:projection, requestEncoding:requestEncoding, tileGrid:tileGrid, style:style, dimensions:dimensions} }; goog.provide("ol.sphere.WGS84"); goog.require("ol.Sphere"); ol.sphere.WGS84 = new ol.Sphere(6378137); goog.provide("ol.style.Text"); goog.require("goog.asserts"); goog.require("ol.Feature"); goog.require("ol.expr"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Literal"); goog.require("ol.style.Symbolizer"); goog.require("ol.style.TextLiteral"); ol.style.Text = function(options) { this.color_ = !goog.isDef(options.color) ? new ol.expr.Literal(ol.style.TextDefaults.color) : options.color instanceof ol.expr.Expression ? options.color : new ol.expr.Literal(options.color); this.fontFamily_ = !goog.isDef(options.fontFamily) ? new ol.expr.Literal(ol.style.TextDefaults.fontFamily) : options.fontFamily instanceof ol.expr.Expression ? options.fontFamily : new ol.expr.Literal(options.fontFamily); this.fontSize_ = !goog.isDef(options.fontSize) ? new ol.expr.Literal(ol.style.TextDefaults.fontSize) : options.fontSize instanceof ol.expr.Expression ? options.fontSize : new ol.expr.Literal(options.fontSize); this.text_ = options.text instanceof ol.expr.Expression ? options.text : new ol.expr.Literal(options.text); this.opacity_ = !goog.isDef(options.opacity) ? new ol.expr.Literal(ol.style.TextDefaults.opacity) : options.opacity instanceof ol.expr.Expression ? options.opacity : new ol.expr.Literal(options.opacity) }; goog.inherits(ol.style.Text, ol.style.Symbolizer); ol.style.Text.prototype.createLiteral = function(featureOrType) { var feature, type; if(featureOrType instanceof ol.Feature) { feature = featureOrType; var geometry = feature.getGeometry(); type = geometry ? geometry.getType() : null }else { type = featureOrType } var color = ol.expr.evaluateFeature(this.color_, feature); goog.asserts.assertString(color, "color must be a string"); var fontFamily = ol.expr.evaluateFeature(this.fontFamily_, feature); goog.asserts.assertString(fontFamily, "fontFamily must be a string"); var fontSize = Number(ol.expr.evaluateFeature(this.fontSize_, feature)); goog.asserts.assert(!isNaN(fontSize), "fontSize must be a number"); var text = ol.expr.evaluateFeature(this.text_, feature); goog.asserts.assertString(text, "text must be a string"); var opacity = Number(ol.expr.evaluateFeature(this.opacity_, feature)); goog.asserts.assert(!isNaN(opacity), "opacity must be a number"); return new ol.style.TextLiteral({color:color, fontFamily:fontFamily, fontSize:fontSize, text:text, opacity:opacity}) }; ol.style.Text.prototype.getColor = function() { return this.color_ }; ol.style.Text.prototype.getFontFamily = function() { return this.fontFamily_ }; ol.style.Text.prototype.getFontSize = function() { return this.fontSize_ }; ol.style.Text.prototype.getOpacity = function() { return this.opacity_ }; ol.style.Text.prototype.getText = function() { return this.text_ }; ol.style.Text.prototype.setColor = function(color) { goog.asserts.assertInstanceof(color, ol.expr.Expression); this.color_ = color }; ol.style.Text.prototype.setFontFamily = function(fontFamily) { goog.asserts.assertInstanceof(fontFamily, ol.expr.Expression); this.fontFamily_ = fontFamily }; ol.style.Text.prototype.setFontSize = function(fontSize) { goog.asserts.assertInstanceof(fontSize, ol.expr.Expression); this.fontSize_ = fontSize }; ol.style.Text.prototype.setOpacity = function(opacity) { goog.asserts.assertInstanceof(opacity, ol.expr.Expression); this.opacity_ = opacity }; ol.style.Text.prototype.setText = function(text) { goog.asserts.assertInstanceof(text, ol.expr.Expression); this.text_ = text }; ol.style.TextDefaults = {color:"#000", fontFamily:"sans-serif", fontSize:10, opacity:1}; goog.require("ol"); goog.require("ol.Attribution"); goog.require("ol.BrowserFeature"); goog.require("ol.Collection"); goog.require("ol.CollectionEvent"); goog.require("ol.CollectionEventType"); goog.require("ol.Color"); goog.require("ol.Constraints"); goog.require("ol.Coordinate"); goog.require("ol.CoordinateArray"); goog.require("ol.CoordinateFormatType"); goog.require("ol.DeviceOrientation"); goog.require("ol.DeviceOrientation.SUPPORTED"); goog.require("ol.DeviceOrientationProperty"); goog.require("ol.Ellipsoid"); goog.require("ol.Extent"); goog.require("ol.Feature"); goog.require("ol.FrameState"); goog.require("ol.Geolocation"); goog.require("ol.Geolocation.SUPPORTED"); goog.require("ol.GeolocationProperty"); goog.require("ol.IView"); goog.require("ol.IView2D"); goog.require("ol.IView3D"); goog.require("ol.Image"); goog.require("ol.ImageState"); goog.require("ol.ImageTile"); goog.require("ol.ImageUrlFunction"); goog.require("ol.ImageUrlFunctionType"); goog.require("ol.Kinetic"); goog.require("ol.Map"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.MapBrowserEventHandler"); goog.require("ol.MapEvent"); goog.require("ol.MapEventType"); goog.require("ol.MapProperty"); goog.require("ol.Object"); goog.require("ol.ObjectEventType"); goog.require("ol.Overlay"); goog.require("ol.OverlayPositioning"); goog.require("ol.OverlayProperty"); goog.require("ol.Pixel"); goog.require("ol.PostRenderFunction"); goog.require("ol.PreRenderFunction"); goog.require("ol.Projection"); goog.require("ol.ProjectionLike"); goog.require("ol.ProjectionUnits"); goog.require("ol.RendererHint"); goog.require("ol.RendererHints"); goog.require("ol.ResolutionConstraint"); goog.require("ol.ResolutionConstraintType"); goog.require("ol.RotationConstraint"); goog.require("ol.RotationConstraintType"); goog.require("ol.Size"); goog.require("ol.Sphere"); goog.require("ol.Tile"); goog.require("ol.TileCache"); goog.require("ol.TileCoord"); goog.require("ol.TilePriorityFunction"); goog.require("ol.TileQueue"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.TransformFunction"); goog.require("ol.View"); goog.require("ol.View2D"); goog.require("ol.View2DProperty"); goog.require("ol.View2DState"); goog.require("ol.ViewHint"); goog.require("ol.animation"); goog.require("ol.array"); goog.require("ol.canvas"); goog.require("ol.canvas.SUPPORTED"); goog.require("ol.control"); goog.require("ol.control.Attribution"); goog.require("ol.control.Control"); goog.require("ol.control.DragBox"); goog.require("ol.control.FullScreen"); goog.require("ol.control.Logo"); goog.require("ol.control.MousePosition"); goog.require("ol.control.ScaleLine"); goog.require("ol.control.ScaleLineProperty"); goog.require("ol.control.ScaleLineUnits"); goog.require("ol.control.Zoom"); goog.require("ol.control.ZoomSlider"); goog.require("ol.control.ZoomToExtent"); goog.require("ol.coordinate"); goog.require("ol.css"); goog.require("ol.dom"); goog.require("ol.dom.BrowserFeature"); goog.require("ol.dom.Input"); goog.require("ol.dom.InputProperty"); goog.require("ol.easing"); goog.require("ol.ellipsoid.BESSEL1841"); goog.require("ol.ellipsoid.WGS84"); goog.require("ol.expr"); goog.require("ol.expr.Call"); goog.require("ol.expr.Char"); goog.require("ol.expr.Comparison"); goog.require("ol.expr.ComparisonOp"); goog.require("ol.expr.Expression"); goog.require("ol.expr.Identifier"); goog.require("ol.expr.Lexer"); goog.require("ol.expr.Literal"); goog.require("ol.expr.Logical"); goog.require("ol.expr.LogicalOp"); goog.require("ol.expr.Math"); goog.require("ol.expr.MathOp"); goog.require("ol.expr.Member"); goog.require("ol.expr.Not"); goog.require("ol.expr.Parser"); goog.require("ol.expr.Token"); goog.require("ol.expr.TokenType"); goog.require("ol.expr.UnexpectedToken"); goog.require("ol.expr.functions"); goog.require("ol.extent"); goog.require("ol.geom"); goog.require("ol.geom.AbstractCollection"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.geom.SharedVertices"); goog.require("ol.geom2"); goog.require("ol.geom2.LineString"); goog.require("ol.geom2.LineStringCollection"); goog.require("ol.geom2.Point"); goog.require("ol.geom2.PointCollection"); goog.require("ol.interaction"); goog.require("ol.interaction.ConditionType"); goog.require("ol.interaction.DoubleClickZoom"); goog.require("ol.interaction.Drag"); goog.require("ol.interaction.DragPan"); goog.require("ol.interaction.DragRotate"); goog.require("ol.interaction.DragRotateAndZoom"); goog.require("ol.interaction.DragZoom"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.KeyboardPan"); goog.require("ol.interaction.KeyboardZoom"); goog.require("ol.interaction.Modify"); goog.require("ol.interaction.MouseWheelZoom"); goog.require("ol.interaction.Select"); goog.require("ol.interaction.Touch"); goog.require("ol.interaction.TouchPan"); goog.require("ol.interaction.TouchRotate"); goog.require("ol.interaction.TouchZoom"); goog.require("ol.interaction.condition"); goog.require("ol.layer.Base"); goog.require("ol.layer.Group"); goog.require("ol.layer.Image"); goog.require("ol.layer.Layer"); goog.require("ol.layer.LayerProperty"); goog.require("ol.layer.LayerState"); goog.require("ol.layer.Tile"); goog.require("ol.layer.Vector"); goog.require("ol.layer.Vector2"); goog.require("ol.layer.VectorLayerEventType"); goog.require("ol.layer.VectorLayerRenderIntent"); goog.require("ol.math"); goog.require("ol.parser.AsyncObjectFeatureParser"); goog.require("ol.parser.AsyncStringFeatureParser"); goog.require("ol.parser.DomFeatureParser"); goog.require("ol.parser.GPX"); goog.require("ol.parser.GeoJSON"); goog.require("ol.parser.KML"); goog.require("ol.parser.ObjectFeatureParser"); goog.require("ol.parser.Parser"); goog.require("ol.parser.ReadFeaturesOptions"); goog.require("ol.parser.ReadFeaturesResult"); goog.require("ol.parser.StringFeatureParser"); goog.require("ol.parser.TopoJSON"); goog.require("ol.parser.WKT"); goog.require("ol.parser.XML"); goog.require("ol.parser.ogc.ExceptionReport"); goog.require("ol.parser.ogc.Filter"); goog.require("ol.parser.ogc.Filter_v1"); goog.require("ol.parser.ogc.Filter_v1_0_0"); goog.require("ol.parser.ogc.Filter_v1_1_0"); goog.require("ol.parser.ogc.GML"); goog.require("ol.parser.ogc.GML_v2"); goog.require("ol.parser.ogc.GML_v3"); goog.require("ol.parser.ogc.OWSCommon_v1"); goog.require("ol.parser.ogc.OWSCommon_v1_1_0"); goog.require("ol.parser.ogc.Versioned"); goog.require("ol.parser.ogc.WMSCapabilities"); goog.require("ol.parser.ogc.WMSCapabilities_v1"); goog.require("ol.parser.ogc.WMSCapabilities_v1_0_0"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_0"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_1"); goog.require("ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC"); goog.require("ol.parser.ogc.WMSCapabilities_v1_3_0"); goog.require("ol.parser.ogc.WMTSCapabilities"); goog.require("ol.parser.ogc.WMTSCapabilities_v1_0_0"); goog.require("ol.parser.polyline"); goog.require("ol.proj"); goog.require("ol.proj.CH"); goog.require("ol.proj.EPSG2056"); goog.require("ol.proj.EPSG21781"); goog.require("ol.proj.EPSG3857"); goog.require("ol.proj.EPSG4326"); goog.require("ol.proj.common"); goog.require("ol.renderer.Layer"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.ImageLayer"); goog.require("ol.renderer.canvas.Layer"); goog.require("ol.renderer.canvas.Map"); goog.require("ol.renderer.canvas.SUPPORTED"); goog.require("ol.renderer.canvas.TileLayer"); goog.require("ol.renderer.canvas.VectorLayer"); goog.require("ol.renderer.canvas.VectorRenderer"); goog.require("ol.renderer.dom.ImageLayer"); goog.require("ol.renderer.dom.Layer"); goog.require("ol.renderer.dom.Map"); goog.require("ol.renderer.dom.SUPPORTED"); goog.require("ol.renderer.dom.TileLayer"); goog.require("ol.renderer.webgl.ImageLayer"); goog.require("ol.renderer.webgl.Layer"); goog.require("ol.renderer.webgl.Map"); goog.require("ol.renderer.webgl.SUPPORTED"); goog.require("ol.renderer.webgl.TileLayer"); goog.require("ol.renderer.webgl.VectorLayer2"); goog.require("ol.renderer.webgl.map.shader.Color"); goog.require("ol.renderer.webgl.map.shader.Default"); goog.require("ol.renderer.webgl.tilelayer.shader"); goog.require("ol.renderer.webgl.vectorlayer2.shader.LineStringCollection"); goog.require("ol.renderer.webgl.vectorlayer2.shader.PointCollection"); goog.require("ol.size"); goog.require("ol.source.BingMaps"); goog.require("ol.source.FeatureInfoSource"); goog.require("ol.source.Image"); goog.require("ol.source.ImageStatic"); goog.require("ol.source.ImageWMS"); goog.require("ol.source.MapQuestOSM"); goog.require("ol.source.MapQuestOpenAerial"); goog.require("ol.source.OSM"); goog.require("ol.source.Source"); goog.require("ol.source.Stamen"); goog.require("ol.source.Tile"); goog.require("ol.source.TileDebug"); goog.require("ol.source.TileImage"); goog.require("ol.source.TileJSON"); goog.require("ol.source.TileOptions"); goog.require("ol.source.TileWMS"); goog.require("ol.source.Vector"); goog.require("ol.source.Vector2"); goog.require("ol.source.WMSGetFeatureInfoMethod"); goog.require("ol.source.WMTS"); goog.require("ol.source.WMTSRequestEncoding"); goog.require("ol.source.XYZ"); goog.require("ol.source.wms"); goog.require("ol.sphere.NORMAL"); goog.require("ol.sphere.WGS84"); goog.require("ol.structs.Buffer"); goog.require("ol.structs.IntegerSet"); goog.require("ol.structs.LRUCache"); goog.require("ol.structs.PriorityQueue"); goog.require("ol.structs.RTree"); goog.require("ol.style"); goog.require("ol.style.Fill"); goog.require("ol.style.Icon"); goog.require("ol.style.IconLiteral"); goog.require("ol.style.LineLiteral"); goog.require("ol.style.Literal"); goog.require("ol.style.Point"); goog.require("ol.style.PointLiteral"); goog.require("ol.style.PolygonLiteral"); goog.require("ol.style.Rule"); goog.require("ol.style.Shape"); goog.require("ol.style.ShapeLiteral"); goog.require("ol.style.ShapeType"); goog.require("ol.style.Stroke"); goog.require("ol.style.StrokeDefaults"); goog.require("ol.style.Style"); goog.require("ol.style.Symbolizer"); goog.require("ol.style.Text"); goog.require("ol.style.TextLiteral"); goog.require("ol.tilegrid.TileGrid"); goog.require("ol.tilegrid.WMTS"); goog.require("ol.tilegrid.XYZ"); goog.require("ol.tilejson"); goog.require("ol.vec.Mat4"); goog.require("ol.webgl"); goog.require("ol.webgl.SUPPORTED"); goog.require("ol.webgl.WebGLContextEventType"); goog.require("ol.webgl.shader"); goog.provide("ol.AttributionOptions"); goog.provide("ol.DeviceOrientationOptions"); goog.provide("ol.GeolocationOptions"); goog.provide("ol.GetFeatureInfoOptions"); goog.provide("ol.GetFeaturesOptions"); goog.provide("ol.MapOptions"); goog.provide("ol.OverlayOptions"); goog.provide("ol.Proj4jsProjectionOptions"); goog.provide("ol.ProjectionOptions"); goog.provide("ol.View2DOptions"); goog.provide("ol.animation.BounceOptions"); goog.provide("ol.animation.PanOptions"); goog.provide("ol.animation.RotateOptions"); goog.provide("ol.animation.ZoomOptions"); goog.provide("ol.control.AttributionOptions"); goog.provide("ol.control.ControlOptions"); goog.provide("ol.control.DefaultsOptions"); goog.provide("ol.control.FullScreenOptions"); goog.provide("ol.control.LogoOptions"); goog.provide("ol.control.MousePositionOptions"); goog.provide("ol.control.ScaleLineOptions"); goog.provide("ol.control.ZoomOptions"); goog.provide("ol.control.ZoomSliderOptions"); goog.provide("ol.control.ZoomToExtentOptions"); goog.provide("ol.interaction.DefaultsOptions"); goog.provide("ol.interaction.DoubleClickZoomOptions"); goog.provide("ol.interaction.DragPanOptions"); goog.provide("ol.interaction.DragRotateAndZoomOptions"); goog.provide("ol.interaction.DragRotateOptions"); goog.provide("ol.interaction.DragZoomOptions"); goog.provide("ol.interaction.KeyboardPanOptions"); goog.provide("ol.interaction.KeyboardZoomOptions"); goog.provide("ol.interaction.ModifyOptions"); goog.provide("ol.interaction.SelectOptions"); goog.provide("ol.interaction.TouchPanOptions"); goog.provide("ol.interaction.TouchRotateOptions"); goog.provide("ol.layer.BaseOptions"); goog.provide("ol.layer.GroupOptions"); goog.provide("ol.layer.LayerOptions"); goog.provide("ol.layer.TileOptions"); goog.provide("ol.layer.VectorLayerOptions"); goog.provide("ol.parser.GMLOptions"); goog.provide("ol.parser.GMLReadOptions"); goog.provide("ol.parser.GMLWriteOptions"); goog.provide("ol.parser.GPXOptions"); goog.provide("ol.parser.GPXWriteOptions"); goog.provide("ol.parser.KMLOptions"); goog.provide("ol.source.BingMapsOptions"); goog.provide("ol.source.ImageStaticOptions"); goog.provide("ol.source.ImageWMSOptions"); goog.provide("ol.source.OSMOptions"); goog.provide("ol.source.SourceOptions"); goog.provide("ol.source.StamenOptions"); goog.provide("ol.source.TileDebugOptions"); goog.provide("ol.source.TileJSONOptions"); goog.provide("ol.source.TileWMSOptions"); goog.provide("ol.source.Vector2Options"); goog.provide("ol.source.VectorOptions"); goog.provide("ol.source.WMSGetFeatureInfoOptions"); goog.provide("ol.source.WMTSOptions"); goog.provide("ol.source.XYZOptions"); goog.provide("ol.style.FillOptions"); goog.provide("ol.style.IconOptions"); goog.provide("ol.style.RuleOptions"); goog.provide("ol.style.ShapeOptions"); goog.provide("ol.style.StrokeOptions"); goog.provide("ol.style.StyleOptions"); goog.provide("ol.style.TextOptions"); goog.provide("ol.tilegrid.TileGridOptions"); goog.provide("ol.tilegrid.WMTSOptions"); goog.provide("ol.tilegrid.XYZOptions"); ol.AttributionOptions; ol.DeviceOrientationOptions; ol.GeolocationOptions; ol.GetFeatureInfoOptions; ol.GetFeaturesOptions; ol.MapOptions; ol.OverlayOptions; ol.Proj4jsProjectionOptions; ol.ProjectionOptions; ol.View2DOptions; ol.animation.BounceOptions; ol.animation.PanOptions; ol.animation.RotateOptions; ol.animation.ZoomOptions; ol.control.AttributionOptions; ol.control.ControlOptions; ol.control.DefaultsOptions; ol.control.FullScreenOptions; ol.control.LogoOptions; ol.control.MousePositionOptions; ol.control.ScaleLineOptions; ol.control.ZoomOptions; ol.control.ZoomSliderOptions; ol.control.ZoomToExtentOptions; ol.interaction.DefaultsOptions; ol.interaction.DoubleClickZoomOptions; ol.interaction.DragPanOptions; ol.interaction.DragRotateAndZoomOptions; ol.interaction.DragRotateOptions; ol.interaction.DragZoomOptions; ol.interaction.KeyboardPanOptions; ol.interaction.KeyboardZoomOptions; ol.interaction.ModifyOptions; ol.interaction.SelectOptions; ol.interaction.TouchPanOptions; ol.interaction.TouchRotateOptions; ol.layer.BaseOptions; ol.layer.GroupOptions; ol.layer.LayerOptions; ol.layer.TileOptions; ol.layer.VectorLayerOptions; ol.parser.GMLOptions; ol.parser.GMLReadOptions; ol.parser.GMLWriteOptions; ol.parser.GPXOptions; ol.parser.GPXWriteOptions; ol.parser.KMLOptions; ol.source.BingMapsOptions; ol.source.ImageStaticOptions; ol.source.ImageWMSOptions; ol.source.OSMOptions; ol.source.SourceOptions; ol.source.StamenOptions; ol.source.TileDebugOptions; ol.source.TileJSONOptions; ol.source.TileWMSOptions; ol.source.Vector2Options; ol.source.VectorOptions; ol.source.WMSGetFeatureInfoOptions; ol.source.WMTSOptions; ol.source.XYZOptions; ol.style.FillOptions; ol.style.IconOptions; ol.style.RuleOptions; ol.style.ShapeOptions; ol.style.StrokeOptions; ol.style.StyleOptions; ol.style.TextOptions; ol.tilegrid.TileGridOptions; ol.tilegrid.WMTSOptions; ol.tilegrid.XYZOptions;