http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/debug/logrecordserializer.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/debug/logrecordserializer.js 
b/externs/GCL/externs/goog/debug/logrecordserializer.js
new file mode 100644
index 0000000..9b09d56
--- /dev/null
+++ b/externs/GCL/externs/goog/debug/logrecordserializer.js
@@ -0,0 +1,121 @@
+// Copyright 2011 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview Static methods for serializing and deserializing log
+ * messages.  These methods are deliberately kept separate from logrecord.js
+ * and logger.js because they add dependencies on goog.json and goog.object.
+ *
+ */
+
+goog.provide('goog.debug.logRecordSerializer');
+
+goog.require('goog.debug.LogRecord');
+goog.require('goog.debug.Logger');
+goog.require('goog.json');
+goog.require('goog.object');
+
+
+/**
+ * Enumeration of object keys used when serializing a log message.
+ * @enum {string}
+ * @private
+ */
+goog.debug.logRecordSerializer.Param_ = {
+  TIME: 't',
+  LEVEL_NAME: 'ln',
+  LEVEL_VALUE: 'lv',
+  MSG: 'm',
+  LOGGER_NAME: 'n',
+  SEQUENCE_NUMBER: 's',
+  EXCEPTION: 'e'
+};
+
+
+/**
+ * Serializes a LogRecord to a JSON string.  Note that any associated
+ * exception is likely to be lost.
+ * @param {goog.debug.LogRecord} record The record to serialize.
+ * @return {string} Serialized JSON string of the log message.
+ */
+goog.debug.logRecordSerializer.serialize = function(record) {
+  var param = goog.debug.logRecordSerializer.Param_;
+  return goog.json.serialize(goog.object.create(
+      param.TIME, record.getMillis(),
+      param.LEVEL_NAME, record.getLevel().name,
+      param.LEVEL_VALUE, record.getLevel().value,
+      param.MSG, record.getMessage(),
+      param.LOGGER_NAME, record.getLoggerName(),
+      param.SEQUENCE_NUMBER, record.getSequenceNumber(),
+      param.EXCEPTION, record.getException() && 
record.getException().message));
+};
+
+
+/**
+ * Deserializes a JSON-serialized LogRecord.
+ * @param {string} s The JSON serialized record.
+ * @return {!goog.debug.LogRecord} The deserialized record.
+ */
+goog.debug.logRecordSerializer.parse = function(s) {
+  return goog.debug.logRecordSerializer.reconstitute_(goog.json.parse(s));
+};
+
+
+/**
+ * Deserializes a JSON-serialized LogRecord.  Use this only if you're
+ * naive enough to blindly trust any JSON formatted input that comes
+ * your way.
+ * @param {string} s The JSON serialized record.
+ * @return {!goog.debug.LogRecord} The deserialized record.
+ */
+goog.debug.logRecordSerializer.unsafeParse = function(s) {
+  return 
goog.debug.logRecordSerializer.reconstitute_(goog.json.unsafeParse(s));
+};
+
+
+/**
+ * Common reconsitution method for for parse and unsafeParse.
+ * @param {Object} o The JSON object.
+ * @return {!goog.debug.LogRecord} The reconstituted record.
+ * @private
+ */
+goog.debug.logRecordSerializer.reconstitute_ = function(o) {
+  var param = goog.debug.logRecordSerializer.Param_;
+  var level = goog.debug.logRecordSerializer.getLevel_(
+      o[param.LEVEL_NAME], o[param.LEVEL_VALUE]);
+
+  var ret = new goog.debug.LogRecord(level, o[param.MSG],
+      o[param.LOGGER_NAME], o[param.TIME], o[param.SEQUENCE_NUMBER]);
+  var exceptionMessage = o[param.EXCEPTION];
+  if (goog.isDefAndNotNull(exceptionMessage)) {
+    ret.setException(new Error(exceptionMessage));
+  }
+  return ret;
+};
+
+
+/**
+ * @param {string} name The name of the log level to return.
+ * @param {number} value The numeric value of the log level to return.
+ * @return {!goog.debug.Logger.Level} Returns a goog.debug.Logger.Level with
+ *     the specified name and value.  If the name and value match a predefined
+ *     log level, that instance will be returned, otherwise a new one will be
+ *     created.
+ * @private
+ */
+goog.debug.logRecordSerializer.getLevel_ = function(name, value) {
+  var level = goog.debug.Logger.Level.getPredefinedLevel(name);
+  return level && level.value == value ?
+      level : new goog.debug.Logger.Level(name, value);
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/debug/relativetimeprovider.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/debug/relativetimeprovider.js 
b/externs/GCL/externs/goog/debug/relativetimeprovider.js
new file mode 100644
index 0000000..1201147
--- /dev/null
+++ b/externs/GCL/externs/goog/debug/relativetimeprovider.js
@@ -0,0 +1,84 @@
+// Copyright 2007 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview Definition the goog.debug.RelativeTimeProvider class.
+ *
+ */
+
+goog.provide('goog.debug.RelativeTimeProvider');
+
+
+
+/**
+ * A simple object to keep track of a timestamp considered the start of
+ * something. The main use is for the logger system to maintain a start time
+ * that is occasionally reset. For example, in Gmail, we reset this relative
+ * time at the start of a user action so that timings are offset from the
+ * beginning of the action. This class also provides a singleton as the default
+ * behavior for most use cases is to share the same start time.
+ *
+ * @constructor
+ * @final
+ */
+goog.debug.RelativeTimeProvider = function() {
+  /**
+   * The start time.
+   * @type {number}
+   * @private
+   */
+  this.relativeTimeStart_ = goog.now();
+};
+
+
+/**
+ * Default instance.
+ * @type {goog.debug.RelativeTimeProvider}
+ * @private
+ */
+goog.debug.RelativeTimeProvider.defaultInstance_ =
+    new goog.debug.RelativeTimeProvider();
+
+
+/**
+ * Sets the start time to the specified time.
+ * @param {number} timeStamp The start time.
+ */
+goog.debug.RelativeTimeProvider.prototype.set = function(timeStamp) {
+  this.relativeTimeStart_ = timeStamp;
+};
+
+
+/**
+ * Resets the start time to now.
+ */
+goog.debug.RelativeTimeProvider.prototype.reset = function() {
+  this.set(goog.now());
+};
+
+
+/**
+ * @return {number} The start time.
+ */
+goog.debug.RelativeTimeProvider.prototype.get = function() {
+  return this.relativeTimeStart_;
+};
+
+
+/**
+ * @return {goog.debug.RelativeTimeProvider} The default instance.
+ */
+goog.debug.RelativeTimeProvider.getDefaultInstance = function() {
+  return goog.debug.RelativeTimeProvider.defaultInstance_;
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/debug/tracer.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/debug/tracer.js 
b/externs/GCL/externs/goog/debug/tracer.js
new file mode 100644
index 0000000..b56a324
--- /dev/null
+++ b/externs/GCL/externs/goog/debug/tracer.js
@@ -0,0 +1,725 @@
+// Copyright 2006 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview Definition of the Tracer class and associated classes.
+ *
+ * @see ../demos/tracer.html
+ */
+
+goog.provide('goog.debug.Trace');
+
+goog.require('goog.array');
+goog.require('goog.debug.Logger');
+goog.require('goog.iter');
+goog.require('goog.log');
+goog.require('goog.structs.Map');
+goog.require('goog.structs.SimplePool');
+
+
+
+/**
+ * Class used for singleton goog.debug.Trace.  Used for timing slow points in
+ * the code. Based on the java Tracer class but optimized for javascript.
+ * See com.google.common.tracing.Tracer.
+ * @constructor
+ * @private
+ */
+goog.debug.Trace_ = function() {
+
+  /**
+   * Events in order.
+   * @type {Array<goog.debug.Trace_.Event_>}
+   * @private
+   */
+  this.events_ = [];
+
+  /**
+   * Outstanding events that have started but haven't yet ended. The keys are
+   * numeric ids and the values are goog.debug.Trace_.Event_ objects.
+   * @type {goog.structs.Map}
+   * @private
+   */
+  this.outstandingEvents_ = new goog.structs.Map();
+
+  /**
+   * Start time of the event trace
+   * @type {number}
+   * @private
+   */
+  this.startTime_ = 0;
+
+  /**
+   * Cummulative overhead of calls to startTracer
+   * @type {number}
+   * @private
+   */
+  this.tracerOverheadStart_ = 0;
+
+  /**
+   * Cummulative overhead of calls to endTracer
+   * @type {number}
+   * @private
+   */
+  this.tracerOverheadEnd_ = 0;
+
+  /**
+   * Cummulative overhead of calls to addComment
+   * @type {number}
+   * @private
+   */
+  this.tracerOverheadComment_ = 0;
+
+  /**
+   * Keeps stats on different types of tracers. The keys are strings and the
+   * values are goog.debug.Stat
+   * @type {goog.structs.Map}
+   * @private
+   */
+  this.stats_ = new goog.structs.Map();
+
+  /**
+   * Total number of traces created in the trace.
+   * @type {number}
+   * @private
+   */
+  this.tracerCount_ = 0;
+
+  /**
+   * Total number of comments created in the trace.
+   * @type {number}
+   * @private
+   */
+  this.commentCount_ = 0;
+
+  /**
+   * Next id to use for the trace.
+   * @type {number}
+   * @private
+   */
+  this.nextId_ = 1;
+
+  /**
+   * A pool for goog.debug.Trace_.Event_ objects so we don't keep creating and
+   * garbage collecting these (which is very expensive in IE6).
+   * @private {!goog.structs.SimplePool}
+   */
+  this.eventPool_ = new goog.structs.SimplePool(0, 4000);
+  this.eventPool_.createObject = function() {
+    return new goog.debug.Trace_.Event_();
+  };
+
+
+  /**
+   * A pool for goog.debug.Trace_.Stat_ objects so we don't keep creating and
+   * garbage collecting these (which is very expensive in IE6).
+   * @private {!goog.structs.SimplePool}
+   */
+  this.statPool_ = new goog.structs.SimplePool(0, 50);
+  this.statPool_.createObject = function() {
+    return new goog.debug.Trace_.Stat_();
+  };
+
+  var self = this;
+
+  /** @private {!goog.structs.SimplePool} */
+  this.idPool_ = new goog.structs.SimplePool(0, 2000);
+
+  // TODO(nicksantos): SimplePool is supposed to only return objects.
+  // Reconcile this so that we don't have to cast to number below.
+  this.idPool_.createObject = function() {
+    return String(self.nextId_++);
+  };
+  this.idPool_.disposeObject = function(obj) {};
+
+  /**
+   * Default threshold below which a tracer shouldn't be reported
+   * @type {number}
+   * @private
+   */
+  this.defaultThreshold_ = 3;
+};
+
+
+/**
+ * Logger for the tracer
+ * @type {goog.log.Logger}
+ * @private
+ */
+goog.debug.Trace_.prototype.logger_ =
+    goog.log.getLogger('goog.debug.Trace');
+
+
+/**
+ * Maximum size of the trace before we discard events
+ * @type {number}
+ */
+goog.debug.Trace_.prototype.MAX_TRACE_SIZE = 1000;
+
+
+/**
+ * Event type supported by tracer
+ * @enum {number}
+ */
+goog.debug.Trace_.EventType = {
+  /**
+   * Start event type
+   */
+  START: 0,
+
+  /**
+   * Stop event type
+   */
+  STOP: 1,
+
+  /**
+   * Comment event type
+   */
+  COMMENT: 2
+};
+
+
+
+/**
+ * Class to keep track of a stat of a single tracer type. Stores the count
+ * and cumulative time.
+ * @constructor
+ * @private
+ */
+goog.debug.Trace_.Stat_ = function() {
+  /**
+   * Number of tracers
+   * @type {number}
+   */
+  this.count = 0;
+
+  /**
+   * Cumulative time of traces
+   * @type {number}
+   */
+  this.time = 0;
+
+  /**
+   * Total number of allocations for this tracer type
+   * @type {number}
+   */
+  this.varAlloc = 0;
+};
+
+
+/**
+ * @type {string|null|undefined}
+ */
+goog.debug.Trace_.Stat_.prototype.type;
+
+
+/**
+ * @return {string} A string describing the tracer stat.
+ * @override
+ */
+goog.debug.Trace_.Stat_.prototype.toString = function() {
+  var sb = [];
+  sb.push(this.type, ' ', this.count, ' (', Math.round(this.time * 10) / 10,
+      ' ms)');
+  if (this.varAlloc) {
+    sb.push(' [VarAlloc = ', this.varAlloc, ']');
+  }
+  return sb.join('');
+};
+
+
+
+/**
+ * Private class used to encapsulate a single event, either the start or stop
+ * of a tracer.
+ * @constructor
+ * @private
+ */
+goog.debug.Trace_.Event_ = function() {
+  // the fields are different for different events - see usage in code
+};
+
+
+/**
+ * @type {string|null|undefined}
+ */
+goog.debug.Trace_.Event_.prototype.type;
+
+
+/**
+ * Returns a formatted string for the event.
+ * @param {number} startTime The start time of the trace to generate relative
+ * times.
+ * @param {number} prevTime The completion time of the previous event or -1.
+ * @param {string} indent Extra indent for the message
+ *     if there was no previous event.
+ * @return {string} The formatted tracer string.
+ */
+goog.debug.Trace_.Event_.prototype.toTraceString = function(startTime, 
prevTime,
+    indent) {
+  var sb = [];
+
+  if (prevTime == -1) {
+    sb.push('    ');
+  } else {
+    sb.push(goog.debug.Trace_.longToPaddedString_(this.eventTime - prevTime));
+  }
+
+  sb.push(' ', goog.debug.Trace_.formatTime_(this.eventTime - startTime));
+  if (this.eventType == goog.debug.Trace_.EventType.START) {
+    sb.push(' Start        ');
+  } else if (this.eventType == goog.debug.Trace_.EventType.STOP) {
+    sb.push(' Done ');
+    var delta = this.stopTime - this.startTime;
+    sb.push(goog.debug.Trace_.longToPaddedString_(delta), ' ms ');
+  } else {
+    sb.push(' Comment      ');
+  }
+
+  sb.push(indent, this);
+  if (this.totalVarAlloc > 0) {
+    sb.push('[VarAlloc ', this.totalVarAlloc, '] ');
+  }
+  return sb.join('');
+};
+
+
+/**
+ * @return {string} A string describing the tracer event.
+ * @override
+ */
+goog.debug.Trace_.Event_.prototype.toString = function() {
+  if (this.type == null) {
+    return this.comment;
+  } else {
+    return '[' + this.type + '] ' + this.comment;
+  }
+};
+
+
+/**
+ * Add the ability to explicitly set the start time. This is useful for example
+ * for measuring initial load time where you can set a variable as soon as the
+ * main page of the app is loaded and then later call this function when the
+ * Tracer code has been loaded.
+ * @param {number} startTime The start time to set.
+ */
+goog.debug.Trace_.prototype.setStartTime = function(startTime) {
+  this.startTime_ = startTime;
+};
+
+
+/**
+ * Initializes and resets the current trace
+ * @param {number} defaultThreshold The default threshold below which the
+ * tracer output will be supressed. Can be overridden on a per-Tracer basis.
+ */
+goog.debug.Trace_.prototype.initCurrentTrace = function(defaultThreshold) {
+  this.reset(defaultThreshold);
+};
+
+
+/**
+ * Clears the current trace
+ */
+goog.debug.Trace_.prototype.clearCurrentTrace = function() {
+  this.reset(0);
+};
+
+
+/**
+ * Resets the trace.
+ * @param {number} defaultThreshold The default threshold below which the
+ * tracer output will be supressed. Can be overridden on a per-Tracer basis.
+ */
+goog.debug.Trace_.prototype.reset = function(defaultThreshold) {
+  this.defaultThreshold_ = defaultThreshold;
+
+  for (var i = 0; i < this.events_.length; i++) {
+    var id = /** @type {Object} */ (this.eventPool_).id;
+    if (id) {
+      this.idPool_.releaseObject(id);
+    }
+    this.eventPool_.releaseObject(this.events_[i]);
+  }
+
+  this.events_.length = 0;
+  this.outstandingEvents_.clear();
+  this.startTime_ = goog.debug.Trace_.now();
+  this.tracerOverheadStart_ = 0;
+  this.tracerOverheadEnd_ = 0;
+  this.tracerOverheadComment_ = 0;
+  this.tracerCount_ = 0;
+  this.commentCount_ = 0;
+
+  var keys = this.stats_.getKeys();
+  for (var i = 0; i < keys.length; i++) {
+    var key = keys[i];
+    var stat = this.stats_.get(key);
+    stat.count = 0;
+    stat.time = 0;
+    stat.varAlloc = 0;
+    this.statPool_.releaseObject(/** @type {Object} */ (stat));
+  }
+  this.stats_.clear();
+};
+
+
+/**
+ * Starts a tracer
+ * @param {string} comment A comment used to identify the tracer. Does not
+ *     need to be unique.
+ * @param {string=} opt_type Type used to identify the tracer. If a Trace is
+ *     given a type (the first argument to the constructor) and multiple Traces
+ *     are done on that type then a "TOTAL line will be produced showing the
+ *     total number of traces and the sum of the time
+ *     ("TOTAL Database 2 (37 ms)" in our example). These traces should be
+ *     mutually exclusive or else the sum won't make sense (the time will
+ *     be double counted if the second starts before the first ends).
+ * @return {number} The identifier for the tracer that should be passed to the
+ *     the stopTracer method.
+ */
+goog.debug.Trace_.prototype.startTracer = function(comment, opt_type) {
+  var tracerStartTime = goog.debug.Trace_.now();
+  var varAlloc = this.getTotalVarAlloc();
+  var outstandingEventCount = this.outstandingEvents_.getCount();
+  if (this.events_.length + outstandingEventCount > this.MAX_TRACE_SIZE) {
+    goog.log.warning(this.logger_,
+        'Giant thread trace. Clearing to avoid memory leak.');
+    // This is the more likely case. This usually means that we
+    // either forgot to clear the trace or else we are performing a
+    // very large number of events
+    if (this.events_.length > this.MAX_TRACE_SIZE / 2) {
+      for (var i = 0; i < this.events_.length; i++) {
+        var event = this.events_[i];
+        if (event.id) {
+          this.idPool_.releaseObject(event.id);
+        }
+        this.eventPool_.releaseObject(event);
+      }
+      this.events_.length = 0;
+    }
+
+    // This is less likely and probably indicates that a lot of traces
+    // aren't being closed. We want to avoid unnecessarily clearing
+    // this though in case the events do eventually finish.
+    if (outstandingEventCount > this.MAX_TRACE_SIZE / 2) {
+      this.outstandingEvents_.clear();
+    }
+  }
+
+  goog.debug.Logger.logToProfilers('Start : ' + comment);
+
+  var event = /** @type {goog.debug.Trace_.Event_} */ (
+      this.eventPool_.getObject());
+  event.totalVarAlloc = varAlloc;
+  event.eventType = goog.debug.Trace_.EventType.START;
+  event.id = Number(this.idPool_.getObject());
+  event.comment = comment;
+  event.type = opt_type;
+  this.events_.push(event);
+  this.outstandingEvents_.set(String(event.id), event);
+  this.tracerCount_++;
+  var now = goog.debug.Trace_.now();
+  event.startTime = event.eventTime = now;
+  this.tracerOverheadStart_ += now - tracerStartTime;
+  return event.id;
+};
+
+
+/**
+ * Stops a tracer
+ * @param {number|undefined|null} id The id of the tracer that is ending.
+ * @param {number=} opt_silenceThreshold Threshold below which the tracer is
+ *    silenced.
+ * @return {?number} The elapsed time for the tracer or null if the tracer
+ *    identitifer was not recognized.
+ */
+goog.debug.Trace_.prototype.stopTracer = function(id, opt_silenceThreshold) {
+  // this used to call goog.isDef(opt_silenceThreshold) but that causes an
+  // object allocation in IE for some reason (doh!). The following code doesn't
+  // cause an allocation
+  var now = goog.debug.Trace_.now();
+  var silenceThreshold;
+  if (opt_silenceThreshold === 0) {
+    silenceThreshold = 0;
+  } else if (opt_silenceThreshold) {
+    silenceThreshold = opt_silenceThreshold;
+  } else {
+    silenceThreshold = this.defaultThreshold_;
+  }
+
+  var startEvent = this.outstandingEvents_.get(String(id));
+  if (startEvent == null) {
+    return null;
+  }
+
+  this.outstandingEvents_.remove(String(id));
+
+  var stopEvent;
+  var elapsed = now - startEvent.startTime;
+  if (elapsed < silenceThreshold) {
+    var count = this.events_.length;
+    for (var i = count - 1; i >= 0; i--) {
+      var nextEvent = this.events_[i];
+      if (nextEvent == startEvent) {
+        this.events_.splice(i, 1);
+        this.idPool_.releaseObject(startEvent.id);
+        this.eventPool_.releaseObject(/** @type {Object} */ (startEvent));
+        break;
+      }
+    }
+
+  } else {
+    stopEvent = /** @type {goog.debug.Trace_.Event_} */ (
+        this.eventPool_.getObject());
+    stopEvent.eventType = goog.debug.Trace_.EventType.STOP;
+    stopEvent.startTime = startEvent.startTime;
+    stopEvent.comment = startEvent.comment;
+    stopEvent.type = startEvent.type;
+    stopEvent.stopTime = stopEvent.eventTime = now;
+
+    this.events_.push(stopEvent);
+  }
+
+  var type = startEvent.type;
+  var stat = null;
+  if (type) {
+    stat = this.getStat_(type);
+    stat.count++;
+    stat.time += elapsed;
+  }
+  if (stopEvent) {
+    goog.debug.Logger.logToProfilers('Stop : ' + stopEvent.comment);
+
+    stopEvent.totalVarAlloc = this.getTotalVarAlloc();
+
+    if (stat) {
+      stat.varAlloc += (stopEvent.totalVarAlloc - startEvent.totalVarAlloc);
+    }
+  }
+  var tracerFinishTime = goog.debug.Trace_.now();
+  this.tracerOverheadEnd_ += tracerFinishTime - now;
+  return elapsed;
+};
+
+
+/**
+ * Sets the ActiveX object that can be used to get GC tracing in IE6.
+ * @param {Object} gcTracer GCTracer ActiveX object.
+ */
+goog.debug.Trace_.prototype.setGcTracer = function(gcTracer) {
+  this.gcTracer_ = gcTracer;
+};
+
+
+/**
+ * Returns the total number of allocations since the GC stats were reset. Only
+ * works in IE.
+ * @return {number} The number of allocaitons or -1 if not supported.
+ */
+goog.debug.Trace_.prototype.getTotalVarAlloc = function() {
+  var gcTracer = this.gcTracer_;
+  // isTracing is defined on the ActiveX object.
+  if (gcTracer && gcTracer['isTracing']()) {
+    return gcTracer['totalVarAlloc'];
+  }
+  return -1;
+};
+
+
+/**
+ * Adds a comment to the trace. Makes it possible to see when a specific event
+ * happened in relation to the traces.
+ * @param {string} comment A comment that is inserted into the trace.
+ * @param {?string=} opt_type Type used to identify the tracer. If a comment is
+ *     given a type and multiple comments are done on that type then a "TOTAL
+ *     line will be produced showing the total number of comments of that type.
+ * @param {?number=} opt_timeStamp The timestamp to insert the comment. If not
+ *    specified, the current time wil be used.
+ */
+goog.debug.Trace_.prototype.addComment = function(comment, opt_type,
+                                                  opt_timeStamp) {
+  var now = goog.debug.Trace_.now();
+  var timeStamp = opt_timeStamp ? opt_timeStamp : now;
+
+  var eventComment = /** @type {goog.debug.Trace_.Event_} */ (
+      this.eventPool_.getObject());
+  eventComment.eventType = goog.debug.Trace_.EventType.COMMENT;
+  eventComment.eventTime = timeStamp;
+  eventComment.type = opt_type;
+  eventComment.comment = comment;
+  eventComment.totalVarAlloc = this.getTotalVarAlloc();
+  this.commentCount_++;
+
+  if (opt_timeStamp) {
+    var numEvents = this.events_.length;
+    for (var i = 0; i < numEvents; i++) {
+      var event = this.events_[i];
+      var eventTime = event.eventTime;
+
+      if (eventTime > timeStamp) {
+        goog.array.insertAt(this.events_, eventComment, i);
+        break;
+      }
+    }
+    if (i == numEvents) {
+      this.events_.push(eventComment);
+    }
+  } else {
+    this.events_.push(eventComment);
+  }
+
+  var type = eventComment.type;
+  if (type) {
+    var stat = this.getStat_(type);
+    stat.count++;
+  }
+
+  this.tracerOverheadComment_ += goog.debug.Trace_.now() - now;
+};
+
+
+/**
+ * Gets a stat object for a particular type. The stat object is created if it
+ * hasn't yet been.
+ * @param {string} type The type of stat.
+ * @return {goog.debug.Trace_.Stat_} The stat object.
+ * @private
+ */
+goog.debug.Trace_.prototype.getStat_ = function(type) {
+  var stat = this.stats_.get(type);
+  if (!stat) {
+    stat = /** @type {goog.debug.Trace_.Event_} */ (
+        this.statPool_.getObject());
+    stat.type = type;
+    this.stats_.set(type, stat);
+  }
+  return /** @type {goog.debug.Trace_.Stat_} */(stat);
+};
+
+
+/**
+ * Returns a formatted string for the current trace
+ * @return {string} A formatted string that shows the timings of the current
+ *     trace.
+ */
+goog.debug.Trace_.prototype.getFormattedTrace = function() {
+  return this.toString();
+};
+
+
+/**
+ * Returns a formatted string that describes the thread trace.
+ * @return {string} A formatted string.
+ * @override
+ */
+goog.debug.Trace_.prototype.toString = function() {
+  var sb = [];
+  var etime = -1;
+  var indent = [];
+  for (var i = 0; i < this.events_.length; i++) {
+    var e = this.events_[i];
+    if (e.eventType == goog.debug.Trace_.EventType.STOP) {
+      indent.pop();
+    }
+    sb.push(' ', e.toTraceString(this.startTime_, etime, indent.join('')));
+    etime = e.eventTime;
+    sb.push('\n');
+    if (e.eventType == goog.debug.Trace_.EventType.START) {
+      indent.push('|  ');
+    }
+  }
+
+  if (this.outstandingEvents_.getCount() != 0) {
+    var now = goog.debug.Trace_.now();
+
+    sb.push(' Unstopped timers:\n');
+    goog.iter.forEach(this.outstandingEvents_, function(startEvent) {
+      sb.push('  ', startEvent, ' (', now - startEvent.startTime,
+          ' ms, started at ',
+          goog.debug.Trace_.formatTime_(startEvent.startTime),
+          ')\n');
+    });
+  }
+
+  var statKeys = this.stats_.getKeys();
+  for (var i = 0; i < statKeys.length; i++) {
+    var stat = this.stats_.get(statKeys[i]);
+    if (stat.count > 1) {
+      sb.push(' TOTAL ', stat, '\n');
+    }
+  }
+
+  sb.push('Total tracers created ', this.tracerCount_, '\n',
+      'Total comments created ', this.commentCount_, '\n',
+      'Overhead start: ', this.tracerOverheadStart_, ' ms\n',
+      'Overhead end: ', this.tracerOverheadEnd_, ' ms\n',
+      'Overhead comment: ', this.tracerOverheadComment_, ' ms\n');
+
+  return sb.join('');
+};
+
+
+/**
+ * Converts 'v' to a string and pads it with up to 3 spaces for
+ * improved alignment. TODO there must be a better way
+ * @param {number} v A number.
+ * @return {string} A padded string.
+ * @private
+ */
+goog.debug.Trace_.longToPaddedString_ = function(v) {
+  v = Math.round(v);
+  // todo (pupius) - there should be a generic string in goog.string for this
+  var space = '';
+  if (v < 1000) space = ' ';
+  if (v < 100) space = '  ';
+  if (v < 10) space = '   ';
+  return space + v;
+};
+
+
+/**
+ * Return the sec.ms part of time (if time = "20:06:11.566",  "11.566
+ * @param {number} time The time in MS.
+ * @return {string} A formatted string as sec.ms'.
+ * @private
+ */
+goog.debug.Trace_.formatTime_ = function(time) {
+  time = Math.round(time);
+  var sec = (time / 1000) % 60;
+  var ms = time % 1000;
+
+  // TODO their must be a nicer way to get zero padded integers
+  return String(100 + sec).substring(1, 3) + '.' +
+         String(1000 + ms).substring(1, 4);
+};
+
+
+/**
+ * Returns the current time. Done through a wrapper function so it can be
+ * overridden by application code. Gmail has an ActiveX extension that provides
+ * higher precision timing info.
+ * @return {number} The current time in milliseconds.
+ */
+goog.debug.Trace_.now = function() {
+  return goog.now();
+};
+
+
+/**
+ * Singleton trace object
+ * @type {goog.debug.Trace_}
+ */
+goog.debug.Trace = new goog.debug.Trace_();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/autocompleteremotedata.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/autocompleteremotedata.js 
b/externs/GCL/externs/goog/demos/autocompleteremotedata.js
new file mode 100644
index 0000000..ff55f67
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/autocompleteremotedata.js
@@ -0,0 +1,18 @@
+// Copyright 2010 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/** @nocompile */
+
+['Big Table', 'Googlebot', 'Instant Indexing', 'Mustang', 'Page Rank',
+    'Proto Buffer']

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/autocompleterichremotedata.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/autocompleterichremotedata.js 
b/externs/GCL/externs/goog/demos/autocompleterichremotedata.js
new file mode 100644
index 0000000..0fad7db
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/autocompleterichremotedata.js
@@ -0,0 +1,33 @@
+// Copyright 2010 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/** @nocompile */
+
+[
+ ['apple',
+  {name: 'Fuji', url: 'http://www.google.com/images?q=fuji+apple'},
+  {name: 'Gala', url: 'http://www.google.com/images?q=gala+apple'},
+  {name: 'Golden Delicious',
+   url: 'http://www.google.com/images?q=golden delicious+apple'}
+ ],
+ ['citrus',
+  {name: 'Lemon', url: 'http://www.google.com/images?q=lemon+fruit'},
+  {name: 'Orange', url: 'http://www.google.com/images?q=orange+fruit'}
+  ],
+ ['berry',
+  {name: 'Strawberry', url: 'http://www.google.com/images?q=strawberry+fruit'},
+  {name: 'Blueberry', url: 'http://www.google.com/images?q=blueberry+fruit'},
+  {name: 'Blackberry', url: 'http://www.google.com/images?q=blackberry+fruit'}
+ ]
+]

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/css/demo.css
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/css/demo.css 
b/externs/GCL/externs/goog/demos/css/demo.css
new file mode 100644
index 0000000..6eb82e8
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/css/demo.css
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2007 The Closure Library Authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by the Apache License, Version 2.0.
+ * See the COPYING file for details.
+ */
+
+/* Author: [email protected] (Attila Bodis) */
+
+
+@import url(../../css/common.css);
+
+
+body {
+  background-color: #ffe;
+  font: normal 10pt Arial, sans-serif;
+}
+
+
+/* Misc. styles used for logging and debugging. */
+fieldset {
+  padding: 4px 8px;
+  margin-bottom: 1em;
+}
+
+fieldset legend {
+  font-weight: bold;
+  color: #036;
+}
+
+label, input {
+  vertical-align: middle;
+}
+
+.hint {
+  font-size: 90%;
+  color: #369;
+}
+
+.goog-debug-panel {
+  border: 1px solid #369;
+}
+
+.goog-debug-panel .logdiv {
+  position: relative;
+  width: 100%;
+  height: 8em;
+  overflow: scroll;
+  overflow-x: hidden;
+  overflow-y: scroll;
+}
+
+.goog-debug-panel .logdiv .logmsg {
+  font: normal 10px "Lucida Sans Typewriter", "Courier New", Courier, fixed;
+}
+
+.perf {
+  margin: 0;
+  border: 0;
+  padding: 4px;
+  font: italic 95% Arial, sans-serif;
+  color: #999;
+}
+
+#perf {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  text-align: right;
+  margin: 0;
+  border: 0;
+  padding: 4px;
+  font: italic 95% Arial, sans-serif;
+  color: #999;
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/css/emojipicker.css
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/css/emojipicker.css 
b/externs/GCL/externs/goog/demos/css/emojipicker.css
new file mode 100644
index 0000000..826d5bd
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/css/emojipicker.css
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2007 The Closure Library Authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by the Apache License, Version 2.0.
+ * See the COPYING file for details.
+ */
+
+/* Author: [email protected] (Darren Lewis) */
+
+/* Styles used in the emojipicker demo */
+.goog-ui-popupemojipicker {
+  position: absolute;
+  -moz-outline: 0;
+  outline: 0;
+  visibility: hidden;
+}
+
+.goog-palette-cell {
+  padding: 2px;
+  background: white;
+}
+
+.goog-palette-cell div {
+  vertical-align: middle;
+  text-align: center;
+  margin: auto;
+}
+
+.goog-palette-cell-wrapper {
+  width: 25px;
+  height: 25px;
+}
+
+.goog-palette-cell-hover {
+  background: lightblue;
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/css/emojisprite.css
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/css/emojisprite.css 
b/externs/GCL/externs/goog/demos/css/emojisprite.css
new file mode 100644
index 0000000..fe1a2cc
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/css/emojisprite.css
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2010 The Closure Library Authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by the Apache License, Version 2.0.
+ * See the COPYING file for details.
+ */
+
+/* This file is autogenerated. To regenerate, do:
+cd google3/javascript/closure/demos/emoji
+/home/build/static/projects/sitespeed optisprite *.gif
+
+This will generate an optimal sprite in 
/usr/local/google/tmp/bestsprite.tar.gz.
+
+Rename the optimal sprite to "sprite.png" (from sprite_XX.png), rename the css
+to "sprite.css" (from sprite_XX.css), then change all the URLs in sprite.css to
+point to sprite.png in google3/javascript/closure/demos/emoji, and cp the
+sprite.png into that directory.
+*/
+
+.SPRITE_200{background:no-repeat url(../emoji/sprite.png) -18px 
0;width:18px;height:18px}
+.SPRITE_201{background:no-repeat url(../emoji/sprite.png) 0 
-234px;width:18px;height:18px}
+.SPRITE_202{background:no-repeat url(../emoji/sprite.png) -18px 
-338px;width:18px;height:18px}
+.SPRITE_203{background:no-repeat url(../emoji/sprite.png) -36px 
0;width:18px;height:18px}
+.SPRITE_204{background:no-repeat url(../emoji/sprite.png) 0 
-305px;width:18px;height:19px}
+.SPRITE_205{background:no-repeat url(../emoji/sprite.png) -36px 
-126px;width:18px;height:18px}
+.SPRITE_206{background:no-repeat url(../emoji/sprite.png) -36px 
-36px;width:18px;height:18px}
+.SPRITE_2BC{background:no-repeat url(../emoji/sprite.png) -18px 
-144px;width:18px;height:18px}
+.SPRITE_2BD{background:no-repeat url(../emoji/sprite.png) 0 
-18px;width:18px;height:18px}
+.SPRITE_2BE{background:no-repeat url(../emoji/sprite.png) -36px 
-54px;width:18px;height:18px}
+.SPRITE_2BF{background:no-repeat url(../emoji/sprite.png) 0 
-126px;width:18px;height:18px}
+.SPRITE_2C0{background:no-repeat url(../emoji/sprite.png) -18px 
-305px;width:18px;height:18px}
+.SPRITE_2C1{background:no-repeat url(../emoji/sprite.png) 0 
-287px;width:18px;height:18px}
+.SPRITE_2C2{background:no-repeat url(../emoji/sprite.png) -18px 
-126px;width:18px;height:18px}
+.SPRITE_2C3{background:no-repeat url(../emoji/sprite.png) -36px 
-234px;width:18px;height:20px}
+.SPRITE_2C4{background:no-repeat url(../emoji/sprite.png) -36px 
-72px;width:18px;height:18px}
+.SPRITE_2C5{background:no-repeat url(../emoji/sprite.png) -54px 
-54px;width:18px;height:18px}
+.SPRITE_2C6{background:no-repeat url(../emoji/sprite.png) 0 
-72px;width:18px;height:18px}
+.SPRITE_2C7{background:no-repeat url(../emoji/sprite.png) -18px 
-180px;width:18px;height:18px}
+.SPRITE_2C8{background:no-repeat url(../emoji/sprite.png) -36px 
-198px;width:18px;height:18px}
+.SPRITE_2C9{background:no-repeat url(../emoji/sprite.png) -36px 
-287px;width:18px;height:18px}
+.SPRITE_2CB{background:no-repeat url(../emoji/sprite.png) -54px 
-252px;width:18px;height:18px}
+.SPRITE_2CC{background:no-repeat url(../emoji/sprite.png) -54px 
-288px;width:18px;height:16px}
+.SPRITE_2CD{background:no-repeat url(../emoji/sprite.png) -36px 
-162px;width:18px;height:18px}
+.SPRITE_2CE{background:no-repeat url(../emoji/sprite.png) 0 
-269px;width:18px;height:18px}
+.SPRITE_2CF{background:no-repeat url(../emoji/sprite.png) -36px 
-108px;width:18px;height:18px}
+.SPRITE_2D0{background:no-repeat url(../emoji/sprite.png) -36px 
-338px;width:18px;height:18px}
+.SPRITE_2D1{background:no-repeat url(../emoji/sprite.png) 0 
-338px;width:18px;height:18px}
+.SPRITE_2D2{background:no-repeat url(../emoji/sprite.png) -54px 
-36px;width:18px;height:16px}
+.SPRITE_2D3{background:no-repeat url(../emoji/sprite.png) -36px 
-305px;width:18px;height:18px}
+.SPRITE_2D4{background:no-repeat url(../emoji/sprite.png) -36px 
-18px;width:18px;height:18px}
+.SPRITE_2D5{background:no-repeat url(../emoji/sprite.png) -18px 
-108px;width:18px;height:18px}
+.SPRITE_2D6{background:no-repeat url(../emoji/sprite.png) -36px 
-144px;width:18px;height:18px}
+.SPRITE_2D7{background:no-repeat url(../emoji/sprite.png) 0 
-36px;width:18px;height:18px}
+.SPRITE_2D8{background:no-repeat url(../emoji/sprite.png) -54px 
-126px;width:18px;height:18px}
+.SPRITE_2D9{background:no-repeat url(../emoji/sprite.png) -18px 
-287px;width:18px;height:18px}
+.SPRITE_2DA{background:no-repeat url(../emoji/sprite.png) -54px 
-216px;width:18px;height:18px}
+.SPRITE_2DB{background:no-repeat url(../emoji/sprite.png) -36px 
-180px;width:18px;height:18px}
+.SPRITE_2DC{background:no-repeat url(../emoji/sprite.png) 0 
-54px;width:18px;height:18px}
+.SPRITE_2DD{background:no-repeat url(../emoji/sprite.png) -18px 
-72px;width:18px;height:18px}
+.SPRITE_2DE{background:no-repeat url(../emoji/sprite.png) -36px 
-90px;width:18px;height:18px}
+.SPRITE_2DF{background:no-repeat url(../emoji/sprite.png) -54px 
-108px;width:18px;height:18px}
+.SPRITE_2E0{background:no-repeat url(../emoji/sprite.png) -18px 
-198px;width:18px;height:18px}
+.SPRITE_2E1{background:no-repeat url(../emoji/sprite.png) 0 
-180px;width:18px;height:18px}
+.SPRITE_2E2{background:no-repeat url(../emoji/sprite.png) -54px 
-338px;width:18px;height:18px}
+.SPRITE_2E4{background:no-repeat url(../emoji/sprite.png) -54px 
-198px;width:18px;height:18px}
+.SPRITE_2E5{background:no-repeat url(../emoji/sprite.png) 0 
-162px;width:18px;height:18px}
+.SPRITE_2E6{background:no-repeat url(../emoji/sprite.png) -54px 
-270px;width:18px;height:18px}
+.SPRITE_2E7{background:no-repeat url(../emoji/sprite.png) 0 
-108px;width:18px;height:18px}
+.SPRITE_2E8{background:no-repeat url(../emoji/sprite.png) 0 
-198px;width:18px;height:18px}
+.SPRITE_2E9{background:no-repeat url(../emoji/sprite.png) -54px 
0;width:18px;height:18px}
+.SPRITE_2EA{background:no-repeat url(../emoji/sprite.png) -54px 
-144px;width:18px;height:18px}
+.SPRITE_2EB{background:no-repeat url(../emoji/sprite.png) -18px 
-36px;width:18px;height:18px}
+.SPRITE_2EC{background:no-repeat url(../emoji/sprite.png) -18px 
-18px;width:18px;height:18px}
+.SPRITE_2ED{background:no-repeat url(../emoji/sprite.png) -36px 
-269px;width:18px;height:18px}
+.SPRITE_2EE{background:no-repeat url(../emoji/sprite.png) -18px 
-90px;width:18px;height:18px}
+.SPRITE_2F0{background:no-repeat url(../emoji/sprite.png) 0 
0;width:18px;height:18px}
+.SPRITE_2F2{background:no-repeat url(../emoji/sprite.png) -54px 
-234px;width:18px;height:18px}
+.SPRITE_2F3{background:no-repeat url(../emoji/sprite.png) 0 
-144px;width:18px;height:18px}
+.SPRITE_2F4{background:no-repeat url(../emoji/sprite.png) 0 
-252px;width:18px;height:17px}
+.SPRITE_2F5{background:no-repeat url(../emoji/sprite.png) -54px 
-321px;width:18px;height:14px}
+.SPRITE_2F6{background:no-repeat url(../emoji/sprite.png) -36px 
-254px;width:18px;height:15px}
+.SPRITE_2F7{background:no-repeat url(../emoji/sprite.png) -18px 
-54px;width:18px;height:18px}
+.SPRITE_2F8{background:no-repeat url(../emoji/sprite.png) 0 
-216px;width:18px;height:18px}
+.SPRITE_2F9{background:no-repeat url(../emoji/sprite.png) -18px 
-234px;width:18px;height:18px}
+.SPRITE_2FA{background:no-repeat url(../emoji/sprite.png) -18px 
-216px;width:18px;height:18px}
+.SPRITE_2FB{background:no-repeat url(../emoji/sprite.png) -36px 
-216px;width:18px;height:18px}
+.SPRITE_2FC{background:no-repeat url(../emoji/sprite.png) -54px 
-162px;width:18px;height:18px}
+.SPRITE_2FD{background:no-repeat url(../emoji/sprite.png) 0 
-90px;width:18px;height:18px}
+.SPRITE_2FE{background:no-repeat url(../emoji/sprite.png) -54px 
-305px;width:18px;height:16px}
+.SPRITE_2FF{background:no-repeat url(../emoji/sprite.png) -54px 
-72px;width:18px;height:16px}
+.SPRITE_none{background:no-repeat url(../emoji/sprite.png) -54px 
-180px;width:18px;height:18px}
+.SPRITE_unknown{background:no-repeat url(../emoji/sprite.png) -36px 
-323px;width:14px;height:15px}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/deps.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/editor/deps.js 
b/externs/GCL/externs/goog/demos/editor/deps.js
new file mode 100644
index 0000000..70b0973
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/editor/deps.js
@@ -0,0 +1,21 @@
+// Copyright 2009 The Closure Library Authors.
+// All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// This file has been auto-generated by GenJsDeps, please do not edit.
+
+goog.addDependency('demos/editor/equationeditor.js', 
['goog.demos.editor.EquationEditor'], 
['goog.ui.equation.EquationEditorDialog']);
+goog.addDependency('demos/editor/helloworld.js', 
['goog.demos.editor.HelloWorld'], ['goog.dom', 'goog.dom.TagName', 
'goog.editor.Plugin']);
+goog.addDependency('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.ui.editor.AbstractDialog.Builder', 
'goog.ui.editor.AbstractDialog.EventType']);
+goog.addDependency('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.EventType']);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/helloworld.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/editor/helloworld.js 
b/externs/GCL/externs/goog/demos/editor/helloworld.js
new file mode 100644
index 0000000..4b2f0c7
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/editor/helloworld.js
@@ -0,0 +1,82 @@
+// Copyright 2008 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview A simple plugin that inserts 'Hello World!' on command. This
+ * plugin is intended to be an example of a very simple plugin for plugin
+ * developers.
+ *
+ * @author [email protected] (Gregory Kick)
+ * @see helloworld.html
+ */
+
+goog.provide('goog.demos.editor.HelloWorld');
+
+goog.require('goog.dom');
+goog.require('goog.dom.TagName');
+goog.require('goog.editor.Plugin');
+
+
+
+/**
+ * Plugin to insert 'Hello World!' into an editable field.
+ * @constructor
+ * @extends {goog.editor.Plugin}
+ * @final
+ */
+goog.demos.editor.HelloWorld = function() {
+  goog.editor.Plugin.call(this);
+};
+goog.inherits(goog.demos.editor.HelloWorld, goog.editor.Plugin);
+
+
+/** @override */
+goog.demos.editor.HelloWorld.prototype.getTrogClassId = function() {
+  return 'HelloWorld';
+};
+
+
+/**
+ * Commands implemented by this plugin.
+ * @enum {string}
+ */
+goog.demos.editor.HelloWorld.COMMAND = {
+  HELLO_WORLD: '+helloWorld'
+};
+
+
+/** @override */
+goog.demos.editor.HelloWorld.prototype.isSupportedCommand = function(
+    command) {
+  return command == goog.demos.editor.HelloWorld.COMMAND.HELLO_WORLD;
+};
+
+
+/**
+ * Executes a command. Does not fire any BEFORECHANGE, CHANGE, or
+ * SELECTIONCHANGE events (these are handled by the super class implementation
+ * of {@code execCommand}.
+ * @param {string} command Command to execute.
+ * @override
+ * @protected
+ */
+goog.demos.editor.HelloWorld.prototype.execCommandInternal = function(
+    command) {
+  var domHelper = this.getFieldObject().getEditableDomHelper();
+  var range = this.getFieldObject().getRange();
+  range.removeContents();
+  var newNode =
+      domHelper.createDom(goog.dom.TagName.SPAN, null, 'Hello World!');
+  range.insertNode(newNode, false);
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/helloworlddialog.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/editor/helloworlddialog.js 
b/externs/GCL/externs/goog/demos/editor/helloworlddialog.js
new file mode 100644
index 0000000..5ab271e
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/editor/helloworlddialog.js
@@ -0,0 +1,173 @@
+// Copyright 2008 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview An example of how to write a dialog to be opened by a plugin.
+ *
+ */
+
+goog.provide('goog.demos.editor.HelloWorldDialog');
+goog.provide('goog.demos.editor.HelloWorldDialog.OkEvent');
+
+goog.require('goog.dom.TagName');
+goog.require('goog.events.Event');
+goog.require('goog.string');
+goog.require('goog.ui.editor.AbstractDialog');
+
+
+// *** Public interface ***************************************************** 
//
+
+
+
+/**
+ * Creates a dialog to let the user enter a customized hello world message.
+ * @param {goog.dom.DomHelper} domHelper DomHelper to be used to create the
+ * dialog's dom structure.
+ * @constructor
+ * @extends {goog.ui.editor.AbstractDialog}
+ * @final
+ */
+goog.demos.editor.HelloWorldDialog = function(domHelper) {
+  goog.ui.editor.AbstractDialog.call(this, domHelper);
+};
+goog.inherits(goog.demos.editor.HelloWorldDialog,
+              goog.ui.editor.AbstractDialog);
+
+
+// *** Event **************************************************************** 
//
+
+
+
+/**
+ * OK event object for the hello world dialog.
+ * @param {string} message Customized hello world message chosen by the user.
+ * @constructor
+ * @extends {goog.events.Event}
+ * @final
+ */
+goog.demos.editor.HelloWorldDialog.OkEvent = function(message) {
+  this.message = message;
+};
+goog.inherits(goog.demos.editor.HelloWorldDialog.OkEvent, goog.events.Event);
+
+
+/**
+ * Event type.
+ * @type {goog.ui.editor.AbstractDialog.EventType}
+ * @override
+ */
+goog.demos.editor.HelloWorldDialog.OkEvent.prototype.type =
+    goog.ui.editor.AbstractDialog.EventType.OK;
+
+
+/**
+ * Customized hello world message chosen by the user.
+ * @type {string}
+ */
+goog.demos.editor.HelloWorldDialog.OkEvent.prototype.message;
+
+
+// *** Protected interface ************************************************** 
//
+
+
+/** @override */
+goog.demos.editor.HelloWorldDialog.prototype.createDialogControl = function() {
+  var builder = new goog.ui.editor.AbstractDialog.Builder(this);
+  /** @desc Title of the hello world dialog. */
+  var MSG_HELLO_WORLD_DIALOG_TITLE = goog.getMsg('Add a Hello World message');
+  builder.setTitle(MSG_HELLO_WORLD_DIALOG_TITLE).
+      setContent(this.createContent_());
+  return builder.build();
+};
+
+
+/**
+ * Creates and returns the event object to be used when dispatching the OK
+ * event to listeners, or returns null to prevent the dialog from closing.
+ * @param {goog.events.Event} e The event object dispatched by the wrapped
+ *     dialog.
+ * @return {goog.demos.editor.HelloWorldDialog.OkEvent} The event object to be
+ *     used when dispatching the OK event to listeners.
+ * @protected
+ * @override
+ */
+goog.demos.editor.HelloWorldDialog.prototype.createOkEvent = function(e) {
+  var message = this.getMessage_();
+  if (message &&
+      goog.demos.editor.HelloWorldDialog.isValidHelloWorld_(message)) {
+    return new goog.demos.editor.HelloWorldDialog.OkEvent(message);
+  } else {
+    /** @desc Error message telling the user why their message was rejected. */
+    var MSG_HELLO_WORLD_DIALOG_ERROR =
+        goog.getMsg('Your message must contain the words "hello" and 
"world".');
+    this.dom.getWindow().alert(MSG_HELLO_WORLD_DIALOG_ERROR);
+    return null; // Prevents the dialog from closing.
+  }
+};
+
+
+// *** Private implementation *********************************************** 
//
+
+
+/**
+ * Input element where the user will type their hello world message.
+ * @type {Element}
+ * @private
+ */
+goog.demos.editor.HelloWorldDialog.prototype.input_;
+
+
+/**
+ * Creates the DOM structure that makes up the dialog's content area.
+ * @return {Element} The DOM structure that makes up the dialog's content area.
+ * @private
+ */
+goog.demos.editor.HelloWorldDialog.prototype.createContent_ = function() {
+  /** @desc Sample hello world message to prepopulate the dialog with. */
+  var MSG_HELLO_WORLD_DIALOG_SAMPLE = goog.getMsg('Hello, world!');
+  this.input_ = this.dom.createDom(goog.dom.TagName.INPUT,
+      {size: 25, value: MSG_HELLO_WORLD_DIALOG_SAMPLE});
+  /** @desc Prompt telling the user to enter a hello world message. */
+  var MSG_HELLO_WORLD_DIALOG_PROMPT =
+      goog.getMsg('Enter your Hello World message');
+  return this.dom.createDom(goog.dom.TagName.DIV,
+                            null,
+                            [MSG_HELLO_WORLD_DIALOG_PROMPT, this.input_]);
+};
+
+
+/**
+ * Returns the hello world message currently typed into the dialog's input.
+ * @return {?string} The hello world message currently typed into the dialog's
+ *     input, or null if called before the input is created.
+ * @private
+ */
+goog.demos.editor.HelloWorldDialog.prototype.getMessage_ = function() {
+  return this.input_ && this.input_.value;
+};
+
+
+/**
+ * Returns whether or not the given message contains the strings "hello" and
+ * "world". Case-insensitive and order doesn't matter.
+ * @param {string} message The message to be checked.
+ * @return {boolean} Whether or not the given message contains the strings
+ *     "hello" and "world".
+ * @private
+ */
+goog.demos.editor.HelloWorldDialog.isValidHelloWorld_ = function(message) {
+  message = message.toLowerCase();
+  return goog.string.contains(message, 'hello') &&
+         goog.string.contains(message, 'world');
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js 
b/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js
new file mode 100644
index 0000000..56a65b6
--- /dev/null
+++ b/externs/GCL/externs/goog/demos/editor/helloworlddialogplugin.js
@@ -0,0 +1,117 @@
+// Copyright 2008 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview An example of how to write a dialog plugin.
+ *
+ */
+
+goog.provide('goog.demos.editor.HelloWorldDialogPlugin');
+goog.provide('goog.demos.editor.HelloWorldDialogPlugin.Command');
+
+goog.require('goog.demos.editor.HelloWorldDialog');
+goog.require('goog.dom.TagName');
+goog.require('goog.editor.plugins.AbstractDialogPlugin');
+goog.require('goog.editor.range');
+goog.require('goog.functions');
+goog.require('goog.ui.editor.AbstractDialog');
+
+
+// *** Public interface ***************************************************** 
//
+
+
+
+/**
+ * A plugin that opens the hello world dialog.
+ * @constructor
+ * @extends {goog.editor.plugins.AbstractDialogPlugin}
+ * @final
+ */
+goog.demos.editor.HelloWorldDialogPlugin = function() {
+  goog.editor.plugins.AbstractDialogPlugin.call(this,
+      goog.demos.editor.HelloWorldDialogPlugin.Command.HELLO_WORLD_DIALOG);
+};
+goog.inherits(goog.demos.editor.HelloWorldDialogPlugin,
+              goog.editor.plugins.AbstractDialogPlugin);
+
+
+/**
+ * Commands implemented by this plugin.
+ * @enum {string}
+ */
+goog.demos.editor.HelloWorldDialogPlugin.Command = {
+  HELLO_WORLD_DIALOG: 'helloWorldDialog'
+};
+
+
+/** @override */
+goog.demos.editor.HelloWorldDialogPlugin.prototype.getTrogClassId =
+    goog.functions.constant('HelloWorldDialog');
+
+
+// *** Protected interface ************************************************** 
//
+
+
+/**
+ * Creates a new instance of the dialog and registers for the relevant events.
+ * @param {goog.dom.DomHelper} dialogDomHelper The dom helper to be used to
+ *     create the dialog.
+ * @return {goog.demos.editor.HelloWorldDialog} The dialog.
+ * @override
+ * @protected
+ */
+goog.demos.editor.HelloWorldDialogPlugin.prototype.createDialog = function(
+    dialogDomHelper) {
+  var dialog = new goog.demos.editor.HelloWorldDialog(dialogDomHelper);
+  dialog.addEventListener(goog.ui.editor.AbstractDialog.EventType.OK,
+                          this.handleOk_,
+                          false,
+                          this);
+  return dialog;
+};
+
+
+// *** Private implementation *********************************************** 
//
+
+
+/**
+ * Handles the OK event from the dialog by inserting the hello world message
+ * into the field.
+ * @param {goog.demos.editor.HelloWorldDialog.OkEvent} e OK event object.
+ * @private
+ */
+goog.demos.editor.HelloWorldDialogPlugin.prototype.handleOk_ = function(e) {
+  // First restore the selection so we can manipulate the field's content
+  // according to what was selected.
+  this.restoreOriginalSelection();
+
+  // Notify listeners that the field's contents are about to change.
+  this.getFieldObject().dispatchBeforeChange();
+
+  // Now we can clear out what was previously selected (if anything).
+  var range = this.getFieldObject().getRange();
+  range.removeContents();
+  // And replace it with a span containing our hello world message.
+  var createdNode = this.getFieldDomHelper().createDom(goog.dom.TagName.SPAN,
+                                                       null,
+                                                       e.message);
+  createdNode = range.insertNode(createdNode, false);
+  // Place the cursor at the end of the new text node (false == to the right).
+  goog.editor.range.placeCursorNextTo(createdNode, false);
+
+  // Notify listeners that the field's selection has changed.
+  this.getFieldObject().dispatchSelectionChangeEvent();
+  // Notify listeners that the field's contents have changed.
+  this.getFieldObject().dispatchChange();
+};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/200.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/200.gif 
b/externs/GCL/externs/goog/demos/emoji/200.gif
new file mode 100644
index 0000000..6245f69
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/200.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/201.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/201.gif 
b/externs/GCL/externs/goog/demos/emoji/201.gif
new file mode 100644
index 0000000..b740d39
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/201.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/202.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/202.gif 
b/externs/GCL/externs/goog/demos/emoji/202.gif
new file mode 100644
index 0000000..2bc9be6
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/202.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/203.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/203.gif 
b/externs/GCL/externs/goog/demos/emoji/203.gif
new file mode 100644
index 0000000..1ce3f56
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/203.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/204.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/204.gif 
b/externs/GCL/externs/goog/demos/emoji/204.gif
new file mode 100644
index 0000000..2166ce8
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/204.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/205.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/205.gif 
b/externs/GCL/externs/goog/demos/emoji/205.gif
new file mode 100644
index 0000000..363e045
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/205.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/206.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/206.gif 
b/externs/GCL/externs/goog/demos/emoji/206.gif
new file mode 100644
index 0000000..5b95f44
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/206.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BC.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2BC.gif 
b/externs/GCL/externs/goog/demos/emoji/2BC.gif
new file mode 100644
index 0000000..aecbdc0
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BC.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BD.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2BD.gif 
b/externs/GCL/externs/goog/demos/emoji/2BD.gif
new file mode 100644
index 0000000..0b352dd
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BD.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BE.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2BE.gif 
b/externs/GCL/externs/goog/demos/emoji/2BE.gif
new file mode 100644
index 0000000..282c361
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BE.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2BF.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2BF.gif 
b/externs/GCL/externs/goog/demos/emoji/2BF.gif
new file mode 100644
index 0000000..5b88ee7
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2BF.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C0.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C0.gif 
b/externs/GCL/externs/goog/demos/emoji/2C0.gif
new file mode 100644
index 0000000..17fa1a3
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C0.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C1.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C1.gif 
b/externs/GCL/externs/goog/demos/emoji/2C1.gif
new file mode 100644
index 0000000..a1f294a
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C1.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C2.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C2.gif 
b/externs/GCL/externs/goog/demos/emoji/2C2.gif
new file mode 100644
index 0000000..01dadbe
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C2.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C3.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C3.gif 
b/externs/GCL/externs/goog/demos/emoji/2C3.gif
new file mode 100644
index 0000000..69a6126
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C3.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C4.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C4.gif 
b/externs/GCL/externs/goog/demos/emoji/2C4.gif
new file mode 100644
index 0000000..224527b
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C4.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C5.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C5.gif 
b/externs/GCL/externs/goog/demos/emoji/2C5.gif
new file mode 100644
index 0000000..2fe94b3
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C5.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C6.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C6.gif 
b/externs/GCL/externs/goog/demos/emoji/2C6.gif
new file mode 100644
index 0000000..8b1e731
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C6.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C7.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C7.gif 
b/externs/GCL/externs/goog/demos/emoji/2C7.gif
new file mode 100644
index 0000000..3d7c63a
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C7.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C8.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C8.gif 
b/externs/GCL/externs/goog/demos/emoji/2C8.gif
new file mode 100644
index 0000000..cb44d16
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C8.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2C9.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2C9.gif 
b/externs/GCL/externs/goog/demos/emoji/2C9.gif
new file mode 100644
index 0000000..69fe427
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2C9.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CA.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2CA.gif 
b/externs/GCL/externs/goog/demos/emoji/2CA.gif
new file mode 100644
index 0000000..cba4c24
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CA.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CB.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2CB.gif 
b/externs/GCL/externs/goog/demos/emoji/2CB.gif
new file mode 100644
index 0000000..c1f035e
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CB.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CC.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2CC.gif 
b/externs/GCL/externs/goog/demos/emoji/2CC.gif
new file mode 100644
index 0000000..bd757fa
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CC.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CD.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2CD.gif 
b/externs/GCL/externs/goog/demos/emoji/2CD.gif
new file mode 100644
index 0000000..f42f5a1
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CD.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CE.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2CE.gif 
b/externs/GCL/externs/goog/demos/emoji/2CE.gif
new file mode 100644
index 0000000..3f6eff3
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CE.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2CF.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2CF.gif 
b/externs/GCL/externs/goog/demos/emoji/2CF.gif
new file mode 100644
index 0000000..2f7d407
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2CF.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D0.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D0.gif 
b/externs/GCL/externs/goog/demos/emoji/2D0.gif
new file mode 100644
index 0000000..37da48e
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D0.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D1.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D1.gif 
b/externs/GCL/externs/goog/demos/emoji/2D1.gif
new file mode 100644
index 0000000..2bc951d
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D1.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D2.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D2.gif 
b/externs/GCL/externs/goog/demos/emoji/2D2.gif
new file mode 100644
index 0000000..a7c50db
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D2.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D3.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D3.gif 
b/externs/GCL/externs/goog/demos/emoji/2D3.gif
new file mode 100644
index 0000000..22ceddf
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D3.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D4.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D4.gif 
b/externs/GCL/externs/goog/demos/emoji/2D4.gif
new file mode 100644
index 0000000..8e99652
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D4.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D5.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D5.gif 
b/externs/GCL/externs/goog/demos/emoji/2D5.gif
new file mode 100644
index 0000000..4837a48
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D5.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D6.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D6.gif 
b/externs/GCL/externs/goog/demos/emoji/2D6.gif
new file mode 100644
index 0000000..bd7230f
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D6.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D7.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D7.gif 
b/externs/GCL/externs/goog/demos/emoji/2D7.gif
new file mode 100644
index 0000000..880829f
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D7.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D8.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D8.gif 
b/externs/GCL/externs/goog/demos/emoji/2D8.gif
new file mode 100644
index 0000000..7d727db
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D8.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2D9.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2D9.gif 
b/externs/GCL/externs/goog/demos/emoji/2D9.gif
new file mode 100644
index 0000000..98a0fa2
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2D9.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DA.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2DA.gif 
b/externs/GCL/externs/goog/demos/emoji/2DA.gif
new file mode 100644
index 0000000..c831816
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DA.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DB.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2DB.gif 
b/externs/GCL/externs/goog/demos/emoji/2DB.gif
new file mode 100644
index 0000000..301c931
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DB.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DC.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2DC.gif 
b/externs/GCL/externs/goog/demos/emoji/2DC.gif
new file mode 100644
index 0000000..27ab408
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DC.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DD.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2DD.gif 
b/externs/GCL/externs/goog/demos/emoji/2DD.gif
new file mode 100644
index 0000000..b5e6edf
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DD.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DE.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2DE.gif 
b/externs/GCL/externs/goog/demos/emoji/2DE.gif
new file mode 100644
index 0000000..b9a7272
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DE.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2DF.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2DF.gif 
b/externs/GCL/externs/goog/demos/emoji/2DF.gif
new file mode 100644
index 0000000..89fa186
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2DF.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E0.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E0.gif 
b/externs/GCL/externs/goog/demos/emoji/2E0.gif
new file mode 100644
index 0000000..7fd754a
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E0.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E1.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E1.gif 
b/externs/GCL/externs/goog/demos/emoji/2E1.gif
new file mode 100644
index 0000000..6926e4e
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E1.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E2.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E2.gif 
b/externs/GCL/externs/goog/demos/emoji/2E2.gif
new file mode 100644
index 0000000..1718dae
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E2.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E3.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E3.gif 
b/externs/GCL/externs/goog/demos/emoji/2E3.gif
new file mode 100644
index 0000000..4f23b2b
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E3.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E4.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E4.gif 
b/externs/GCL/externs/goog/demos/emoji/2E4.gif
new file mode 100644
index 0000000..ab2c9eb
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E4.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E5.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E5.gif 
b/externs/GCL/externs/goog/demos/emoji/2E5.gif
new file mode 100644
index 0000000..ff8f45b
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E5.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E6.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E6.gif 
b/externs/GCL/externs/goog/demos/emoji/2E6.gif
new file mode 100644
index 0000000..56e75e8
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E6.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E7.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E7.gif 
b/externs/GCL/externs/goog/demos/emoji/2E7.gif
new file mode 100644
index 0000000..157042d
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E7.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E8.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E8.gif 
b/externs/GCL/externs/goog/demos/emoji/2E8.gif
new file mode 100644
index 0000000..1eb1cc9
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E8.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2E9.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2E9.gif 
b/externs/GCL/externs/goog/demos/emoji/2E9.gif
new file mode 100644
index 0000000..5b98149
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2E9.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EA.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2EA.gif 
b/externs/GCL/externs/goog/demos/emoji/2EA.gif
new file mode 100644
index 0000000..40d60a6
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EA.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EB.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2EB.gif 
b/externs/GCL/externs/goog/demos/emoji/2EB.gif
new file mode 100644
index 0000000..8e2ca7d
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EB.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EC.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2EC.gif 
b/externs/GCL/externs/goog/demos/emoji/2EC.gif
new file mode 100644
index 0000000..884e226
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EC.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2ED.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2ED.gif 
b/externs/GCL/externs/goog/demos/emoji/2ED.gif
new file mode 100644
index 0000000..b50ba96
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2ED.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EE.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2EE.gif 
b/externs/GCL/externs/goog/demos/emoji/2EE.gif
new file mode 100644
index 0000000..a96fbd1
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EE.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2EF.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2EF.gif 
b/externs/GCL/externs/goog/demos/emoji/2EF.gif
new file mode 100644
index 0000000..13a0d2b
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2EF.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F0.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F0.gif 
b/externs/GCL/externs/goog/demos/emoji/2F0.gif
new file mode 100644
index 0000000..1538221
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F0.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F1.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F1.gif 
b/externs/GCL/externs/goog/demos/emoji/2F1.gif
new file mode 100644
index 0000000..d04c68d
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F1.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F2.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F2.gif 
b/externs/GCL/externs/goog/demos/emoji/2F2.gif
new file mode 100644
index 0000000..402dfce
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F2.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F3.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F3.gif 
b/externs/GCL/externs/goog/demos/emoji/2F3.gif
new file mode 100644
index 0000000..250271e
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F3.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F4.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F4.gif 
b/externs/GCL/externs/goog/demos/emoji/2F4.gif
new file mode 100644
index 0000000..dec31af
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F4.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F5.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F5.gif 
b/externs/GCL/externs/goog/demos/emoji/2F5.gif
new file mode 100644
index 0000000..bed6e71
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F5.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F6.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F6.gif 
b/externs/GCL/externs/goog/demos/emoji/2F6.gif
new file mode 100644
index 0000000..e9b885f
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F6.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F7.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F7.gif 
b/externs/GCL/externs/goog/demos/emoji/2F7.gif
new file mode 100644
index 0000000..5bdcb64
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F7.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F8.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F8.gif 
b/externs/GCL/externs/goog/demos/emoji/2F8.gif
new file mode 100644
index 0000000..629016b
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F8.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2F9.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2F9.gif 
b/externs/GCL/externs/goog/demos/emoji/2F9.gif
new file mode 100644
index 0000000..f8b41da
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2F9.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FA.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2FA.gif 
b/externs/GCL/externs/goog/demos/emoji/2FA.gif
new file mode 100644
index 0000000..0a4a5b3
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FA.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FB.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2FB.gif 
b/externs/GCL/externs/goog/demos/emoji/2FB.gif
new file mode 100644
index 0000000..620d898
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FB.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FC.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2FC.gif 
b/externs/GCL/externs/goog/demos/emoji/2FC.gif
new file mode 100644
index 0000000..2171097
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FC.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FD.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2FD.gif 
b/externs/GCL/externs/goog/demos/emoji/2FD.gif
new file mode 100644
index 0000000..c6bcdb4
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FD.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FE.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2FE.gif 
b/externs/GCL/externs/goog/demos/emoji/2FE.gif
new file mode 100644
index 0000000..a8888c5
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FE.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/2FF.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/2FF.gif 
b/externs/GCL/externs/goog/demos/emoji/2FF.gif
new file mode 100644
index 0000000..6022c4c
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/2FF.gif differ

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e2cad6e6/externs/GCL/externs/goog/demos/emoji/none.gif
----------------------------------------------------------------------
diff --git a/externs/GCL/externs/goog/demos/emoji/none.gif 
b/externs/GCL/externs/goog/demos/emoji/none.gif
new file mode 100644
index 0000000..8e1f90e
Binary files /dev/null and b/externs/GCL/externs/goog/demos/emoji/none.gif 
differ

Reply via email to