mirror of
https://github.com/zhigang1992/react-native-code-push.git
synced 2026-05-14 23:33:40 +08:00
1 line
2.3 MiB
1 line
2.3 MiB
{"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/prelude_dev.js":{"data":{"code":"__DEV__ = \ntrue;\n\n\n__BUNDLE_START_TIME__ = Date.now();","sourceCode":"/* eslint global-strict:0 */\n__DEV__ = true;\n\n/* global __BUNDLE_START_TIME__:true */\n__BUNDLE_START_TIME__ = Date.now();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/prelude_dev.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/require.js":{"data":{"code":"(\nfunction(global){\n\n\nif(global.require){\nreturn;}\n\n\nvar __DEV__=global.__DEV__;\n\nvar toString=Object.prototype.toString;\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar modulesMap={},\n\n\n\n\n\n\ndependencyMap={},\n\n\n\npredefinedRefCounts={},\n\n_counter=0,\n\nREQUIRE_WHEN_READY=1,\nUSED_AS_TRANSPORT=2,\n\nhop=Object.prototype.hasOwnProperty;\n\nfunction _debugUnresolvedDependencies(names){\nvar unresolved=Array.prototype.slice.call(names);\nvar visited={};\nvar ii,name,module,dependency;\n\nwhile(unresolved.length) {\nname = unresolved.shift();\nif(visited[name]){\ncontinue;}\n\nvisited[name] = true;\n\nmodule = modulesMap[name];\nif(!module || !module.waiting){\ncontinue;}\n\n\nfor(ii = 0;ii < module.dependencies.length;ii++) {\ndependency = module.dependencies[ii];\nif(!modulesMap[dependency] || modulesMap[dependency].waiting){\nunresolved.push(dependency);}}}\n\n\n\n\nfor(name in visited) if(hop.call(visited,name)){\nunresolved.push(name);}\n\n\nvar messages=[];\nfor(ii = 0;ii < unresolved.length;ii++) {\nname = unresolved[ii];\nvar message=name;\nmodule = modulesMap[name];\nif(!module){\nmessage += ' is not defined';}else \nif(!module.waiting){\nmessage += ' is ready';}else \n{\nvar unresolvedDependencies=[];\nfor(var jj=0;jj < module.dependencies.length;jj++) {\ndependency = module.dependencies[jj];\nif(!modulesMap[dependency] || modulesMap[dependency].waiting){\nunresolvedDependencies.push(dependency);}}\n\n\nmessage += ' is waiting for ' + unresolvedDependencies.join(', ');}\n\nmessages.push(message);}\n\nreturn messages.join('\\n');}\n\n\n\n\n\nfunction ModuleError(msg){\nthis.name = 'ModuleError';\nthis.message = msg;\nthis.stack = Error(msg).stack;\nthis.framesToPop = 2;}\n\nModuleError.prototype = Object.create(Error.prototype);\nModuleError.prototype.constructor = ModuleError;\n\nvar _performance=\nglobal.performance || \nglobal.msPerformance || \nglobal.webkitPerformance || {};\n\nif(!_performance.now){\n_performance = global.Date;}\n\n\nvar _now=_performance?\n_performance.now.bind(_performance):function(){return 0;};\n\nvar _factoryStackCount=0;\nvar _factoryTime=0;\nvar _totalFactories=0;\nvar _inGuard=false;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction require(id){\nvar module=modulesMap[id],dep,i,msg;\nif(module && module.exports){\n\n\nif(module.refcount-- === 1){\ndelete modulesMap[id];}\n\nreturn module.exports;}\n\nif(global.ErrorUtils && !_inGuard){\n_inGuard = true;\ntry{\nvar ret=require.apply(this,arguments);}\ncatch(e) {\nglobal.ErrorUtils.reportFatalError(e);}\n\n_inGuard = false;\nreturn ret;}\n\n\nif(!module){\nmsg = 'Requiring unknown module \"' + id + '\"';\nif(__DEV__){\nmsg += '. If you are sure the module is there, try restarting the packager.';}\n\nthrow new ModuleError(msg);}\n\n\nif(module.hasError){\nthrow new ModuleError(\n'Requiring module \"' + id + '\" which threw an exception');}\n\n\n\nif(module.waiting){\nthrow new ModuleError(\n'Requiring module \"' + id + '\" with unresolved dependencies: ' + \n_debugUnresolvedDependencies([id]));}\n\n\n\nvar exports=module.exports = {};\nvar factory=module.factory;\nif(toString.call(factory) === '[object Function]'){\nvar args=[],\ndependencies=module.dependencies,\nlength=dependencies.length,\nret;\nif(module.special & USED_AS_TRANSPORT){\nlength = Math.min(length,factory.length);}\n\ntry{\nfor(i = 0;args.length < length;i++) {\ndep = dependencies[i];\nif(!module.inlineRequires[dep]){\nargs.push(dep === 'module'?module:\ndep === 'exports'?exports:\nrequire.call(null,dep));}}\n\n\n\n++_totalFactories;\nif(_factoryStackCount++ === 0){\n_factoryTime -= _now();}\n\ntry{\nret = factory.apply(module.context || global,args);}\ncatch(e) {\nif(modulesMap.ex && modulesMap.erx){\n\n\nvar ex=require.call(null,'ex');\nvar erx=require.call(null,'erx');\nvar messageWithParams=erx(e.message);\nif(messageWithParams[0].indexOf(' from module \"%s\"') < 0){\nmessageWithParams[0] += ' from module \"%s\"';\nmessageWithParams[messageWithParams.length] = id;}\n\ne.message = ex.apply(null,messageWithParams);}\n\nthrow e;}finally \n{\nif(--_factoryStackCount === 0){\n_factoryTime += _now();}}}\n\n\ncatch(e) {\nmodule.hasError = true;\nmodule.exports = null;\nthrow e;}\n\nif(ret){\nif(__DEV__){\nif(typeof ret != 'object' && typeof ret != 'function'){\nthrow new ModuleError(\n'Factory for module \"' + id + '\" returned ' + \n'an invalid value \"' + ret + '\". ' + \n'Returned value should be either a function or an object.');}}\n\n\n\nmodule.exports = ret;}}else \n\n{\nmodule.exports = factory;}\n\n\n\n\nif(module.refcount-- === 1){\ndelete modulesMap[id];}\n\nreturn module.exports;}\n\n\nrequire.__getFactoryTime = function(){\nreturn (_factoryStackCount?_now():0) + _factoryTime;};\n\n\nrequire.__getTotalFactories = function(){\nreturn _totalFactories;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction define(id,dependencies,factory,\n_special,_context,_refCount,_inlineRequires){\nif(dependencies === undefined){\ndependencies = [];\nfactory = id;\nid = _uid();}else \nif(factory === undefined){\nfactory = dependencies;\nif(toString.call(id) === '[object Array]'){\ndependencies = id;\nid = _uid();}else \n{\ndependencies = [];}}\n\n\n\n\n\nvar canceler={cancel:_undefine.bind(this,id)};\n\nvar record=modulesMap[id];\n\n\n\n\n\n\nif(record){\nif(_refCount){\nrecord.refcount += _refCount;}\n\n\nreturn canceler;}else \nif(!dependencies && !factory && _refCount){\n\n\npredefinedRefCounts[id] = (predefinedRefCounts[id] || 0) + _refCount;\nreturn canceler;}else \n{\n\nrecord = {id:id};\nrecord.refcount = (predefinedRefCounts[id] || 0) + (_refCount || 0);\ndelete predefinedRefCounts[id];}\n\n\nif(__DEV__){\nif(\n!factory || \ntypeof factory != 'object' && typeof factory != 'function' && \ntypeof factory != 'string'){\nthrow new ModuleError(\n'Invalid factory \"' + factory + '\" for module \"' + id + '\". ' + \n'Factory should be either a function or an object.');}\n\n\n\nif(toString.call(dependencies) !== '[object Array]'){\nthrow new ModuleError(\n'Invalid dependencies for module \"' + id + '\". ' + \n'Dependencies must be passed as an array.');}}\n\n\n\n\nrecord.factory = factory;\nrecord.dependencies = dependencies;\nrecord.context = _context;\nrecord.special = _special;\nrecord.inlineRequires = _inlineRequires || {};\nrecord.waitingMap = {};\nrecord.waiting = 0;\nrecord.hasError = false;\nmodulesMap[id] = record;\n_initDependencies(id);\n\nreturn canceler;}\n\n\nfunction _undefine(id){\nif(!modulesMap[id]){\nreturn;}\n\n\nvar module=modulesMap[id];\ndelete modulesMap[id];\n\nfor(var dep in module.waitingMap) {\nif(module.waitingMap[dep]){\ndelete dependencyMap[dep][id];}}\n\n\n\nfor(var ii=0;ii < module.dependencies.length;ii++) {\ndep = module.dependencies[ii];\nif(modulesMap[dep]){\nif(modulesMap[dep].refcount-- === 1){\n_undefine(dep);}}else \n\nif(predefinedRefCounts[dep]){\npredefinedRefCounts[dep]--;}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requireLazy(dependencies,factory,context){\nreturn define(\ndependencies,\nfactory,\nundefined,\nREQUIRE_WHEN_READY,\ncontext,\n1);}\n\n\n\nfunction _uid(){\nreturn '__mod__' + _counter++;}\n\n\nfunction _addDependency(module,dep){\n\nif(!module.waitingMap[dep] && module.id !== dep){\nmodule.waiting++;\nmodule.waitingMap[dep] = 1;\ndependencyMap[dep] || (dependencyMap[dep] = {});\ndependencyMap[dep][module.id] = 1;}}\n\n\n\nfunction _initDependencies(id){\nvar modulesToRequire=[];\nvar module=modulesMap[id];\nvar dep,i,subdep;\n\n\nfor(i = 0;i < module.dependencies.length;i++) {\ndep = module.dependencies[i];\nif(!modulesMap[dep]){\n_addDependency(module,dep);}else \nif(modulesMap[dep].waiting){\nfor(subdep in modulesMap[dep].waitingMap) {\nif(modulesMap[dep].waitingMap[subdep]){\n_addDependency(module,subdep);}}}}\n\n\n\n\nif(module.waiting === 0 && module.special & REQUIRE_WHEN_READY){\nmodulesToRequire.push(id);}\n\n\n\nif(dependencyMap[id]){\nvar deps=dependencyMap[id];\nvar submodule;\ndependencyMap[id] = undefined;\nfor(dep in deps) {\nsubmodule = modulesMap[dep];\n\n\nfor(subdep in module.waitingMap) {\nif(module.waitingMap[subdep]){\n_addDependency(submodule,subdep);}}\n\n\n\nif(submodule.waitingMap[id]){\nsubmodule.waitingMap[id] = undefined;\nsubmodule.waiting--;}\n\nif(submodule.waiting === 0 && \nsubmodule.special & REQUIRE_WHEN_READY){\nmodulesToRequire.push(dep);}}}\n\n\n\n\n\nfor(i = 0;i < modulesToRequire.length;i++) {\nrequire.call(null,modulesToRequire[i]);}}\n\n\n\nfunction _register(id,exports){\nvar module=modulesMap[id] = {id:id};\nmodule.exports = exports;\nmodule.refcount = 0;}\n\n\n\n\n_register('module',0);\n_register('exports',0);\n\n_register('global',global);\n_register('require',require);\n_register('requireDynamic',require);\n_register('requireLazy',requireLazy);\n\nglobal.require = require;\nglobal.requireDynamic = require;\nglobal.requireLazy = requireLazy;\n\nrequire.__debug = {\nmodules:modulesMap,\ndeps:dependencyMap,\nprintDependencyInfo:function(){\nif(!global.console){\nreturn;}\n\nvar names=Object.keys(require.__debug.deps);\nglobal.console.log(_debugUnresolvedDependencies(names));}};\n\n\n\n\n\n\n\n\n\nglobal.__d = function(id,deps,factory,_special,_inlineRequires){\nvar defaultDeps=['global','require','requireDynamic','requireLazy',\n'module','exports'];\ndefine(id,defaultDeps.concat(deps),factory,_special || USED_AS_TRANSPORT,\nnull,null,_inlineRequires);};})(\n\n\nthis);","sourceCode":"/* eslint global-strict:0,eqeqeq:0,no-bitwise:0,no-undef:0 */\n(function(global) {\n\n // avoid redefining require()\n if (global.require) {\n return;\n }\n\n var __DEV__ = global.__DEV__;\n\n var toString = Object.prototype.toString;\n\n /**\n * module index: {\n * mod1: {\n * exports: { ... },\n * id: 'mod1',\n * dependencies: ['mod1', 'mod2'],\n * factory: function() { ... },\n * waitingMap: { mod1: 1, mod3: 1, mod4: 1 },\n * waiting: 2\n * }\n * }\n */\n var modulesMap = {},\n /**\n * inverse index: {\n * mod1: [modules, waiting for mod1],\n * mod2: [modules, waiting for mod2]\n * }\n */\n dependencyMap = {},\n /**\n * modules whose reference counts are set out of order\n */\n predefinedRefCounts = {},\n\n _counter = 0,\n\n REQUIRE_WHEN_READY = 1,\n USED_AS_TRANSPORT = 2,\n\n hop = Object.prototype.hasOwnProperty;\n\n function _debugUnresolvedDependencies(names) {\n var unresolved = Array.prototype.slice.call(names);\n var visited = {};\n var ii, name, module, dependency;\n\n while (unresolved.length) {\n name = unresolved.shift();\n if (visited[name]) {\n continue;\n }\n visited[name] = true;\n\n module = modulesMap[name];\n if (!module || !module.waiting) {\n continue;\n }\n\n for (ii = 0; ii < module.dependencies.length; ii++) {\n dependency = module.dependencies[ii];\n if (!modulesMap[dependency] || modulesMap[dependency].waiting) {\n unresolved.push(dependency);\n }\n }\n }\n\n for (name in visited) if (hop.call(visited, name)) {\n unresolved.push(name);\n }\n\n var messages = [];\n for (ii = 0; ii < unresolved.length; ii++) {\n name = unresolved[ii];\n var message = name;\n module = modulesMap[name];\n if (!module) {\n message += ' is not defined';\n } else if (!module.waiting) {\n message += ' is ready';\n } else {\n var unresolvedDependencies = [];\n for (var jj = 0; jj < module.dependencies.length; jj++) {\n dependency = module.dependencies[jj];\n if (!modulesMap[dependency] || modulesMap[dependency].waiting) {\n unresolvedDependencies.push(dependency);\n }\n }\n message += ' is waiting for ' + unresolvedDependencies.join(', ');\n }\n messages.push(message);\n }\n return messages.join('\\n');\n }\n\n /**\n * This is mainly for logging in ModuleErrorLogger.\n */\n function ModuleError(msg) {\n this.name = 'ModuleError';\n this.message = msg;\n this.stack = Error(msg).stack;\n this.framesToPop = 2;\n }\n ModuleError.prototype = Object.create(Error.prototype);\n ModuleError.prototype.constructor = ModuleError;\n\n var _performance =\n global.performance ||\n global.msPerformance ||\n global.webkitPerformance || {};\n\n if (!_performance.now) {\n _performance = global.Date;\n }\n\n var _now = _performance ?\n _performance.now.bind(_performance) : function(){ return 0; };\n\n var _factoryStackCount = 0;\n var _factoryTime = 0;\n var _totalFactories = 0;\n var _inGuard = false;\n\n /**\n * The require function conforming to CommonJS spec:\n * http://wiki.commonjs.org/wiki/Modules/1.1.1\n *\n * To define a CommonJS-compliant module add the providesModule\n * Haste header to your file instead of @provides. Your file is going\n * to be executed in a separate context. Every variable/function you\n * define will be local (private) to that module. To export local members\n * use \"exports\" variable or return the exported value at the end of your\n * file. Your code will have access to the \"module\" object.\n * The \"module\" object will have an \"id\" property that is the id of your\n * current module. \"module\" object will also have \"exports\" property that\n * is the same as \"exports\" variable passed into your module context.\n * You can require other modules using their ids.\n *\n * Haste will automatically pick dependencies from require() calls. So\n * you don't have to manually specify @requires in your header.\n *\n * You cannot require() modules from non-CommonJS files. Write a legacy stub\n * (@providesLegacy) and use @requires instead.\n *\n * @example\n *\n * / **\n * * @providesModule math\n * * /\n * exports.add = function() {\n * var sum = 0, i = 0, args = arguments, l = args.length;\n * while (i < l) {\n * sum += args[i++];\n * }\n * return sum;\n * };\n *\n * / **\n * * @providesModule increment\n * * /\n * var add = require('math').add;\n * return function(val) {\n * return add(val, 1);\n * };\n *\n * / **\n * * @providesModule program\n * * /\n * var inc = require('increment');\n * var a = 1;\n * inc(a); // 2\n *\n * module.id == \"program\";\n *\n *\n * @param {String} id\n * @throws when module is not loaded or not ready to be required\n */\n function require(id) {\n var module = modulesMap[id], dep, i, msg;\n if (module && module.exports) {\n // If ref count is 1, this was the last call, so undefine the module.\n // The ref count can be null or undefined, but those are never === 1.\n if (module.refcount-- === 1) {\n delete modulesMap[id];\n }\n return module.exports;\n }\n if (global.ErrorUtils && !_inGuard) {\n _inGuard = true;\n try {\n var ret = require.apply(this, arguments);\n } catch(e) {\n global.ErrorUtils.reportFatalError(e);\n }\n _inGuard = false;\n return ret;\n }\n\n if (!module) {\n msg = 'Requiring unknown module \"' + id + '\"';\n if (__DEV__) {\n msg += '. If you are sure the module is there, try restarting the packager.';\n }\n throw new ModuleError(msg);\n }\n\n if (module.hasError) {\n throw new ModuleError(\n 'Requiring module \"' + id + '\" which threw an exception'\n );\n }\n\n if (module.waiting) {\n throw new ModuleError(\n 'Requiring module \"' + id + '\" with unresolved dependencies: ' +\n _debugUnresolvedDependencies([id])\n );\n }\n\n var exports = module.exports = {};\n var factory = module.factory;\n if (toString.call(factory) === '[object Function]') {\n var args = [],\n dependencies = module.dependencies,\n length = dependencies.length,\n ret;\n if (module.special & USED_AS_TRANSPORT) {\n length = Math.min(length, factory.length);\n }\n try {\n for (i = 0; args.length < length; i++) {\n dep = dependencies[i];\n if (!module.inlineRequires[dep]) {\n args.push(dep === 'module' ? module :\n (dep === 'exports' ? exports :\n require.call(null, dep)));\n }\n }\n\n ++_totalFactories;\n if (_factoryStackCount++ === 0) {\n _factoryTime -= _now();\n }\n try {\n ret = factory.apply(module.context || global, args);\n } catch (e) {\n if (modulesMap.ex && modulesMap.erx) {\n // when ErrorUtils is ready, ex and erx are ready. otherwise, we\n // don't append module id to the error message but still throw it\n var ex = require.call(null, 'ex');\n var erx = require.call(null, 'erx');\n var messageWithParams = erx(e.message);\n if (messageWithParams[0].indexOf(' from module \"%s\"') < 0) {\n messageWithParams[0] += ' from module \"%s\"';\n messageWithParams[messageWithParams.length] = id;\n }\n e.message = ex.apply(null, messageWithParams);\n }\n throw e;\n } finally {\n if (--_factoryStackCount === 0) {\n _factoryTime += _now();\n }\n }\n } catch (e) {\n module.hasError = true;\n module.exports = null;\n throw e;\n }\n if (ret) {\n if (__DEV__) {\n if (typeof ret != 'object' && typeof ret != 'function') {\n throw new ModuleError(\n 'Factory for module \"' + id + '\" returned ' +\n 'an invalid value \"' + ret + '\". ' +\n 'Returned value should be either a function or an object.'\n );\n }\n }\n module.exports = ret;\n }\n } else {\n module.exports = factory;\n }\n\n // If ref count is 1, this was the last call, so undefine the module.\n // The ref count can be null or undefined, but those are never === 1.\n if (module.refcount-- === 1) {\n delete modulesMap[id];\n }\n return module.exports;\n }\n\n require.__getFactoryTime = function() {\n return (_factoryStackCount ? _now() : 0) + _factoryTime;\n };\n\n require.__getTotalFactories = function() {\n return _totalFactories;\n };\n\n /**\n * The define function conforming to CommonJS proposal:\n * http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition\n *\n * define() allows you to explicitly state dependencies of your module\n * in javascript. It's most useful in non-CommonJS files.\n *\n * define() is used internally by haste as a transport for CommonJS\n * modules. So there's no need to use define() if you use providesModule\n *\n * @example\n * / **\n * * @provides alpha\n * * /\n *\n * // Sets up the module with ID of \"alpha\", that uses require,\n * // exports and the module with ID of \"beta\":\n * define(\"alpha\", [\"require\", \"exports\", \"beta\"],\n * function (require, exports, beta) {\n * exports.verb = function() {\n * return beta.verb();\n * //Or:\n * return require(\"beta\").verb();\n * }\n * });\n *\n * / **\n * * @provides alpha\n * * /\n * // An anonymous module could be defined (module id derived from filename)\n * // that returns an object literal:\n *\n * define([\"alpha\"], function (alpha) {\n * return {\n * verb: function(){\n * return alpha.verb() + 2;\n * }\n * };\n * });\n *\n * / **\n * * @provides alpha\n * * /\n * // A dependency-free module can define a direct object literal:\n *\n * define({\n * add: function(x, y){\n * return x + y;\n * }\n * });\n *\n * @param {String} id optional\n * @param {Array} dependencies optional\n * @param {Object|Function} factory\n */\n function define(id, dependencies, factory,\n _special, _context, _refCount, _inlineRequires) {\n if (dependencies === undefined) {\n dependencies = [];\n factory = id;\n id = _uid();\n } else if (factory === undefined) {\n factory = dependencies;\n if (toString.call(id) === '[object Array]') {\n dependencies = id;\n id = _uid();\n } else {\n dependencies = [];\n }\n }\n\n // Non-standard: we allow modules to be undefined. This is designed for\n // temporary modules.\n var canceler = { cancel: _undefine.bind(this, id) };\n\n var record = modulesMap[id];\n\n // Nonstandard hack: we call define with null deps and factory, but a\n // non-null reference count (e.g. define('name', null, null, 0, null, 4))\n // when this module is defined elsewhere and we just need to update the\n // reference count. We use this hack to avoid having to expose another\n // global function to increment ref counts.\n if (record) {\n if (_refCount) {\n record.refcount += _refCount;\n }\n // Calling define() on a pre-existing module does not redefine it\n return canceler;\n } else if (!dependencies && !factory && _refCount) {\n // If this module hasn't been defined yet, store the ref count. We'll use\n // it when the module is defined later.\n predefinedRefCounts[id] = (predefinedRefCounts[id] || 0) + _refCount;\n return canceler;\n } else {\n // Defining a new module\n record = { id: id };\n record.refcount = (predefinedRefCounts[id] || 0) + (_refCount || 0);\n delete predefinedRefCounts[id];\n }\n\n if (__DEV__) {\n if (\n !factory ||\n (typeof factory != 'object' && typeof factory != 'function' &&\n typeof factory != 'string')) {\n throw new ModuleError(\n 'Invalid factory \"' + factory + '\" for module \"' + id + '\". ' +\n 'Factory should be either a function or an object.'\n );\n }\n\n if (toString.call(dependencies) !== '[object Array]') {\n throw new ModuleError(\n 'Invalid dependencies for module \"' + id + '\". ' +\n 'Dependencies must be passed as an array.'\n );\n }\n }\n\n record.factory = factory;\n record.dependencies = dependencies;\n record.context = _context;\n record.special = _special;\n record.inlineRequires = _inlineRequires || {};\n record.waitingMap = {};\n record.waiting = 0;\n record.hasError = false;\n modulesMap[id] = record;\n _initDependencies(id);\n\n return canceler;\n }\n\n function _undefine(id) {\n if (!modulesMap[id]) {\n return;\n }\n\n var module = modulesMap[id];\n delete modulesMap[id];\n\n for (var dep in module.waitingMap) {\n if (module.waitingMap[dep]) {\n delete dependencyMap[dep][id];\n }\n }\n\n for (var ii = 0; ii < module.dependencies.length; ii++) {\n dep = module.dependencies[ii];\n if (modulesMap[dep]) {\n if (modulesMap[dep].refcount-- === 1) {\n _undefine(dep);\n }\n } else if (predefinedRefCounts[dep]) {\n predefinedRefCounts[dep]--;\n }\n // Subtle: we won't account for this one fewer reference if we don't have\n // the dependency's definition or reference count yet.\n }\n }\n\n /**\n * Special version of define that executes the factory as soon as all\n * dependencies are met.\n *\n * define() does just that, defines a module. Module's factory will not be\n * called until required by other module. This makes sense for most of our\n * library modules: we do not want to execute the factory unless it's being\n * used by someone.\n *\n * On the other hand there are modules, that you can call \"entrance points\".\n * You want to run the \"factory\" method for them as soon as all dependencies\n * are met.\n *\n * @example\n *\n * define('BaseClass', [], function() { return ... });\n * // ^^ factory for BaseClass was just stored in modulesMap\n *\n * define('SubClass', ['BaseClass'], function() { ... });\n * // SubClass module is marked as ready (waiting == 0), factory is just\n * // stored\n *\n * define('OtherClass, ['BaseClass'], function() { ... });\n * // OtherClass module is marked as ready (waiting == 0), factory is just\n * // stored\n *\n * requireLazy(['SubClass', 'ChatConfig'],\n * function() { ... });\n * // ChatRunner is waiting for ChatConfig to come\n *\n * define('ChatConfig', [], { foo: 'bar' });\n * // at this point ChatRunner is marked as ready, and its factory\n * // executed + all dependent factories are executed too: BaseClass,\n * // SubClass, ChatConfig notice that OtherClass's factory won't be\n * // executed unless explicitly required by someone\n *\n * @param {Array} dependencies\n * @param {Object|Function} factory\n */\n function requireLazy(dependencies, factory, context) {\n return define(\n dependencies,\n factory,\n undefined,\n REQUIRE_WHEN_READY,\n context,\n 1\n );\n }\n\n function _uid() {\n return '__mod__' + _counter++;\n }\n\n function _addDependency(module, dep) {\n // do not add duplicate dependencies and circ deps\n if (!module.waitingMap[dep] && module.id !== dep) {\n module.waiting++;\n module.waitingMap[dep] = 1;\n dependencyMap[dep] || (dependencyMap[dep] = {});\n dependencyMap[dep][module.id] = 1;\n }\n }\n\n function _initDependencies(id) {\n var modulesToRequire = [];\n var module = modulesMap[id];\n var dep, i, subdep;\n\n // initialize id's waitingMap\n for (i = 0; i < module.dependencies.length; i++) {\n dep = module.dependencies[i];\n if (!modulesMap[dep]) {\n _addDependency(module, dep);\n } else if (modulesMap[dep].waiting) {\n for (subdep in modulesMap[dep].waitingMap) {\n if (modulesMap[dep].waitingMap[subdep]) {\n _addDependency(module, subdep);\n }\n }\n }\n }\n if (module.waiting === 0 && module.special & REQUIRE_WHEN_READY) {\n modulesToRequire.push(id);\n }\n\n // update modules depending on id\n if (dependencyMap[id]) {\n var deps = dependencyMap[id];\n var submodule;\n dependencyMap[id] = undefined;\n for (dep in deps) {\n submodule = modulesMap[dep];\n\n // add all deps of id\n for (subdep in module.waitingMap) {\n if (module.waitingMap[subdep]) {\n _addDependency(submodule, subdep);\n }\n }\n // remove id itself\n if (submodule.waitingMap[id]) {\n submodule.waitingMap[id] = undefined;\n submodule.waiting--;\n }\n if (submodule.waiting === 0 &&\n submodule.special & REQUIRE_WHEN_READY) {\n modulesToRequire.push(dep);\n }\n }\n }\n\n // run everything that's ready\n for (i = 0; i < modulesToRequire.length; i++) {\n require.call(null, modulesToRequire[i]);\n }\n }\n\n function _register(id, exports) {\n var module = modulesMap[id] = { id: id };\n module.exports = exports;\n module.refcount = 0;\n }\n\n // pseudo name used in common-require\n // see require() function for more info\n _register('module', 0);\n _register('exports', 0);\n\n _register('global', global);\n _register('require', require);\n _register('requireDynamic', require);\n _register('requireLazy', requireLazy);\n\n global.require = require;\n global.requireDynamic = require;\n global.requireLazy = requireLazy;\n\n require.__debug = {\n modules: modulesMap,\n deps: dependencyMap,\n printDependencyInfo: function() {\n if (!global.console) {\n return;\n }\n var names = Object.keys(require.__debug.deps);\n global.console.log(_debugUnresolvedDependencies(names));\n }\n };\n\n /**\n * All @providesModule files are wrapped by this function by makehaste. It\n * is a convenience function around define() that prepends a bunch of required\n * modules (global, require, module, etc) so that we don't have to spit that\n * out for every module which would be a lot of extra bytes.\n */\n global.__d = function(id, deps, factory, _special, _inlineRequires) {\n var defaultDeps = ['global', 'require', 'requireDynamic', 'requireLazy',\n 'module', 'exports'];\n define(id, defaultDeps.concat(deps), factory, _special || USED_AS_TRANSPORT,\n null, null, _inlineRequires);\n };\n\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/require.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/polyfills.js":{"data":{"code":"Object.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nassign = function(target,sources){\nif(__DEV__){\nif(target == null){\nthrow new TypeError('Object.assign target cannot be null or undefined');}\n\nif(typeof target !== 'object' && typeof target !== 'function'){\nthrow new TypeError(\n'In this environment the target of assign MUST be an object.' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\n\nfor(var nextIndex=1;nextIndex < arguments.length;nextIndex++) {\nvar nextSource=arguments[nextIndex];\nif(nextSource == null){\ncontinue;}\n\n\nif(__DEV__){\nif(typeof nextSource !== 'object' && \ntypeof nextSource !== 'function'){\nthrow new TypeError(\n'In this environment the target of assign MUST be an object.' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\n\n\n\n\n\nfor(var key in nextSource) {\nif(__DEV__){\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\nif(!hasOwnProperty.call(nextSource,key)){\nthrow new TypeError(\n'One of the sources to assign has an enumerable key on the ' + \n'prototype chain. This is an edge case that we do not support. ' + \n'This error is a performance optimization and not spec compliant.');}}\n\n\n\ntarget[key] = nextSource[key];}}\n\n\n\nreturn target;};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n *\n * @provides Object.es6\n * @polyfill\n */\n\n// WARNING: This is an optimized version that fails on hasOwnProperty checks\n// and non objects. It's not spec-compliant. It's a perf optimization.\n/* eslint global-strict:0 */\nObject.assign = function(target, sources) {\n if (__DEV__) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n if (typeof target !== 'object' && typeof target !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object.' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n if (__DEV__) {\n if (typeof nextSource !== 'object' &&\n typeof nextSource !== 'function') {\n throw new TypeError(\n 'In this environment the target of assign MUST be an object.' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects.\n\n for (var key in nextSource) {\n if (__DEV__) {\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n if (!hasOwnProperty.call(nextSource, key)) {\n throw new TypeError(\n 'One of the sources to assign has an enumerable key on the ' +\n 'prototype chain. This is an edge case that we do not support. ' +\n 'This error is a performance optimization and not spec compliant.'\n );\n }\n }\n target[key] = nextSource[key];\n }\n }\n\n return target;\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/polyfills.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/console.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(global){\n'use strict';\n\nvar inspect=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction inspect(obj,opts){\nvar ctx={\nseen:[],\nstylize:stylizeNoColor};\n\nreturn formatValue(ctx,obj,opts.depth);}\n\n\nfunction stylizeNoColor(str,styleType){\nreturn str;}\n\n\nfunction arrayToHash(array){\nvar hash={};\n\narray.forEach(function(val,idx){\nhash[val] = true;});\n\n\nreturn hash;}\n\n\n\nfunction formatValue(ctx,value,recurseTimes){\n\nvar primitive=formatPrimitive(ctx,value);\nif(primitive){\nreturn primitive;}\n\n\n\nvar keys=Object.keys(value);\nvar visibleKeys=arrayToHash(keys);\n\n\n\nif(isError(value) && (\nkeys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)){\nreturn formatError(value);}\n\n\n\nif(keys.length === 0){\nif(isFunction(value)){\nvar name=value.name?': ' + value.name:'';\nreturn ctx.stylize('[Function' + name + ']','special');}\n\nif(isRegExp(value)){\nreturn ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}\n\nif(isDate(value)){\nreturn ctx.stylize(Date.prototype.toString.call(value),'date');}\n\nif(isError(value)){\nreturn formatError(value);}}\n\n\n\nvar base='',array=false,braces=['{','}'];\n\n\nif(isArray(value)){\narray = true;\nbraces = ['[',']'];}\n\n\n\nif(isFunction(value)){\nvar n=value.name?': ' + value.name:'';\nbase = ' [Function' + n + ']';}\n\n\n\nif(isRegExp(value)){\nbase = ' ' + RegExp.prototype.toString.call(value);}\n\n\n\nif(isDate(value)){\nbase = ' ' + Date.prototype.toUTCString.call(value);}\n\n\n\nif(isError(value)){\nbase = ' ' + formatError(value);}\n\n\nif(keys.length === 0 && (!array || value.length == 0)){\nreturn braces[0] + base + braces[1];}\n\n\nif(recurseTimes < 0){\nif(isRegExp(value)){\nreturn ctx.stylize(RegExp.prototype.toString.call(value),'regexp');}else \n{\nreturn ctx.stylize('[Object]','special');}}\n\n\n\nctx.seen.push(value);\n\nvar output;\nif(array){\noutput = formatArray(ctx,value,recurseTimes,visibleKeys,keys);}else \n{\noutput = keys.map(function(key){\nreturn formatProperty(ctx,value,recurseTimes,visibleKeys,key,array);});}\n\n\n\nctx.seen.pop();\n\nreturn reduceToSingleString(output,base,braces);}\n\n\n\nfunction formatPrimitive(ctx,value){\nif(isUndefined(value))\nreturn ctx.stylize('undefined','undefined');\nif(isString(value)){\nvar simple='\\'' + JSON.stringify(value).replace(/^\"|\"$/g,'').\nreplace(/'/g,\"\\\\'\").\nreplace(/\\\\\"/g,'\"') + '\\'';\nreturn ctx.stylize(simple,'string');}\n\nif(isNumber(value))\nreturn ctx.stylize('' + value,'number');\nif(isBoolean(value))\nreturn ctx.stylize('' + value,'boolean');\n\nif(isNull(value))\nreturn ctx.stylize('null','null');}\n\n\n\nfunction formatError(value){\nreturn '[' + Error.prototype.toString.call(value) + ']';}\n\n\n\nfunction formatArray(ctx,value,recurseTimes,visibleKeys,keys){\nvar output=[];\nfor(var i=0,l=value.length;i < l;++i) {\nif(hasOwnProperty(value,String(i))){\noutput.push(formatProperty(ctx,value,recurseTimes,visibleKeys,\nString(i),true));}else \n{\noutput.push('');}}\n\n\nkeys.forEach(function(key){\nif(!key.match(/^\\d+$/)){\noutput.push(formatProperty(ctx,value,recurseTimes,visibleKeys,\nkey,true));}});\n\n\nreturn output;}\n\n\n\nfunction formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){\nvar name,str,desc;\ndesc = Object.getOwnPropertyDescriptor(value,key) || {value:value[key]};\nif(desc.get){\nif(desc.set){\nstr = ctx.stylize('[Getter/Setter]','special');}else \n{\nstr = ctx.stylize('[Getter]','special');}}else \n\n{\nif(desc.set){\nstr = ctx.stylize('[Setter]','special');}}\n\n\nif(!hasOwnProperty(visibleKeys,key)){\nname = '[' + key + ']';}\n\nif(!str){\nif(ctx.seen.indexOf(desc.value) < 0){\nif(isNull(recurseTimes)){\nstr = formatValue(ctx,desc.value,null);}else \n{\nstr = formatValue(ctx,desc.value,recurseTimes - 1);}\n\nif(str.indexOf('\\n') > -1){\nif(array){\nstr = str.split('\\n').map(function(line){\nreturn ' ' + line;}).\njoin('\\n').substr(2);}else \n{\nstr = '\\n' + str.split('\\n').map(function(line){\nreturn ' ' + line;}).\njoin('\\n');}}}else \n\n\n{\nstr = ctx.stylize('[Circular]','special');}}\n\n\nif(isUndefined(name)){\nif(array && key.match(/^\\d+$/)){\nreturn str;}\n\nname = JSON.stringify('' + key);\nif(name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)){\nname = name.substr(1,name.length - 2);\nname = ctx.stylize(name,'name');}else \n{\nname = name.replace(/'/g,\"\\\\'\").\nreplace(/\\\\\"/g,'\"').\nreplace(/(^\"|\"$)/g,\"'\");\nname = ctx.stylize(name,'string');}}\n\n\n\nreturn name + ': ' + str;}\n\n\n\nfunction reduceToSingleString(output,base,braces){\nvar numLinesEst=0;\nvar length=output.reduce(function(prev,cur){\nnumLinesEst++;\nif(cur.indexOf('\\n') >= 0)numLinesEst++;\nreturn prev + cur.replace(/\\u001b\\[\\d\\d?m/g,'').length + 1;},\n0);\n\nif(length > 60){\nreturn braces[0] + (\nbase === ''?'':base + '\\n ') + \n' ' + \noutput.join(',\\n ') + \n' ' + \nbraces[1];}\n\n\nreturn braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];}\n\n\n\n\n\nfunction isArray(ar){\nreturn Array.isArray(ar);}\n\n\nfunction isBoolean(arg){\nreturn typeof arg === 'boolean';}\n\n\nfunction isNull(arg){\nreturn arg === null;}\n\n\nfunction isNullOrUndefined(arg){\nreturn arg == null;}\n\n\nfunction isNumber(arg){\nreturn typeof arg === 'number';}\n\n\nfunction isString(arg){\nreturn typeof arg === 'string';}\n\n\nfunction isSymbol(arg){\nreturn typeof arg === 'symbol';}\n\n\nfunction isUndefined(arg){\nreturn arg === void 0;}\n\n\nfunction isRegExp(re){\nreturn isObject(re) && objectToString(re) === '[object RegExp]';}\n\n\nfunction isObject(arg){\nreturn typeof arg === 'object' && arg !== null;}\n\n\nfunction isDate(d){\nreturn isObject(d) && objectToString(d) === '[object Date]';}\n\n\nfunction isError(e){\nreturn isObject(e) && (\nobjectToString(e) === '[object Error]' || e instanceof Error);}\n\n\nfunction isFunction(arg){\nreturn typeof arg === 'function';}\n\n\nfunction isPrimitive(arg){\nreturn arg === null || \ntypeof arg === 'boolean' || \ntypeof arg === 'number' || \ntypeof arg === 'string' || \ntypeof arg === 'symbol' || \ntypeof arg === 'undefined';}\n\n\nfunction objectToString(o){\nreturn Object.prototype.toString.call(o);}\n\n\nfunction hasOwnProperty(obj,prop){\nreturn Object.prototype.hasOwnProperty.call(obj,prop);}\n\n\nreturn inspect;})();\n\n\n\nvar OBJECT_COLUMN_NAME='(index)';\nvar LOG_LEVELS={\ntrace:0,\nlog:1,\ninfo:2,\nwarn:3,\nerror:4};\n\n\nfunction setupConsole(global){\nif(!global.nativeLoggingHook){\nreturn;}\n\n\nfunction getNativeLogFunction(level){\nreturn function(){\nvar str=Array.prototype.map.call(arguments,function(arg){\nreturn inspect(arg,{depth:10});}).\njoin(', ');\nglobal.nativeLoggingHook(str,level);};}\n\n\n\nvar repeat=function(element,n){\nreturn Array.apply(null,Array(n)).map(function(){return element;});};\n\n\nfunction consoleTablePolyfill(rows){\n\nif(!Array.isArray(rows)){\nvar data=rows;\nrows = [];\nfor(var key in data) {\nif(data.hasOwnProperty(key)){\nvar row=data[key];\nrow[OBJECT_COLUMN_NAME] = key;\nrows.push(row);}}}\n\n\n\nif(rows.length === 0){\nglobal.nativeLoggingHook('',LOG_LEVELS.log);\nreturn;}\n\n\nvar columns=Object.keys(rows[0]).sort();\nvar stringRows=[];\nvar columnWidths=[];\n\n\n\ncolumns.forEach(function(k,i){\ncolumnWidths[i] = k.length;\nfor(var j=0;j < rows.length;j++) {\nvar cellStr=rows[j][k].toString();\nstringRows[j] = stringRows[j] || [];\nstringRows[j][i] = cellStr;\ncolumnWidths[i] = Math.max(columnWidths[i],cellStr.length);}});\n\n\n\n\n\nvar joinRow=function(row,space){\nvar cells=row.map(function(cell,i){\nvar extraSpaces=repeat(' ',columnWidths[i] - cell.length).join('');\nreturn cell + extraSpaces;});\n\nspace = space || ' ';\nreturn cells.join(space + '|' + space);};\n\n\nvar separators=columnWidths.map(function(columnWidth){\nreturn repeat('-',columnWidth).join('');});\n\nvar separatorRow=joinRow(separators,'-');\nvar header=joinRow(columns);\nvar table=[header,separatorRow];\n\nfor(var i=0;i < rows.length;i++) {\ntable.push(joinRow(stringRows[i]));}\n\n\n\n\n\n\nglobal.nativeLoggingHook('\\n' + table.join('\\n'),LOG_LEVELS.log);}\n\n\nglobal.console = {\nerror:getNativeLogFunction(LOG_LEVELS.error),\ninfo:getNativeLogFunction(LOG_LEVELS.info),\nlog:getNativeLogFunction(LOG_LEVELS.log),\nwarn:getNativeLogFunction(LOG_LEVELS.warn),\ntrace:getNativeLogFunction(LOG_LEVELS.trace),\ntable:consoleTablePolyfill};}\n\n\n\n\nif(typeof module !== 'undefined'){\nmodule.exports = setupConsole;}else \n{\nsetupConsole(global);}})(\n\n\nthis);","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This pipes all of our console logging functions to native logging so that\n * JavaScript errors in required modules show up in Xcode via NSLog.\n *\n * @provides console\n * @polyfill\n * @nolint\n */\n\n(function(global) {\n 'use strict';\n\n var inspect = (function() {\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n //\n // https://github.com/joyent/node/blob/master/lib/util.js\n\n function inspect(obj, opts) {\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n return formatValue(ctx, obj, opts.depth);\n }\n\n function stylizeNoColor(str, styleType) {\n return str;\n }\n\n function arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n }\n\n\n function formatValue(ctx, value, recurseTimes) {\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n }\n\n\n function formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n }\n\n\n function formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n }\n\n\n function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n }\n\n\n function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n }\n\n\n function reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n }\n\n\n // NOTE: These type checking functions intentionally don't use `instanceof`\n // because it is fragile and can be easily faked with `Object.create()`.\n function isArray(ar) {\n return Array.isArray(ar);\n }\n\n function isBoolean(arg) {\n return typeof arg === 'boolean';\n }\n\n function isNull(arg) {\n return arg === null;\n }\n\n function isNullOrUndefined(arg) {\n return arg == null;\n }\n\n function isNumber(arg) {\n return typeof arg === 'number';\n }\n\n function isString(arg) {\n return typeof arg === 'string';\n }\n\n function isSymbol(arg) {\n return typeof arg === 'symbol';\n }\n\n function isUndefined(arg) {\n return arg === void 0;\n }\n\n function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n }\n\n function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n }\n\n function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n }\n\n function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n }\n\n function isFunction(arg) {\n return typeof arg === 'function';\n }\n\n function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n }\n\n function objectToString(o) {\n return Object.prototype.toString.call(o);\n }\n\n function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n }\n\n return inspect;\n })();\n\n\n var OBJECT_COLUMN_NAME = '(index)';\n var LOG_LEVELS = {\n trace: 0,\n log: 1,\n info: 2,\n warn: 3,\n error: 4\n };\n\n function setupConsole(global) {\n if (!global.nativeLoggingHook) {\n return;\n }\n\n function getNativeLogFunction(level) {\n return function() {\n var str = Array.prototype.map.call(arguments, function(arg) {\n return inspect(arg, {depth: 10});\n }).join(', ');\n global.nativeLoggingHook(str, level);\n };\n }\n\n var repeat = function(element, n) {\n return Array.apply(null, Array(n)).map(function() { return element; });\n };\n\n function consoleTablePolyfill(rows) {\n // convert object -> array\n if (!Array.isArray(rows)) {\n var data = rows;\n rows = [];\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n var row = data[key];\n row[OBJECT_COLUMN_NAME] = key;\n rows.push(row);\n }\n }\n }\n if (rows.length === 0) {\n global.nativeLoggingHook('', LOG_LEVELS.log);\n return;\n }\n\n var columns = Object.keys(rows[0]).sort();\n var stringRows = [];\n var columnWidths = [];\n\n // Convert each cell to a string. Also\n // figure out max cell width for each column\n columns.forEach(function(k, i) {\n columnWidths[i] = k.length;\n for (var j = 0; j < rows.length; j++) {\n var cellStr = rows[j][k].toString();\n stringRows[j] = stringRows[j] || [];\n stringRows[j][i] = cellStr;\n columnWidths[i] = Math.max(columnWidths[i], cellStr.length);\n }\n });\n\n // Join all elements in the row into a single string with | separators\n // (appends extra spaces to each cell to make separators | alligned)\n var joinRow = function(row, space) {\n var cells = row.map(function(cell, i) {\n var extraSpaces = repeat(' ', columnWidths[i] - cell.length).join('');\n return cell + extraSpaces;\n });\n space = space || ' ';\n return cells.join(space + '|' + space);\n };\n\n var separators = columnWidths.map(function(columnWidth) {\n return repeat('-', columnWidth).join('');\n });\n var separatorRow = joinRow(separators, '-');\n var header = joinRow(columns);\n var table = [header, separatorRow];\n\n for (var i = 0; i < rows.length; i++) {\n table.push(joinRow(stringRows[i]));\n }\n\n // Notice extra empty line at the beginning.\n // Native logging hook adds \"RCTLog >\" at the front of every\n // logged string, which would shift the header and screw up\n // the table\n global.nativeLoggingHook('\\n' + table.join('\\n'), LOG_LEVELS.log);\n }\n\n global.console = {\n error: getNativeLogFunction(LOG_LEVELS.error),\n info: getNativeLogFunction(LOG_LEVELS.info),\n log: getNativeLogFunction(LOG_LEVELS.log),\n warn: getNativeLogFunction(LOG_LEVELS.warn),\n trace: getNativeLogFunction(LOG_LEVELS.trace),\n table: consoleTablePolyfill\n };\n\n }\n\n if (typeof module !== 'undefined') {\n module.exports = setupConsole;\n } else {\n setupConsole(global);\n }\n\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/console.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/error-guard.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(global){\nvar ErrorUtils={\n_inGuard:0,\n_globalHandler:null,\nsetGlobalHandler:function(fun){\nErrorUtils._globalHandler = fun;},\n\nreportError:function(error){\nErrorUtils._globalHandler && ErrorUtils._globalHandler(error);},\n\nreportFatalError:function(error){\nErrorUtils._globalHandler && ErrorUtils._globalHandler(error,true);},\n\napplyWithGuard:function(fun,context,args){\ntry{\nErrorUtils._inGuard++;\nreturn fun.apply(context,args);}\ncatch(e) {\nErrorUtils.reportError(e);}finally \n{\nErrorUtils._inGuard--;}},\n\n\napplyWithGuardIfNeeded:function(fun,context,args){\nif(ErrorUtils.inGuard()){\nreturn fun.apply(context,args);}else \n{\nErrorUtils.applyWithGuard(fun,context,args);}},\n\n\ninGuard:function(){\nreturn ErrorUtils._inGuard;},\n\nguard:function(fun,name,context){\nif(typeof fun !== 'function'){\nconsole.warn('A function must be passed to ErrorUtils.guard, got ',fun);\nreturn null;}\n\nname = name || fun.name || '<generated guard>';\nfunction guarded(){\nreturn (\nErrorUtils.applyWithGuard(\nfun,\ncontext || this,\narguments,\nnull,\nname));}\n\n\n\n\nreturn guarded;}};\n\n\nglobal.ErrorUtils = ErrorUtils;\n\n\n\n\n\nfunction setupErrorGuard(){\nvar onError=function(e){\nglobal.console.error(\n'Error: ' + \n'\\n stack: ' + e.stack + \n'\\n line: ' + e.line + \n'\\n message: ' + e.message,\ne);};\n\n\nglobal.ErrorUtils.setGlobalHandler(onError);}\n\n\nsetupErrorGuard();})(\nthis);","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n */\n/* eslint global-strict:0 */\n(function(global) {\n var ErrorUtils = {\n _inGuard: 0,\n _globalHandler: null,\n setGlobalHandler: function(fun) {\n ErrorUtils._globalHandler = fun;\n },\n reportError: function(error) {\n ErrorUtils._globalHandler && ErrorUtils._globalHandler(error);\n },\n reportFatalError: function(error) {\n ErrorUtils._globalHandler && ErrorUtils._globalHandler(error, true);\n },\n applyWithGuard: function(fun, context, args) {\n try {\n ErrorUtils._inGuard++;\n return fun.apply(context, args);\n } catch (e) {\n ErrorUtils.reportError(e);\n } finally {\n ErrorUtils._inGuard--;\n }\n },\n applyWithGuardIfNeeded: function(fun, context, args) {\n if (ErrorUtils.inGuard()) {\n return fun.apply(context, args);\n } else {\n ErrorUtils.applyWithGuard(fun, context, args);\n }\n },\n inGuard: function() {\n return ErrorUtils._inGuard;\n },\n guard: function(fun, name, context) {\n if (typeof fun !== 'function') {\n console.warn('A function must be passed to ErrorUtils.guard, got ', fun);\n return null;\n }\n name = name || fun.name || '<generated guard>';\n function guarded() {\n return (\n ErrorUtils.applyWithGuard(\n fun,\n context || this,\n arguments,\n null,\n name\n )\n );\n }\n\n return guarded;\n }\n };\n global.ErrorUtils = ErrorUtils;\n\n /**\n * This is the error handler that is called when we encounter an exception\n * when loading a module.\n */\n function setupErrorGuard() {\n var onError = function(e) {\n global.console.error(\n 'Error: ' +\n '\\n stack: ' + e.stack +\n '\\n line: ' + e.line +\n '\\n message: ' + e.message,\n e\n );\n };\n global.ErrorUtils.setGlobalHandler(onError);\n }\n\n setupErrorGuard();\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/error-guard.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/String.prototype.es6.js":{"data":{"code":"if(\n\n\n\n\n\n\n\n\n\n\n\n!String.prototype.startsWith){\nString.prototype.startsWith = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:0;\nvar start=Math.min(Math.max(pos,0),string.length);\nreturn string.indexOf(String(search),pos) === start;};}\n\n\n\nif(!String.prototype.endsWith){\nString.prototype.endsWith = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar stringLength=string.length;\nvar searchString=String(search);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:stringLength;\nvar end=Math.min(Math.max(pos,0),stringLength);\nvar start=end - searchString.length;\nif(start < 0){\nreturn false;}\n\nreturn string.lastIndexOf(searchString,start) === start;};}\n\n\n\nif(!String.prototype.contains){\nString.prototype.contains = function(search){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\nvar pos=arguments.length > 1?\nNumber(arguments[1]) || 0:0;\nreturn string.indexOf(String(search),pos) !== -1;};}\n\n\n\nif(!String.prototype.repeat){\nString.prototype.repeat = function(count){\n'use strict';\nif(this == null){\nthrow TypeError();}\n\nvar string=String(this);\ncount = Number(count) || 0;\nif(count < 0 || count === Infinity){\nthrow RangeError();}\n\nif(count === 1){\nreturn string;}\n\nvar result='';\nwhile(count) {\nif(count & 1){\nresult += string;}\n\nif(count >>= 1){\nstring += string;}}\n\n\nreturn result;};}","sourceCode":"/**\n * @provides String.prototype.es6\n * @polyfill\n */\n\n/*eslint global-strict:0, no-extend-native:0, no-bitwise:0 */\n/*jshint bitwise:false*/\n\n/*\n * NOTE: We use (Number(x) || 0) to replace NaN values with zero.\n */\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : 0;\n var start = Math.min(Math.max(pos, 0), string.length);\n return string.indexOf(String(search), pos) === start;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var stringLength = string.length;\n var searchString = String(search);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : stringLength;\n var end = Math.min(Math.max(pos, 0), stringLength);\n var start = end - searchString.length;\n if (start < 0) {\n return false;\n }\n return string.lastIndexOf(searchString, start) === start;\n };\n}\n\nif (!String.prototype.contains) {\n String.prototype.contains = function(search) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var pos = arguments.length > 1 ?\n (Number(arguments[1]) || 0) : 0;\n return string.indexOf(String(search), pos) !== -1;\n };\n}\n\nif (!String.prototype.repeat) {\n String.prototype.repeat = function(count) {\n 'use strict';\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n count = Number(count) || 0;\n if (count < 0 || count === Infinity) {\n throw RangeError();\n }\n if (count === 1) {\n return string;\n }\n var result = '';\n while (count) {\n if (count & 1) {\n result += string;\n }\n if ((count >>= 1)) {\n string += string;\n }\n }\n return result;\n };\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/String.prototype.es6.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/Array.prototype.es6.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\nfunction(undefined){\n\nfunction findIndex(predicate,context){\nif(this == null){\nthrow new TypeError(\n'Array.prototype.findIndex called on null or undefined');}\n\n\nif(typeof predicate !== 'function'){\nthrow new TypeError('predicate must be a function');}\n\nvar list=Object(this);\nvar length=list.length >>> 0;\nfor(var i=0;i < length;i++) {\nif(predicate.call(context,list[i],i,list)){\nreturn i;}}\n\n\nreturn -1;}\n\n\nif(!Array.prototype.findIndex){\nObject.defineProperty(Array.prototype,'findIndex',{\nenumerable:false,\nwritable:true,\nconfigurable:true,\nvalue:findIndex});}\n\n\n\n\nif(!Array.prototype.find){\nObject.defineProperty(Array.prototype,'find',{\nenumerable:false,\nwritable:true,\nconfigurable:true,\nvalue:function(predicate,context){\nif(this == null){\nthrow new TypeError(\n'Array.prototype.find called on null or undefined');}\n\n\nvar index=findIndex.call(this,predicate,context);\nreturn index === -1?undefined:this[index];}});}})();","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @provides Array.prototype.es6\n * @polyfill\n */\n\n/*eslint-disable */\n/*jslint bitwise: true */\n\n(function(undefined) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\n function findIndex(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.findIndex called on null or undefined'\n );\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n for (var i = 0; i < length; i++) {\n if (predicate.call(context, list[i], i, list)) {\n return i;\n }\n }\n return -1;\n }\n\n if (!Array.prototype.findIndex) {\n Object.defineProperty(Array.prototype, 'findIndex', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: findIndex\n });\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n if (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, 'find', {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function(predicate, context) {\n if (this == null) {\n throw new TypeError(\n 'Array.prototype.find called on null or undefined'\n );\n }\n var index = findIndex.call(this, predicate, context);\n return index === -1 ? undefined : this[index];\n }\n });\n }\n})();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/packager/react-packager/src/DependencyResolver/polyfills/Array.prototype.es6.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/JavaScriptAppEngine/polyfills/document.js":{"data":{"code":"(\nfunction(GLOBAL){\n\n\n\n\n\n\n\nfunction getInvalidGlobalUseError(name){\nreturn new Error(\n'You are trying to render the global ' + name + ' variable as a ' + \n'React element. You probably forgot to require ' + name + '.');}\n\n\nGLOBAL.Text = {\nget defaultProps(){\nthrow getInvalidGlobalUseError('Text');}};\n\n\nGLOBAL.Image = {\nget defaultProps(){\nthrow getInvalidGlobalUseError('Image');}};\n\n\n\nif(GLOBAL.document){\nGLOBAL.document.createElement = null;}\n\n\n\n\nGLOBAL.MutationObserver = undefined;})(\nthis);","sourceCode":"/* eslint global-strict: 0 */\n(function(GLOBAL) {\n /**\n * The document must be shimmed before anything else that might define the\n * `ExecutionEnvironment` module (which checks for `document.createElement`).\n */\n\n // The browser defines Text and Image globals by default. If you forget to\n // require them, then the error message is very confusing.\n function getInvalidGlobalUseError(name) {\n return new Error(\n 'You are trying to render the global ' + name + ' variable as a ' +\n 'React element. You probably forgot to require ' + name + '.'\n );\n }\n GLOBAL.Text = {\n get defaultProps() {\n throw getInvalidGlobalUseError('Text');\n }\n };\n GLOBAL.Image = {\n get defaultProps() {\n throw getInvalidGlobalUseError('Image');\n }\n };\n // Force `ExecutionEnvironment.canUseDOM` to be false.\n if (GLOBAL.document) {\n GLOBAL.document.createElement = null;\n }\n\n // There is no DOM so MutationObserver doesn't make sense. It is used\n // as feature detection in Bluebird Promise implementation\n GLOBAL.MutationObserver = undefined;\n})(this);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/JavaScriptAppEngine/polyfills/document.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/react-native/react-native.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNative=Object.assign(Object.create(require('React')),{\n\nActivityIndicatorIOS:require('ActivityIndicatorIOS'),\nDatePickerIOS:require('DatePickerIOS'),\nImage:require('Image'),\nListView:require('ListView'),\nMapView:require('MapView'),\nNavigator:require('Navigator'),\nNavigatorIOS:require('NavigatorIOS'),\nPickerIOS:require('PickerIOS'),\nProgressViewIOS:require('ProgressViewIOS'),\nScrollView:require('ScrollView'),\nSegmentedControlIOS:require('SegmentedControlIOS'),\nSliderIOS:require('SliderIOS'),\nSwitchIOS:require('SwitchIOS'),\nTabBarIOS:require('TabBarIOS'),\nText:require('Text'),\nTextInput:require('TextInput'),\nTouchableHighlight:require('TouchableHighlight'),\nTouchableOpacity:require('TouchableOpacity'),\nTouchableWithoutFeedback:require('TouchableWithoutFeedback'),\nView:require('View'),\nWebView:require('WebView'),\n\n\nActionSheetIOS:require('ActionSheetIOS'),\nAdSupportIOS:require('AdSupportIOS'),\nAlertIOS:require('AlertIOS'),\nAnimated:require('Animated'),\nAppRegistry:require('AppRegistry'),\nAppStateIOS:require('AppStateIOS'),\nAsyncStorage:require('AsyncStorage'),\nCameraRoll:require('CameraRoll'),\nDimensions:require('Dimensions'),\nEasing:require('Easing'),\nImagePickerIOS:require('ImagePickerIOS'),\nInteractionManager:require('InteractionManager'),\nLayoutAnimation:require('LayoutAnimation'),\nLinkingIOS:require('LinkingIOS'),\nNetInfo:require('NetInfo'),\nPanResponder:require('PanResponder'),\nPixelRatio:require('PixelRatio'),\nPushNotificationIOS:require('PushNotificationIOS'),\nSettings:require('Settings'),\nStatusBarIOS:require('StatusBarIOS'),\nStyleSheet:require('StyleSheet'),\nVibrationIOS:require('VibrationIOS'),\n\n\nDeviceEventEmitter:require('RCTDeviceEventEmitter'),\nNativeAppEventEmitter:require('RCTNativeAppEventEmitter'),\nNativeModules:require('NativeModules'),\nPlatform:require('Platform'),\nrequireNativeComponent:require('requireNativeComponent'),\n\n\nEdgeInsetsPropType:require('EdgeInsetsPropType'),\nPointPropType:require('PointPropType'),\n\naddons:{\nLinkedStateMixin:require('LinkedStateMixin'),\nPerf:undefined,\nPureRenderMixin:require('ReactComponentWithPureRenderMixin'),\nTestModule:require('NativeModules').TestModule,\nTestUtils:undefined,\nbatchedUpdates:require('ReactUpdates').batchedUpdates,\ncloneWithProps:require('cloneWithProps'),\ncreateFragment:require('ReactFragment').create,\nupdate:require('update')}});\n\n\n\nif(__DEV__){\nReactNative.addons.Perf = require('ReactDefaultPerf');\nReactNative.addons.TestUtils = require('ReactTestUtils');}\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n'use strict';\n\n// Export React, plus some native additions.\n//\n// The use of Object.create/assign is to work around a Flow bug (#6560135).\n// Once that is fixed, change this back to\n//\n// var ReactNative = {...require('React'), /* additions */}\n//\nvar ReactNative = Object.assign(Object.create(require('React')), {\n // Components\n ActivityIndicatorIOS: require('ActivityIndicatorIOS'),\n DatePickerIOS: require('DatePickerIOS'),\n Image: require('Image'),\n ListView: require('ListView'),\n MapView: require('MapView'),\n Navigator: require('Navigator'),\n NavigatorIOS: require('NavigatorIOS'),\n PickerIOS: require('PickerIOS'),\n ProgressViewIOS: require('ProgressViewIOS'),\n ScrollView: require('ScrollView'),\n SegmentedControlIOS: require('SegmentedControlIOS'),\n SliderIOS: require('SliderIOS'),\n SwitchIOS: require('SwitchIOS'),\n TabBarIOS: require('TabBarIOS'),\n Text: require('Text'),\n TextInput: require('TextInput'),\n TouchableHighlight: require('TouchableHighlight'),\n TouchableOpacity: require('TouchableOpacity'),\n TouchableWithoutFeedback: require('TouchableWithoutFeedback'),\n View: require('View'),\n WebView: require('WebView'),\n\n // APIs\n ActionSheetIOS: require('ActionSheetIOS'),\n AdSupportIOS: require('AdSupportIOS'),\n AlertIOS: require('AlertIOS'),\n Animated: require('Animated'),\n AppRegistry: require('AppRegistry'),\n AppStateIOS: require('AppStateIOS'),\n AsyncStorage: require('AsyncStorage'),\n CameraRoll: require('CameraRoll'),\n Dimensions: require('Dimensions'),\n Easing: require('Easing'),\n ImagePickerIOS: require('ImagePickerIOS'),\n InteractionManager: require('InteractionManager'),\n LayoutAnimation: require('LayoutAnimation'),\n LinkingIOS: require('LinkingIOS'),\n NetInfo: require('NetInfo'),\n PanResponder: require('PanResponder'),\n PixelRatio: require('PixelRatio'),\n PushNotificationIOS: require('PushNotificationIOS'),\n Settings: require('Settings'),\n StatusBarIOS: require('StatusBarIOS'),\n StyleSheet: require('StyleSheet'),\n VibrationIOS: require('VibrationIOS'),\n\n // Plugins\n DeviceEventEmitter: require('RCTDeviceEventEmitter'),\n NativeAppEventEmitter: require('RCTNativeAppEventEmitter'),\n NativeModules: require('NativeModules'),\n Platform: require('Platform'),\n requireNativeComponent: require('requireNativeComponent'),\n\n // Prop Types\n EdgeInsetsPropType: require('EdgeInsetsPropType'),\n PointPropType: require('PointPropType'),\n\n addons: {\n LinkedStateMixin: require('LinkedStateMixin'),\n Perf: undefined,\n PureRenderMixin: require('ReactComponentWithPureRenderMixin'),\n TestModule: require('NativeModules').TestModule,\n TestUtils: undefined,\n batchedUpdates: require('ReactUpdates').batchedUpdates,\n cloneWithProps: require('cloneWithProps'),\n createFragment: require('ReactFragment').create,\n update: require('update'),\n },\n});\n\nif (__DEV__) {\n ReactNative.addons.Perf = require('ReactDefaultPerf');\n ReactNative.addons.TestUtils = require('ReactTestUtils');\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/react-native/react-native.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/React.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = require('ReactNative');","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule React\n * @flow\n */\n'use strict';\n\nmodule.exports = require('ReactNative');\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/React.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNative.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactChildren=require('ReactChildren');\nvar ReactClass=require('ReactClass');\nvar ReactComponent=require('ReactComponent');\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactNativeDefaultInjection=require('ReactNativeDefaultInjection');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactPropTypes=require('ReactPropTypes');\n\nvar deprecated=require('deprecated');\nvar findNodeHandle=require('findNodeHandle');\nvar invariant=require('invariant');\nvar onlyChild=require('onlyChild');\n\nReactNativeDefaultInjection.inject();\n\nvar createElement=ReactElement.createElement;\nvar createFactory=ReactElement.createFactory;\nvar cloneElement=ReactElement.cloneElement;\n\nif(__DEV__){\ncreateElement = ReactElementValidator.createElement;\ncreateFactory = ReactElementValidator.createFactory;\ncloneElement = ReactElementValidator.cloneElement;}\n\n\nvar resolveDefaultProps=function(element){\n\nvar defaultProps=element.type.defaultProps;\nvar props=element.props;\nfor(var propName in defaultProps) {\nif(props[propName] === undefined){\nprops[propName] = defaultProps[propName];}}};\n\n\n\n\n\nvar augmentElement=function(element){\nif(__DEV__){\ninvariant(\nfalse,\n'This optimized path should never be used in DEV mode because ' + \n'it does not provide validation. Check your JSX transform.');}\n\n\nelement._owner = ReactCurrentOwner.current;\nelement._context = ReactContext.current;\nif(element.type.defaultProps){\nresolveDefaultProps(element);}\n\nreturn element;};\n\n\nvar render=function(\nelement,\nmountInto,\ncallback)\n{\nreturn ReactNativeMount.renderComponent(element,mountInto,callback);};\n\n\nvar ReactNative={\nhasReactNativeInitialized:false,\nChildren:{\nmap:ReactChildren.map,\nforEach:ReactChildren.forEach,\ncount:ReactChildren.count,\nonly:onlyChild},\n\nComponent:ReactComponent,\nPropTypes:ReactPropTypes,\ncreateClass:ReactClass.createClass,\ncreateElement:createElement,\ncreateFactory:createFactory,\ncloneElement:cloneElement,\n_augmentElement:augmentElement,\nfindNodeHandle:findNodeHandle,\nrender:render,\nunmountComponentAtNode:ReactNativeMount.unmountComponentAtNode,\n\n\n__spread:Object.assign,\n\nunmountComponentAtNodeAndRemoveContainer:ReactNativeMount.unmountComponentAtNodeAndRemoveContainer,\nisValidClass:ReactElement.isValidFactory,\nisValidElement:ReactElement.isValidElement,\n\n\nrenderComponent:deprecated(\n'React',\n'renderComponent',\n'render',\nthis,\nrender),\n\nisValidComponent:deprecated(\n'React',\n'isValidComponent',\n'isValidElement',\nthis,\nReactElement.isValidElement)};\n\n\n\n\n\n\nif(\ntypeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && \ntypeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function'){\n__REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\nCurrentOwner:ReactCurrentOwner,\nInstanceHandles:ReactInstanceHandles,\nMount:ReactNativeMount,\nReconciler:require('ReactReconciler'),\nTextComponent:require('ReactNativeTextComponent')});}\n\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNative\n * @flow\n */\n'use strict';\n\nvar ReactChildren = require('ReactChildren');\nvar ReactClass = require('ReactClass');\nvar ReactComponent = require('ReactComponent');\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactNativeDefaultInjection = require('ReactNativeDefaultInjection');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactPropTypes = require('ReactPropTypes');\n\nvar deprecated = require('deprecated');\nvar findNodeHandle = require('findNodeHandle');\nvar invariant = require('invariant');\nvar onlyChild = require('onlyChild');\n\nReactNativeDefaultInjection.inject();\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (__DEV__) {\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar resolveDefaultProps = function(element) {\n // Could be optimized, but not currently in heavy use.\n var defaultProps = element.type.defaultProps;\n var props = element.props;\n for (var propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n};\n\n// Experimental optimized element creation\nvar augmentElement = function(element: ReactElement) {\n if (__DEV__) {\n invariant(\n false,\n 'This optimized path should never be used in DEV mode because ' +\n 'it does not provide validation. Check your JSX transform.'\n );\n }\n element._owner = ReactCurrentOwner.current;\n element._context = ReactContext.current;\n if (element.type.defaultProps) {\n resolveDefaultProps(element);\n }\n return element;\n};\n\nvar render = function(\n element: ReactElement,\n mountInto: number,\n callback?: ?(() => void)\n): ?ReactComponent {\n return ReactNativeMount.renderComponent(element, mountInto, callback);\n};\n\nvar ReactNative = {\n hasReactNativeInitialized: false,\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n only: onlyChild\n },\n Component: ReactComponent,\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createElement: createElement,\n createFactory: createFactory,\n cloneElement: cloneElement,\n _augmentElement: augmentElement,\n findNodeHandle: findNodeHandle,\n render: render,\n unmountComponentAtNode: ReactNativeMount.unmountComponentAtNode,\n\n // Hook for JSX spread, don't use this for anything else.\n __spread: Object.assign,\n\n unmountComponentAtNodeAndRemoveContainer: ReactNativeMount.unmountComponentAtNodeAndRemoveContainer,\n isValidClass: ReactElement.isValidFactory,\n isValidElement: ReactElement.isValidElement,\n\n // Deprecations (remove for 0.13)\n renderComponent: deprecated(\n 'React',\n 'renderComponent',\n 'render',\n this,\n render\n ),\n isValidComponent: deprecated(\n 'React',\n 'isValidComponent',\n 'isValidElement',\n this,\n ReactElement.isValidElement\n )\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n CurrentOwner: ReactCurrentOwner,\n InstanceHandles: ReactInstanceHandles,\n Mount: ReactNativeMount,\n Reconciler: require('ReactReconciler'),\n TextComponent: require('ReactNativeTextComponent'),\n });\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNative.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\nvar ReactFragment=require('ReactFragment');\n\nvar traverseAllChildren=require('traverseAllChildren');\nvar warning=require('warning');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\nvar threeArgumentPooler=PooledClass.threeArgumentPooler;\n\n\n\n\n\n\n\n\n\nfunction ForEachBookKeeping(forEachFunction,forEachContext){\nthis.forEachFunction = forEachFunction;\nthis.forEachContext = forEachContext;}\n\nPooledClass.addPoolingTo(ForEachBookKeeping,twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext,child,name,i){\nvar forEachBookKeeping=traverseContext;\nforEachBookKeeping.forEachFunction.call(\nforEachBookKeeping.forEachContext,child,i);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction forEachChildren(children,forEachFunc,forEachContext){\nif(children == null){\nreturn children;}\n\n\nvar traverseContext=\nForEachBookKeeping.getPooled(forEachFunc,forEachContext);\ntraverseAllChildren(children,forEachSingleChild,traverseContext);\nForEachBookKeeping.release(traverseContext);}\n\n\n\n\n\n\n\n\n\n\n\nfunction MapBookKeeping(mapResult,mapFunction,mapContext){\nthis.mapResult = mapResult;\nthis.mapFunction = mapFunction;\nthis.mapContext = mapContext;}\n\nPooledClass.addPoolingTo(MapBookKeeping,threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext,child,name,i){\nvar mapBookKeeping=traverseContext;\nvar mapResult=mapBookKeeping.mapResult;\n\nvar keyUnique=!mapResult.hasOwnProperty(name);\nif(__DEV__){\nwarning(\nkeyUnique,\n'ReactChildren.map(...): Encountered two children with the same key, ' + \n'`%s`. Child keys must be unique; when two children share a key, only ' + \n'the first child will be used.',\nname);}\n\n\n\nif(keyUnique){\nvar mappedChild=\nmapBookKeeping.mapFunction.call(mapBookKeeping.mapContext,child,i);\nmapResult[name] = mappedChild;}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mapChildren(children,func,context){\nif(children == null){\nreturn children;}\n\n\nvar mapResult={};\nvar traverseContext=MapBookKeeping.getPooled(mapResult,func,context);\ntraverseAllChildren(children,mapSingleChildIntoContext,traverseContext);\nMapBookKeeping.release(traverseContext);\nreturn ReactFragment.create(mapResult);}\n\n\nfunction forEachSingleChildDummy(traverseContext,child,name,i){\nreturn null;}\n\n\n\n\n\n\n\n\n\nfunction countChildren(children,context){\nreturn traverseAllChildren(children,forEachSingleChildDummy,null);}\n\n\nvar ReactChildren={\nforEach:forEachChildren,\nmap:mapChildren,\ncount:countChildren};\n\n\nmodule.exports = ReactChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildren\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\nvar ReactFragment = require('ReactFragment');\n\nvar traverseAllChildren = require('traverseAllChildren');\nvar warning = require('warning');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar threeArgumentPooler = PooledClass.threeArgumentPooler;\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.forEachFunction = forEachFunction;\n this.forEachContext = forEachContext;\n}\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(traverseContext, child, name, i) {\n var forEachBookKeeping = traverseContext;\n forEachBookKeeping.forEachFunction.call(\n forEachBookKeeping.forEachContext, child, i);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc.\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n\n var traverseContext =\n ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, mapFunction, mapContext) {\n this.mapResult = mapResult;\n this.mapFunction = mapFunction;\n this.mapContext = mapContext;\n}\nPooledClass.addPoolingTo(MapBookKeeping, threeArgumentPooler);\n\nfunction mapSingleChildIntoContext(traverseContext, child, name, i) {\n var mapBookKeeping = traverseContext;\n var mapResult = mapBookKeeping.mapResult;\n\n var keyUnique = !mapResult.hasOwnProperty(name);\n if (__DEV__) {\n warning(\n keyUnique,\n 'ReactChildren.map(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n );\n }\n\n if (keyUnique) {\n var mappedChild =\n mapBookKeeping.mapFunction.call(mapBookKeeping.mapContext, child, i);\n mapResult[name] = mappedChild;\n }\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * TODO: This may likely break any calls to `ReactChildren.map` that were\n * previously relying on the fact that we guarded against null children.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} mapFunction.\n * @param {*} mapContext Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var mapResult = {};\n var traverseContext = MapBookKeeping.getPooled(mapResult, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n return ReactFragment.create(mapResult);\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name, i) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n count: countChildren\n};\n\nmodule.exports = ReactChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/PooledClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\nvar oneArgumentPooler=function(copyFieldsFrom){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,copyFieldsFrom);\nreturn instance;}else \n{\nreturn new Klass(copyFieldsFrom);}};\n\n\n\nvar twoArgumentPooler=function(a1,a2){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2);\nreturn instance;}else \n{\nreturn new Klass(a1,a2);}};\n\n\n\nvar threeArgumentPooler=function(a1,a2,a3){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2,a3);\nreturn instance;}else \n{\nreturn new Klass(a1,a2,a3);}};\n\n\n\nvar fiveArgumentPooler=function(a1,a2,a3,a4,a5){\nvar Klass=this;\nif(Klass.instancePool.length){\nvar instance=Klass.instancePool.pop();\nKlass.call(instance,a1,a2,a3,a4,a5);\nreturn instance;}else \n{\nreturn new Klass(a1,a2,a3,a4,a5);}};\n\n\n\nvar standardReleaser=function(instance){\nvar Klass=this;\ninvariant(\ninstance instanceof Klass,\n'Trying to release an instance into a pool of a different type.');\n\nif(instance.destructor){\ninstance.destructor();}\n\nif(Klass.instancePool.length < Klass.poolSize){\nKlass.instancePool.push(instance);}};\n\n\n\nvar DEFAULT_POOL_SIZE=10;\nvar DEFAULT_POOLER=oneArgumentPooler;\n\n\n\n\n\n\n\n\n\n\nvar addPoolingTo=function(CopyConstructor,pooler){\nvar NewKlass=CopyConstructor;\nNewKlass.instancePool = [];\nNewKlass.getPooled = pooler || DEFAULT_POOLER;\nif(!NewKlass.poolSize){\nNewKlass.poolSize = DEFAULT_POOL_SIZE;}\n\nNewKlass.release = standardReleaser;\nreturn NewKlass;};\n\n\nvar PooledClass={\naddPoolingTo:addPoolingTo,\noneArgumentPooler:oneArgumentPooler,\ntwoArgumentPooler:twoArgumentPooler,\nthreeArgumentPooler:threeArgumentPooler,\nfiveArgumentPooler:fiveArgumentPooler};\n\n\nmodule.exports = PooledClass;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PooledClass\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fiveArgumentPooler = function(a1, a2, a3, a4, a5) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function(instance) {\n var Klass = this;\n invariant(\n instance instanceof Klass,\n 'Trying to release an instance into a pool of a different type.'\n );\n if (instance.destructor) {\n instance.destructor();\n }\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances (optional).\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function(CopyConstructor, pooler) {\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\n\nmodule.exports = PooledClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/PooledClass.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/invariant.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=function(condition,format,a,b,c,d,e,f){\nif(__DEV__){\nif(format === undefined){\nthrow new Error('invariant requires an error message argument');}}\n\n\n\nif(!condition){\nvar error;\nif(format === undefined){\nerror = new Error(\n'Minified exception occurred; use the non-minified dev environment ' + \n'for the full error message and additional helpful warnings.');}else \n\n{\nvar args=[a,b,c,d,e,f];\nvar argIndex=0;\nerror = new Error(\n'Invariant Violation: ' + \nformat.replace(/%s/g,function(){return args[argIndex++];}));}\n\n\n\nerror.framesToPop = 1;\nthrow error;}};\n\n\n\nmodule.exports = invariant;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (__DEV__) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/invariant.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\nif(__DEV__){\nvar fragmentKey='_reactFragment';\nvar didWarnKey='_reactDidWarn';\nvar canWarnForReactFragment=false;\n\ntry{\n\n\n\nvar dummy=function(){\nreturn 1;};\n\n\nObject.defineProperty(\n{},\nfragmentKey,\n{enumerable:false,value:true});\n\n\nObject.defineProperty(\n{},\n'key',\n{enumerable:true,get:dummy});\n\n\ncanWarnForReactFragment = true;}\ncatch(x) {}\n\nvar proxyPropertyAccessWithWarning=function(obj,key){\nObject.defineProperty(obj,key,{\nenumerable:true,\nget:function(){\nwarning(\nthis[didWarnKey],\n'A ReactFragment is an opaque type. Accessing any of its ' + \n'properties is deprecated. Pass it to one of the React.Children ' + \n'helpers.');\n\nthis[didWarnKey] = true;\nreturn this[fragmentKey][key];},\n\nset:function(value){\nwarning(\nthis[didWarnKey],\n'A ReactFragment is an immutable opaque type. Mutating its ' + \n'properties is deprecated.');\n\nthis[didWarnKey] = true;\nthis[fragmentKey][key] = value;}});};\n\n\n\n\nvar issuedWarnings={};\n\nvar didWarnForFragment=function(fragment){\n\n\nvar fragmentCacheKey='';\nfor(var key in fragment) {\nfragmentCacheKey += key + ':' + typeof fragment[key] + ',';}\n\nvar alreadyWarnedOnce=!!issuedWarnings[fragmentCacheKey];\nissuedWarnings[fragmentCacheKey] = true;\nreturn alreadyWarnedOnce;};}\n\n\n\nvar ReactFragment={\n\n\ncreate:function(object){\nif(__DEV__){\nif(typeof object !== 'object' || !object || Array.isArray(object)){\nwarning(\nfalse,\n'React.addons.createFragment only accepts a single object.',\nobject);\n\nreturn object;}\n\nif(ReactElement.isValidElement(object)){\nwarning(\nfalse,\n'React.addons.createFragment does not accept a ReactElement ' + \n'without a wrapper object.');\n\nreturn object;}\n\nif(canWarnForReactFragment){\nvar proxy={};\nObject.defineProperty(proxy,fragmentKey,{\nenumerable:false,\nvalue:object});\n\nObject.defineProperty(proxy,didWarnKey,{\nwritable:true,\nenumerable:false,\nvalue:false});\n\nfor(var key in object) {\nproxyPropertyAccessWithWarning(proxy,key);}\n\nObject.preventExtensions(proxy);\nreturn proxy;}}\n\n\nreturn object;},\n\n\n\nextract:function(fragment){\nif(__DEV__){\nif(canWarnForReactFragment){\nif(!fragment[fragmentKey]){\nwarning(\ndidWarnForFragment(fragment),\n'Any use of a keyed object should be wrapped in ' + \n'React.addons.createFragment(object) before being passed as a ' + \n'child.');\n\nreturn fragment;}\n\nreturn fragment[fragmentKey];}}\n\n\nreturn fragment;},\n\n\n\n\nextractIfFragment:function(fragment){\nif(__DEV__){\nif(canWarnForReactFragment){\n\nif(fragment[fragmentKey]){\nreturn fragment[fragmentKey];}\n\n\n\n\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key) && \nReactElement.isValidElement(fragment[key])){\n\n\nreturn ReactFragment.extract(fragment);}}}}\n\n\n\n\nreturn fragment;}};\n\n\n\nmodule.exports = ReactFragment;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactFragment\n*/\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\n\nvar warning = require('warning');\n\n/**\n * We used to allow keyed objects to serve as a collection of ReactElements,\n * or nested sets. This allowed us a way to explicitly key a set a fragment of\n * components. This is now being replaced with an opaque data structure.\n * The upgrade path is to call React.addons.createFragment({ key: value }) to\n * create a keyed fragment. The resulting data structure is opaque, for now.\n */\n\nif (__DEV__) {\n var fragmentKey = '_reactFragment';\n var didWarnKey = '_reactDidWarn';\n var canWarnForReactFragment = false;\n\n try {\n // Feature test. Don't even try to issue this warning if we can't use\n // enumerable: false.\n\n var dummy = function() {\n return 1;\n };\n\n Object.defineProperty(\n {},\n fragmentKey,\n {enumerable: false, value: true}\n );\n\n Object.defineProperty(\n {},\n 'key',\n {enumerable: true, get: dummy}\n );\n\n canWarnForReactFragment = true;\n } catch (x) { }\n\n var proxyPropertyAccessWithWarning = function(obj, key) {\n Object.defineProperty(obj, key, {\n enumerable: true,\n get: function() {\n warning(\n this[didWarnKey],\n 'A ReactFragment is an opaque type. Accessing any of its ' +\n 'properties is deprecated. Pass it to one of the React.Children ' +\n 'helpers.'\n );\n this[didWarnKey] = true;\n return this[fragmentKey][key];\n },\n set: function(value) {\n warning(\n this[didWarnKey],\n 'A ReactFragment is an immutable opaque type. Mutating its ' +\n 'properties is deprecated.'\n );\n this[didWarnKey] = true;\n this[fragmentKey][key] = value;\n }\n });\n };\n\n var issuedWarnings = {};\n\n var didWarnForFragment = function(fragment) {\n // We use the keys and the type of the value as a heuristic to dedupe the\n // warning to avoid spamming too much.\n var fragmentCacheKey = '';\n for (var key in fragment) {\n fragmentCacheKey += key + ':' + (typeof fragment[key]) + ',';\n }\n var alreadyWarnedOnce = !!issuedWarnings[fragmentCacheKey];\n issuedWarnings[fragmentCacheKey] = true;\n return alreadyWarnedOnce;\n };\n}\n\nvar ReactFragment = {\n // Wrap a keyed object in an opaque proxy that warns you if you access any\n // of its properties.\n create: function(object) {\n if (__DEV__) {\n if (typeof object !== 'object' || !object || Array.isArray(object)) {\n warning(\n false,\n 'React.addons.createFragment only accepts a single object.',\n object\n );\n return object;\n }\n if (ReactElement.isValidElement(object)) {\n warning(\n false,\n 'React.addons.createFragment does not accept a ReactElement ' +\n 'without a wrapper object.'\n );\n return object;\n }\n if (canWarnForReactFragment) {\n var proxy = {};\n Object.defineProperty(proxy, fragmentKey, {\n enumerable: false,\n value: object\n });\n Object.defineProperty(proxy, didWarnKey, {\n writable: true,\n enumerable: false,\n value: false\n });\n for (var key in object) {\n proxyPropertyAccessWithWarning(proxy, key);\n }\n Object.preventExtensions(proxy);\n return proxy;\n }\n }\n return object;\n },\n // Extract the original keyed object from the fragment opaque type. Warn if\n // a plain object is passed here.\n extract: function(fragment) {\n if (__DEV__) {\n if (canWarnForReactFragment) {\n if (!fragment[fragmentKey]) {\n warning(\n didWarnForFragment(fragment),\n 'Any use of a keyed object should be wrapped in ' +\n 'React.addons.createFragment(object) before being passed as a ' +\n 'child.'\n );\n return fragment;\n }\n return fragment[fragmentKey];\n }\n }\n return fragment;\n },\n // Check if this is a fragment and if so, extract the keyed object. If it\n // is a fragment-like object, warn that it should be wrapped. Ignore if we\n // can't determine what kind of object this is.\n extractIfFragment: function(fragment) {\n if (__DEV__) {\n if (canWarnForReactFragment) {\n // If it is the opaque type, return the keyed object.\n if (fragment[fragmentKey]) {\n return fragment[fragmentKey];\n }\n // Otherwise, check each property if it has an element, if it does\n // it is probably meant as a fragment, so we can warn early. Defer,\n // the warning to extract.\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key) &&\n ReactElement.isValidElement(fragment[key])) {\n // This looks like a fragment object, we should provide an\n // early warning.\n return ReactFragment.extract(fragment);\n }\n }\n }\n }\n return fragment;\n }\n};\n\nmodule.exports = ReactFragment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\n\nvar assign=require('Object.assign');\nvar warning=require('warning');\n\nvar RESERVED_PROPS={\nkey:true,\nref:true};\n\n\n\n\n\n\n\n\n\nfunction defineWarningProperty(object,key){\nObject.defineProperty(object,key,{\n\nconfigurable:false,\nenumerable:true,\n\nget:function(){\nif(!this._store){\nreturn null;}\n\nreturn this._store[key];},\n\n\nset:function(value){\nwarning(\nfalse,\n'Don\\'t set the %s property of the React element. Instead, ' + \n'specify the correct value when initially creating the element.',\nkey);\n\nthis._store[key] = value;}});}\n\n\n\n\n\n\n\n\nvar useMutationMembrane=false;\n\n\n\n\n\n\n\nfunction defineMutationMembrane(prototype){\ntry{\nvar pseudoFrozenProperties={\nprops:true};\n\nfor(var key in pseudoFrozenProperties) {\ndefineWarningProperty(prototype,key);}\n\nuseMutationMembrane = true;}\ncatch(x) {}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=function(type,key,ref,owner,context,props){\n\nthis.type = type;\nthis.key = key;\nthis.ref = ref;\n\n\nthis._owner = owner;\n\n\n\nthis._context = context;\n\nif(__DEV__){\n\n\n\n\nthis._store = {props:props,originalProps:assign({},props)};\n\n\n\n\n\ntry{\nObject.defineProperty(this._store,'validated',{\nconfigurable:false,\nenumerable:false,\nwritable:true});}\n\ncatch(x) {}\n\nthis._store.validated = false;\n\n\n\n\nif(useMutationMembrane){\nObject.freeze(this);\nreturn;}}\n\n\n\nthis.props = props;};\n\n\n\n\nReactElement.prototype = {\n_isReactElement:true};\n\n\nif(__DEV__){\ndefineMutationMembrane(ReactElement.prototype);}\n\n\nReactElement.createElement = function(type,config,children){\nvar propName;\n\n\nvar props={};\n\nvar key=null;\nvar ref=null;\n\nif(config != null){\nref = config.ref === undefined?null:config.ref;\nkey = config.key === undefined?null:'' + config.key;\n\nfor(propName in config) {\nif(config.hasOwnProperty(propName) && \n!RESERVED_PROPS.hasOwnProperty(propName)){\nprops[propName] = config[propName];}}}\n\n\n\n\n\n\nvar childrenLength=arguments.length - 2;\nif(childrenLength === 1){\nprops.children = children;}else \nif(childrenLength > 1){\nvar childArray=Array(childrenLength);\nfor(var i=0;i < childrenLength;i++) {\nchildArray[i] = arguments[i + 2];}\n\nprops.children = childArray;}\n\n\n\nif(type && type.defaultProps){\nvar defaultProps=type.defaultProps;\nfor(propName in defaultProps) {\nif(typeof props[propName] === 'undefined'){\nprops[propName] = defaultProps[propName];}}}\n\n\n\n\nreturn new ReactElement(\ntype,\nkey,\nref,\nReactCurrentOwner.current,\nReactContext.current,\nprops);};\n\n\n\nReactElement.createFactory = function(type){\nvar factory=ReactElement.createElement.bind(null,type);\n\n\n\n\n\nfactory.type = type;\nreturn factory;};\n\n\nReactElement.cloneAndReplaceProps = function(oldElement,newProps){\nvar newElement=new ReactElement(\noldElement.type,\noldElement.key,\noldElement.ref,\noldElement._owner,\noldElement._context,\nnewProps);\n\n\nif(__DEV__){\n\nnewElement._store.validated = oldElement._store.validated;}\n\nreturn newElement;};\n\n\nReactElement.cloneElement = function(element,config,children){\nvar propName;\n\n\nvar props=assign({},element.props);\n\n\nvar key=element.key;\nvar ref=element.ref;\n\n\nvar owner=element._owner;\n\nif(config != null){\nif(config.ref !== undefined){\n\nref = config.ref;\nowner = ReactCurrentOwner.current;}\n\nif(config.key !== undefined){\nkey = '' + config.key;}\n\n\nfor(propName in config) {\nif(config.hasOwnProperty(propName) && \n!RESERVED_PROPS.hasOwnProperty(propName)){\nprops[propName] = config[propName];}}}\n\n\n\n\n\n\nvar childrenLength=arguments.length - 2;\nif(childrenLength === 1){\nprops.children = children;}else \nif(childrenLength > 1){\nvar childArray=Array(childrenLength);\nfor(var i=0;i < childrenLength;i++) {\nchildArray[i] = arguments[i + 2];}\n\nprops.children = childArray;}\n\n\nreturn new ReactElement(\nelement.type,\nkey,\nref,\nowner,\nelement._context,\nprops);};\n\n\n\n\n\n\n\n\nReactElement.isValidElement = function(object){\n\n\n\n\nvar isElement=!!(object && object._isReactElement);\n\n\n\n\n\nreturn isElement;};\n\n\nmodule.exports = ReactElement;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElement\n */\n\n'use strict';\n\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\n\nvar assign = require('Object.assign');\nvar warning = require('warning');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} object\n * @param {string} key\n */\nfunction defineWarningProperty(object, key) {\n Object.defineProperty(object, key, {\n\n configurable: false,\n enumerable: true,\n\n get: function() {\n if (!this._store) {\n return null;\n }\n return this._store[key];\n },\n\n set: function(value) {\n warning(\n false,\n 'Don\\'t set the %s property of the React element. Instead, ' +\n 'specify the correct value when initially creating the element.',\n key\n );\n this._store[key] = value;\n }\n\n });\n}\n\n/**\n * This is updated to true if the membrane is successfully created.\n */\nvar useMutationMembrane = false;\n\n/**\n * Warn for mutations.\n *\n * @internal\n * @param {object} element\n */\nfunction defineMutationMembrane(prototype) {\n try {\n var pseudoFrozenProperties = {\n props: true\n };\n for (var key in pseudoFrozenProperties) {\n defineWarningProperty(prototype, key);\n }\n useMutationMembrane = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\n/**\n * Base constructor for all React elements. This is only used to make this\n * work with a dynamic instanceof check. Nothing should live on this prototype.\n *\n * @param {*} type\n * @param {string|object} ref\n * @param {*} key\n * @param {*} props\n * @internal\n */\nvar ReactElement = function(type, key, ref, owner, context, props) {\n // Built-in properties that belong on the element\n this.type = type;\n this.key = key;\n this.ref = ref;\n\n // Record the component responsible for creating this element.\n this._owner = owner;\n\n // TODO: Deprecate withContext, and then the context becomes accessible\n // through the owner.\n this._context = context;\n\n if (__DEV__) {\n // The validation flag and props are currently mutative. We put them on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n this._store = {props: props, originalProps: assign({}, props)};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n try {\n Object.defineProperty(this._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true\n });\n } catch (x) {\n }\n this._store.validated = false;\n\n // We're not allowed to set props directly on the object so we early\n // return and rely on the prototype membrane to forward to the backing\n // store.\n if (useMutationMembrane) {\n Object.freeze(this);\n return;\n }\n }\n\n this.props = props;\n};\n\n// We intentionally don't expose the function on the constructor property.\n// ReactElement should be indistinguishable from a plain object.\nReactElement.prototype = {\n _isReactElement: true\n};\n\nif (__DEV__) {\n defineMutationMembrane(ReactElement.prototype);\n}\n\nReactElement.createElement = function(type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (typeof props[propName] === 'undefined') {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n return new ReactElement(\n type,\n key,\n ref,\n ReactCurrentOwner.current,\n ReactContext.current,\n props\n );\n};\n\nReactElement.createFactory = function(type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. <Foo />.type === Foo.type.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceProps = function(oldElement, newProps) {\n var newElement = new ReactElement(\n oldElement.type,\n oldElement.key,\n oldElement.ref,\n oldElement._owner,\n oldElement._context,\n newProps\n );\n\n if (__DEV__) {\n // If the key on the original is valid, then the clone is valid\n newElement._store.validated = oldElement._store.validated;\n }\n return newElement;\n};\n\nReactElement.cloneElement = function(element, config, children) {\n var propName;\n\n // Original props are copied\n var props = assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (config.ref !== undefined) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n // Remaining properties override existing props\n for (propName in config) {\n if (config.hasOwnProperty(propName) &&\n !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return new ReactElement(\n element.type,\n key,\n ref,\n owner,\n element._context,\n props\n );\n};\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function(object) {\n // ReactTestUtils is often used outside of beforeEach where as React is\n // within it. This leads to two different instances of React on the same\n // page. To identify a element from a different React instance we use\n // a flag instead of an instanceof check.\n var isElement = !!(object && object._isReactElement);\n // if (isElement && !(object instanceof ReactElement)) {\n // This is an indicator that you're using multiple versions of React at the\n // same time. This will screw with ownership and stuff. Fix it, please.\n // TODO: We could possibly warn here.\n // }\n return isElement;\n};\n\nmodule.exports = ReactElement;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar emptyObject=require('emptyObject');\nvar warning=require('warning');\n\nvar didWarn=false;\n\n\n\n\n\n\n\nvar ReactContext={\n\n\n\n\n\ncurrent:emptyObject,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwithContext:function(newContext,scopedCallback){\nif(__DEV__){\nwarning(\ndidWarn,\n'withContext is deprecated and will be removed in a future version. ' + \n'Use a wrapper component with getChildContext instead.');\n\n\ndidWarn = true;}\n\n\nvar result;\nvar previousContext=ReactContext.current;\nReactContext.current = assign({},previousContext,newContext);\ntry{\nresult = scopedCallback();}finally \n{\nReactContext.current = previousContext;}\n\nreturn result;}};\n\n\n\n\nmodule.exports = ReactContext;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactContext\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar emptyObject = require('emptyObject');\nvar warning = require('warning');\n\nvar didWarn = false;\n\n/**\n * Keeps track of the current context.\n *\n * The context is automatically passed down the component ownership hierarchy\n * and is accessible via `this.context` on ReactCompositeComponents.\n */\nvar ReactContext = {\n\n /**\n * @internal\n * @type {object}\n */\n current: emptyObject,\n\n /**\n * Temporarily extends the current context while executing scopedCallback.\n *\n * A typical use case might look like\n *\n * render: function() {\n * var children = ReactContext.withContext({foo: 'foo'}, () => (\n *\n * ));\n * return <div>{children}</div>;\n * }\n *\n * @param {object} newContext New context to merge into the existing context\n * @param {function} scopedCallback Callback to run with the new context\n * @return {ReactComponent|array<ReactComponent>}\n */\n withContext: function(newContext, scopedCallback) {\n if (__DEV__) {\n warning(\n didWarn,\n 'withContext is deprecated and will be removed in a future version. ' +\n 'Use a wrapper component with getChildContext instead.'\n );\n\n didWarn = true;\n }\n\n var result;\n var previousContext = ReactContext.current;\n ReactContext.current = assign({}, previousContext, newContext);\n try {\n result = scopedCallback();\n } finally {\n ReactContext.current = previousContext;\n }\n return result;\n }\n\n};\n\nmodule.exports = ReactContext;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/stubs/Object.assign.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction assign(target,sources){\nif(target == null){\nthrow new TypeError('Object.assign target cannot be null or undefined');}\n\n\nvar to=Object(target);\nvar hasOwnProperty=Object.prototype.hasOwnProperty;\n\nfor(var nextIndex=1;nextIndex < arguments.length;nextIndex++) {\nvar nextSource=arguments[nextIndex];\nif(nextSource == null){\ncontinue;}\n\n\nvar from=Object(nextSource);\n\n\n\n\n\n\nfor(var key in from) {\nif(hasOwnProperty.call(from,key)){\nto[key] = from[key];}}}\n\n\n\n\nreturn to;}\n\n\nmodule.exports = assign;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Object.assign\n */\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign\n\n'use strict';\n\nfunction assign(target, sources) {\n if (target == null) {\n throw new TypeError('Object.assign target cannot be null or undefined');\n }\n\n var to = Object(target);\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n\n for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) {\n var nextSource = arguments[nextIndex];\n if (nextSource == null) {\n continue;\n }\n\n var from = Object(nextSource);\n\n // We don't currently support accessors nor proxies. Therefore this\n // copy cannot throw. If we ever supported this then we must handle\n // exceptions and side-effects. We don't support symbols so they won't\n // be transferred.\n\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n }\n\n return to;\n}\n\nmodule.exports = assign;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/stubs/Object.assign.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyObject.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar emptyObject={};\n\nif(__DEV__){\nObject.freeze(emptyObject);}\n\n\nmodule.exports = emptyObject;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyObject\n */\n\n\"use strict\";\n\nvar emptyObject = {};\n\nif (__DEV__) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyObject.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar emptyFunction=require('emptyFunction');\n\n\n\n\n\n\n\n\nvar warning=emptyFunction;\n\nif(__DEV__){\nwarning = function(condition,format){for(var _len=arguments.length,args=Array(_len > 2?_len - 2:0),_key=2;_key < _len;_key++) {args[_key - 2] = arguments[_key];}\nif(format === undefined){\nthrow new Error(\n'`warning(condition, format, ...args)` requires a warning ' + \n'message argument');}\n\n\n\nif(format.length < 10 || /^[s\\W]*$/.test(format)){\nthrow new Error(\n'The warning format should be able to uniquely identify this ' + \n'warning. Please, use a more descriptive format than: ' + format);}\n\n\n\nif(format.indexOf('Failed Composite propType: ') === 0){\nreturn;}\n\n\nif(!condition){\nvar argIndex=0;\nvar message='Warning: ' + format.replace(/%s/g,function(){return args[argIndex++];});\nconsole.warn(message);\ntry{\n\n\n\nthrow new Error(message);}\ncatch(x) {}}};}\n\n\n\n\nmodule.exports = warning;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule warning\n */\n\n\"use strict\";\n\nvar emptyFunction = require('emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (__DEV__) {\n warning = function(condition, format, ...args) {\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, () => args[argIndex++]);\n console.warn(message);\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyFunction.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\nmakeEmptyFunction(arg){\nreturn function(){\nreturn arg;};}\n\n\n\n\n\n\n\n\nfunction emptyFunction(){}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function(){return this;};\nemptyFunction.thatReturnsArgument = function(arg){return arg;};\n\nmodule.exports = emptyFunction;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule emptyFunction\n */\n\nfunction makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nfunction emptyFunction() {}\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function() { return this; };\nemptyFunction.thatReturnsArgument = function(arg) { return arg; };\n\nmodule.exports = emptyFunction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/emptyFunction.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCurrentOwner.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCurrentOwner={\n\n\n\n\n\ncurrent:null};\n\n\n\nmodule.exports = ReactCurrentOwner;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCurrentOwner\n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n *\n * The depth indicate how many composite components are above this render level.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCurrentOwner.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/traverseAllChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\n\nvar getIteratorFn=require('getIteratorFn');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar SEPARATOR=ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR=':';\n\n\n\n\n\n\nvar userProvidedKeyEscaperLookup={\n'=':'=0',\n'.':'=1',\n':':'=2'};\n\n\nvar userProvidedKeyEscapeRegex=/[=.:]/g;\n\nvar didWarnAboutMaps=false;\n\nfunction userProvidedKeyEscaper(match){\nreturn userProvidedKeyEscaperLookup[match];}\n\n\n\n\n\n\n\n\n\nfunction getComponentKey(component,index){\nif(component && component.key != null){\n\nreturn wrapUserProvidedKey(component.key);}\n\n\nreturn index.toString(36);}\n\n\n\n\n\n\n\n\nfunction escapeUserProvidedKey(text){\nreturn ('' + text).replace(\nuserProvidedKeyEscapeRegex,\nuserProvidedKeyEscaper);}\n\n\n\n\n\n\n\n\n\n\nfunction wrapUserProvidedKey(key){\nreturn '$' + escapeUserProvidedKey(key);}\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseAllChildrenImpl(\nchildren,\nnameSoFar,\nindexSoFar,\ncallback,\ntraverseContext)\n{\nvar type=typeof children;\n\nif(type === 'undefined' || type === 'boolean'){\n\nchildren = null;}\n\n\nif(children === null || \ntype === 'string' || \ntype === 'number' || \nReactElement.isValidElement(children)){\ncallback(\ntraverseContext,\nchildren,\n\n\nnameSoFar === ''?SEPARATOR + getComponentKey(children,0):nameSoFar,\nindexSoFar);\n\nreturn 1;}\n\n\nvar child,nextName,nextIndex;\nvar subtreeCount=0;\n\nif(Array.isArray(children)){\nfor(var i=0;i < children.length;i++) {\nchild = children[i];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \ngetComponentKey(child,i);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}else \n\n\n{\nvar iteratorFn=getIteratorFn(children);\nif(iteratorFn){\nvar iterator=iteratorFn.call(children);\nvar step;\nif(iteratorFn !== children.entries){\nvar ii=0;\nwhile(!(step = iterator.next()).done) {\nchild = step.value;\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \ngetComponentKey(child,ii++);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}else \n\n\n{\nif(__DEV__){\nwarning(\ndidWarnAboutMaps,\n'Using Maps as children is not yet fully supported. It is an ' + \n'experimental feature that might be removed. Convert it to a ' + \n'sequence / iterable of keyed ReactElements instead.');\n\ndidWarnAboutMaps = true;}\n\n\nwhile(!(step = iterator.next()).done) {\nvar entry=step.value;\nif(entry){\nchild = entry[1];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \nwrapUserProvidedKey(entry[0]) + SUBSEPARATOR + \ngetComponentKey(child,0);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}}}else \n\n\n\n\nif(type === 'object'){\ninvariant(\nchildren.nodeType !== 1,\n'traverseAllChildren(...): Encountered an invalid child; DOM ' + \n'elements are not valid children of React components.');\n\nvar fragment=ReactFragment.extract(children);\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key)){\nchild = fragment[key];\nnextName = \n(nameSoFar !== ''?nameSoFar + SUBSEPARATOR:SEPARATOR) + \nwrapUserProvidedKey(key) + SUBSEPARATOR + \ngetComponentKey(child,0);\n\nnextIndex = indexSoFar + subtreeCount;\nsubtreeCount += traverseAllChildrenImpl(\nchild,\nnextName,\nnextIndex,\ncallback,\ntraverseContext);}}}}\n\n\n\n\n\n\nreturn subtreeCount;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseAllChildren(children,callback,traverseContext){\nif(children == null){\nreturn 0;}\n\n\nreturn traverseAllChildrenImpl(children,'',0,callback,traverseContext);}\n\n\nmodule.exports = traverseAllChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule traverseAllChildren\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\n\nvar getIteratorFn = require('getIteratorFn');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\nvar SUBSEPARATOR = ':';\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar userProvidedKeyEscaperLookup = {\n '=': '=0',\n '.': '=1',\n ':': '=2'\n};\n\nvar userProvidedKeyEscapeRegex = /[=.:]/g;\n\nvar didWarnAboutMaps = false;\n\nfunction userProvidedKeyEscaper(match) {\n return userProvidedKeyEscaperLookup[match];\n}\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n if (component && component.key != null) {\n // Explicit key\n return wrapUserProvidedKey(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * Escape a component key so that it is safe to use in a reactid.\n *\n * @param {*} key Component key to be escaped.\n * @return {string} An escaped string.\n */\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(\n userProvidedKeyEscapeRegex,\n userProvidedKeyEscaper\n );\n}\n\n/**\n * Wrap a `key` value explicitly provided by the user to distinguish it from\n * implicitly-generated keys generated by a component's index in its parent.\n *\n * @param {string} key Value of a user-provided `key` attribute\n * @return {string}\n */\nfunction wrapUserProvidedKey(key) {\n return '$' + escapeUserProvidedKey(key);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!number} indexSoFar Number of children encountered until this point.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(\n children,\n nameSoFar,\n indexSoFar,\n callback,\n traverseContext\n) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null ||\n type === 'string' ||\n type === 'number' ||\n ReactElement.isValidElement(children)) {\n callback(\n traverseContext,\n children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar,\n indexSoFar\n );\n return 1;\n }\n\n var child, nextName, nextIndex;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, i)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n getComponentKey(child, ii++)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n } else {\n if (__DEV__) {\n warning(\n didWarnAboutMaps,\n 'Using Maps as children is not yet fully supported. It is an ' +\n 'experimental feature that might be removed. Convert it to a ' +\n 'sequence / iterable of keyed ReactElements instead.'\n );\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(entry[0]) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n } else if (type === 'object') {\n invariant(\n children.nodeType !== 1,\n 'traverseAllChildren(...): Encountered an invalid child; DOM ' +\n 'elements are not valid children of React components.'\n );\n var fragment = ReactFragment.extract(children);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n child = fragment[key];\n nextName = (\n (nameSoFar !== '' ? nameSoFar + SUBSEPARATOR : SEPARATOR) +\n wrapUserProvidedKey(key) + SUBSEPARATOR +\n getComponentKey(child, 0)\n );\n nextIndex = indexSoFar + subtreeCount;\n subtreeCount += traverseAllChildrenImpl(\n child,\n nextName,\n nextIndex,\n callback,\n traverseContext\n );\n }\n }\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', 0, callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/traverseAllChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/ReactInstanceHandles.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRootIndex=require('ReactRootIndex');\n\nvar invariant=require('invariant');\n\nvar SEPARATOR='.';\nvar SEPARATOR_LENGTH=SEPARATOR.length;\n\n\n\n\nvar MAX_TREE_DEPTH=100;\n\n\n\n\n\n\n\n\nfunction getReactRootIDString(index){\nreturn SEPARATOR + index.toString(36);}\n\n\n\n\n\n\n\n\n\n\nfunction isBoundary(id,index){\nreturn id.charAt(index) === SEPARATOR || index === id.length;}\n\n\n\n\n\n\n\n\n\nfunction isValidID(id){\nreturn id === '' || \nid.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR;}\n\n\n\n\n\n\n\n\n\n\n\nfunction isAncestorIDOf(ancestorID,descendantID){\nreturn (\ndescendantID.indexOf(ancestorID) === 0 && \nisBoundary(descendantID,ancestorID.length));}\n\n\n\n\n\n\n\n\n\n\nfunction getParentID(id){\nreturn id?id.substr(0,id.lastIndexOf(SEPARATOR)):'';}\n\n\n\n\n\n\n\n\n\n\n\nfunction getNextDescendantID(ancestorID,destinationID){\ninvariant(\nisValidID(ancestorID) && isValidID(destinationID),\n'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\nancestorID,\ndestinationID);\n\ninvariant(\nisAncestorIDOf(ancestorID,destinationID),\n'getNextDescendantID(...): React has made an invalid assumption about ' + \n'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\nancestorID,\ndestinationID);\n\nif(ancestorID === destinationID){\nreturn ancestorID;}\n\n\n\nvar start=ancestorID.length + SEPARATOR_LENGTH;\nfor(var i=start;i < destinationID.length;i++) {\nif(isBoundary(destinationID,i)){\nbreak;}}\n\n\nreturn destinationID.substr(0,i);}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getFirstCommonAncestorID(oneID,twoID){\nvar minLength=Math.min(oneID.length,twoID.length);\nif(minLength === 0){\nreturn '';}\n\nvar lastCommonMarkerIndex=0;\n\nfor(var i=0;i <= minLength;i++) {\nif(isBoundary(oneID,i) && isBoundary(twoID,i)){\nlastCommonMarkerIndex = i;}else \nif(oneID.charAt(i) !== twoID.charAt(i)){\nbreak;}}\n\n\nvar longestCommonID=oneID.substr(0,lastCommonMarkerIndex);\ninvariant(\nisValidID(longestCommonID),\n'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\noneID,\ntwoID,\nlongestCommonID);\n\nreturn longestCommonID;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction traverseParentPath(start,stop,cb,arg,skipFirst,skipLast){\nstart = start || '';\nstop = stop || '';\ninvariant(\nstart !== stop,\n'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\nstart);\n\nvar traverseUp=isAncestorIDOf(stop,start);\ninvariant(\ntraverseUp || isAncestorIDOf(start,stop),\n'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' + \n'not have a parent path.',\nstart,\nstop);\n\n\nvar depth=0;\nvar traverse=traverseUp?getParentID:getNextDescendantID;\nfor(var id=start;;id = traverse(id,stop)) {\nvar ret;\nif((!skipFirst || id !== start) && (!skipLast || id !== stop)){\nret = cb(id,traverseUp,arg);}\n\nif(ret === false || id === stop){\n\nbreak;}\n\ninvariant(\ndepth++ < MAX_TREE_DEPTH,\n'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' + \n'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\nstart,stop);}}\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceHandles={\n\n\n\n\n\ncreateReactRootID:function(){\nreturn getReactRootIDString(ReactRootIndex.createReactRootIndex());},\n\n\n\n\n\n\n\n\n\n\ncreateReactID:function(rootID,name){\nreturn rootID + name;},\n\n\n\n\n\n\n\n\n\n\ngetReactRootIDFromNodeID:function(id){\nif(id && id.charAt(0) === SEPARATOR && id.length > 1){\nvar index=id.indexOf(SEPARATOR,1);\nreturn index > -1?id.substr(0,index):id;}\n\nreturn null;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseEnterLeave:function(leaveID,enterID,cb,upArg,downArg){\nvar ancestorID=getFirstCommonAncestorID(leaveID,enterID);\nif(ancestorID !== leaveID){\ntraverseParentPath(leaveID,ancestorID,cb,upArg,false,true);}\n\nif(ancestorID !== enterID){\ntraverseParentPath(ancestorID,enterID,cb,downArg,true,false);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseTwoPhase:function(targetID,cb,arg){\nif(targetID){\ntraverseParentPath('',targetID,cb,arg,true,false);\ntraverseParentPath(targetID,'',cb,arg,false,true);}},\n\n\n\n\n\n\ntraverseTwoPhaseSkipTarget:function(targetID,cb,arg){\nif(targetID){\ntraverseParentPath('',targetID,cb,arg,true,true);\ntraverseParentPath(targetID,'',cb,arg,true,true);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ntraverseAncestors:function(targetID,cb,arg){\ntraverseParentPath('',targetID,cb,arg,true,false);},\n\n\n\n\n\n\n_getFirstCommonAncestorID:getFirstCommonAncestorID,\n\n\n\n\n\n_getNextDescendantID:getNextDescendantID,\n\nisAncestorIDOf:isAncestorIDOf,\n\nSEPARATOR:SEPARATOR};\n\n\n\nmodule.exports = ReactInstanceHandles;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ReactInstanceHandles\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar ReactRootIndex = require('ReactRootIndex');\n\nvar invariant = require('invariant');\n\nvar SEPARATOR = '.';\nvar SEPARATOR_LENGTH = SEPARATOR.length;\n\n/**\n * Maximum depth of traversals before we consider the possibility of a bad ID.\n */\nvar MAX_TREE_DEPTH = 100;\n\n/**\n * Creates a DOM ID prefix to use when mounting React components.\n *\n * @param {number} index A unique integer\n * @return {string} React root ID.\n * @internal\n */\nfunction getReactRootIDString(index) {\n return SEPARATOR + index.toString(36);\n}\n\n/**\n * Checks if a character in the supplied ID is a separator or the end.\n *\n * @param {string} id A React DOM ID.\n * @param {number} index Index of the character to check.\n * @return {boolean} True if the character is a separator or end of the ID.\n * @private\n */\nfunction isBoundary(id, index) {\n return id.charAt(index) === SEPARATOR || index === id.length;\n}\n\n/**\n * Checks if the supplied string is a valid React DOM ID.\n *\n * @param {string} id A React DOM ID, maybe.\n * @return {boolean} True if the string is a valid React DOM ID.\n * @private\n */\nfunction isValidID(id) {\n return id === '' || (\n id.charAt(0) === SEPARATOR && id.charAt(id.length - 1) !== SEPARATOR\n );\n}\n\n/**\n * Checks if the first ID is an ancestor of or equal to the second ID.\n *\n * @param {string} ancestorID\n * @param {string} descendantID\n * @return {boolean} True if `ancestorID` is an ancestor of `descendantID`.\n * @internal\n */\nfunction isAncestorIDOf(ancestorID, descendantID) {\n return (\n descendantID.indexOf(ancestorID) === 0 &&\n isBoundary(descendantID, ancestorID.length)\n );\n}\n\n/**\n * Gets the parent ID of the supplied React DOM ID, `id`.\n *\n * @param {string} id ID of a component.\n * @return {string} ID of the parent, or an empty string.\n * @private\n */\nfunction getParentID(id) {\n return id ? id.substr(0, id.lastIndexOf(SEPARATOR)) : '';\n}\n\n/**\n * Gets the next DOM ID on the tree path from the supplied `ancestorID` to the\n * supplied `destinationID`. If they are equal, the ID is returned.\n *\n * @param {string} ancestorID ID of an ancestor node of `destinationID`.\n * @param {string} destinationID ID of the destination node.\n * @return {string} Next ID on the path from `ancestorID` to `destinationID`.\n * @private\n */\nfunction getNextDescendantID(ancestorID, destinationID) {\n invariant(\n isValidID(ancestorID) && isValidID(destinationID),\n 'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',\n ancestorID,\n destinationID\n );\n invariant(\n isAncestorIDOf(ancestorID, destinationID),\n 'getNextDescendantID(...): React has made an invalid assumption about ' +\n 'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',\n ancestorID,\n destinationID\n );\n if (ancestorID === destinationID) {\n return ancestorID;\n }\n // Skip over the ancestor and the immediate separator. Traverse until we hit\n // another separator or we reach the end of `destinationID`.\n var start = ancestorID.length + SEPARATOR_LENGTH;\n for (var i = start; i < destinationID.length; i++) {\n if (isBoundary(destinationID, i)) {\n break;\n }\n }\n return destinationID.substr(0, i);\n}\n\n/**\n * Gets the nearest common ancestor ID of two IDs.\n *\n * Using this ID scheme, the nearest common ancestor ID is the longest common\n * prefix of the two IDs that immediately preceded a \"marker\" in both strings.\n *\n * @param {string} oneID\n * @param {string} twoID\n * @return {string} Nearest common ancestor ID, or the empty string if none.\n * @private\n */\nfunction getFirstCommonAncestorID(oneID, twoID) {\n var minLength = Math.min(oneID.length, twoID.length);\n if (minLength === 0) {\n return '';\n }\n var lastCommonMarkerIndex = 0;\n // Use `<=` to traverse until the \"EOL\" of the shorter string.\n for (var i = 0; i <= minLength; i++) {\n if (isBoundary(oneID, i) && isBoundary(twoID, i)) {\n lastCommonMarkerIndex = i;\n } else if (oneID.charAt(i) !== twoID.charAt(i)) {\n break;\n }\n }\n var longestCommonID = oneID.substr(0, lastCommonMarkerIndex);\n invariant(\n isValidID(longestCommonID),\n 'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',\n oneID,\n twoID,\n longestCommonID\n );\n return longestCommonID;\n}\n\n/**\n * Traverses the parent path between two IDs (either up or down). The IDs must\n * not be the same, and there must exist a parent path between them. If the\n * callback returns `false`, traversal is stopped.\n *\n * @param {?string} start ID at which to start traversal.\n * @param {?string} stop ID at which to end traversal.\n * @param {function} cb Callback to invoke each ID with.\n * @param {?boolean} skipFirst Whether or not to skip the first node.\n * @param {?boolean} skipLast Whether or not to skip the last node.\n * @private\n */\nfunction traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {\n start = start || '';\n stop = stop || '';\n invariant(\n start !== stop,\n 'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',\n start\n );\n var traverseUp = isAncestorIDOf(stop, start);\n invariant(\n traverseUp || isAncestorIDOf(start, stop),\n 'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' +\n 'not have a parent path.',\n start,\n stop\n );\n // Traverse from `start` to `stop` one depth at a time.\n var depth = 0;\n var traverse = traverseUp ? getParentID : getNextDescendantID;\n for (var id = start; /* until break */; id = traverse(id, stop)) {\n var ret;\n if ((!skipFirst || id !== start) && (!skipLast || id !== stop)) {\n ret = cb(id, traverseUp, arg);\n }\n if (ret === false || id === stop) {\n // Only break //after// visiting `stop`.\n break;\n }\n invariant(\n depth++ < MAX_TREE_DEPTH,\n 'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' +\n 'traversing the React DOM ID tree. This may be due to malformed IDs: %s',\n start, stop\n );\n }\n}\n\n/**\n * Manages the IDs assigned to DOM representations of React components. This\n * uses a specific scheme in order to traverse the DOM efficiently (e.g. in\n * order to simulate events).\n *\n * @internal\n */\nvar ReactInstanceHandles = {\n\n /**\n * Constructs a React root ID\n * @return {string} A React root ID.\n */\n createReactRootID: function() {\n return getReactRootIDString(ReactRootIndex.createReactRootIndex());\n },\n\n /**\n * Constructs a React ID by joining a root ID with a name.\n *\n * @param {string} rootID Root ID of a parent component.\n * @param {string} name A component's name (as flattened children).\n * @return {string} A React ID.\n * @internal\n */\n createReactID: function(rootID, name) {\n return rootID + name;\n },\n\n /**\n * Gets the DOM ID of the React component that is the root of the tree that\n * contains the React component with the supplied DOM ID.\n *\n * @param {string} id DOM ID of a React component.\n * @return {?string} DOM ID of the React component that is the root.\n * @internal\n */\n getReactRootIDFromNodeID: function(id) {\n if (id && id.charAt(0) === SEPARATOR && id.length > 1) {\n var index = id.indexOf(SEPARATOR, 1);\n return index > -1 ? id.substr(0, index) : id;\n }\n return null;\n },\n\n /**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * NOTE: Does not invoke the callback on the nearest common ancestor because\n * nothing \"entered\" or \"left\" that element.\n *\n * @param {string} leaveID ID being left.\n * @param {string} enterID ID being entered.\n * @param {function} cb Callback to invoke on each entered/left ID.\n * @param {*} upArg Argument to invoke the callback with on left IDs.\n * @param {*} downArg Argument to invoke the callback with on entered IDs.\n * @internal\n */\n traverseEnterLeave: function(leaveID, enterID, cb, upArg, downArg) {\n var ancestorID = getFirstCommonAncestorID(leaveID, enterID);\n if (ancestorID !== leaveID) {\n traverseParentPath(leaveID, ancestorID, cb, upArg, false, true);\n }\n if (ancestorID !== enterID) {\n traverseParentPath(ancestorID, enterID, cb, downArg, true, false);\n }\n },\n\n /**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseTwoPhase: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, false);\n traverseParentPath(targetID, '', cb, arg, false, true);\n }\n },\n\n /**\n * Same as `traverseTwoPhase` but skips the `targetID`.\n */\n traverseTwoPhaseSkipTarget: function(targetID, cb, arg) {\n if (targetID) {\n traverseParentPath('', targetID, cb, arg, true, true);\n traverseParentPath(targetID, '', cb, arg, true, true);\n }\n },\n\n /**\n * Traverse a node ID, calling the supplied `cb` for each ancestor ID. For\n * example, passing `.0.$row-0.1` would result in `cb` getting called\n * with `.0`, `.0.$row-0`, and `.0.$row-0.1`.\n *\n * NOTE: This traversal happens on IDs without touching the DOM.\n *\n * @param {string} targetID ID of the target node.\n * @param {function} cb Callback to invoke.\n * @param {*} arg Argument to invoke the callback with.\n * @internal\n */\n traverseAncestors: function(targetID, cb, arg) {\n traverseParentPath('', targetID, cb, arg, true, false);\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getFirstCommonAncestorID: getFirstCommonAncestorID,\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _getNextDescendantID: getNextDescendantID,\n\n isAncestorIDOf: isAncestorIDOf,\n\n SEPARATOR: SEPARATOR\n\n};\n\nmodule.exports = ReactInstanceHandles;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/ReactInstanceHandles.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRootIndex.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRootIndexInjection={\n\n\n\ninjectCreateReactRootIndex:function(_createReactRootIndex){\nReactRootIndex.createReactRootIndex = _createReactRootIndex;}};\n\n\n\nvar ReactRootIndex={\ncreateReactRootIndex:null,\ninjection:ReactRootIndexInjection};\n\n\nmodule.exports = ReactRootIndex;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRootIndex\n * @typechecks\n */\n\n'use strict';\n\nvar ReactRootIndexInjection = {\n /**\n * @param {function} _createReactRootIndex\n */\n injectCreateReactRootIndex: function(_createReactRootIndex) {\n ReactRootIndex.createReactRootIndex = _createReactRootIndex;\n }\n};\n\nvar ReactRootIndex = {\n createReactRootIndex: null,\n injection: ReactRootIndexInjection\n};\n\nmodule.exports = ReactRootIndex;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRootIndex.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/getIteratorFn.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ITERATOR_SYMBOL=typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL='@@iterator';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getIteratorFn(maybeIterable){\nvar iteratorFn=maybeIterable && (\nITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || \nmaybeIterable[FAUX_ITERATOR_SYMBOL]);\n\nif(typeof iteratorFn === 'function'){\nreturn iteratorFn;}}\n\n\n\nmodule.exports = getIteratorFn;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getIteratorFn\n * @typechecks static-only\n */\n\n'use strict';\n\n/* global Symbol */\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (\n (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL]) ||\n maybeIterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/getIteratorFn.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/class/ReactClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponent=require('ReactComponent');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactErrorUtils=require('ReactErrorUtils');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar keyOf=require('keyOf');\nvar warning=require('warning');\n\nvar MIXINS_KEY=keyOf({mixins:null});\n\n\n\n\nvar SpecPolicy=keyMirror({\n\n\n\nDEFINE_ONCE:null,\n\n\n\n\nDEFINE_MANY:null,\n\n\n\nOVERRIDE_BASE:null,\n\n\n\n\n\nDEFINE_MANY_MERGED:null});\n\n\n\nvar injectedMixins=[];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactClassInterface={\n\n\n\n\n\n\n\nmixins:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\nstatics:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\npropTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\ncontextTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\nchildContextTypes:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetDefaultProps:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetInitialState:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\ngetChildContext:SpecPolicy.DEFINE_MANY_MERGED,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrender:SpecPolicy.DEFINE_ONCE,\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillMount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\ncomponentDidMount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillReceiveProps:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nshouldComponentUpdate:SpecPolicy.DEFINE_ONCE,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillUpdate:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentDidUpdate:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\ncomponentWillUnmount:SpecPolicy.DEFINE_MANY,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nupdateComponent:SpecPolicy.OVERRIDE_BASE};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RESERVED_SPEC_KEYS={\ndisplayName:function(Constructor,displayName){\nConstructor.displayName = displayName;},\n\nmixins:function(Constructor,mixins){\nif(mixins){\nfor(var i=0;i < mixins.length;i++) {\nmixSpecIntoComponent(Constructor,mixins[i]);}}},\n\n\n\nchildContextTypes:function(Constructor,childContextTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\nchildContextTypes,\nReactPropTypeLocations.childContext);}\n\n\nConstructor.childContextTypes = assign(\n{},\nConstructor.childContextTypes,\nchildContextTypes);},\n\n\ncontextTypes:function(Constructor,contextTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\ncontextTypes,\nReactPropTypeLocations.context);}\n\n\nConstructor.contextTypes = assign(\n{},\nConstructor.contextTypes,\ncontextTypes);},\n\n\n\n\n\n\ngetDefaultProps:function(Constructor,getDefaultProps){\nif(Constructor.getDefaultProps){\nConstructor.getDefaultProps = createMergedResultFunction(\nConstructor.getDefaultProps,\ngetDefaultProps);}else \n\n{\nConstructor.getDefaultProps = getDefaultProps;}},\n\n\npropTypes:function(Constructor,propTypes){\nif(__DEV__){\nvalidateTypeDef(\nConstructor,\npropTypes,\nReactPropTypeLocations.prop);}\n\n\nConstructor.propTypes = assign(\n{},\nConstructor.propTypes,\npropTypes);},\n\n\nstatics:function(Constructor,statics){\nmixStaticSpecIntoComponent(Constructor,statics);}};\n\n\n\nfunction validateTypeDef(Constructor,typeDef,location){\nfor(var propName in typeDef) {\nif(typeDef.hasOwnProperty(propName)){\n\n\nwarning(\ntypeof typeDef[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually from ' + \n'React.PropTypes.',\nConstructor.displayName || 'ReactClass',\nReactPropTypeLocationNames[location],\npropName);}}}\n\n\n\n\n\nfunction validateMethodOverride(proto,name){\nvar specPolicy=ReactClassInterface.hasOwnProperty(name)?\nReactClassInterface[name]:\nnull;\n\n\nif(ReactClassMixin.hasOwnProperty(name)){\ninvariant(\nspecPolicy === SpecPolicy.OVERRIDE_BASE,\n'ReactClassInterface: You are attempting to override ' + \n'`%s` from your class specification. Ensure that your method names ' + \n'do not overlap with React methods.',\nname);}\n\n\n\n\nif(proto.hasOwnProperty(name)){\ninvariant(\nspecPolicy === SpecPolicy.DEFINE_MANY || \nspecPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n'ReactClassInterface: You are attempting to define ' + \n'`%s` on your component more than once. This conflict may be due ' + \n'to a mixin.',\nname);}}\n\n\n\n\n\n\n\n\nfunction mixSpecIntoComponent(Constructor,spec){\nif(!spec){\nreturn;}\n\n\ninvariant(\ntypeof spec !== 'function',\n'ReactClass: You\\'re attempting to ' + \n'use a component class as a mixin. Instead, just use a regular object.');\n\ninvariant(\n!ReactElement.isValidElement(spec),\n'ReactClass: You\\'re attempting to ' + \n'use a component as a mixin. Instead, just use a regular object.');\n\n\nvar proto=Constructor.prototype;\n\n\n\n\nif(spec.hasOwnProperty(MIXINS_KEY)){\nRESERVED_SPEC_KEYS.mixins(Constructor,spec.mixins);}\n\n\nfor(var name in spec) {\nif(!spec.hasOwnProperty(name)){\ncontinue;}\n\n\nif(name === MIXINS_KEY){\n\ncontinue;}\n\n\nvar property=spec[name];\nvalidateMethodOverride(proto,name);\n\nif(RESERVED_SPEC_KEYS.hasOwnProperty(name)){\nRESERVED_SPEC_KEYS[name](Constructor,property);}else \n{\n\n\n\n\nvar isReactClassMethod=\nReactClassInterface.hasOwnProperty(name);\nvar isAlreadyDefined=proto.hasOwnProperty(name);\nvar markedDontBind=property && property.__reactDontBind;\nvar isFunction=typeof property === 'function';\nvar shouldAutoBind=\nisFunction && \n!isReactClassMethod && \n!isAlreadyDefined && \n!markedDontBind;\n\nif(shouldAutoBind){\nif(!proto.__reactAutoBindMap){\nproto.__reactAutoBindMap = {};}\n\nproto.__reactAutoBindMap[name] = property;\nproto[name] = property;}else \n{\nif(isAlreadyDefined){\nvar specPolicy=ReactClassInterface[name];\n\n\ninvariant(\nisReactClassMethod && (\nspecPolicy === SpecPolicy.DEFINE_MANY_MERGED || \nspecPolicy === SpecPolicy.DEFINE_MANY),\n\n'ReactClass: Unexpected spec policy %s for key %s ' + \n'when mixing in component specs.',\nspecPolicy,\nname);\n\n\n\n\nif(specPolicy === SpecPolicy.DEFINE_MANY_MERGED){\nproto[name] = createMergedResultFunction(proto[name],property);}else \nif(specPolicy === SpecPolicy.DEFINE_MANY){\nproto[name] = createChainedFunction(proto[name],property);}}else \n\n{\nproto[name] = property;\nif(__DEV__){\n\n\nif(typeof property === 'function' && spec.displayName){\nproto[name].displayName = spec.displayName + '_' + name;}}}}}}}\n\n\n\n\n\n\n\n\nfunction mixStaticSpecIntoComponent(Constructor,statics){\nif(!statics){\nreturn;}\n\nfor(var name in statics) {\nvar property=statics[name];\nif(!statics.hasOwnProperty(name)){\ncontinue;}\n\n\nvar isReserved=(name in RESERVED_SPEC_KEYS);\ninvariant(\n!isReserved,\n'ReactClass: You are attempting to define a reserved ' + \n'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' + \n'as an instance property instead; it will still be accessible on the ' + \n'constructor.',\nname);\n\n\nvar isInherited=(name in Constructor);\ninvariant(\n!isInherited,\n'ReactClass: You are attempting to define ' + \n'`%s` on your component more than once. This conflict may be ' + \n'due to a mixin.',\nname);\n\nConstructor[name] = property;}}\n\n\n\n\n\n\n\n\n\n\nfunction mergeIntoWithNoDuplicateKeys(one,two){\ninvariant(\none && two && typeof one === 'object' && typeof two === 'object',\n'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.');\n\n\nfor(var key in two) {\nif(two.hasOwnProperty(key)){\ninvariant(\none[key] === undefined,\n'mergeIntoWithNoDuplicateKeys(): ' + \n'Tried to merge two objects with the same key: `%s`. This conflict ' + \n'may be due to a mixin; in particular, this may be caused by two ' + \n'getInitialState() or getDefaultProps() methods returning objects ' + \n'with clashing keys.',\nkey);\n\none[key] = two[key];}}\n\n\nreturn one;}\n\n\n\n\n\n\n\n\n\n\nfunction createMergedResultFunction(one,two){\nreturn function mergedResult(){\nvar a=one.apply(this,arguments);\nvar b=two.apply(this,arguments);\nif(a == null){\nreturn b;}else \nif(b == null){\nreturn a;}\n\nvar c={};\nmergeIntoWithNoDuplicateKeys(c,a);\nmergeIntoWithNoDuplicateKeys(c,b);\nreturn c;};}\n\n\n\n\n\n\n\n\n\n\n\nfunction createChainedFunction(one,two){\nreturn function chainedFunction(){\none.apply(this,arguments);\ntwo.apply(this,arguments);};}\n\n\n\n\n\n\n\n\n\n\nfunction bindAutoBindMethod(component,method){\nvar boundMethod=method.bind(component);\nif(__DEV__){\nboundMethod.__reactBoundContext = component;\nboundMethod.__reactBoundMethod = method;\nboundMethod.__reactBoundArguments = null;\nvar componentName=component.constructor.displayName;\nvar _bind=boundMethod.bind;\n\nboundMethod.bind = function(newThis){for(var _len=arguments.length,args=Array(_len > 1?_len - 1:0),_key=1;_key < _len;_key++) {args[_key - 1] = arguments[_key];}\n\n\n\nif(newThis !== component && newThis !== null){\nwarning(\nfalse,\n'bind(): React component methods may only be bound to the ' + \n'component instance. See %s',\ncomponentName);}else \n\nif(!args.length){\nwarning(\nfalse,\n'bind(): You are binding a component method to the component. ' + \n'React does this for you automatically in a high-performance ' + \n'way, so you can safely remove this call. See %s',\ncomponentName);\n\nreturn boundMethod;}\n\nvar reboundMethod=_bind.apply(boundMethod,arguments);\nreboundMethod.__reactBoundContext = component;\nreboundMethod.__reactBoundMethod = method;\nreboundMethod.__reactBoundArguments = args;\nreturn reboundMethod;};}\n\n\n\nreturn boundMethod;}\n\n\n\n\n\n\n\nfunction bindAutoBindMethods(component){\nfor(var autoBindKey in component.__reactAutoBindMap) {\nif(component.__reactAutoBindMap.hasOwnProperty(autoBindKey)){\nvar method=component.__reactAutoBindMap[autoBindKey];\ncomponent[autoBindKey] = bindAutoBindMethod(\ncomponent,\nReactErrorUtils.guard(\nmethod,\ncomponent.constructor.displayName + '.' + autoBindKey));}}}\n\n\n\n\n\n\nvar typeDeprecationDescriptor={\nenumerable:false,\nget:function(){\nvar displayName=this.displayName || this.name || 'Component';\nwarning(\nfalse,\n'%s.type is deprecated. Use %s directly to access the class.',\ndisplayName,\ndisplayName);\n\nObject.defineProperty(this,'type',{\nvalue:this});\n\nreturn this;}};\n\n\n\n\n\n\n\nvar ReactClassMixin={\n\n\n\n\n\nreplaceState:function(newState,callback){\nReactUpdateQueue.enqueueReplaceState(this,newState);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}},\n\n\n\n\n\n\n\n\n\nisMounted:function(){\nif(__DEV__){\nvar owner=ReactCurrentOwner.current;\nif(owner !== null){\nwarning(\nowner._warnedAboutRefsInRender,\n'%s is accessing isMounted inside its render() function. ' + \n'render() should be a pure function of props and state. It should ' + \n'never access something that requires stale data from the previous ' + \n'render, such as refs. Move this logic to componentDidMount and ' + \n'componentDidUpdate instead.',\nowner.getName() || 'A component');\n\nowner._warnedAboutRefsInRender = true;}}\n\n\nvar internalInstance=ReactInstanceMap.get(this);\nreturn (\ninternalInstance && \ninternalInstance !== ReactLifeCycle.currentlyMountingInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\nsetProps:function(partialProps,callback){\nReactUpdateQueue.enqueueSetProps(this,partialProps);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}},\n\n\n\n\n\n\n\n\n\n\n\n\nreplaceProps:function(newProps,callback){\nReactUpdateQueue.enqueueReplaceProps(this,newProps);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}}};\n\n\n\n\nvar ReactClassComponent=function(){};\nassign(\nReactClassComponent.prototype,\nReactComponent.prototype,\nReactClassMixin);\n\n\n\n\n\n\n\nvar ReactClass={\n\n\n\n\n\n\n\n\ncreateClass:function(spec){\nvar Constructor=function(props,context){\n\n\n\nif(__DEV__){\nwarning(\nthis instanceof Constructor,\n'Something is calling a React component directly. Use a factory or ' + \n'JSX instead. See: http://fb.me/react-legacyfactory');}\n\n\n\n\nif(this.__reactAutoBindMap){\nbindAutoBindMethods(this);}\n\n\nthis.props = props;\nthis.context = context;\nthis.state = null;\n\n\n\n\nvar initialState=this.getInitialState?this.getInitialState():null;\nif(__DEV__){\n\nif(typeof initialState === 'undefined' && \nthis.getInitialState._isMockFunction){\n\n\ninitialState = null;}}\n\n\ninvariant(\ntypeof initialState === 'object' && !Array.isArray(initialState),\n'%s.getInitialState(): must return an object or null',\nConstructor.displayName || 'ReactCompositeComponent');\n\n\nthis.state = initialState;};\n\nConstructor.prototype = new ReactClassComponent();\nConstructor.prototype.constructor = Constructor;\n\ninjectedMixins.forEach(\nmixSpecIntoComponent.bind(null,Constructor));\n\n\nmixSpecIntoComponent(Constructor,spec);\n\n\nif(Constructor.getDefaultProps){\nConstructor.defaultProps = Constructor.getDefaultProps();}\n\n\nif(__DEV__){\n\n\n\n\nif(Constructor.getDefaultProps){\nConstructor.getDefaultProps.isReactClassApproved = {};}\n\nif(Constructor.prototype.getInitialState){\nConstructor.prototype.getInitialState.isReactClassApproved = {};}}\n\n\n\ninvariant(\nConstructor.prototype.render,\n'createClass(...): Class specification must implement a `render` method.');\n\n\nif(__DEV__){\nwarning(\n!Constructor.prototype.componentShouldUpdate,\n'%s has a method called ' + \n'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + \n'The name is phrased as a question because the function is ' + \n'expected to return a value.',\nspec.displayName || 'A component');}\n\n\n\n\nfor(var methodName in ReactClassInterface) {\nif(!Constructor.prototype[methodName]){\nConstructor.prototype[methodName] = null;}}\n\n\n\n\nConstructor.type = Constructor;\nif(__DEV__){\ntry{\nObject.defineProperty(Constructor,'type',typeDeprecationDescriptor);}\ncatch(x) {}}\n\n\n\n\nreturn Constructor;},\n\n\ninjection:{\ninjectMixin:function(mixin){\ninjectedMixins.push(mixin);}}};\n\n\n\n\n\nmodule.exports = ReactClass;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactClass\n */\n\n'use strict';\n\nvar ReactComponent = require('ReactComponent');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactErrorUtils = require('ReactErrorUtils');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar keyOf = require('keyOf');\nvar warning = require('warning');\n\nvar MIXINS_KEY = keyOf({mixins: null});\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\nvar SpecPolicy = keyMirror({\n /**\n * These methods may be defined only once by the class specification or mixin.\n */\n DEFINE_ONCE: null,\n /**\n * These methods may be defined by both the class specification and mixins.\n * Subsequent definitions will be chained. These methods must return void.\n */\n DEFINE_MANY: null,\n /**\n * These methods are overriding the base class.\n */\n OVERRIDE_BASE: null,\n /**\n * These methods are similar to DEFINE_MANY, except we assume they return\n * objects. We try to merge the keys of the return values of all the mixed in\n * functions. If there is a key conflict we throw.\n */\n DEFINE_MANY_MERGED: null\n});\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or native components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: SpecPolicy.DEFINE_MANY,\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: SpecPolicy.DEFINE_MANY,\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: SpecPolicy.DEFINE_MANY,\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: SpecPolicy.DEFINE_MANY_MERGED,\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: SpecPolicy.DEFINE_ONCE,\n\n\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: SpecPolicy.DEFINE_ONCE,\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: SpecPolicy.DEFINE_MANY,\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: SpecPolicy.DEFINE_MANY,\n\n\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: SpecPolicy.OVERRIDE_BASE\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n childContextTypes,\n ReactPropTypeLocations.childContext\n );\n }\n Constructor.childContextTypes = assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n contextTypes,\n ReactPropTypeLocations.context\n );\n }\n Constructor.contextTypes = assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (__DEV__) {\n validateTypeDef(\n Constructor,\n propTypes,\n ReactPropTypeLocations.prop\n );\n }\n Constructor.propTypes = assign(\n {},\n Constructor.propTypes,\n propTypes\n );\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n }\n};\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but not in __DEV__\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n}\n\nfunction validateMethodOverride(proto, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ?\n ReactClassInterface[name] :\n null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n invariant(\n specPolicy === SpecPolicy.OVERRIDE_BASE,\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (proto.hasOwnProperty(name)) {\n invariant(\n specPolicy === SpecPolicy.DEFINE_MANY ||\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED,\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classses.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n return;\n }\n\n invariant(\n typeof spec !== 'function',\n 'ReactClass: You\\'re attempting to ' +\n 'use a component class as a mixin. Instead, just use a regular object.'\n );\n invariant(\n !ReactElement.isValidElement(spec),\n 'ReactClass: You\\'re attempting to ' +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above\n continue;\n }\n\n var property = spec[name];\n validateMethodOverride(proto, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod =\n ReactClassInterface.hasOwnProperty(name);\n var isAlreadyDefined = proto.hasOwnProperty(name);\n var markedDontBind = property && property.__reactDontBind;\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n !markedDontBind;\n\n if (shouldAutoBind) {\n if (!proto.__reactAutoBindMap) {\n proto.__reactAutoBindMap = {};\n }\n proto.__reactAutoBindMap[name] = property;\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride\n invariant(\n isReactClassMethod && (\n specPolicy === SpecPolicy.DEFINE_MANY_MERGED ||\n specPolicy === SpecPolicy.DEFINE_MANY\n ),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === SpecPolicy.DEFINE_MANY_MERGED) {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === SpecPolicy.DEFINE_MANY) {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (__DEV__) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (__DEV__) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n /* eslint-disable block-scoped-var, no-undef */\n boundMethod.bind = function(newThis, ...args) {\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n } else if (!args.length) {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n /* eslint-enable */\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n for (var autoBindKey in component.__reactAutoBindMap) {\n if (component.__reactAutoBindMap.hasOwnProperty(autoBindKey)) {\n var method = component.__reactAutoBindMap[autoBindKey];\n component[autoBindKey] = bindAutoBindMethod(\n component,\n ReactErrorUtils.guard(\n method,\n component.constructor.displayName + '.' + autoBindKey\n )\n );\n }\n }\n}\n\nvar typeDeprecationDescriptor = {\n enumerable: false,\n get: function() {\n var displayName = this.displayName || this.name || 'Component';\n warning(\n false,\n '%s.type is deprecated. Use %s directly to access the class.',\n displayName,\n displayName\n );\n Object.defineProperty(this, 'type', {\n value: this\n });\n return this;\n }\n};\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n ReactUpdateQueue.enqueueReplaceState(this, newState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (__DEV__) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing isMounted inside its render() function. ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n );\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(this);\n return (\n internalInstance &&\n internalInstance !== ReactLifeCycle.currentlyMountingInstance\n );\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n setProps: function(partialProps, callback) {\n ReactUpdateQueue.enqueueSetProps(this, partialProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n },\n\n /**\n * Replace all the props.\n *\n * @param {object} newProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @public\n * @deprecated\n */\n replaceProps: function(newProps, callback) {\n ReactUpdateQueue.enqueueReplaceProps(this, newProps);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n }\n};\n\nvar ReactClassComponent = function() {};\nassign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function(spec) {\n var Constructor = function(props, context) {\n // This constructor is overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (__DEV__) {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: http://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindMap) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (__DEV__) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof initialState === 'undefined' &&\n this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n };\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n\n injectedMixins.forEach(\n mixSpecIntoComponent.bind(null, Constructor)\n );\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (__DEV__) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (__DEV__) {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n // Legacy hook\n Constructor.type = Constructor;\n if (__DEV__) {\n try {\n Object.defineProperty(Constructor, 'type', typeDeprecationDescriptor);\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function(mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/class/ReactClass.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/modern/class/ReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactUpdateQueue=require('ReactUpdateQueue');\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\nfunction ReactComponent(props,context){\nthis.props = props;\nthis.context = context;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nReactComponent.prototype.setState = function(partialState,callback){\ninvariant(\ntypeof partialState === 'object' || \ntypeof partialState === 'function' || \npartialState == null,\n'setState(...): takes an object of state variables to update or a ' + \n'function which returns an object of state variables.');\n\nif(__DEV__){\nwarning(\npartialState != null,\n'setState(...): You passed an undefined or null state object; ' + \n'instead, use forceUpdate().');}\n\n\nReactUpdateQueue.enqueueSetState(this,partialState);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nReactComponent.prototype.forceUpdate = function(callback){\nReactUpdateQueue.enqueueForceUpdate(this);\nif(callback){\nReactUpdateQueue.enqueueCallback(this,callback);}};\n\n\n\n\n\n\n\n\nif(__DEV__){\nvar deprecatedAPIs={\ngetDOMNode:'getDOMNode',\nisMounted:'isMounted',\nreplaceProps:'replaceProps',\nreplaceState:'replaceState',\nsetProps:'setProps'};\n\nvar defineDeprecationWarning=function(methodName,displayName){\ntry{\nObject.defineProperty(ReactComponent.prototype,methodName,{\nget:function(){\nwarning(\nfalse,\n'%s(...) is deprecated in plain JavaScript React classes.',\ndisplayName);\n\nreturn undefined;}});}\n\n\ncatch(x) {}};\n\n\n\nfor(var fnName in deprecatedAPIs) {\nif(deprecatedAPIs.hasOwnProperty(fnName)){\ndefineDeprecationWarning(fnName,deprecatedAPIs[fnName]);}}}\n\n\n\n\nmodule.exports = ReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponent\n */\n\n'use strict';\n\nvar ReactUpdateQueue = require('ReactUpdateQueue');\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context) {\n this.props = props;\n this.context = context;\n}\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function(partialState, callback) {\n invariant(\n typeof partialState === 'object' ||\n typeof partialState === 'function' ||\n partialState == null,\n 'setState(...): takes an object of state variables to update or a ' +\n 'function which returns an object of state variables.'\n );\n if (__DEV__) {\n warning(\n partialState != null,\n 'setState(...): You passed an undefined or null state object; ' +\n 'instead, use forceUpdate().'\n );\n }\n ReactUpdateQueue.enqueueSetState(this, partialState);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function(callback) {\n ReactUpdateQueue.enqueueForceUpdate(this);\n if (callback) {\n ReactUpdateQueue.enqueueCallback(this, callback);\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (__DEV__) {\n var deprecatedAPIs = {\n getDOMNode: 'getDOMNode',\n isMounted: 'isMounted',\n replaceProps: 'replaceProps',\n replaceState: 'replaceState',\n setProps: 'setProps'\n };\n var defineDeprecationWarning = function(methodName, displayName) {\n try {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function() {\n warning(\n false,\n '%s(...) is deprecated in plain JavaScript React classes.',\n displayName\n );\n return undefined;\n }\n });\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/modern/class/ReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdateQueue.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactUpdates=require('ReactUpdates');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nfunction enqueueUpdate(internalInstance){\nif(internalInstance !== ReactLifeCycle.currentlyMountingInstance){\n\n\n\n\nReactUpdates.enqueueUpdate(internalInstance);}}\n\n\n\nfunction getInternalInstanceReadyForUpdate(publicInstance,callerName){\ninvariant(\nReactCurrentOwner.current == null,\n'%s(...): Cannot update during an existing state transition ' + \n'(such as within `render`). Render methods should be a pure function ' + \n'of props and state.',\ncallerName);\n\n\nvar internalInstance=ReactInstanceMap.get(publicInstance);\nif(!internalInstance){\nif(__DEV__){\n\n\n\nwarning(\n!callerName,\n'%s(...): Can only update a mounted or mounting component. ' + \n'This usually means you called %s() on an unmounted ' + \n'component. This is a no-op.',\ncallerName,\ncallerName);}\n\n\nreturn null;}\n\n\nif(internalInstance === ReactLifeCycle.currentlyUnmountingInstance){\nreturn null;}\n\n\nreturn internalInstance;}\n\n\n\n\n\n\nvar ReactUpdateQueue={\n\n\n\n\n\n\n\n\n\nenqueueCallback:function(publicInstance,callback){\ninvariant(\ntypeof callback === 'function',\n'enqueueCallback(...): You called `setProps`, `replaceProps`, ' + \n'`setState`, `replaceState`, or `forceUpdate` with a callback that ' + \n'isn\\'t callable.');\n\nvar internalInstance=getInternalInstanceReadyForUpdate(publicInstance);\n\n\n\n\n\n\nif(!internalInstance || \ninternalInstance === ReactLifeCycle.currentlyMountingInstance){\nreturn null;}\n\n\nif(internalInstance._pendingCallbacks){\ninternalInstance._pendingCallbacks.push(callback);}else \n{\ninternalInstance._pendingCallbacks = [callback];}\n\n\n\n\n\nenqueueUpdate(internalInstance);},\n\n\nenqueueCallbackInternal:function(internalInstance,callback){\ninvariant(\ntypeof callback === 'function',\n'enqueueCallback(...): You called `setProps`, `replaceProps`, ' + \n'`setState`, `replaceState`, or `forceUpdate` with a callback that ' + \n'isn\\'t callable.');\n\nif(internalInstance._pendingCallbacks){\ninternalInstance._pendingCallbacks.push(callback);}else \n{\ninternalInstance._pendingCallbacks = [callback];}\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueForceUpdate:function(publicInstance){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'forceUpdate');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninternalInstance._pendingForceUpdate = true;\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueReplaceState:function(publicInstance,completeState){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'replaceState');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninternalInstance._pendingStateQueue = [completeState];\ninternalInstance._pendingReplaceState = true;\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\n\n\n\nenqueueSetState:function(publicInstance,partialState){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'setState');\n\n\nif(!internalInstance){\nreturn;}\n\n\nvar queue=\ninternalInstance._pendingStateQueue || (\ninternalInstance._pendingStateQueue = []);\nqueue.push(partialState);\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\nenqueueSetProps:function(publicInstance,partialProps){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'setProps');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninvariant(\ninternalInstance._isTopLevel,\n'setProps(...): You called `setProps` on a ' + \n'component with a parent. This is an anti-pattern since props will ' + \n'get reactively updated when rendered. Instead, change the owner\\'s ' + \n'`render` method to pass the correct value as props to the component ' + \n'where it is created.');\n\n\n\n\nvar element=internalInstance._pendingElement || \ninternalInstance._currentElement;\nvar props=assign({},element.props,partialProps);\ninternalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nprops);\n\n\nenqueueUpdate(internalInstance);},\n\n\n\n\n\n\n\n\n\nenqueueReplaceProps:function(publicInstance,props){\nvar internalInstance=getInternalInstanceReadyForUpdate(\npublicInstance,\n'replaceProps');\n\n\nif(!internalInstance){\nreturn;}\n\n\ninvariant(\ninternalInstance._isTopLevel,\n'replaceProps(...): You called `replaceProps` on a ' + \n'component with a parent. This is an anti-pattern since props will ' + \n'get reactively updated when rendered. Instead, change the owner\\'s ' + \n'`render` method to pass the correct value as props to the component ' + \n'where it is created.');\n\n\n\n\nvar element=internalInstance._pendingElement || \ninternalInstance._currentElement;\ninternalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nprops);\n\n\nenqueueUpdate(internalInstance);},\n\n\nenqueueElementInternal:function(internalInstance,newElement){\ninternalInstance._pendingElement = newElement;\nenqueueUpdate(internalInstance);}};\n\n\n\n\nmodule.exports = ReactUpdateQueue;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdateQueue\n */\n\n'use strict';\n\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactUpdates = require('ReactUpdates');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nfunction enqueueUpdate(internalInstance) {\n if (internalInstance !== ReactLifeCycle.currentlyMountingInstance) {\n // If we're in a componentWillMount handler, don't enqueue a rerender\n // because ReactUpdates assumes we're in a browser context (which is\n // wrong for server rendering) and we're about to do a render anyway.\n // See bug in #1740.\n ReactUpdates.enqueueUpdate(internalInstance);\n }\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n invariant(\n ReactCurrentOwner.current == null,\n '%s(...): Cannot update during an existing state transition ' +\n '(such as within `render`). Render methods should be a pure function ' +\n 'of props and state.',\n callerName\n );\n\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (__DEV__) {\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n warning(\n !callerName,\n '%s(...): Can only update a mounted or mounting component. ' +\n 'This usually means you called %s() on an unmounted ' +\n 'component. This is a no-op.',\n callerName,\n callerName\n );\n }\n return null;\n }\n\n if (internalInstance === ReactLifeCycle.currentlyUnmountingInstance) {\n return null;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function(publicInstance, callback) {\n invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n );\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance ||\n internalInstance === ReactLifeCycle.currentlyMountingInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function(internalInstance, callback) {\n invariant(\n typeof callback === 'function',\n 'enqueueCallback(...): You called `setProps`, `replaceProps`, ' +\n '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +\n 'isn\\'t callable.'\n );\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldUpdateComponent`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function(publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'forceUpdate'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function(publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function(publicInstance, partialState) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setState'\n );\n\n if (!internalInstance) {\n return;\n }\n\n var queue =\n internalInstance._pendingStateQueue ||\n (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialProps Subset of the next props.\n * @internal\n */\n enqueueSetProps: function(publicInstance, partialProps) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'setProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n invariant(\n internalInstance._isTopLevel,\n 'setProps(...): You called `setProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n );\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n var props = assign({}, element.props, partialProps);\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the props.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} props New props.\n * @internal\n */\n enqueueReplaceProps: function(publicInstance, props) {\n var internalInstance = getInternalInstanceReadyForUpdate(\n publicInstance,\n 'replaceProps'\n );\n\n if (!internalInstance) {\n return;\n }\n\n invariant(\n internalInstance._isTopLevel,\n 'replaceProps(...): You called `replaceProps` on a ' +\n 'component with a parent. This is an anti-pattern since props will ' +\n 'get reactively updated when rendered. Instead, change the owner\\'s ' +\n '`render` method to pass the correct value as props to the component ' +\n 'where it is created.'\n );\n\n // Merge with the pending element if it exists, otherwise with existing\n // element props.\n var element = internalInstance._pendingElement ||\n internalInstance._currentElement;\n internalInstance._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n props\n );\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function(internalInstance, newElement) {\n internalInstance._pendingElement = newElement;\n enqueueUpdate(internalInstance);\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdateQueue.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactLifeCycle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLifeCycle={\ncurrentlyMountingInstance:null,\ncurrentlyUnmountingInstance:null};\n\n\nmodule.exports = ReactLifeCycle;","sourceCode":"/**\n * Copyright 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactLifeCycle\n */\n\n'use strict';\n\n/**\n * This module manages the bookkeeping when a component is in the process\n * of being mounted or being unmounted. This is used as a way to enforce\n * invariants (or warnings) when it is not recommended to call\n * setState/forceUpdate.\n *\n * currentlyMountingInstance: During the construction phase, it is not possible\n * to trigger an update since the instance is not fully mounted yet. However, we\n * currently allow this as a convenience for mutating the initial state.\n *\n * currentlyUnmountingInstance: During the unmounting phase, the instance is\n * still mounted and can therefore schedule an update. However, this is not\n * recommended and probably an error since it's about to be unmounted.\n * Therefore we still want to trigger in an error for that case.\n */\n\nvar ReactLifeCycle = {\n currentlyMountingInstance: null,\n currentlyUnmountingInstance: null\n};\n\nmodule.exports = ReactLifeCycle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactLifeCycle.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactInstanceMap.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceMap={\n\n\n\n\n\n\nremove:function(key){\nkey._reactInternalInstance = undefined;},\n\n\nget:function(key){\nreturn key._reactInternalInstance;},\n\n\nhas:function(key){\nreturn key._reactInternalInstance !== undefined;},\n\n\nset:function(key,value){\nkey._reactInternalInstance = value;}};\n\n\n\n\nmodule.exports = ReactInstanceMap;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactInstanceMap\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function(key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function(key) {\n return key._reactInternalInstance;\n },\n\n has: function(key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function(key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactInstanceMap.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdates.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar CallbackQueue=require('CallbackQueue');\nvar PooledClass=require('PooledClass');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar Transaction=require('Transaction');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar dirtyComponents=[];\nvar asapCallbackQueue=CallbackQueue.getPooled();\nvar asapEnqueued=false;\n\nvar batchingStrategy=null;\n\nfunction ensureInjected(){\ninvariant(\nReactUpdates.ReactReconcileTransaction && batchingStrategy,\n'ReactUpdates: must inject a reconcile transaction class and batching ' + \n'strategy');}\n\n\n\nvar NESTED_UPDATES={\ninitialize:function(){\nthis.dirtyComponentsLength = dirtyComponents.length;},\n\nclose:function(){\nif(this.dirtyComponentsLength !== dirtyComponents.length){\n\n\n\n\n\ndirtyComponents.splice(0,this.dirtyComponentsLength);\nflushBatchedUpdates();}else \n{\ndirtyComponents.length = 0;}}};\n\n\n\n\nvar UPDATE_QUEUEING={\ninitialize:function(){\nthis.callbackQueue.reset();},\n\nclose:function(){\nthis.callbackQueue.notifyAll();}};\n\n\n\nvar TRANSACTION_WRAPPERS=[NESTED_UPDATES,UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction(){\nthis.reinitializeTransaction();\nthis.dirtyComponentsLength = null;\nthis.callbackQueue = CallbackQueue.getPooled();\nthis.reconcileTransaction = \nReactUpdates.ReactReconcileTransaction.getPooled();}\n\n\nassign(\nReactUpdatesFlushTransaction.prototype,\nTransaction.Mixin,{\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;},\n\n\ndestructor:function(){\nthis.dirtyComponentsLength = null;\nCallbackQueue.release(this.callbackQueue);\nthis.callbackQueue = null;\nReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\nthis.reconcileTransaction = null;},\n\n\nperform:function(method,scope,a){\n\n\nreturn Transaction.Mixin.perform.call(\nthis,\nthis.reconcileTransaction.perform,\nthis.reconcileTransaction,\nmethod,\nscope,\na);}});\n\n\n\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback,a,b,c,d){\nensureInjected();\nbatchingStrategy.batchedUpdates(callback,a,b,c,d);}\n\n\n\n\n\n\n\n\n\nfunction mountOrderComparator(c1,c2){\nreturn c1._mountOrder - c2._mountOrder;}\n\n\nfunction runBatchedUpdates(transaction){\nvar len=transaction.dirtyComponentsLength;\ninvariant(\nlen === dirtyComponents.length,\n'Expected flush transaction\\'s stored dirty-components length (%s) to ' + \n'match dirty-components array length (%s).',\nlen,\ndirtyComponents.length);\n\n\n\n\n\ndirtyComponents.sort(mountOrderComparator);\n\nfor(var i=0;i < len;i++) {\n\n\n\nvar component=dirtyComponents[i];\n\n\n\n\nvar callbacks=component._pendingCallbacks;\ncomponent._pendingCallbacks = null;\n\nReactReconciler.performUpdateIfNecessary(\ncomponent,\ntransaction.reconcileTransaction);\n\n\nif(callbacks){\nfor(var j=0;j < callbacks.length;j++) {\ntransaction.callbackQueue.enqueue(\ncallbacks[j],\ncomponent.getPublicInstance());}}}}\n\n\n\n\n\n\nvar flushBatchedUpdates=function(){\n\n\n\n\nwhile(dirtyComponents.length || asapEnqueued) {\nif(dirtyComponents.length){\nvar transaction=ReactUpdatesFlushTransaction.getPooled();\ntransaction.perform(runBatchedUpdates,null,transaction);\nReactUpdatesFlushTransaction.release(transaction);}\n\n\nif(asapEnqueued){\nasapEnqueued = false;\nvar queue=asapCallbackQueue;\nasapCallbackQueue = CallbackQueue.getPooled();\nqueue.notifyAll();\nCallbackQueue.release(queue);}}};\n\n\n\nflushBatchedUpdates = ReactPerf.measure(\n'ReactUpdates',\n'flushBatchedUpdates',\nflushBatchedUpdates);\n\n\n\n\n\n\nfunction enqueueUpdate(component){\nensureInjected();\n\n\n\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'enqueueUpdate(): Render methods should be a pure function of props ' + \n'and state; triggering nested component updates from render is not ' + \n'allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\nif(!batchingStrategy.isBatchingUpdates){\nbatchingStrategy.batchedUpdates(enqueueUpdate,component);\nreturn;}\n\n\ndirtyComponents.push(component);}\n\n\n\n\n\n\nfunction asap(callback,context){\ninvariant(\nbatchingStrategy.isBatchingUpdates,\n'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' + \n'updates are not being batched.');\n\nasapCallbackQueue.enqueue(callback,context);\nasapEnqueued = true;}\n\n\nvar ReactUpdatesInjection={\ninjectReconcileTransaction:function(ReconcileTransaction){\ninvariant(\nReconcileTransaction,\n'ReactUpdates: must provide a reconcile transaction class');\n\nReactUpdates.ReactReconcileTransaction = ReconcileTransaction;},\n\n\ninjectBatchingStrategy:function(_batchingStrategy){\ninvariant(\n_batchingStrategy,\n'ReactUpdates: must provide a batching strategy');\n\ninvariant(\ntypeof _batchingStrategy.batchedUpdates === 'function',\n'ReactUpdates: must provide a batchedUpdates() function');\n\ninvariant(\ntypeof _batchingStrategy.isBatchingUpdates === 'boolean',\n'ReactUpdates: must provide an isBatchingUpdates boolean attribute');\n\nbatchingStrategy = _batchingStrategy;}};\n\n\n\nvar ReactUpdates={\n\n\n\n\n\n\nReactReconcileTransaction:null,\n\nbatchedUpdates:batchedUpdates,\nenqueueUpdate:enqueueUpdate,\nflushBatchedUpdates:flushBatchedUpdates,\ninjection:ReactUpdatesInjection,\nasap:asap};\n\n\nmodule.exports = ReactUpdates;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactUpdates\n */\n\n'use strict';\n\nvar CallbackQueue = require('CallbackQueue');\nvar PooledClass = require('PooledClass');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar Transaction = require('Transaction');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar dirtyComponents = [];\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n invariant(\n ReactUpdates.ReactReconcileTransaction && batchingStrategy,\n 'ReactUpdates: must inject a reconcile transaction class and batching ' +\n 'strategy'\n );\n}\n\nvar NESTED_UPDATES = {\n initialize: function() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function() {\n this.callbackQueue.reset();\n },\n close: function() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction =\n ReactUpdates.ReactReconcileTransaction.getPooled();\n}\n\nassign(\n ReactUpdatesFlushTransaction.prototype,\n Transaction.Mixin, {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.Mixin.perform.call(\n this,\n this.reconcileTransaction.perform,\n this.reconcileTransaction,\n method,\n scope,\n a\n );\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d) {\n ensureInjected();\n batchingStrategy.batchedUpdates(callback, a, b, c, d);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n invariant(\n len === dirtyComponents.length,\n 'Expected flush transaction\\'s stored dirty-components length (%s) to ' +\n 'match dirty-components array length (%s).',\n len,\n dirtyComponents.length\n );\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n ReactReconciler.performUpdateIfNecessary(\n component,\n transaction.reconcileTransaction\n );\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(\n callbacks[j],\n component.getPublicInstance()\n );\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\nflushBatchedUpdates = ReactPerf.measure(\n 'ReactUpdates',\n 'flushBatchedUpdates',\n flushBatchedUpdates\n);\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setProps, setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n warning(\n ReactCurrentOwner.current == null,\n 'enqueueUpdate(): Render methods should be a pure function of props ' +\n 'and state; triggering nested component updates from render is not ' +\n 'allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n invariant(\n batchingStrategy.isBatchingUpdates,\n 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context where' +\n 'updates are not being batched.'\n );\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function(ReconcileTransaction) {\n invariant(\n ReconcileTransaction,\n 'ReactUpdates: must provide a reconcile transaction class'\n );\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function(_batchingStrategy) {\n invariant(\n _batchingStrategy,\n 'ReactUpdates: must provide a batching strategy'\n );\n invariant(\n typeof _batchingStrategy.batchedUpdates === 'function',\n 'ReactUpdates: must provide a batchedUpdates() function'\n );\n invariant(\n typeof _batchingStrategy.isBatchingUpdates === 'boolean',\n 'ReactUpdates: must provide an isBatchingUpdates boolean attribute'\n );\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactUpdates.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/CallbackQueue.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction CallbackQueue(){\nthis._callbacks = null;\nthis._contexts = null;}\n\n\nassign(CallbackQueue.prototype,{\n\n\n\n\n\n\n\n\nenqueue:function(callback,context){\nthis._callbacks = this._callbacks || [];\nthis._contexts = this._contexts || [];\nthis._callbacks.push(callback);\nthis._contexts.push(context);},\n\n\n\n\n\n\n\n\nnotifyAll:function(){\nvar callbacks=this._callbacks;\nvar contexts=this._contexts;\nif(callbacks){\ninvariant(\ncallbacks.length === contexts.length,\n'Mismatched list of contexts in callback queue');\n\nthis._callbacks = null;\nthis._contexts = null;\nfor(var i=0,l=callbacks.length;i < l;i++) {\ncallbacks[i].call(contexts[i]);}\n\ncallbacks.length = 0;\ncontexts.length = 0;}},\n\n\n\n\n\n\n\n\nreset:function(){\nthis._callbacks = null;\nthis._contexts = null;},\n\n\n\n\n\ndestructor:function(){\nthis.reset();}});\n\n\n\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CallbackQueue\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\nfunction CallbackQueue() {\n this._callbacks = null;\n this._contexts = null;\n}\n\nassign(CallbackQueue.prototype, {\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n enqueue: function(callback, context) {\n this._callbacks = this._callbacks || [];\n this._contexts = this._contexts || [];\n this._callbacks.push(callback);\n this._contexts.push(context);\n },\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n notifyAll: function() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n if (callbacks) {\n invariant(\n callbacks.length === contexts.length,\n 'Mismatched list of contexts in callback queue'\n );\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0, l = callbacks.length; i < l; i++) {\n callbacks[i].call(contexts[i]);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n },\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n reset: function() {\n this._callbacks = null;\n this._contexts = null;\n },\n\n /**\n * `PooledClass` looks for this.\n */\n destructor: function() {\n this.reset();\n }\n\n});\n\nPooledClass.addPoolingTo(CallbackQueue);\n\nmodule.exports = CallbackQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/CallbackQueue.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPerf={\n\n\n\n\nenableMeasure:false,\n\n\n\n\n\nstoredMeasure:_noMeasure,\n\n\n\n\n\n\nmeasureMethods:function(object,objectName,methodNames){\nif(__DEV__){\nfor(var key in methodNames) {\nif(!methodNames.hasOwnProperty(key)){\ncontinue;}\n\nobject[key] = ReactPerf.measure(\nobjectName,\nmethodNames[key],\nobject[key]);}}},\n\n\n\n\n\n\n\n\n\n\n\n\n\nmeasure:function(objName,fnName,func){\nif(__DEV__){\nvar measuredFunc=null;\nvar wrapper=function(){\nif(ReactPerf.enableMeasure){\nif(!measuredFunc){\nmeasuredFunc = ReactPerf.storedMeasure(objName,fnName,func);}\n\nreturn measuredFunc.apply(this,arguments);}\n\nreturn func.apply(this,arguments);};\n\nwrapper.displayName = objName + '_' + fnName;\nreturn wrapper;}\n\nreturn func;},\n\n\ninjection:{\n\n\n\ninjectMeasure:function(measure){\nReactPerf.storedMeasure = measure;}}};\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _noMeasure(objName,fnName,func){\nreturn func;}\n\n\nmodule.exports = ReactPerf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPerf\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * ReactPerf is a general AOP system designed to measure performance. This\n * module only has the hooks: see ReactDefaultPerf for the analysis tool.\n */\nvar ReactPerf = {\n /**\n * Boolean to enable/disable measurement. Set to false by default to prevent\n * accidental logging and perf loss.\n */\n enableMeasure: false,\n\n /**\n * Holds onto the measure function in use. By default, don't measure\n * anything, but we'll override this if we inject a measure function.\n */\n storedMeasure: _noMeasure,\n\n /**\n * @param {object} object\n * @param {string} objectName\n * @param {object<string>} methodNames\n */\n measureMethods: function(object, objectName, methodNames) {\n if (__DEV__) {\n for (var key in methodNames) {\n if (!methodNames.hasOwnProperty(key)) {\n continue;\n }\n object[key] = ReactPerf.measure(\n objectName,\n methodNames[key],\n object[key]\n );\n }\n }\n },\n\n /**\n * Use this to wrap methods you want to measure. Zero overhead in production.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\n measure: function(objName, fnName, func) {\n if (__DEV__) {\n var measuredFunc = null;\n var wrapper = function() {\n if (ReactPerf.enableMeasure) {\n if (!measuredFunc) {\n measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);\n }\n return measuredFunc.apply(this, arguments);\n }\n return func.apply(this, arguments);\n };\n wrapper.displayName = objName + '_' + fnName;\n return wrapper;\n }\n return func;\n },\n\n injection: {\n /**\n * @param {function} measure\n */\n injectMeasure: function(measure) {\n ReactPerf.storedMeasure = measure;\n }\n }\n};\n\n/**\n * Simply passes through the measured function, without measuring it.\n *\n * @param {string} objName\n * @param {string} fnName\n * @param {function} func\n * @return {function}\n */\nfunction _noMeasure(objName, fnName, func) {\n return func;\n}\n\nmodule.exports = ReactPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactPerf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactReconciler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactRef=require('ReactRef');\nvar ReactElementValidator=require('ReactElementValidator');\n\n\n\n\n\nfunction attachRefs(){\nReactRef.attachRefs(this,this._currentElement);}\n\n\nvar ReactReconciler={\n\n\n\n\n\n\n\n\n\n\n\nmountComponent:function(internalInstance,rootID,transaction,context){\nvar markup=internalInstance.mountComponent(rootID,transaction,context);\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(\ninternalInstance._currentElement);}\n\n\ntransaction.getReactMountReady().enqueue(attachRefs,internalInstance);\nreturn markup;},\n\n\n\n\n\n\n\n\nunmountComponent:function(internalInstance){\nReactRef.detachRefs(internalInstance,internalInstance._currentElement);\ninternalInstance.unmountComponent();},\n\n\n\n\n\n\n\n\n\n\n\nreceiveComponent:function(\ninternalInstance,nextElement,transaction,context)\n{\nvar prevElement=internalInstance._currentElement;\n\nif(nextElement === prevElement && nextElement._owner != null){\n\n\n\n\n\n\n\nreturn;}\n\n\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(nextElement);}\n\n\nvar refsChanged=ReactRef.shouldUpdateRefs(\nprevElement,\nnextElement);\n\n\nif(refsChanged){\nReactRef.detachRefs(internalInstance,prevElement);}\n\n\ninternalInstance.receiveComponent(nextElement,transaction,context);\n\nif(refsChanged){\ntransaction.getReactMountReady().enqueue(attachRefs,internalInstance);}},\n\n\n\n\n\n\n\n\n\n\nperformUpdateIfNecessary:function(\ninternalInstance,\ntransaction)\n{\ninternalInstance.performUpdateIfNecessary(transaction);}};\n\n\n\n\nmodule.exports = ReactReconciler;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactReconciler\n */\n\n'use strict';\n\nvar ReactRef = require('ReactRef');\nvar ReactElementValidator = require('ReactElementValidator');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(internalInstance, rootID, transaction, context) {\n var markup = internalInstance.mountComponent(rootID, transaction, context);\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n internalInstance._currentElement\n );\n }\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function(internalInstance) {\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent();\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function(\n internalInstance, nextElement, transaction, context\n ) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && nextElement._owner != null) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n return;\n }\n\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(\n prevElement,\n nextElement\n );\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(\n internalInstance,\n transaction\n ) {\n internalInstance.performUpdateIfNecessary(transaction);\n }\n\n};\n\nmodule.exports = ReactReconciler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactReconciler.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRef.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactOwner=require('ReactOwner');\n\nvar ReactRef={};\n\nfunction attachRef(ref,component,owner){\nif(typeof ref === 'function'){\nref(component.getPublicInstance());}else \n{\n\nReactOwner.addComponentAsRefTo(component,ref,owner);}}\n\n\n\nfunction detachRef(ref,component,owner){\nif(typeof ref === 'function'){\nref(null);}else \n{\n\nReactOwner.removeComponentAsRefFrom(component,ref,owner);}}\n\n\n\nReactRef.attachRefs = function(instance,element){\nvar ref=element.ref;\nif(ref != null){\nattachRef(ref,instance,element._owner);}};\n\n\n\nReactRef.shouldUpdateRefs = function(prevElement,nextElement){\n\n\n\n\n\n\n\n\n\n\n\n\nreturn (\nnextElement._owner !== prevElement._owner || \nnextElement.ref !== prevElement.ref);};\n\n\n\nReactRef.detachRefs = function(instance,element){\nvar ref=element.ref;\nif(ref != null){\ndetachRef(ref,instance,element._owner);}};\n\n\n\nmodule.exports = ReactRef;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactRef\n */\n\n'use strict';\n\nvar ReactOwner = require('ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function(prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n return (\n nextElement._owner !== prevElement._owner ||\n nextElement.ref !== prevElement.ref\n );\n};\n\nReactRef.detachRefs = function(instance, element) {\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactRef.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactOwner.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactOwner={\n\n\n\n\n\n\nisValidOwner:function(object){\nreturn !!(\nobject && \ntypeof object.attachRef === 'function' && \ntypeof object.detachRef === 'function');},\n\n\n\n\n\n\n\n\n\n\n\n\naddComponentAsRefTo:function(component,ref,owner){\ninvariant(\nReactOwner.isValidOwner(owner),\n'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' + \n'usually means that you\\'re trying to add a ref to a component that ' + \n'doesn\\'t have an owner (that is, was not created inside of another ' + \n'component\\'s `render` method). Try rendering this component inside of ' + \n'a new top-level component which will hold the ref.');\n\nowner.attachRef(ref,component);},\n\n\n\n\n\n\n\n\n\n\n\nremoveComponentAsRefFrom:function(component,ref,owner){\ninvariant(\nReactOwner.isValidOwner(owner),\n'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' + \n'usually means that you\\'re trying to remove a ref to a component that ' + \n'doesn\\'t have an owner (that is, was not created inside of another ' + \n'component\\'s `render` method). Try rendering this component inside of ' + \n'a new top-level component which will hold the ref.');\n\n\n\nif(owner.getPublicInstance().refs[ref] === component.getPublicInstance()){\nowner.detachRef(ref);}}};\n\n\n\n\n\nmodule.exports = ReactOwner;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactOwner\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n\n /**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\n isValidOwner: function(object) {\n return !!(\n object &&\n typeof object.attachRef === 'function' &&\n typeof object.detachRef === 'function'\n );\n },\n\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function(component, ref, owner) {\n invariant(\n ReactOwner.isValidOwner(owner),\n 'addComponentAsRefTo(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to add a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n );\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function(component, ref, owner) {\n invariant(\n ReactOwner.isValidOwner(owner),\n 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. This ' +\n 'usually means that you\\'re trying to remove a ref to a component that ' +\n 'doesn\\'t have an owner (that is, was not created inside of another ' +\n 'component\\'s `render` method). Try rendering this component inside of ' +\n 'a new top-level component which will hold the ref.'\n );\n // Check that `component` is still the current ref because we do not want to\n // detach the ref if another component stole it.\n if (owner.getPublicInstance().refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactOwner.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElementValidator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactNativeComponent=require('ReactNativeComponent');\n\nvar getIteratorFn=require('getIteratorFn');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nfunction getDeclarationErrorAddendum(){\nif(ReactCurrentOwner.current){\nvar name=ReactCurrentOwner.current.getName();\nif(name){\nreturn ' Check the render method of `' + name + '`.';}}\n\n\nreturn '';}\n\n\n\n\n\n\n\nvar ownerHasKeyUseWarning={};\n\nvar loggedTypeFailures={};\n\nvar NUMERIC_PROPERTY_REGEX=/^\\d+$/;\n\n\n\n\n\n\n\nfunction getName(instance){\nvar publicInstance=instance && instance.getPublicInstance();\nif(!publicInstance){\nreturn undefined;}\n\nvar constructor=publicInstance.constructor;\nif(!constructor){\nreturn undefined;}\n\nreturn constructor.displayName || constructor.name || undefined;}\n\n\n\n\n\n\n\n\nfunction getCurrentOwnerDisplayName(){\nvar current=ReactCurrentOwner.current;\nreturn (\ncurrent && getName(current) || undefined);}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validateExplicitKey(element,parentType){\nif(element._store.validated || element.key != null){\nreturn;}\n\nelement._store.validated = true;\n\nwarnAndMonitorForKeyUse(\n'Each child in an array or iterator should have a unique \"key\" prop.',\nelement,\nparentType);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validatePropertyKey(name,element,parentType){\nif(!NUMERIC_PROPERTY_REGEX.test(name)){\nreturn;}\n\nwarnAndMonitorForKeyUse(\n'Child objects should have non-numeric keys so ordering is preserved.',\nelement,\nparentType);}\n\n\n\n\n\n\n\n\n\n\n\nfunction warnAndMonitorForKeyUse(message,element,parentType){\nvar ownerName=getCurrentOwnerDisplayName();\nvar parentName=typeof parentType === 'string'?\nparentType:parentType.displayName || parentType.name;\n\nvar useName=ownerName || parentName;\nvar memoizer=ownerHasKeyUseWarning[message] || (\nownerHasKeyUseWarning[message] = {});\n\nif(memoizer.hasOwnProperty(useName)){\nreturn;}\n\nmemoizer[useName] = true;\n\nvar parentOrOwnerAddendum=\nownerName?' Check the render method of ' + ownerName + '.':\nparentName?' Check the React.render call using <' + parentName + '>.':\n'';\n\n\n\n\nvar childOwnerAddendum='';\nif(element && \nelement._owner && \nelement._owner !== ReactCurrentOwner.current){\n\nvar childOwnerName=getName(element._owner);\n\nchildOwnerAddendum = ' It was passed a child from ' + childOwnerName + '.';}\n\n\nwarning(\nfalse,\nmessage + '%s%s See http://fb.me/react-warning-keys for more information.',\nparentOrOwnerAddendum,\nchildOwnerAddendum);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction validateChildKeys(node,parentType){\nif(Array.isArray(node)){\nfor(var i=0;i < node.length;i++) {\nvar child=node[i];\nif(ReactElement.isValidElement(child)){\nvalidateExplicitKey(child,parentType);}}}else \n\n\nif(ReactElement.isValidElement(node)){\n\nnode._store.validated = true;}else \nif(node){\nvar iteratorFn=getIteratorFn(node);\n\nif(iteratorFn){\nif(iteratorFn !== node.entries){\nvar iterator=iteratorFn.call(node);\nvar step;\nwhile(!(step = iterator.next()).done) {\nif(ReactElement.isValidElement(step.value)){\nvalidateExplicitKey(step.value,parentType);}}}}else \n\n\n\nif(typeof node === 'object'){\nvar fragment=ReactFragment.extractIfFragment(node);\nfor(var key in fragment) {\nif(fragment.hasOwnProperty(key)){\nvalidatePropertyKey(key,fragment[key],parentType);}}}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction checkPropTypes(componentName,propTypes,props,location){\nfor(var propName in propTypes) {\nif(propTypes.hasOwnProperty(propName)){\nvar error;\n\n\n\ntry{\n\n\ninvariant(\ntypeof propTypes[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually from ' + \n'React.PropTypes.',\ncomponentName || 'React class',\nReactPropTypeLocationNames[location],\npropName);\n\nerror = propTypes[propName](props,propName,componentName,location);}\ncatch(ex) {\nerror = ex;}\n\nif(error instanceof Error && !(error.message in loggedTypeFailures)){\n\n\nloggedTypeFailures[error.message] = true;\n\nvar addendum=getDeclarationErrorAddendum(this);\nwarning(false,'Failed propType: %s%s',error.message,addendum);}}}}\n\n\n\n\n\nvar warnedPropsMutations={};\n\n\n\n\n\n\n\nfunction warnForPropsMutation(propName,element){\nvar type=element.type;\nvar elementName=typeof type === 'string'?type:type.displayName;\nvar ownerName=element._owner?\nelement._owner.getPublicInstance().constructor.displayName:null;\n\nvar warningKey=propName + '|' + elementName + '|' + ownerName;\nif(warnedPropsMutations.hasOwnProperty(warningKey)){\nreturn;}\n\nwarnedPropsMutations[warningKey] = true;\n\nvar elementInfo='';\nif(elementName){\nelementInfo = ' <' + elementName + ' />';}\n\nvar ownerInfo='';\nif(ownerName){\nownerInfo = ' The element was created by ' + ownerName + '.';}\n\n\nwarning(\nfalse,\n'Don\\'t set .props.%s of the React component%s. Instead, specify the ' + \n'correct value when initially creating the element or use ' + \n'React.cloneElement to make a new element with updated props.%s',\npropName,\nelementInfo,\nownerInfo);}\n\n\n\n\nfunction is(a,b){\nif(a !== a){\n\nreturn b !== b;}\n\nif(a === 0 && b === 0){\n\nreturn 1 / a === 1 / b;}\n\nreturn a === b;}\n\n\n\n\n\n\n\n\n\n\nfunction checkAndWarnForMutatedProps(element){\nif(!element._store){\n\n\nreturn;}\n\n\nvar originalProps=element._store.originalProps;\nvar props=element.props;\n\nfor(var propName in props) {\nif(props.hasOwnProperty(propName)){\nif(!originalProps.hasOwnProperty(propName) || \n!is(originalProps[propName],props[propName])){\nwarnForPropsMutation(propName,element);\n\n\noriginalProps[propName] = props[propName];}}}}\n\n\n\n\n\n\n\n\n\n\n\nfunction validatePropTypes(element){\nif(element.type == null){\n\nreturn;}\n\n\n\n\n\nvar componentClass=ReactNativeComponent.getComponentClassForElement(\nelement);\n\nvar name=componentClass.displayName || componentClass.name;\nif(componentClass.propTypes){\ncheckPropTypes(\nname,\ncomponentClass.propTypes,\nelement.props,\nReactPropTypeLocations.prop);}\n\n\nif(typeof componentClass.getDefaultProps === 'function'){\nwarning(\ncomponentClass.getDefaultProps.isReactClassApproved,\n'getDefaultProps is only used on classic React.createClass ' + \n'definitions. Use a static property named `defaultProps` instead.');}}\n\n\n\n\nvar ReactElementValidator={\n\ncheckAndWarnForMutatedProps:checkAndWarnForMutatedProps,\n\ncreateElement:function(type,props,children){\n\n\nwarning(\ntype != null,\n'React.createElement: type should not be null or undefined. It should ' + \n'be a string (for DOM elements) or a ReactClass (for composite ' + \n'components).');\n\n\nvar element=ReactElement.createElement.apply(this,arguments);\n\n\n\nif(element == null){\nreturn element;}\n\n\nfor(var i=2;i < arguments.length;i++) {\nvalidateChildKeys(arguments[i],type);}\n\n\nvalidatePropTypes(element);\n\nreturn element;},\n\n\ncreateFactory:function(type){\nvar validatedFactory=ReactElementValidator.createElement.bind(\nnull,\ntype);\n\n\nvalidatedFactory.type = type;\n\nif(__DEV__){\ntry{\nObject.defineProperty(\nvalidatedFactory,\n'type',\n{\nenumerable:false,\nget:function(){\nwarning(\nfalse,\n'Factory.type is deprecated. Access the class directly ' + \n'before passing it to createFactory.');\n\nObject.defineProperty(this,'type',{\nvalue:type});\n\nreturn type;}});}\n\n\n\ncatch(x) {}}\n\n\n\n\n\nreturn validatedFactory;},\n\n\ncloneElement:function(element,props,children){\nvar newElement=ReactElement.cloneElement.apply(this,arguments);\nfor(var i=2;i < arguments.length;i++) {\nvalidateChildKeys(arguments[i],newElement.type);}\n\nvalidatePropTypes(newElement);\nreturn newElement;}};\n\n\n\n\nmodule.exports = ReactElementValidator;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactElementValidator\n */\n\n/**\n * ReactElementValidator provides a wrapper around a element factory\n * which validates the props passed to the element. This is intended to be\n * used only in DEV and could be replaced by a static type checker for languages\n * that support it.\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactNativeComponent = require('ReactNativeComponent');\n\nvar getIteratorFn = require('getIteratorFn');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\nvar ownerHasKeyUseWarning = {};\n\nvar loggedTypeFailures = {};\n\nvar NUMERIC_PROPERTY_REGEX = /^\\d+$/;\n\n/**\n * Gets the instance's name for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getName(instance) {\n var publicInstance = instance && instance.getPublicInstance();\n if (!publicInstance) {\n return undefined;\n }\n var constructor = publicInstance.constructor;\n if (!constructor) {\n return undefined;\n }\n return constructor.displayName || constructor.name || undefined;\n}\n\n/**\n * Gets the current owner's displayName for use in warnings.\n *\n * @internal\n * @return {?string} Display name or undefined\n */\nfunction getCurrentOwnerDisplayName() {\n var current = ReactCurrentOwner.current;\n return (\n current && getName(current) || undefined\n );\n}\n\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validateExplicitKey(element, parentType) {\n if (element._store.validated || element.key != null) {\n return;\n }\n element._store.validated = true;\n\n warnAndMonitorForKeyUse(\n 'Each child in an array or iterator should have a unique \"key\" prop.',\n element,\n parentType\n );\n}\n\n/**\n * Warn if the key is being defined as an object property but has an incorrect\n * value.\n *\n * @internal\n * @param {string} name Property name of the key.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction validatePropertyKey(name, element, parentType) {\n if (!NUMERIC_PROPERTY_REGEX.test(name)) {\n return;\n }\n warnAndMonitorForKeyUse(\n 'Child objects should have non-numeric keys so ordering is preserved.',\n element,\n parentType\n );\n}\n\n/**\n * Shared warning and monitoring code for the key warnings.\n *\n * @internal\n * @param {string} message The base warning that gets output.\n * @param {ReactElement} element Component that requires a key.\n * @param {*} parentType element's parent's type.\n */\nfunction warnAndMonitorForKeyUse(message, element, parentType) {\n var ownerName = getCurrentOwnerDisplayName();\n var parentName = typeof parentType === 'string' ?\n parentType : parentType.displayName || parentType.name;\n\n var useName = ownerName || parentName;\n var memoizer = ownerHasKeyUseWarning[message] || (\n ownerHasKeyUseWarning[message] = {}\n );\n if (memoizer.hasOwnProperty(useName)) {\n return;\n }\n memoizer[useName] = true;\n\n var parentOrOwnerAddendum =\n ownerName ? ` Check the render method of ${ownerName}.` :\n parentName ? ` Check the React.render call using <${parentName}>.` :\n '';\n\n // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n var childOwnerAddendum = '';\n if (element &&\n element._owner &&\n element._owner !== ReactCurrentOwner.current) {\n // Name of the component that originally created this child.\n var childOwnerName = getName(element._owner);\n\n childOwnerAddendum = ` It was passed a child from ${childOwnerName}.`;\n }\n\n warning(\n false,\n message + '%s%s See http://fb.me/react-warning-keys for more information.',\n parentOrOwnerAddendum,\n childOwnerAddendum\n );\n}\n\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\nfunction validateChildKeys(node, parentType) {\n if (Array.isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n if (ReactElement.isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (ReactElement.isValidElement(node)) {\n // This element was passed in a valid location.\n node._store.validated = true;\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n // Entry iterators provide implicit keys.\n if (iteratorFn) {\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n while (!(step = iterator.next()).done) {\n if (ReactElement.isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n } else if (typeof node === 'object') {\n var fragment = ReactFragment.extractIfFragment(node);\n for (var key in fragment) {\n if (fragment.hasOwnProperty(key)) {\n validatePropertyKey(key, fragment[key], parentType);\n }\n }\n }\n }\n}\n\n/**\n * Assert that the props are valid\n *\n * @param {string} componentName Name of the component for error messages.\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\nfunction checkPropTypes(componentName, propTypes, props, location) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n );\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(this);\n warning(false, 'Failed propType: %s%s', error.message, addendum);\n }\n }\n }\n}\n\nvar warnedPropsMutations = {};\n\n/**\n * Warn about mutating props when setting `propName` on `element`.\n *\n * @param {string} propName The string key within props that was set\n * @param {ReactElement} element\n */\nfunction warnForPropsMutation(propName, element) {\n var type = element.type;\n var elementName = typeof type === 'string' ? type : type.displayName;\n var ownerName = element._owner ?\n element._owner.getPublicInstance().constructor.displayName : null;\n\n var warningKey = propName + '|' + elementName + '|' + ownerName;\n if (warnedPropsMutations.hasOwnProperty(warningKey)) {\n return;\n }\n warnedPropsMutations[warningKey] = true;\n\n var elementInfo = '';\n if (elementName) {\n elementInfo = ' <' + elementName + ' />';\n }\n var ownerInfo = '';\n if (ownerName) {\n ownerInfo = ' The element was created by ' + ownerName + '.';\n }\n\n warning(\n false,\n 'Don\\'t set .props.%s of the React component%s. Instead, specify the ' +\n 'correct value when initially creating the element or use ' +\n 'React.cloneElement to make a new element with updated props.%s',\n propName,\n elementInfo,\n ownerInfo\n );\n}\n\n// Inline Object.is polyfill\nfunction is(a, b) {\n if (a !== a) {\n // NaN\n return b !== b;\n }\n if (a === 0 && b === 0) {\n // +-0\n return 1 / a === 1 / b;\n }\n return a === b;\n}\n\n/**\n * Given an element, check if its props have been mutated since element\n * creation (or the last call to this function). In particular, check if any\n * new props have been added, which we can't directly catch by defining warning\n * properties on the props object.\n *\n * @param {ReactElement} element\n */\nfunction checkAndWarnForMutatedProps(element) {\n if (!element._store) {\n // Element was created using `new ReactElement` directly or with\n // `ReactElement.createElement`; skip mutation checking\n return;\n }\n\n var originalProps = element._store.originalProps;\n var props = element.props;\n\n for (var propName in props) {\n if (props.hasOwnProperty(propName)) {\n if (!originalProps.hasOwnProperty(propName) ||\n !is(originalProps[propName], props[propName])) {\n warnForPropsMutation(propName, element);\n\n // Copy over the new value so that the two props objects match again\n originalProps[propName] = props[propName];\n }\n }\n }\n}\n\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\nfunction validatePropTypes(element) {\n if (element.type == null) {\n // This has already warned. Don't throw.\n return;\n }\n // Extract the component class from the element. Converts string types\n // to a composite class which may have propTypes.\n // TODO: Validating a string's propTypes is not decoupled from the\n // rendering target which is problematic.\n var componentClass = ReactNativeComponent.getComponentClassForElement(\n element\n );\n var name = componentClass.displayName || componentClass.name;\n if (componentClass.propTypes) {\n checkPropTypes(\n name,\n componentClass.propTypes,\n element.props,\n ReactPropTypeLocations.prop\n );\n }\n if (typeof componentClass.getDefaultProps === 'function') {\n warning(\n componentClass.getDefaultProps.isReactClassApproved,\n 'getDefaultProps is only used on classic React.createClass ' +\n 'definitions. Use a static property named `defaultProps` instead.'\n );\n }\n}\n\nvar ReactElementValidator = {\n\n checkAndWarnForMutatedProps: checkAndWarnForMutatedProps,\n\n createElement: function(type, props, children) {\n // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n warning(\n type != null,\n 'React.createElement: type should not be null or undefined. It should ' +\n 'be a string (for DOM elements) or a ReactClass (for composite ' +\n 'components).'\n );\n\n var element = ReactElement.createElement.apply(this, arguments);\n\n // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n if (element == null) {\n return element;\n }\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n\n validatePropTypes(element);\n\n return element;\n },\n\n createFactory: function(type) {\n var validatedFactory = ReactElementValidator.createElement.bind(\n null,\n type\n );\n // Legacy hook TODO: Warn if this is accessed\n validatedFactory.type = type;\n\n if (__DEV__) {\n try {\n Object.defineProperty(\n validatedFactory,\n 'type',\n {\n enumerable: false,\n get: function() {\n warning(\n false,\n 'Factory.type is deprecated. Access the class directly ' +\n 'before passing it to createFactory.'\n );\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n }\n );\n } catch (x) {\n // IE will fail on defineProperty (es5-shim/sham too)\n }\n }\n\n\n return validatedFactory;\n },\n\n cloneElement: function(element, props, children) {\n var newElement = ReactElement.cloneElement.apply(this, arguments);\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n validatePropTypes(newElement);\n return newElement;\n }\n\n};\n\nmodule.exports = ReactElementValidator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElementValidator.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocations.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\nvar ReactPropTypeLocations=keyMirror({\nprop:null,\ncontext:null,\nchildContext:null});\n\n\nmodule.exports = ReactPropTypeLocations;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocations\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\nvar ReactPropTypeLocations = keyMirror({\n prop: null,\n context: null,\n childContext: null\n});\n\nmodule.exports = ReactPropTypeLocations;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocations.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyMirror.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=function(obj){\nvar ret={};\nvar key;\ninvariant(\nobj instanceof Object && !Array.isArray(obj),\n'keyMirror(...): Argument must be an object.');\n\nfor(key in obj) {\nif(!obj.hasOwnProperty(key)){\ncontinue;}\n\nret[key] = key;}\n\nreturn ret;};\n\n\nmodule.exports = keyMirror;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyMirror\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n invariant(\n obj instanceof Object && !Array.isArray(obj),\n 'keyMirror(...): Argument must be an object.'\n );\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyMirror.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocationNames.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypeLocationNames={};\n\nif(__DEV__){\nReactPropTypeLocationNames = {\nprop:'prop',\ncontext:'context',\nchildContext:'child context'};}\n\n\n\nmodule.exports = ReactPropTypeLocationNames;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypeLocationNames\n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (__DEV__) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypeLocationNames.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactNativeComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\n\nvar autoGenerateWrapperClass=null;\nvar genericComponentClass=null;\n\nvar tagToComponentClass={};\nvar textComponentClass=null;\n\nvar ReactNativeComponentInjection={\n\n\ninjectGenericComponentClass:function(componentClass){\ngenericComponentClass = componentClass;},\n\n\n\ninjectTextComponentClass:function(componentClass){\ntextComponentClass = componentClass;},\n\n\n\ninjectComponentClasses:function(componentClasses){\nassign(tagToComponentClass,componentClasses);},\n\n\n\ninjectAutoWrapper:function(wrapperFactory){\nautoGenerateWrapperClass = wrapperFactory;}};\n\n\n\n\n\n\n\n\n\nfunction getComponentClassForElement(element){\nif(typeof element.type === 'function'){\nreturn element.type;}\n\nvar tag=element.type;\nvar componentClass=tagToComponentClass[tag];\nif(componentClass == null){\ntagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);}\n\nreturn componentClass;}\n\n\n\n\n\n\n\n\nfunction createInternalComponent(element){\ninvariant(\ngenericComponentClass,\n'There is no registered component for the tag %s',\nelement.type);\n\nreturn new genericComponentClass(element.type,element.props);}\n\n\n\n\n\n\nfunction createInstanceForText(text){\nreturn new textComponentClass(text);}\n\n\n\n\n\n\nfunction isTextComponent(component){\nreturn component instanceof textComponentClass;}\n\n\nvar ReactNativeComponent={\ngetComponentClassForElement:getComponentClassForElement,\ncreateInternalComponent:createInternalComponent,\ncreateInstanceForText:createInstanceForText,\nisTextComponent:isTextComponent,\ninjection:ReactNativeComponentInjection};\n\n\nmodule.exports = ReactNativeComponent;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponent\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\n\nvar autoGenerateWrapperClass = null;\nvar genericComponentClass = null;\n// This registry keeps track of wrapper classes around native tags\nvar tagToComponentClass = {};\nvar textComponentClass = null;\n\nvar ReactNativeComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function(componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function(componentClass) {\n textComponentClass = componentClass;\n },\n // This accepts a keyed object with classes as values. Each key represents a\n // tag. That particular tag will use this class instead of the generic one.\n injectComponentClasses: function(componentClasses) {\n assign(tagToComponentClass, componentClasses);\n },\n // Temporary hack since we expect DOM refs to behave like composites,\n // for this release.\n injectAutoWrapper: function(wrapperFactory) {\n autoGenerateWrapperClass = wrapperFactory;\n }\n};\n\n/**\n * Get a composite component wrapper class for a specific tag.\n *\n * @param {ReactElement} element The tag for which to get the class.\n * @return {function} The React class constructor function.\n */\nfunction getComponentClassForElement(element) {\n if (typeof element.type === 'function') {\n return element.type;\n }\n var tag = element.type;\n var componentClass = tagToComponentClass[tag];\n if (componentClass == null) {\n tagToComponentClass[tag] = componentClass = autoGenerateWrapperClass(tag);\n }\n return componentClass;\n}\n\n/**\n * Get a native internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n invariant(\n genericComponentClass,\n 'There is no registered component for the tag %s',\n element.type\n );\n return new genericComponentClass(element.type, element.props);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactNativeComponent = {\n getComponentClassForElement: getComponentClassForElement,\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactNativeComponentInjection\n};\n\nmodule.exports = ReactNativeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactNativeComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/Transaction.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Mixin={\n\n\n\n\n\n\n\nreinitializeTransaction:function(){\nthis.transactionWrappers = this.getTransactionWrappers();\nif(!this.wrapperInitData){\nthis.wrapperInitData = [];}else \n{\nthis.wrapperInitData.length = 0;}\n\nthis._isInTransaction = false;},\n\n\n_isInTransaction:false,\n\n\n\n\n\ngetTransactionWrappers:null,\n\nisInTransaction:function(){\nreturn !!this._isInTransaction;},\n\n\n\n\n\n\n\n\n\n\n\n\n\nperform:function(method,scope,a,b,c,d,e,f){\ninvariant(\n!this.isInTransaction(),\n'Transaction.perform(...): Cannot initialize a transaction when there ' + \n'is already an outstanding transaction.');\n\nvar errorThrown;\nvar ret;\ntry{\nthis._isInTransaction = true;\n\n\n\n\nerrorThrown = true;\nthis.initializeAll(0);\nret = method.call(scope,a,b,c,d,e,f);\nerrorThrown = false;}finally \n{\ntry{\nif(errorThrown){\n\n\ntry{\nthis.closeAll(0);}\ncatch(err) {}}else \n\n{\n\n\nthis.closeAll(0);}}finally \n\n{\nthis._isInTransaction = false;}}\n\n\nreturn ret;},\n\n\ninitializeAll:function(startIndex){\nvar transactionWrappers=this.transactionWrappers;\nfor(var i=startIndex;i < transactionWrappers.length;i++) {\nvar wrapper=transactionWrappers[i];\ntry{\n\n\n\n\nthis.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\nthis.wrapperInitData[i] = wrapper.initialize?\nwrapper.initialize.call(this):\nnull;}finally \n{\nif(this.wrapperInitData[i] === Transaction.OBSERVED_ERROR){\n\n\n\ntry{\nthis.initializeAll(i + 1);}\ncatch(err) {}}}}},\n\n\n\n\n\n\n\n\n\n\n\n\ncloseAll:function(startIndex){\ninvariant(\nthis.isInTransaction(),\n'Transaction.closeAll(): Cannot close transaction when none are open.');\n\nvar transactionWrappers=this.transactionWrappers;\nfor(var i=startIndex;i < transactionWrappers.length;i++) {\nvar wrapper=transactionWrappers[i];\nvar initData=this.wrapperInitData[i];\nvar errorThrown;\ntry{\n\n\n\n\nerrorThrown = true;\nif(initData !== Transaction.OBSERVED_ERROR && wrapper.close){\nwrapper.close.call(this,initData);}\n\nerrorThrown = false;}finally \n{\nif(errorThrown){\n\n\n\ntry{\nthis.closeAll(i + 1);}\ncatch(e) {}}}}\n\n\n\n\nthis.wrapperInitData.length = 0;}};\n\n\n\nvar Transaction={\n\nMixin:Mixin,\n\n\n\n\nOBSERVED_ERROR:{}};\n\n\n\nmodule.exports = Transaction;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Transaction\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar Mixin = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function() {\n this.transactionWrappers = this.getTransactionWrappers();\n if (!this.wrapperInitData) {\n this.wrapperInitData = [];\n } else {\n this.wrapperInitData.length = 0;\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function() {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} args... Arguments to pass to the method (optional).\n * Helps prevent need to bind in many cases.\n * @return Return value from `method`.\n */\n perform: function(method, scope, a, b, c, d, e, f) {\n invariant(\n !this.isInTransaction(),\n 'Transaction.perform(...): Cannot initialize a transaction when there ' +\n 'is already an outstanding transaction.'\n );\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {\n }\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function(startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = Transaction.OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ?\n wrapper.initialize.call(this) :\n null;\n } finally {\n if (this.wrapperInitData[i] === Transaction.OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {\n }\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function(startIndex) {\n invariant(\n this.isInTransaction(),\n 'Transaction.closeAll(): Cannot close transaction when none are open.'\n );\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== Transaction.OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {\n }\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nvar Transaction = {\n\n Mixin: Mixin,\n\n /**\n * Token to look for to determine if an error occured.\n */\n OBSERVED_ERROR: {}\n\n};\n\nmodule.exports = Transaction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/Transaction.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/stubs/ReactErrorUtils.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactErrorUtils={\n\n\n\n\n\n\n\n\n\nguard:function(func,name){\nreturn func;}};\n\n\n\nmodule.exports = ReactErrorUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactErrorUtils\n * @typechecks\n */\n\n\"use strict\";\n\nvar ReactErrorUtils = {\n /**\n * Creates a guarded version of a function. This is supposed to make debugging\n * of event handlers easier. To aid debugging with the browser's debugger,\n * this currently simply returns the original function.\n *\n * @param {function} func Function to be executed\n * @param {string} name The name of the guard\n * @return {function}\n */\n guard: function(func, name) {\n return func;\n }\n};\n\nmodule.exports = ReactErrorUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/stubs/ReactErrorUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyOf.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nkeyOf=function(oneKeyObj){\nvar key;\nfor(key in oneKeyObj) {\nif(!oneKeyObj.hasOwnProperty(key)){\ncontinue;}\n\nreturn key;}\n\nreturn null;};\n\n\n\nmodule.exports = keyOf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule keyOf\n */\n\n/**\n * Allows extraction of a minified key. Let's the build system minify keys\n * without loosing the ability to dynamically use key strings as values\n * themselves. Pass in an object with a single key/val pair and it will return\n * you the string key of that single record. Suppose you want to grab the\n * value for a key 'className' inside of an object. Key/val minification may\n * have aliased that key to be 'xa12'. keyOf({className: null}) will return\n * 'xa12' in that case. Resolve keys you want to use once at startup time, then\n * reuse those resolutions.\n */\nvar keyOf = function(oneKeyObj) {\n var key;\n for (key in oneKeyObj) {\n if (!oneKeyObj.hasOwnProperty(key)) {\n continue;\n }\n return key;\n }\n return null;\n};\n\n\nmodule.exports = keyOf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/key-mirror/keyOf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDefaultInjection.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrequire('InitializeJavaScriptAppEngine');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPluginUtils=require('EventPluginUtils');\nvar IOSDefaultEventPluginOrder=require('IOSDefaultEventPluginOrder');\nvar IOSNativeBridgeEventPlugin=require('IOSNativeBridgeEventPlugin');\nvar NodeHandle=require('NodeHandle');\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactDefaultBatchingStrategy=require('ReactDefaultBatchingStrategy');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactNativeComponentEnvironment=require('ReactNativeComponentEnvironment');\nvar ReactNativeGlobalInteractionHandler=require('ReactNativeGlobalInteractionHandler');\nvar ReactNativeGlobalResponderHandler=require('ReactNativeGlobalResponderHandler');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactNativeTextComponent=require('ReactNativeTextComponent');\nvar ReactNativeComponent=require('ReactNativeComponent');\nvar ReactUpdates=require('ReactUpdates');\nvar ResponderEventPlugin=require('ResponderEventPlugin');\nvar UniversalWorkerNodeHandle=require('UniversalWorkerNodeHandle');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar invariant=require('invariant');\n\n\nrequire('RCTEventEmitter');\nrequire('RCTLog');\nrequire('JSTimersExecution');\n\nfunction inject(){\n\n\n\nEventPluginHub.injection.injectEventPluginOrder(IOSDefaultEventPluginOrder);\nEventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles);\n\nResponderEventPlugin.injection.injectGlobalResponderHandler(\nReactNativeGlobalResponderHandler);\n\n\nResponderEventPlugin.injection.injectGlobalInteractionHandler(\nReactNativeGlobalInteractionHandler);\n\n\n\n\n\n\nEventPluginHub.injection.injectEventPluginsByName({\n'ResponderEventPlugin':ResponderEventPlugin,\n'IOSNativeBridgeEventPlugin':IOSNativeBridgeEventPlugin});\n\n\nReactUpdates.injection.injectReconcileTransaction(\nReactNativeComponentEnvironment.ReactReconcileTransaction);\n\n\nReactUpdates.injection.injectBatchingStrategy(\nReactDefaultBatchingStrategy);\n\n\nReactComponentEnvironment.injection.injectEnvironment(\nReactNativeComponentEnvironment);\n\n\n\nvar RCTView=createReactNativeComponentClass({\nvalidAttributes:{},\nuiViewClassName:'RCTView'});\n\nReactEmptyComponent.injection.injectEmptyComponent(RCTView);\n\nEventPluginUtils.injection.injectMount(ReactNativeMount);\n\nReactNativeComponent.injection.injectTextComponentClass(\nReactNativeTextComponent);\n\nReactNativeComponent.injection.injectAutoWrapper(function(tag){\n\nvar info='';\nif(typeof tag === 'string' && /^[a-z]/.test(tag)){\ninfo += ' Each component name should start with an uppercase letter.';}\n\ninvariant(false,'Expected a component class, got %s.%s',tag,info);});\n\n\nNodeHandle.injection.injectImplementation(UniversalWorkerNodeHandle);}\n\n\nmodule.exports = {\ninject:inject};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeDefaultInjection\n * @flow\n */\n'use strict';\n\n/**\n * Make sure `setTimeout`/`setInterval` are patched correctly.\n */\nrequire('InitializeJavaScriptAppEngine');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPluginUtils = require('EventPluginUtils');\nvar IOSDefaultEventPluginOrder = require('IOSDefaultEventPluginOrder');\nvar IOSNativeBridgeEventPlugin = require('IOSNativeBridgeEventPlugin');\nvar NodeHandle = require('NodeHandle');\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactNativeComponentEnvironment = require('ReactNativeComponentEnvironment');\nvar ReactNativeGlobalInteractionHandler = require('ReactNativeGlobalInteractionHandler');\nvar ReactNativeGlobalResponderHandler = require('ReactNativeGlobalResponderHandler');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactNativeTextComponent = require('ReactNativeTextComponent');\nvar ReactNativeComponent = require('ReactNativeComponent');\nvar ReactUpdates = require('ReactUpdates');\nvar ResponderEventPlugin = require('ResponderEventPlugin');\nvar UniversalWorkerNodeHandle = require('UniversalWorkerNodeHandle');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar invariant = require('invariant');\n\n// Just to ensure this gets packaged, since its only caller is from Native.\nrequire('RCTEventEmitter');\nrequire('RCTLog');\nrequire('JSTimersExecution');\n\nfunction inject() {\n /**\n * Inject module for resolving DOM hierarchy and plugin ordering.\n */\n EventPluginHub.injection.injectEventPluginOrder(IOSDefaultEventPluginOrder);\n EventPluginHub.injection.injectInstanceHandle(ReactInstanceHandles);\n\n ResponderEventPlugin.injection.injectGlobalResponderHandler(\n ReactNativeGlobalResponderHandler\n );\n\n ResponderEventPlugin.injection.injectGlobalInteractionHandler(\n ReactNativeGlobalInteractionHandler\n );\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n EventPluginHub.injection.injectEventPluginsByName({\n 'ResponderEventPlugin': ResponderEventPlugin,\n 'IOSNativeBridgeEventPlugin': IOSNativeBridgeEventPlugin\n });\n\n ReactUpdates.injection.injectReconcileTransaction(\n ReactNativeComponentEnvironment.ReactReconcileTransaction\n );\n\n ReactUpdates.injection.injectBatchingStrategy(\n ReactDefaultBatchingStrategy\n );\n\n ReactComponentEnvironment.injection.injectEnvironment(\n ReactNativeComponentEnvironment\n );\n\n // Can't import View here because it depends on React to make its composite\n var RCTView = createReactNativeComponentClass({\n validAttributes: {},\n uiViewClassName: 'RCTView',\n });\n ReactEmptyComponent.injection.injectEmptyComponent(RCTView);\n\n EventPluginUtils.injection.injectMount(ReactNativeMount);\n\n ReactNativeComponent.injection.injectTextComponentClass(\n ReactNativeTextComponent\n );\n ReactNativeComponent.injection.injectAutoWrapper(function(tag) {\n // Show a nicer error message for non-function tags\n var info = '';\n if (typeof tag === 'string' && /^[a-z]/.test(tag)) {\n info += ' Each component name should start with an uppercase letter.';\n }\n invariant(false, 'Expected a component class, got %s.%s', tag, info);\n });\n\n NodeHandle.injection.injectImplementation(UniversalWorkerNodeHandle);\n}\n\nmodule.exports = {\n inject: inject,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDefaultInjection.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js":{"data":{"code":"require(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'RCTDebugComponentOwnership');\nrequire('RCTDeviceEventEmitter');\nrequire('PerformanceLogger');\n\nif(typeof GLOBAL === 'undefined'){\nGLOBAL = this;}\n\n\nif(typeof window === 'undefined'){\nwindow = GLOBAL;}\n\n\nfunction handleError(e,isFatal){\ntry{\nrequire('ExceptionsManager').handleException(e,isFatal);}\ncatch(ee) {\nconsole.log('Failed to print error: ',ee.message);}}\n\n\n\nfunction setUpRedBoxErrorHandler(){\nvar ErrorUtils=require('ErrorUtils');\nErrorUtils.setGlobalHandler(handleError);}\n\n\nfunction setUpRedBoxConsoleErrorHandler(){\n\nvar ExceptionsManager=require('ExceptionsManager');\nvar Platform=require('Platform');\n\nif(__DEV__ && Platform.OS === 'ios'){\nExceptionsManager.installConsoleErrorReporter();}}\n\n\n\n\n\n\n\n\n\n\nfunction setUpTimers(){\nvar JSTimers=require('JSTimers');\nGLOBAL.setTimeout = JSTimers.setTimeout;\nGLOBAL.setInterval = JSTimers.setInterval;\nGLOBAL.setImmediate = JSTimers.setImmediate;\nGLOBAL.clearTimeout = JSTimers.clearTimeout;\nGLOBAL.clearInterval = JSTimers.clearInterval;\nGLOBAL.clearImmediate = JSTimers.clearImmediate;\nGLOBAL.cancelAnimationFrame = JSTimers.clearInterval;\nGLOBAL.requestAnimationFrame = function(cb){\n\nreturn JSTimers.requestAnimationFrame(cb);};}\n\n\n\nfunction setUpAlert(){\nvar RCTAlertManager=require('NativeModules').AlertManager;\nif(!GLOBAL.alert){\nGLOBAL.alert = function(text){\nvar alertOpts={\ntitle:'Alert',\nmessage:'' + text,\nbuttons:[{'cancel':'OK'}]};\n\nRCTAlertManager.alertWithArgs(alertOpts,null);};}}\n\n\n\n\nfunction setUpPromise(){\n\n\nGLOBAL.Promise = require('Promise');}\n\n\nfunction setUpXHR(){\n\n\nGLOBAL.XMLHttpRequest = require('XMLHttpRequest');\nGLOBAL.FormData = require('FormData');\n\nvar fetchPolyfill=require('fetch');\nGLOBAL.fetch = fetchPolyfill.fetch;\nGLOBAL.Headers = fetchPolyfill.Headers;\nGLOBAL.Request = fetchPolyfill.Request;\nGLOBAL.Response = fetchPolyfill.Response;}\n\n\nfunction setUpGeolocation(){\nGLOBAL.navigator = GLOBAL.navigator || {};\nGLOBAL.navigator.geolocation = require('Geolocation');}\n\n\nfunction setUpWebSockets(){\nGLOBAL.WebSocket = require('WebSocket');}\n\n\nfunction setupProfile(){\nconsole.profile = console.profile || GLOBAL.consoleProfile || function(){};\nconsole.profileEnd = console.profileEnd || GLOBAL.consoleProfileEnd || function(){};\nrequire('BridgeProfiling').swizzleReactPerf();}\n\n\nsetUpRedBoxErrorHandler();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpXHR();\nsetUpRedBoxConsoleErrorHandler();\nsetUpGeolocation();\nsetUpWebSockets();\nsetupProfile();","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Sets up global variables typical in most JavaScript environments.\n *\n * 1. Global timers (via `setTimeout` etc).\n * 2. Global console object.\n * 3. Hooks for printing stack traces with source maps.\n *\n * Leaves enough room in the environment for implementing your own:\n * 1. Require system.\n * 2. Bridged modules.\n *\n * @providesModule InitializeJavaScriptAppEngine\n */\n\n/* eslint global-strict: 0 */\n/* globals GLOBAL: true, window: true */\n\n// Just to make sure the JS gets packaged up.\nrequire('RCTDebugComponentOwnership');\nrequire('RCTDeviceEventEmitter');\nrequire('PerformanceLogger');\n\nif (typeof GLOBAL === 'undefined') {\n GLOBAL = this;\n}\n\nif (typeof window === 'undefined') {\n window = GLOBAL;\n}\n\nfunction handleError(e, isFatal) {\n try {\n require('ExceptionsManager').handleException(e, isFatal);\n } catch(ee) {\n console.log('Failed to print error: ', ee.message);\n }\n}\n\nfunction setUpRedBoxErrorHandler() {\n var ErrorUtils = require('ErrorUtils');\n ErrorUtils.setGlobalHandler(handleError);\n}\n\nfunction setUpRedBoxConsoleErrorHandler() {\n // ExceptionsManager transitively requires Promise so we install it after\n var ExceptionsManager = require('ExceptionsManager');\n var Platform = require('Platform');\n // TODO (#6925182): Enable console.error redbox on Android\n if (__DEV__ && Platform.OS === 'ios') {\n ExceptionsManager.installConsoleErrorReporter();\n }\n}\n\n/**\n * Sets up a set of window environment wrappers that ensure that the\n * BatchedBridge is flushed after each tick. In both the case of the\n * `UIWebView` based `RCTJavaScriptCaller` and `RCTContextCaller`, we\n * implement our own custom timing bridge that should be immune to\n * unexplainably dropped timing signals.\n */\nfunction setUpTimers() {\n var JSTimers = require('JSTimers');\n GLOBAL.setTimeout = JSTimers.setTimeout;\n GLOBAL.setInterval = JSTimers.setInterval;\n GLOBAL.setImmediate = JSTimers.setImmediate;\n GLOBAL.clearTimeout = JSTimers.clearTimeout;\n GLOBAL.clearInterval = JSTimers.clearInterval;\n GLOBAL.clearImmediate = JSTimers.clearImmediate;\n GLOBAL.cancelAnimationFrame = JSTimers.clearInterval;\n GLOBAL.requestAnimationFrame = function(cb) {\n /*requestAnimationFrame() { [native code] };*/ // Trick scroller library\n return JSTimers.requestAnimationFrame(cb); // into thinking it's native\n };\n}\n\nfunction setUpAlert() {\n var RCTAlertManager = require('NativeModules').AlertManager;\n if (!GLOBAL.alert) {\n GLOBAL.alert = function(text) {\n var alertOpts = {\n title: 'Alert',\n message: '' + text,\n buttons: [{'cancel': 'OK'}],\n };\n RCTAlertManager.alertWithArgs(alertOpts, null);\n };\n }\n}\n\nfunction setUpPromise() {\n // The native Promise implementation throws the following error:\n // ERROR: Event loop not supported.\n GLOBAL.Promise = require('Promise');\n}\n\nfunction setUpXHR() {\n // The native XMLHttpRequest in Chrome dev tools is CORS aware and won't\n // let you fetch anything from the internet\n GLOBAL.XMLHttpRequest = require('XMLHttpRequest');\n GLOBAL.FormData = require('FormData');\n\n var fetchPolyfill = require('fetch');\n GLOBAL.fetch = fetchPolyfill.fetch;\n GLOBAL.Headers = fetchPolyfill.Headers;\n GLOBAL.Request = fetchPolyfill.Request;\n GLOBAL.Response = fetchPolyfill.Response;\n}\n\nfunction setUpGeolocation() {\n GLOBAL.navigator = GLOBAL.navigator || {};\n GLOBAL.navigator.geolocation = require('Geolocation');\n}\n\nfunction setUpWebSockets() {\n GLOBAL.WebSocket = require('WebSocket');\n}\n\nfunction setupProfile() {\n console.profile = console.profile || GLOBAL.consoleProfile || function () {};\n console.profileEnd = console.profileEnd || GLOBAL.consoleProfileEnd || function () {};\n require('BridgeProfiling').swizzleReactPerf();\n}\n\nsetUpRedBoxErrorHandler();\nsetUpTimers();\nsetUpAlert();\nsetUpPromise();\nsetUpXHR();\nsetUpRedBoxConsoleErrorHandler();\nsetUpGeolocation();\nsetUpWebSockets();\nsetupProfile();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/InitializeJavaScriptAppEngine.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/DebugComponentHierarchy/RCTDebugComponentOwnership.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DebugComponentOwnershipModule=require('NativeModules').DebugComponentOwnershipModule;\nvar InspectorUtils=require('InspectorUtils');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nfunction componentToString(component){\nreturn component.getName?component.getName():'Unknown';}\n\n\nfunction getRootTagForTag(tag){\nvar rootNodeID=ReactNativeTagHandles.tagToRootNodeID[tag];\nif(!rootNodeID){\nreturn null;}\n\nvar rootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);\nif(!rootID){\nreturn null;}\n\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootID];}\n\n\nmodule.exports = {\n\n\n\n\n\n\n\n\ngetOwnerHierarchy:function(requestID,tag){\nvar rootTag=getRootTagForTag(tag);\nvar instance=InspectorUtils.findInstanceByNativeTag(rootTag,tag);\nvar ownerHierarchy=instance?\nInspectorUtils.getOwnerHierarchy(instance).map(componentToString):\nnull;\nDebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID,tag,ownerHierarchy);}};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Utility class to provide the component owner hierarchy to native code for\n * debugging purposes.\n *\n * @providesModule RCTDebugComponentOwnership\n * @flow\n */\n\n'use strict';\n\nvar DebugComponentOwnershipModule = require('NativeModules').DebugComponentOwnershipModule;\nvar InspectorUtils = require('InspectorUtils');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nfunction componentToString(component) {\n return component.getName ? component.getName() : 'Unknown';\n}\n\nfunction getRootTagForTag(tag: number): ?number {\n var rootNodeID = ReactNativeTagHandles.tagToRootNodeID[tag];\n if (!rootNodeID) {\n return null;\n }\n var rootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootNodeID);\n if (!rootID) {\n return null;\n }\n return ReactNativeTagHandles.rootNodeIDToTag[rootID];\n}\n\nmodule.exports = {\n\n /**\n * Asynchronously returns the owner hierarchy as an array of strings. Request id is\n * passed along to the native module so that the native module can identify the\n * particular call instance.\n *\n * Example returned owner hierarchy: ['RootView', 'Dialog', 'TitleView', 'Text']\n */\n getOwnerHierarchy: function(requestID: number, tag: number) {\n var rootTag = getRootTagForTag(tag);\n var instance = InspectorUtils.findInstanceByNativeTag(rootTag, tag);\n var ownerHierarchy = instance ?\n InspectorUtils.getOwnerHierarchy(instance).map(componentToString) :\n null;\n DebugComponentOwnershipModule.receiveOwnershipHierarchy(requestID, tag, ownerHierarchy);\n },\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/DebugComponentHierarchy/RCTDebugComponentOwnership.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('BatchedBridge').RemoteModules;\n\nvar nativeModulePrefixNormalizer=require('nativeModulePrefixNormalizer');\n\nnativeModulePrefixNormalizer(NativeModules);\n\nmodule.exports = NativeModules;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NativeModules\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('BatchedBridge').RemoteModules;\n\nvar nativeModulePrefixNormalizer = require('nativeModulePrefixNormalizer');\n\nnativeModulePrefixNormalizer(NativeModules);\n\nmodule.exports = NativeModules;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/NativeModules.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar MessageQueue=require('MessageQueue');\n\nvar BatchedBridge=new MessageQueue(\n__fbBatchedBridgeConfig.remoteModuleConfig,\n__fbBatchedBridgeConfig.localModulesConfig);\n\n\nmodule.exports = BatchedBridge;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BatchedBridge\n */\n'use strict';\n\nlet MessageQueue = require('MessageQueue');\n\nlet BatchedBridge = new MessageQueue(\n __fbBatchedBridgeConfig.remoteModuleConfig,\n __fbBatchedBridgeConfig.localModulesConfig,\n);\n\nmodule.exports = BatchedBridge;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MessageQueue.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _objectWithoutProperties(obj,keys){var target={};for(var i in obj) {if(keys.indexOf(i) >= 0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i] = obj[i];}return target;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar BridgeProfiling=require('BridgeProfiling');\nvar ErrorUtils=require('ErrorUtils');\nvar JSTimersExecution=require('JSTimersExecution');\nvar ReactUpdates=require('ReactUpdates');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar stringifySafe=require('stringifySafe');\n\nvar MODULE_IDS=0;\nvar METHOD_IDS=1;\nvar PARAMS=2;\n\nvar SPY_MODE=false;\n\nvar MethodTypes=keyMirror({\nlocal:null,\nremote:null,\nremoteAsync:null});\n\n\nvar guard=function(fn){\ntry{\nfn();}\ncatch(error) {\nErrorUtils.reportFatalError(error);}};var \n\n\n\nMessageQueue=(function(){\n\nfunction MessageQueue(remoteModules,localModules,customRequire){var _this=this;_classCallCheck(this,MessageQueue);\nthis.RemoteModules = {};\n\nthis._require = customRequire || require;\nthis._queue = [[],[],[]];\nthis._moduleTable = {};\nthis._methodTable = {};\nthis._callbacks = [];\nthis._callbackID = 0;\n\n[\n'processBatch',\n'invokeCallbackAndReturnFlushedQueue',\n'callFunctionReturnFlushedQueue',\n'flushedQueue'].\nforEach(function(fn){return _this[fn] = _this[fn].bind(_this);});\n\nthis._genModules(remoteModules);\nlocalModules && this._genLookupTables(\nlocalModules,this._moduleTable,this._methodTable);\n\nif(__DEV__){\nthis._debugInfo = {};\nthis._remoteModuleTable = {};\nthis._remoteMethodTable = {};\nthis._genLookupTables(\nremoteModules,this._remoteModuleTable,this._remoteMethodTable);}}_createClass(MessageQueue,[{key:'processBatch',value:\n\n\n\n\n\n\nfunction processBatch(batch){var _this2=this;\nguard(function(){\nReactUpdates.batchedUpdates(function(){\nbatch.forEach(function(call){\nvar method=call.method === 'callFunctionReturnFlushedQueue'?\n'__callFunction':'__invokeCallback';\nguard(function(){return _this2[method].apply(_this2,call.args);});});\n\nBridgeProfiling.profile('ReactUpdates.batchedUpdates()');});\n\nBridgeProfiling.profileEnd();});\n\nreturn this.flushedQueue();}},{key:'callFunctionReturnFlushedQueue',value:\n\n\nfunction callFunctionReturnFlushedQueue(module,method,args){var _this3=this;\nguard(function(){return _this3.__callFunction(module,method,args);});\nreturn this.flushedQueue();}},{key:'invokeCallbackAndReturnFlushedQueue',value:\n\n\nfunction invokeCallbackAndReturnFlushedQueue(cbID,args){var _this4=this;\nguard(function(){return _this4.__invokeCallback(cbID,args);});\nreturn this.flushedQueue();}},{key:'flushedQueue',value:\n\n\nfunction flushedQueue(){\nBridgeProfiling.profile('JSTimersExecution.callImmediates()');\nguard(function(){return JSTimersExecution.callImmediates();});\nBridgeProfiling.profileEnd();\nvar queue=this._queue;\nthis._queue = [[],[],[]];\nreturn queue[0].length?queue:null;}},{key:'__nativeCall',value:\n\n\n\n\n\nfunction __nativeCall(module,method,params,onFail,onSucc){\nif(onFail || onSucc){\nif(__DEV__){\n\nthis._callbackID > 1 << 5 && (\nthis._debugInfo[this._callbackID >> 5] = null);\n\nthis._debugInfo[this._callbackID >> 1] = [module,method];\nif(SPY_MODE && isFinite(module)){\nconsole.log('JS->N : ' + this._remoteModuleTable[module] + '.' + \nthis._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');}}\n\n\nonFail && params.push(this._callbackID);\nthis._callbacks[this._callbackID++] = onFail;\nonSucc && params.push(this._callbackID);\nthis._callbacks[this._callbackID++] = onSucc;}\n\nthis._queue[MODULE_IDS].push(module);\nthis._queue[METHOD_IDS].push(method);\nthis._queue[PARAMS].push(params);}},{key:'__callFunction',value:\n\n\nfunction __callFunction(module,method,args){\nBridgeProfiling.profile(function(){return module + '.' + method + '(' + stringifySafe(args) + ')';});\nif(isFinite(module)){\nmethod = this._methodTable[module][method];\nmodule = this._moduleTable[module];}\n\nif(__DEV__ && SPY_MODE){\nconsole.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');}\n\nmodule = this._require(module);\nmodule[method].apply(module,args);\nBridgeProfiling.profileEnd();}},{key:'__invokeCallback',value:\n\n\nfunction __invokeCallback(cbID,args){\nBridgeProfiling.profile(\nfunction(){return 'MessageQueue.invokeCallback(' + cbID + ', ' + stringifySafe(args) + ')';});\nvar callback=this._callbacks[cbID];\nif(__DEV__){\nvar debug=this._debugInfo[cbID >> 1];\nvar _module=debug && this._remoteModuleTable[debug[0]];\nvar method=debug && this._remoteMethodTable[debug[0]][debug[1]];\nif(!callback){\nconsole.error('Callback with id ' + cbID + ': ' + _module + '.' + method + '() not found');}else \nif(SPY_MODE){\nconsole.log('N->JS : <callback for ' + _module + '.' + method + '>(' + JSON.stringify(args) + ')');}}\n\n\nthis._callbacks[cbID & ~1] = null;\nthis._callbacks[cbID | 1] = null;\ncallback.apply(null,args);\nBridgeProfiling.profileEnd();}},{key:'_genLookupTables',value:\n\n\n\n\n\nfunction _genLookupTables(localModules,moduleTable,methodTable){\nvar moduleNames=Object.keys(localModules);\nfor(var i=0,l=moduleNames.length;i < l;i++) {\nvar moduleName=moduleNames[i];\nvar methods=localModules[moduleName].methods;\nvar moduleID=localModules[moduleName].moduleID;\nmoduleTable[moduleID] = moduleName;\nmethodTable[moduleID] = {};\n\nvar methodNames=Object.keys(methods);\nfor(var j=0,k=methodNames.length;j < k;j++) {\nvar methodName=methodNames[j];\nvar methodConfig=methods[methodName];\nmethodTable[moduleID][methodConfig.methodID] = methodName;}}}},{key:'_genModules',value:\n\n\n\n\nfunction _genModules(remoteModules){\nvar moduleNames=Object.keys(remoteModules);\nfor(var i=0,l=moduleNames.length;i < l;i++) {\nvar moduleName=moduleNames[i];\nvar moduleConfig=remoteModules[moduleName];\nthis.RemoteModules[moduleName] = this._genModule({},moduleConfig);}}},{key:'_genModule',value:\n\n\n\nfunction _genModule(module,moduleConfig){\nvar methodNames=Object.keys(moduleConfig.methods);\nfor(var i=0,l=methodNames.length;i < l;i++) {\nvar methodName=methodNames[i];\nvar methodConfig=moduleConfig.methods[methodName];\nmodule[methodName] = this._genMethod(\nmoduleConfig.moduleID,methodConfig.methodID,methodConfig.type);}\n\nObject.assign(module,moduleConfig.constants);\nreturn module;}},{key:'_genMethod',value:\n\n\nfunction _genMethod(module,method,type){\nif(type === MethodTypes.local){\nreturn null;}\n\n\nvar self=this;\nif(type === MethodTypes.remoteAsync){\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nreturn new Promise(function(resolve,reject){\nself.__nativeCall(module,method,args,resolve,function(errorData){\nvar error=createErrorFromErrorData(errorData);\nreject(error);});});};}else \n\n\n\n{\nreturn function(){for(var _len2=arguments.length,args=Array(_len2),_key2=0;_key2 < _len2;_key2++) {args[_key2] = arguments[_key2];}\nvar lastArg=args.length > 0?args[args.length - 1]:null;\nvar secondLastArg=args.length > 1?args[args.length - 2]:null;\nvar hasSuccCB=typeof lastArg === 'function';\nvar hasErrorCB=typeof secondLastArg === 'function';\nhasErrorCB && invariant(\nhasSuccCB,\n'Cannot have a non-function arg after a function arg.');\n\nvar numCBs=hasSuccCB + hasErrorCB;\nvar onSucc=hasSuccCB?lastArg:null;\nvar onFail=hasErrorCB?secondLastArg:null;\nargs = args.slice(0,args.length - numCBs);\nreturn self.__nativeCall(module,method,args,onFail,onSucc);};}}}]);return MessageQueue;})();\n\n\n\n\n\n\nfunction createErrorFromErrorData(errorData){var \n\nmessage=\n\nerrorData.message;var extraErrorInfo=_objectWithoutProperties(errorData,['message']);\nvar error=new Error(message);\nerror.framesToPop = 1;\nreturn Object.assign(error,extraErrorInfo);}\n\n\nmodule.exports = MessageQueue;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule MessageQueue\n */\n\n/*eslint no-bitwise: 0*/\n\n'use strict';\n\nlet BridgeProfiling = require('BridgeProfiling');\nlet ErrorUtils = require('ErrorUtils');\nlet JSTimersExecution = require('JSTimersExecution');\nlet ReactUpdates = require('ReactUpdates');\n\nlet invariant = require('invariant');\nlet keyMirror = require('keyMirror');\nlet stringifySafe = require('stringifySafe');\n\nlet MODULE_IDS = 0;\nlet METHOD_IDS = 1;\nlet PARAMS = 2;\n\nlet SPY_MODE = false;\n\nlet MethodTypes = keyMirror({\n local: null,\n remote: null,\n remoteAsync: null,\n});\n\nvar guard = (fn) => {\n try {\n fn();\n } catch (error) {\n ErrorUtils.reportFatalError(error);\n }\n};\n\nclass MessageQueue {\n\n constructor(remoteModules, localModules, customRequire) {\n this.RemoteModules = {};\n\n this._require = customRequire || require;\n this._queue = [[],[],[]];\n this._moduleTable = {};\n this._methodTable = {};\n this._callbacks = [];\n this._callbackID = 0;\n\n [\n 'processBatch',\n 'invokeCallbackAndReturnFlushedQueue',\n 'callFunctionReturnFlushedQueue',\n 'flushedQueue',\n ].forEach((fn) => this[fn] = this[fn].bind(this));\n\n this._genModules(remoteModules);\n localModules && this._genLookupTables(\n localModules, this._moduleTable, this._methodTable);\n\n if (__DEV__) {\n this._debugInfo = {};\n this._remoteModuleTable = {};\n this._remoteMethodTable = {};\n this._genLookupTables(\n remoteModules, this._remoteModuleTable, this._remoteMethodTable);\n }\n }\n\n /**\n * Public APIs\n */\n processBatch(batch) {\n guard(() => {\n ReactUpdates.batchedUpdates(() => {\n batch.forEach((call) => {\n let method = call.method === 'callFunctionReturnFlushedQueue' ?\n '__callFunction' : '__invokeCallback';\n guard(() => this[method].apply(this, call.args));\n });\n BridgeProfiling.profile('ReactUpdates.batchedUpdates()');\n });\n BridgeProfiling.profileEnd();\n });\n return this.flushedQueue();\n }\n\n callFunctionReturnFlushedQueue(module, method, args) {\n guard(() => this.__callFunction(module, method, args));\n return this.flushedQueue();\n }\n\n invokeCallbackAndReturnFlushedQueue(cbID, args) {\n guard(() => this.__invokeCallback(cbID, args));\n return this.flushedQueue();\n }\n\n flushedQueue() {\n BridgeProfiling.profile('JSTimersExecution.callImmediates()');\n guard(() => JSTimersExecution.callImmediates());\n BridgeProfiling.profileEnd();\n let queue = this._queue;\n this._queue = [[],[],[]];\n return queue[0].length ? queue : null;\n }\n\n /**\n * \"Private\" methods\n */\n __nativeCall(module, method, params, onFail, onSucc) {\n if (onFail || onSucc) {\n if (__DEV__) {\n // eventually delete old debug info\n (this._callbackID > (1 << 5)) &&\n (this._debugInfo[this._callbackID >> 5] = null);\n\n this._debugInfo[this._callbackID >> 1] = [module, method];\n if (SPY_MODE && isFinite(module)) {\n console.log('JS->N : ' + this._remoteModuleTable[module] + '.' +\n this._remoteMethodTable[module][method] + '(' + JSON.stringify(params) + ')');\n }\n }\n onFail && params.push(this._callbackID);\n this._callbacks[this._callbackID++] = onFail;\n onSucc && params.push(this._callbackID);\n this._callbacks[this._callbackID++] = onSucc;\n }\n this._queue[MODULE_IDS].push(module);\n this._queue[METHOD_IDS].push(method);\n this._queue[PARAMS].push(params);\n }\n\n __callFunction(module, method, args) {\n BridgeProfiling.profile(() => `${module}.${method}(${stringifySafe(args)})`);\n if (isFinite(module)) {\n method = this._methodTable[module][method];\n module = this._moduleTable[module];\n }\n if (__DEV__ && SPY_MODE) {\n console.log('N->JS : ' + module + '.' + method + '(' + JSON.stringify(args) + ')');\n }\n module = this._require(module);\n module[method].apply(module, args);\n BridgeProfiling.profileEnd();\n }\n\n __invokeCallback(cbID, args) {\n BridgeProfiling.profile(\n () => `MessageQueue.invokeCallback(${cbID}, ${stringifySafe(args)})`);\n let callback = this._callbacks[cbID];\n if (__DEV__) {\n let debug = this._debugInfo[cbID >> 1];\n let module = debug && this._remoteModuleTable[debug[0]];\n let method = debug && this._remoteMethodTable[debug[0]][debug[1]];\n if (!callback) {\n console.error(`Callback with id ${cbID}: ${module}.${method}() not found`);\n } else if (SPY_MODE) {\n console.log('N->JS : <callback for ' + module + '.' + method + '>(' + JSON.stringify(args) + ')');\n }\n }\n this._callbacks[cbID & ~1] = null;\n this._callbacks[cbID | 1] = null;\n callback.apply(null, args);\n BridgeProfiling.profileEnd();\n }\n\n /**\n * Private helper methods\n */\n _genLookupTables(localModules, moduleTable, methodTable) {\n let moduleNames = Object.keys(localModules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let methods = localModules[moduleName].methods;\n let moduleID = localModules[moduleName].moduleID;\n moduleTable[moduleID] = moduleName;\n methodTable[moduleID] = {};\n\n let methodNames = Object.keys(methods);\n for (var j = 0, k = methodNames.length; j < k; j++) {\n let methodName = methodNames[j];\n let methodConfig = methods[methodName];\n methodTable[moduleID][methodConfig.methodID] = methodName;\n }\n }\n }\n\n _genModules(remoteModules) {\n let moduleNames = Object.keys(remoteModules);\n for (var i = 0, l = moduleNames.length; i < l; i++) {\n let moduleName = moduleNames[i];\n let moduleConfig = remoteModules[moduleName];\n this.RemoteModules[moduleName] = this._genModule({}, moduleConfig);\n }\n }\n\n _genModule(module, moduleConfig) {\n let methodNames = Object.keys(moduleConfig.methods);\n for (var i = 0, l = methodNames.length; i < l; i++) {\n let methodName = methodNames[i];\n let methodConfig = moduleConfig.methods[methodName];\n module[methodName] = this._genMethod(\n moduleConfig.moduleID, methodConfig.methodID, methodConfig.type);\n }\n Object.assign(module, moduleConfig.constants);\n return module;\n }\n\n _genMethod(module, method, type) {\n if (type === MethodTypes.local) {\n return null;\n }\n\n let self = this;\n if (type === MethodTypes.remoteAsync) {\n return function(...args) {\n return new Promise((resolve, reject) => {\n self.__nativeCall(module, method, args, resolve, (errorData) => {\n var error = createErrorFromErrorData(errorData);\n reject(error);\n });\n });\n };\n } else {\n return function(...args) {\n let lastArg = args.length > 0 ? args[args.length - 1] : null;\n let secondLastArg = args.length > 1 ? args[args.length - 2] : null;\n let hasSuccCB = typeof lastArg === 'function';\n let hasErrorCB = typeof secondLastArg === 'function';\n hasErrorCB && invariant(\n hasSuccCB,\n 'Cannot have a non-function arg after a function arg.'\n );\n let numCBs = hasSuccCB + hasErrorCB;\n let onSucc = hasSuccCB ? lastArg : null;\n let onFail = hasErrorCB ? secondLastArg : null;\n args = args.slice(0, args.length - numCBs);\n return self.__nativeCall(module, method, args, onFail, onSucc);\n };\n }\n }\n\n}\n\nfunction createErrorFromErrorData(errorData: ErrorData): Error {\n var {\n message,\n ...extraErrorInfo,\n } = errorData;\n var error = new Error(message);\n error.framesToPop = 1;\n return Object.assign(error, extraErrorInfo);\n}\n\nmodule.exports = MessageQueue;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MessageQueue.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/BridgeProfiling.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar GLOBAL=GLOBAL || this;\n\nvar BridgeProfiling={\nprofile:function(profileName,args){\nif(GLOBAL.__BridgeProfilingIsProfiling){\nif(args){\ntry{\nargs = JSON.stringify(args);}\ncatch(err) {\nargs = err.message;}}\n\n\nprofileName = typeof profileName === 'function'?\nprofileName():profileName;\nconsole.profile(profileName,args);}},\n\n\n\nprofileEnd:function(profileName){\nif(GLOBAL.__BridgeProfilingIsProfiling){\nconsole.profileEnd(profileName);}},\n\n\n\nswizzleReactPerf:function(){\nvar ReactPerf=require('ReactPerf');\nvar originalMeasure=ReactPerf.measure;\nReactPerf.measure = function(objName,fnName,func){\nfunc = originalMeasure.call(ReactPerf,objName,fnName,func);\nreturn function(component){\nBridgeProfiling.profile();\nvar ret=func.apply(this,arguments);\nif(GLOBAL.__BridgeProfilingIsProfiling){\nvar name=this._instance && this._instance.constructor && (\nthis._instance.constructor.displayName || \nthis._instance.constructor.name);\nBridgeProfiling.profileEnd(objName + '.' + fnName + '(' + name + ')');}\n\nreturn ret;};};}};\n\n\n\n\n\nmodule.exports = BridgeProfiling;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BridgeProfiling\n * @flow\n */\n'use strict';\n\nvar GLOBAL = GLOBAL || this;\n\nvar BridgeProfiling = {\n profile(profileName?: any, args?: any) {\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n if (args) {\n try {\n args = JSON.stringify(args);\n } catch(err) {\n args = err.message;\n }\n }\n profileName = typeof profileName === 'function' ?\n profileName() : profileName;\n console.profile(profileName, args);\n }\n },\n\n profileEnd(profileName?: string) {\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n console.profileEnd(profileName);\n }\n },\n\n swizzleReactPerf() {\n var ReactPerf = require('ReactPerf');\n var originalMeasure = ReactPerf.measure;\n ReactPerf.measure = function (objName, fnName, func) {\n func = originalMeasure.call(ReactPerf, objName, fnName, func);\n return function (component) {\n BridgeProfiling.profile();\n var ret = func.apply(this, arguments);\n if (GLOBAL.__BridgeProfilingIsProfiling) {\n var name = this._instance && this._instance.constructor &&\n (this._instance.constructor.displayName ||\n this._instance.constructor.name);\n BridgeProfiling.profileEnd(`${objName}.${fnName}(${name})`);\n }\n return ret;\n };\n };\n },\n};\n\nmodule.exports = BridgeProfiling;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/BridgeProfiling.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/ErrorUtils.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nGLOBAL=this;\n\n\n\n\n\n\n\n\n\n\n\n\n\nmodule.exports = GLOBAL.ErrorUtils;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ErrorUtils\n */\n/* eslint-disable consistent-this, global-strict */\n\nvar GLOBAL = this;\n\n/**\n * The particular require runtime that we are using looks for a global\n * `ErrorUtils` object and if it exists, then it requires modules with the\n * error handler specified via ErrorUtils.setGlobalHandler by calling the\n * require function with applyWithGuard. Since the require module is loaded\n * before any of the modules, this ErrorUtils must be defined (and the handler\n * set) globally before requiring anything.\n *\n * However, we still want to treat ErrorUtils as a module so that other modules\n * that use it aren't just using a global variable, so simply export the global\n * variable here. ErrorUtils is originally defined in a file named error-guard.js.\n */\nmodule.exports = GLOBAL.ErrorUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/ErrorUtils.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar performanceNow=require('performanceNow');\nvar warning=require('warning');\n\n\n\n\n\n\nvar JSTimersExecution={\nGUID:1,\nType:keyMirror({\nsetTimeout:null,\nsetInterval:null,\nrequestAnimationFrame:null,\nsetImmediate:null}),\n\n\n\ncallbacks:[],\ntypes:[],\ntimerIDs:[],\nimmediates:[],\n\n\n\n\n\n\ncallTimer:function(timerID){\nwarning(timerID <= JSTimersExecution.GUID,'Tried to call timer with ID ' + timerID + ' but no such timer exists');\nvar timerIndex=JSTimersExecution.timerIDs.indexOf(timerID);\n\n\n\n\n\nif(timerIndex === -1){\nreturn;}\n\nvar type=JSTimersExecution.types[timerIndex];\nvar callback=JSTimersExecution.callbacks[timerIndex];\n\n\nif(type === JSTimersExecution.Type.setTimeout || \ntype === JSTimersExecution.Type.setImmediate || \ntype === JSTimersExecution.Type.requestAnimationFrame){\nJSTimersExecution._clearIndex(timerIndex);}\n\n\ntry{\nif(type === JSTimersExecution.Type.setTimeout || \ntype === JSTimersExecution.Type.setInterval || \ntype === JSTimersExecution.Type.setImmediate){\ncallback();}else \nif(type === JSTimersExecution.Type.requestAnimationFrame){\nvar currentTime=performanceNow();\ncallback(currentTime);}else \n{\nconsole.error('Tried to call a callback with invalid type: ' + type);\nreturn;}}\n\ncatch(e) {\n\nJSTimersExecution.errors = JSTimersExecution.errors || [];\nJSTimersExecution.errors.push(e);}},\n\n\n\n\n\n\n\ncallTimers:function(timerIDs){\ninvariant(timerIDs.length !== 0,'Probably shouldn\\'t call \"callTimers\" with no timerIDs');\n\nJSTimersExecution.errors = null;\ntimerIDs.forEach(JSTimersExecution.callTimer);\n\nvar errors=JSTimersExecution.errors;\nif(errors){\nvar errorCount=errors.length;\nif(errorCount > 1){\n\n\nfor(var ii=1;ii < errorCount;ii++) {\nrequire('JSTimers').setTimeout(\n(function(error){throw error;}).bind(null,errors[ii]),\n0);}}\n\n\n\nthrow errors[0];}},\n\n\n\n\n\n\n\ncallImmediates:function(){\nJSTimersExecution.errors = null;\nwhile(JSTimersExecution.immediates.length !== 0) {\nJSTimersExecution.callTimer(JSTimersExecution.immediates.shift());}\n\nif(JSTimersExecution.errors){\nJSTimersExecution.errors.forEach(function(error){return (\nrequire('JSTimers').setTimeout(function(){throw error;},0));});}},\n\n\n\n\n_clearIndex:function(i){\nJSTimersExecution.timerIDs[i] = null;\nJSTimersExecution.callbacks[i] = null;\nJSTimersExecution.types[i] = null;}};\n\n\n\nmodule.exports = JSTimersExecution;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule JSTimersExecution\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar performanceNow = require('performanceNow');\nvar warning = require('warning');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nvar JSTimersExecution = {\n GUID: 1,\n Type: keyMirror({\n setTimeout: null,\n setInterval: null,\n requestAnimationFrame: null,\n setImmediate: null,\n }),\n\n // Parallel arrays:\n callbacks: [],\n types: [],\n timerIDs: [],\n immediates: [],\n\n /**\n * Calls the callback associated with the ID. Also unregister that callback\n * if it was a one time timer (setTimeout), and not unregister it if it was\n * recurring (setInterval).\n */\n callTimer: function(timerID) {\n warning(timerID <= JSTimersExecution.GUID, 'Tried to call timer with ID ' + timerID + ' but no such timer exists');\n var timerIndex = JSTimersExecution.timerIDs.indexOf(timerID);\n // timerIndex of -1 means that no timer with that ID exists. There are\n // two situations when this happens, when a garbage timer ID was given\n // and when a previously existing timer was deleted before this callback\n // fired. In both cases we want to ignore the timer id, but in the former\n // case we warn as well.\n if (timerIndex === -1) {\n return;\n }\n var type = JSTimersExecution.types[timerIndex];\n var callback = JSTimersExecution.callbacks[timerIndex];\n\n // Clear the metadata\n if (type === JSTimersExecution.Type.setTimeout ||\n type === JSTimersExecution.Type.setImmediate ||\n type === JSTimersExecution.Type.requestAnimationFrame) {\n JSTimersExecution._clearIndex(timerIndex);\n }\n\n try {\n if (type === JSTimersExecution.Type.setTimeout ||\n type === JSTimersExecution.Type.setInterval ||\n type === JSTimersExecution.Type.setImmediate) {\n callback();\n } else if (type === JSTimersExecution.Type.requestAnimationFrame) {\n var currentTime = performanceNow();\n callback(currentTime);\n } else {\n console.error('Tried to call a callback with invalid type: ' + type);\n return;\n }\n } catch (e) {\n // Don't rethrow so that we can run every other timer.\n JSTimersExecution.errors = JSTimersExecution.errors || [];\n JSTimersExecution.errors.push(e);\n }\n },\n\n /**\n * This is called from the native side. We are passed an array of timerIDs,\n * and\n */\n callTimers: function(timerIDs) {\n invariant(timerIDs.length !== 0, 'Probably shouldn\\'t call \"callTimers\" with no timerIDs');\n\n JSTimersExecution.errors = null;\n timerIDs.forEach(JSTimersExecution.callTimer);\n\n var errors = JSTimersExecution.errors;\n if (errors) {\n var errorCount = errors.length;\n if (errorCount > 1) {\n // Throw all the other errors in a setTimeout, which will throw each\n // error one at a time\n for (var ii = 1; ii < errorCount; ii++) {\n require('JSTimers').setTimeout(\n ((error) => { throw error; }).bind(null, errors[ii]),\n 0\n );\n }\n }\n throw errors[0];\n }\n },\n\n /**\n * This is called after we execute any command we receive from native but\n * before we hand control back to native.\n */\n callImmediates: function() {\n JSTimersExecution.errors = null;\n while (JSTimersExecution.immediates.length !== 0) {\n JSTimersExecution.callTimer(JSTimersExecution.immediates.shift());\n }\n if (JSTimersExecution.errors) {\n JSTimersExecution.errors.forEach((error) =>\n require('JSTimers').setTimeout(() => { throw error; }, 0)\n );\n }\n },\n\n _clearIndex: function(i) {\n JSTimersExecution.timerIDs[i] = null;\n JSTimersExecution.callbacks[i] = null;\n JSTimersExecution.types[i] = null;\n },\n};\n\nmodule.exports = JSTimersExecution;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimersExecution.js"},"mtime":1435113427000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performanceNow.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nperformance=require('performance');\n\n\n\n\n\n\nif(!performance || !performance.now){\nperformance = Date;}\n\n\nvar performanceNow=performance.now.bind(performance);\n\nmodule.exports = performanceNow;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performanceNow\n * @typechecks\n */\n\nvar performance = require('performance');\n\n/**\n * Detect if we can use `window.performance.now()` and gracefully fallback to\n * `Date.now()` if it doesn't exist. We need to support Firefox < 15 for now\n * because of Facebook's testing infrastructure.\n */\nif (!performance || !performance.now) {\n performance = Date;\n}\n\nvar performanceNow = performance.now.bind(performance);\n\nmodule.exports = performanceNow;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performanceNow.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performance.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar performance;\n\nif(ExecutionEnvironment.canUseDOM){\nperformance = \nwindow.performance || \nwindow.msPerformance || \nwindow.webkitPerformance;}\n\n\nmodule.exports = performance || {};","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule performance\n * @typechecks\n */\n\n\"use strict\";\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar performance;\n\nif (ExecutionEnvironment.canUseDOM) {\n performance =\n window.performance ||\n window.msPerformance ||\n window.webkitPerformance;\n}\n\nmodule.exports = performance || {};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/performance/performance.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/vendor/core/ExecutionEnvironment.ios.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar canUseDOM=false;\n\n\n\n\n\n\n\nvar ExecutionEnvironment={\n\ncanUseDOM:canUseDOM,\n\ncanUseWorkers:typeof Worker !== 'undefined',\n\ncanUseEventListeners:\ncanUseDOM && !!(window.addEventListener || window.attachEvent),\n\ncanUseViewport:canUseDOM && !!window.screen,\n\nisInWorker:!canUseDOM};\n\n\n\nmodule.exports = ExecutionEnvironment;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ExecutionEnvironment\n *\n * Stubs SignedSource<<7afee88a05412d0c4eef54817419648e>>\n */\n\n/*jslint evil: true */\n\n\"use strict\";\n\nvar canUseDOM = false;\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/vendor/core/ExecutionEnvironment.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTTiming=require('NativeModules').Timing;\nvar JSTimersExecution=require('JSTimersExecution');\n\n\n\n\n\n\nvar JSTimers={\nTypes:JSTimersExecution.Types,\n\n\n\n\n\n_getFreeIndex:function(){\nvar freeIndex=JSTimersExecution.timerIDs.indexOf(null);\nif(freeIndex === -1){\nfreeIndex = JSTimersExecution.timerIDs.length;}\n\nreturn freeIndex;},\n\n\n\n\n\n\nsetTimeout:function(func,duration){for(var _len=arguments.length,args=Array(_len > 2?_len - 2:0),_key=2;_key < _len;_key++) {args[_key - 2] = arguments[_key];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setTimeout;\nRCTTiming.createTimer(newID,duration,Date.now(),false);\nreturn newID;},\n\n\n\n\n\n\nsetInterval:function(func,duration){for(var _len2=arguments.length,args=Array(_len2 > 2?_len2 - 2:0),_key2=2;_key2 < _len2;_key2++) {args[_key2 - 2] = arguments[_key2];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setInterval;\nRCTTiming.createTimer(newID,duration,Date.now(),true);\nreturn newID;},\n\n\n\n\n\n\nsetImmediate:function(func){for(var _len3=arguments.length,args=Array(_len3 > 1?_len3 - 1:0),_key3=1;_key3 < _len3;_key3++) {args[_key3 - 1] = arguments[_key3];}\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = function(){\nreturn func.apply(undefined,args);};\n\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setImmediate;\nJSTimersExecution.immediates.push(newID);\nreturn newID;},\n\n\n\n\n\nrequestAnimationFrame:function(func){\nvar newID=JSTimersExecution.GUID++;\nvar freeIndex=JSTimers._getFreeIndex();\nJSTimersExecution.timerIDs[freeIndex] = newID;\nJSTimersExecution.callbacks[freeIndex] = func;\nJSTimersExecution.types[freeIndex] = JSTimersExecution.Type.requestAnimationFrame;\nRCTTiming.createTimer(newID,1,Date.now(),false);\nreturn newID;},\n\n\nclearTimeout:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearInterval:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\nclearImmediate:function(timerID){\nJSTimers._clearTimerID(timerID);\nJSTimersExecution.immediates.splice(\nJSTimersExecution.immediates.indexOf(timerID),\n1);},\n\n\n\ncancelAnimationFrame:function(timerID){\nJSTimers._clearTimerID(timerID);},\n\n\n_clearTimerID:function(timerID){\n\n\nif(timerID == null){\nreturn;}\n\n\nvar index=JSTimersExecution.timerIDs.indexOf(timerID);\n\nif(index !== -1){\nJSTimersExecution._clearIndex(index);\nif(JSTimersExecution.types[index] !== JSTimersExecution.Type.setImmediate){\nRCTTiming.deleteTimer(timerID);}}}};\n\n\n\n\n\nmodule.exports = JSTimers;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule JSTimers\n */\n'use strict';\n\n// Note that the module JSTimers is split into two in order to solve a cycle\n// in dependencies. NativeModules > BatchedBridge > MessageQueue > JSTimersExecution\nvar RCTTiming = require('NativeModules').Timing;\nvar JSTimersExecution = require('JSTimersExecution');\n\n/**\n * JS implementation of timer functions. Must be completely driven by an\n * external clock signal, all that's stored here is timerID, timer type, and\n * callback.\n */\nvar JSTimers = {\n Types: JSTimersExecution.Types,\n\n /**\n * Returns a free index if one is available, and the next consecutive index\n * otherwise.\n */\n _getFreeIndex: function() {\n var freeIndex = JSTimersExecution.timerIDs.indexOf(null);\n if (freeIndex === -1) {\n freeIndex = JSTimersExecution.timerIDs.length;\n }\n return freeIndex;\n },\n\n /**\n * @param {function} func Callback to be invoked after `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setTimeout: function(func, duration, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setTimeout;\n RCTTiming.createTimer(newID, duration, Date.now(), /** recurring */ false);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked every `duration` ms.\n * @param {number} duration Number of milliseconds.\n */\n setInterval: function(func, duration, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setInterval;\n RCTTiming.createTimer(newID, duration, Date.now(), /** recurring */ true);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked before the end of the\n * current JavaScript execution loop.\n */\n setImmediate: function(func, ...args) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = function() {\n return func.apply(undefined, args);\n };\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.setImmediate;\n JSTimersExecution.immediates.push(newID);\n return newID;\n },\n\n /**\n * @param {function} func Callback to be invoked every frame.\n */\n requestAnimationFrame: function(func) {\n var newID = JSTimersExecution.GUID++;\n var freeIndex = JSTimers._getFreeIndex();\n JSTimersExecution.timerIDs[freeIndex] = newID;\n JSTimersExecution.callbacks[freeIndex] = func;\n JSTimersExecution.types[freeIndex] = JSTimersExecution.Type.requestAnimationFrame;\n RCTTiming.createTimer(newID, 1, Date.now(), /** recurring */ false);\n return newID;\n },\n\n clearTimeout: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n clearInterval: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n clearImmediate: function(timerID) {\n JSTimers._clearTimerID(timerID);\n JSTimersExecution.immediates.splice(\n JSTimersExecution.immediates.indexOf(timerID),\n 1\n );\n },\n\n cancelAnimationFrame: function(timerID) {\n JSTimers._clearTimerID(timerID);\n },\n\n _clearTimerID: function(timerID) {\n // JSTimersExecution.timerIDs contains nulls after timers have been removed;\n // ignore nulls upfront so indexOf doesn't find them\n if (timerID == null) {\n return;\n }\n\n var index = JSTimersExecution.timerIDs.indexOf(timerID);\n // See corresponding comment in `callTimers` for reasoning behind this\n if (index !== -1) {\n JSTimersExecution._clearIndex(index);\n if (JSTimersExecution.types[index] !== JSTimersExecution.Type.setImmediate) {\n RCTTiming.deleteTimer(timerID);\n }\n }\n },\n};\n\nmodule.exports = JSTimers;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/System/JSTimers/JSTimers.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/stringifySafe.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction stringifySafe(arg){\nvar ret;\nvar type=typeof arg;\nif(arg === undefined){\nret = 'undefined';}else \nif(arg === null){\nret = 'null';}else \nif(type === 'string'){\nret = '\"' + arg + '\"';}else \nif(type === 'function'){\ntry{\nret = arg.toString();}\ncatch(e) {\nret = '[function unknown]';}}else \n\n{\n\n\ntry{\nret = JSON.stringify(arg);}\ncatch(e) {\nif(typeof arg.toString === 'function'){\ntry{\nret = arg.toString();}\ncatch(E) {}}}}\n\n\n\nreturn ret || '[\"' + type + '\" failed to stringify]';}\n\n\nmodule.exports = stringifySafe;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule stringifySafe\n * @flow\n */\n'use strict';\n\n/**\n * Tries to stringify with JSON.stringify and toString, but catches exceptions\n * (e.g. from circular objects) and always returns a string and never throws.\n */\nfunction stringifySafe(arg: any): string {\n var ret;\n var type = typeof arg;\n if (arg === undefined) {\n ret = 'undefined';\n } else if (arg === null) {\n ret = 'null';\n } else if (type === 'string') {\n ret = '\"' + arg + '\"';\n } else if (type === 'function') {\n try {\n ret = arg.toString();\n } catch (e) {\n ret = '[function unknown]';\n }\n } else {\n // Perform a try catch, just in case the object has a circular\n // reference or stringify throws for some other reason.\n try {\n ret = JSON.stringify(arg);\n } catch (e) {\n if (typeof arg.toString === 'function') {\n try {\n ret = arg.toString();\n } catch (E) {}\n }\n }\n }\n return ret || '[\"' + type + '\" failed to stringify]';\n}\n\nmodule.exports = stringifySafe;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/stringifySafe.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/nativeModulePrefixNormalizer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction nativeModulePrefixNormalizer(\nmodules)\n{\nObject.keys(modules).forEach(function(moduleName){\nvar strippedName=moduleName.replace(/^(RCT|RK)/,'');\nif(modules['RCT' + strippedName] && modules['RK' + strippedName]){\nthrow new Error(\n'Module cannot be registered as both RCT and RK: ' + moduleName);}\n\n\nif(strippedName !== moduleName){\nmodules[strippedName] = modules[moduleName];\ndelete modules[moduleName];}});}\n\n\n\n\nmodule.exports = nativeModulePrefixNormalizer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule nativeModulePrefixNormalizer\n * @flow\n */\n'use strict';\n\n// Dirty hack to support old (RK) and new (RCT) native module name conventions\nfunction nativeModulePrefixNormalizer(\n modules: {[key: string]: any}\n): void {\n Object.keys(modules).forEach((moduleName) => {\n var strippedName = moduleName.replace(/^(RCT|RK)/, '');\n if (modules['RCT' + strippedName] && modules['RK' + strippedName]) {\n throw new Error(\n 'Module cannot be registered as both RCT and RK: ' + moduleName\n );\n }\n if (strippedName !== moduleName) {\n modules[strippedName] = modules[moduleName];\n delete modules[moduleName];\n }\n });\n}\n\nmodule.exports = nativeModulePrefixNormalizer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/nativeModulePrefixNormalizer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeMount=require('ReactNativeMount');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nfunction traverseOwnerTreeUp(hierarchy,instance){\nif(instance){\nhierarchy.unshift(instance);\ntraverseOwnerTreeUp(hierarchy,instance._currentElement._owner);}}\n\n\n\nfunction findInstance(component,targetID){\nif(targetID === findRootNodeID(component)){\nreturn component;}\n\nif(component._renderedComponent){\nreturn findInstance(component._renderedComponent,targetID);}else \n{\nfor(var key in component._renderedChildren) {\nvar child=component._renderedChildren[key];\nif(ReactInstanceHandles.isAncestorIDOf(findRootNodeID(child),targetID)){\nvar instance=findInstance(child,targetID);\nif(instance){\nreturn instance;}}}}}\n\n\n\n\n\n\nfunction findRootNodeID(component){\nvar internalInstance=ReactInstanceMap.get(component);\nreturn internalInstance?internalInstance._rootNodeID:component._rootNodeID;}\n\n\nfunction findInstanceByNativeTag(rootTag,nativeTag){\nvar containerID=ReactNativeTagHandles.tagToRootNodeID[rootTag];\nvar rootInstance=ReactNativeMount._instancesByContainerID[containerID];\nvar targetID=ReactNativeTagHandles.tagToRootNodeID[nativeTag];\nif(!targetID){\nreturn undefined;}\n\nreturn findInstance(rootInstance,targetID);}\n\n\nfunction getOwnerHierarchy(instance){\nvar hierarchy=[];\ntraverseOwnerTreeUp(hierarchy,instance);\nreturn hierarchy;}\n\n\nmodule.exports = {findInstanceByNativeTag:findInstanceByNativeTag,getOwnerHierarchy:getOwnerHierarchy};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorUtils\n */\n'use strict';\n\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeMount = require('ReactNativeMount');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nfunction traverseOwnerTreeUp(hierarchy, instance) {\n if (instance) {\n hierarchy.unshift(instance);\n traverseOwnerTreeUp(hierarchy, instance._currentElement._owner);\n }\n}\n\nfunction findInstance(component, targetID) {\n if (targetID === findRootNodeID(component)) {\n return component;\n }\n if (component._renderedComponent) {\n return findInstance(component._renderedComponent, targetID);\n } else {\n for (var key in component._renderedChildren) {\n var child = component._renderedChildren[key];\n if (ReactInstanceHandles.isAncestorIDOf(findRootNodeID(child), targetID)) {\n var instance = findInstance(child, targetID);\n if (instance) {\n return instance;\n }\n }\n }\n }\n}\n\nfunction findRootNodeID(component) {\n var internalInstance = ReactInstanceMap.get(component);\n return internalInstance ? internalInstance._rootNodeID : component._rootNodeID;\n}\n\nfunction findInstanceByNativeTag(rootTag, nativeTag) {\n var containerID = ReactNativeTagHandles.tagToRootNodeID[rootTag];\n var rootInstance = ReactNativeMount._instancesByContainerID[containerID];\n var targetID = ReactNativeTagHandles.tagToRootNodeID[nativeTag];\n if (!targetID) {\n return undefined;\n }\n return findInstance(rootInstance, targetID);\n}\n\nfunction getOwnerHierarchy(instance) {\n var hierarchy = [];\n traverseOwnerTreeUp(hierarchy, instance);\n return hierarchy;\n}\n\nmodule.exports = {findInstanceByNativeTag, getOwnerHierarchy};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorUtils.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeMount.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\nvar ReactUpdates=require('ReactUpdates');\n\nvar emptyObject=require('emptyObject');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\n\nfunction instanceNumberToChildRootID(rootNodeID,instanceNumber){\nreturn rootNodeID + '[' + instanceNumber + ']';}\n\n\n\n\n\n\n\n\n\n\nfunction mountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\ntransaction){\nvar markup=ReactReconciler.mountComponent(\ncomponentInstance,rootID,transaction,emptyObject);\n\ncomponentInstance._isTopLevel = true;\nReactNativeMount._mountImageIntoNode(markup,container);}\n\n\n\n\n\n\n\n\n\nfunction batchedMountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\ntransaction.perform(\nmountComponentIntoNode,\nnull,\ncomponentInstance,\nrootID,\ncontainer,\ntransaction);\n\nReactUpdates.ReactReconcileTransaction.release(transaction);}\n\n\n\n\n\n\nvar ReactNativeMount={\ninstanceCount:0,\n\n_instancesByContainerID:{},\n\n\n\n\n\nrenderComponent:function(\nnextElement,\ncontainerTag,\ncallback)\n{\nvar topRootNodeID=ReactNativeTagHandles.tagToRootNodeID[containerTag];\nif(topRootNodeID){\nvar prevComponent=ReactNativeMount._instancesByContainerID[topRootNodeID];\nif(prevComponent){\nvar prevElement=prevComponent._currentElement;\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nReactUpdateQueue.enqueueElementInternal(prevComponent,nextElement);\nif(callback){\nReactUpdateQueue.enqueueCallbackInternal(prevComponent,callback);}\n\nreturn prevComponent;}else \n{\nReactNativeMount.unmountComponentAtNode(containerTag);}}}\n\n\n\n\nif(!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)){\nconsole.error('You cannot render into anything but a top root');\nreturn;}\n\n\nvar topRootNodeID=ReactNativeTagHandles.allocateRootNodeIDForTag(containerTag);\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\ntopRootNodeID,\ncontainerTag);\n\n\nvar instance=instantiateReactComponent(nextElement);\nReactNativeMount._instancesByContainerID[topRootNodeID] = instance;\n\nvar childRootNodeID=instanceNumberToChildRootID(\ntopRootNodeID,\nReactNativeMount.instanceCount++);\n\n\n\n\n\n\nReactUpdates.batchedUpdates(\nbatchedMountComponentIntoNode,\ninstance,\nchildRootNodeID,\ntopRootNodeID);\n\nvar component=instance.getPublicInstance();\nif(callback){\ncallback.call(component);}\n\nreturn component;},\n\n\n\n\n\n\n_mountImageIntoNode:ReactPerf.measure(\n\n'ReactComponentBrowserEnvironment',\n'mountImageIntoNode',\nfunction(mountImage,containerID){\n\n\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\nmountImage.rootNodeID,\nmountImage.tag);\n\nvar addChildTags=[mountImage.tag];\nvar addAtIndices=[0];\nRCTUIManager.manageChildren(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID),\nnull,\nnull,\naddChildTags,\naddAtIndices,\nnull);}),\n\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentAtNodeAndRemoveContainer:function(\ncontainerTag)\n{\nReactNativeMount.unmountComponentAtNode(containerTag);\n\nRCTUIManager.removeRootView(containerTag);},\n\n\n\n\n\n\n\nunmountComponentAtNode:function(containerTag){\nif(!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)){\nconsole.error('You cannot render into anything but a top root');\nreturn false;}\n\n\nvar containerID=ReactNativeTagHandles.tagToRootNodeID[containerTag];\nvar instance=ReactNativeMount._instancesByContainerID[containerID];\nif(!instance){\nreturn false;}\n\nReactNativeMount.unmountComponentFromNode(instance,containerID);\ndelete ReactNativeMount._instancesByContainerID[containerID];\nreturn true;},\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentFromNode:function(\ninstance,\ncontainerID)\n{\n\nReactReconciler.unmountComponent(instance);\nvar containerTag=\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID);\nRCTUIManager.removeSubviewsFromContainerWithID(containerTag);},\n\n\ngetNode:function(id){\nreturn id;}};\n\n\n\nReactNativeMount.renderComponent = ReactPerf.measure(\n'ReactMount',\n'_renderNewRootComponent',\nReactNativeMount.renderComponent);\n\n\nmodule.exports = ReactNativeMount;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeMount\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\nvar ReactUpdates = require('ReactUpdates');\n\nvar emptyObject = require('emptyObject');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\n\nfunction instanceNumberToChildRootID(rootNodeID, instanceNumber) {\n return rootNodeID + '[' + instanceNumber + ']';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {number} rootID ID of the root node.\n * @param {number} container container element to mount into.\n * @param {ReactReconcileTransaction} transaction\n */\nfunction mountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n transaction) {\n var markup = ReactReconciler.mountComponent(\n componentInstance, rootID, transaction, emptyObject\n );\n componentInstance._isTopLevel = true;\n ReactNativeMount._mountImageIntoNode(markup, container);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {number} rootID ID of the root node.\n * @param {number} container container element to mount into.\n */\nfunction batchedMountComponentIntoNode(\n componentInstance,\n rootID,\n container) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n transaction.perform(\n mountComponentIntoNode,\n null,\n componentInstance,\n rootID,\n container,\n transaction\n );\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * As soon as `ReactMount` is refactored to not rely on the DOM, we can share\n * code between the two. For now, we'll hard code the ID logic.\n */\nvar ReactNativeMount = {\n instanceCount: 0,\n\n _instancesByContainerID: {},\n\n /**\n * @param {ReactComponent} instance Instance to render.\n * @param {containerTag} containerView Handle to native view tag\n */\n renderComponent: function(\n nextElement: ReactElement,\n containerTag: number,\n callback?: ?(() => void)\n ): ?ReactComponent {\n var topRootNodeID = ReactNativeTagHandles.tagToRootNodeID[containerTag];\n if (topRootNodeID) {\n var prevComponent = ReactNativeMount._instancesByContainerID[topRootNodeID];\n if (prevComponent) {\n var prevElement = prevComponent._currentElement;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n return prevComponent;\n } else {\n ReactNativeMount.unmountComponentAtNode(containerTag);\n }\n }\n }\n\n if (!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)) {\n console.error('You cannot render into anything but a top root');\n return;\n }\n\n var topRootNodeID = ReactNativeTagHandles.allocateRootNodeIDForTag(containerTag);\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n topRootNodeID,\n containerTag\n );\n\n var instance = instantiateReactComponent(nextElement);\n ReactNativeMount._instancesByContainerID[topRootNodeID] = instance;\n\n var childRootNodeID = instanceNumberToChildRootID(\n topRootNodeID,\n ReactNativeMount.instanceCount++\n );\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(\n batchedMountComponentIntoNode,\n instance,\n childRootNodeID,\n topRootNodeID\n );\n var component = instance.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * @param {View} view View tree image.\n * @param {number} containerViewID View to insert sub-view into.\n */\n _mountImageIntoNode: ReactPerf.measure(\n // FIXME(frantic): #4441289 Hack to avoid modifying react-tools\n 'ReactComponentBrowserEnvironment',\n 'mountImageIntoNode',\n function(mountImage, containerID) {\n // Since we now know that the `mountImage` has been mounted, we can\n // mark it as such.\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n mountImage.rootNodeID,\n mountImage.tag\n );\n var addChildTags = [mountImage.tag];\n var addAtIndices = [0];\n RCTUIManager.manageChildren(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID),\n null, // moveFromIndices\n null, // moveToIndices\n addChildTags,\n addAtIndices,\n null // removeAtIndices\n );\n }\n ),\n\n /**\n * Standard unmounting of the component that is rendered into `containerID`,\n * but will also execute a command to remove the actual container view\n * itself. This is useful when a client is cleaning up a React tree, and also\n * knows that the container will no longer be needed. When executing\n * asynchronously, it's easier to just have this method be the one that calls\n * for removal of the view.\n */\n unmountComponentAtNodeAndRemoveContainer: function(\n containerTag: number\n ) {\n ReactNativeMount.unmountComponentAtNode(containerTag);\n // call back into native to remove all of the subviews from this container\n RCTUIManager.removeRootView(containerTag);\n },\n\n /**\n * Unmount component at container ID by iterating through each child component\n * that has been rendered and unmounting it. There should just be one child\n * component at this time.\n */\n unmountComponentAtNode: function(containerTag: number): boolean {\n if (!ReactNativeTagHandles.reactTagIsNativeTopRootID(containerTag)) {\n console.error('You cannot render into anything but a top root');\n return false;\n }\n\n var containerID = ReactNativeTagHandles.tagToRootNodeID[containerTag];\n var instance = ReactNativeMount._instancesByContainerID[containerID];\n if (!instance) {\n return false;\n }\n ReactNativeMount.unmountComponentFromNode(instance, containerID);\n delete ReactNativeMount._instancesByContainerID[containerID];\n return true;\n },\n\n /**\n * Unmounts a component and sends messages back to iOS to remove its subviews.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {string} containerID ID of container we're removing from.\n * @final\n * @internal\n * @see {ReactNativeMount.unmountComponentAtNode}\n */\n unmountComponentFromNode: function(\n instance: ReactComponent,\n containerID: string\n ) {\n // Call back into native to remove all of the subviews from this container\n ReactReconciler.unmountComponent(instance);\n var containerTag =\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(containerID);\n RCTUIManager.removeSubviewsFromContainerWithID(containerTag);\n },\n\n getNode: function<T>(id: T): T {\n return id;\n }\n};\n\nReactNativeMount.renderComponent = ReactPerf.measure(\n 'ReactMount',\n '_renderNewRootComponent',\n ReactNativeMount.renderComponent\n);\n\nmodule.exports = ReactNativeMount;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeMount.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTagHandles.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar INITIAL_TAG_COUNT=1;\nvar NATIVE_TOP_ROOT_ID_SEPARATOR='{TOP_LEVEL}';\nvar ReactNativeTagHandles={\ntagsStartAt:INITIAL_TAG_COUNT,\ntagCount:INITIAL_TAG_COUNT,\n\nallocateTag:function(){\n\nwhile(this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) {\nReactNativeTagHandles.tagCount++;}\n\nvar tag=ReactNativeTagHandles.tagCount;\nReactNativeTagHandles.tagCount++;\nreturn tag;},\n\n\n\n\n\n\n\n\n\n\n\nassociateRootNodeIDWithMountedNodeHandle:function(\nrootNodeID,\ntag)\n{\nwarning(rootNodeID && tag,'Root node or tag is null when associating');\nif(rootNodeID && tag){\nReactNativeTagHandles.tagToRootNodeID[tag] = rootNodeID;\nReactNativeTagHandles.rootNodeIDToTag[rootNodeID] = tag;}},\n\n\n\nallocateRootNodeIDForTag:function(tag){\ninvariant(\nthis.reactTagIsNativeTopRootID(tag),\n'Expect a native root tag, instead got ',tag);\n\nreturn '.r[' + tag + ']' + NATIVE_TOP_ROOT_ID_SEPARATOR;},\n\n\nreactTagIsNativeTopRootID:function(reactTag){\n\nreturn reactTag % 10 === 1;},\n\n\ngetNativeTopRootIDFromNodeID:function(nodeID){\nif(!nodeID){\nreturn null;}\n\nvar index=nodeID.indexOf(NATIVE_TOP_ROOT_ID_SEPARATOR);\nif(index === -1){\nreturn null;}\n\nreturn nodeID.substr(0,index + NATIVE_TOP_ROOT_ID_SEPARATOR.length);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmostRecentMountedNodeHandleForRootNodeID:function(\nrootNodeID)\n{\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];},\n\n\ntagToRootNodeID:[],\n\nrootNodeIDToTag:{}};\n\n\nmodule.exports = ReactNativeTagHandles;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeTagHandles\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * Keeps track of allocating and associating native \"tags\" which are numeric,\n * unique view IDs. All the native tags are negative numbers, to avoid\n * collisions, but in the JS we keep track of them as positive integers to store\n * them effectively in Arrays. So we must refer to them as \"inverses\" of the\n * native tags (that are * normally negative).\n *\n * It *must* be the case that every `rootNodeID` always maps to the exact same\n * `tag` forever. The easiest way to accomplish this is to never delete\n * anything from this table.\n * Why: Because `dangerouslyReplaceNodeWithMarkupByID` relies on being able to\n * unmount a component with a `rootNodeID`, then mount a new one in its place,\n */\nvar INITIAL_TAG_COUNT = 1;\nvar NATIVE_TOP_ROOT_ID_SEPARATOR = '{TOP_LEVEL}';\nvar ReactNativeTagHandles = {\n tagsStartAt: INITIAL_TAG_COUNT,\n tagCount: INITIAL_TAG_COUNT,\n\n allocateTag: function(): number {\n // Skip over root IDs as those are reserved for native\n while (this.reactTagIsNativeTopRootID(ReactNativeTagHandles.tagCount)) {\n ReactNativeTagHandles.tagCount++;\n }\n var tag = ReactNativeTagHandles.tagCount;\n ReactNativeTagHandles.tagCount++;\n return tag;\n },\n\n /**\n * This associates the *last* observed *native* mounting between `rootNodeID`\n * and some `tag`. This association doesn't imply that `rootNodeID` is still\n * natively mounted as `tag`. The only reason why we don't clear the\n * association when the `rootNodeID` is unmounted, is that we don't have a\n * convenient time to disassociate them (otherwise we would).\n * `unmountComponent` isn't the correct time because that doesn't imply that\n * the native node has been natively unmounted.\n */\n associateRootNodeIDWithMountedNodeHandle: function(\n rootNodeID: ?string,\n tag: ?number\n ) {\n warning(rootNodeID && tag, 'Root node or tag is null when associating');\n if (rootNodeID && tag) {\n ReactNativeTagHandles.tagToRootNodeID[tag] = rootNodeID;\n ReactNativeTagHandles.rootNodeIDToTag[rootNodeID] = tag;\n }\n },\n\n allocateRootNodeIDForTag: function(tag: number): string {\n invariant(\n this.reactTagIsNativeTopRootID(tag),\n 'Expect a native root tag, instead got ', tag\n );\n return '.r[' + tag + ']' + NATIVE_TOP_ROOT_ID_SEPARATOR;\n },\n\n reactTagIsNativeTopRootID: function(reactTag: number): bool {\n // We reserve all tags that are 1 mod 10 for native root views\n return reactTag % 10 === 1;\n },\n\n getNativeTopRootIDFromNodeID: function(nodeID: ?string): ?string {\n if (!nodeID) {\n return null;\n }\n var index = nodeID.indexOf(NATIVE_TOP_ROOT_ID_SEPARATOR);\n if (index === -1) {\n return null;\n }\n return nodeID.substr(0, index + NATIVE_TOP_ROOT_ID_SEPARATOR.length);\n },\n\n /**\n * Returns the native `nodeHandle` (`tag`) that was most recently *natively*\n * mounted at the `rootNodeID`. Just because a React component has been\n * mounted, that doesn't mean that its native node has been mounted. The\n * native node is mounted when we actually make the call to insert the\n * `nodeHandle` (`tag`) into the native hierarchy.\n *\n * @param {string} rootNodeID Root node ID to find most recently mounted tag\n * for. Again, this doesn't imply that it is still currently mounted.\n * @return {number} Tag ID of native view for most recent mounting of\n * `rootNodeID`.\n */\n mostRecentMountedNodeHandleForRootNodeID: function(\n rootNodeID: string\n ): number {\n return ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];\n },\n\n tagToRootNodeID: ([] : Array<string>),\n\n rootNodeIDToTag: ({} : {[key: string]: number})\n};\n\nmodule.exports = ReactNativeTagHandles;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTagHandles.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/instantiateReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCompositeComponent=require('ReactCompositeComponent');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactNativeComponent=require('ReactNativeComponent');\n\nvar assign=require('Object.assign');\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\nvar ReactCompositeComponentWrapper=function(){};\nassign(\nReactCompositeComponentWrapper.prototype,\nReactCompositeComponent.Mixin,\n{\n_instantiateReactComponent:instantiateReactComponent});\n\n\n\n\n\n\n\n\n\n\nfunction isInternalComponentType(type){\nreturn (\ntypeof type === 'function' && \ntypeof type.prototype !== 'undefined' && \ntypeof type.prototype.mountComponent === 'function' && \ntypeof type.prototype.receiveComponent === 'function');}\n\n\n\n\n\n\n\n\n\n\n\nfunction instantiateReactComponent(node,parentCompositeType){\nvar instance;\n\nif(node === null || node === false){\nnode = ReactEmptyComponent.emptyElement;}\n\n\nif(typeof node === 'object'){\nvar element=node;\nif(__DEV__){\nwarning(\nelement && (typeof element.type === 'function' || \ntypeof element.type === 'string'),\n'Only functions or strings can be mounted as React components.');}\n\n\n\n\nif(parentCompositeType === element.type && \ntypeof element.type === 'string'){\n\ninstance = ReactNativeComponent.createInternalComponent(element);}else \n\n\nif(isInternalComponentType(element.type)){\n\n\n\ninstance = new element.type(element);}else \n{\ninstance = new ReactCompositeComponentWrapper();}}else \n\nif(typeof node === 'string' || typeof node === 'number'){\ninstance = ReactNativeComponent.createInstanceForText(node);}else \n{\ninvariant(\nfalse,\n'Encountered invalid React node of type %s',\ntypeof node);}\n\n\n\nif(__DEV__){\nwarning(\ntypeof instance.construct === 'function' && \ntypeof instance.mountComponent === 'function' && \ntypeof instance.receiveComponent === 'function' && \ntypeof instance.unmountComponent === 'function',\n'Only React Components can be mounted.');}\n\n\n\n\ninstance.construct(node);\n\n\n\n\ninstance._mountIndex = 0;\ninstance._mountImage = null;\n\nif(__DEV__){\ninstance._isOwnerNecessary = false;\ninstance._warnedAboutRefsInRender = false;}\n\n\n\n\nif(__DEV__){\nif(Object.preventExtensions){\nObject.preventExtensions(instance);}}\n\n\n\nreturn instance;}\n\n\nmodule.exports = instantiateReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule instantiateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactCompositeComponent = require('ReactCompositeComponent');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactNativeComponent = require('ReactNativeComponent');\n\nvar assign = require('Object.assign');\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function() { };\nassign(\n ReactCompositeComponentWrapper.prototype,\n ReactCompositeComponent.Mixin,\n {\n _instantiateReactComponent: instantiateReactComponent\n }\n);\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return (\n typeof type === 'function' &&\n typeof type.prototype !== 'undefined' &&\n typeof type.prototype.mountComponent === 'function' &&\n typeof type.prototype.receiveComponent === 'function'\n );\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {*} parentCompositeType The composite type that resolved this.\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, parentCompositeType) {\n var instance;\n\n if (node === null || node === false) {\n node = ReactEmptyComponent.emptyElement;\n }\n\n if (typeof node === 'object') {\n var element = node;\n if (__DEV__) {\n warning(\n element && (typeof element.type === 'function' ||\n typeof element.type === 'string'),\n 'Only functions or strings can be mounted as React components.'\n );\n }\n\n // Special case string values\n if (parentCompositeType === element.type &&\n typeof element.type === 'string') {\n // Avoid recursion if the wrapper renders itself.\n instance = ReactNativeComponent.createInternalComponent(element);\n // All native components are currently wrapped in a composite so we're\n // safe to assume that this is what we should instantiate.\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // represenations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n } else {\n instance = new ReactCompositeComponentWrapper();\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactNativeComponent.createInstanceForText(node);\n } else {\n invariant(\n false,\n 'Encountered invalid React node of type %s',\n typeof node\n );\n }\n\n if (__DEV__) {\n warning(\n typeof instance.construct === 'function' &&\n typeof instance.mountComponent === 'function' &&\n typeof instance.receiveComponent === 'function' &&\n typeof instance.unmountComponent === 'function',\n 'Only React Components can be mounted.'\n );\n }\n\n // Sets up the instance. This can probably just move into the constructor now.\n instance.construct(node);\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (__DEV__) {\n instance._isOwnerNecessary = false;\n instance._warnedAboutRefsInRender = false;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (__DEV__) {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/instantiateReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCompositeComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactContext=require('ReactContext');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactLifeCycle=require('ReactLifeCycle');\nvar ReactNativeComponent=require('ReactNativeComponent');\nvar ReactPerf=require('ReactPerf');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdates=require('ReactUpdates');\n\nvar assign=require('Object.assign');\nvar emptyObject=require('emptyObject');\nvar invariant=require('invariant');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\nvar warning=require('warning');\n\nfunction getDeclarationErrorAddendum(component){\nvar owner=component._currentElement._owner || null;\nif(owner){\nvar name=owner.getName();\nif(name){\nreturn ' Check the render method of `' + name + '`.';}}\n\n\nreturn '';}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar nextMountID=1;\n\n\n\n\nvar ReactCompositeComponentMixin={\n\n\n\n\n\n\n\n\nconstruct:function(element){\nthis._currentElement = element;\nthis._rootNodeID = null;\nthis._instance = null;\n\n\nthis._pendingElement = null;\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\n\nthis._renderedComponent = null;\n\nthis._context = null;\nthis._mountOrder = 0;\nthis._isTopLevel = false;\n\n\nthis._pendingCallbacks = null;},\n\n\n\n\n\n\n\n\n\n\n\nmountComponent:function(rootID,transaction,context){\nthis._context = context;\nthis._mountOrder = nextMountID++;\nthis._rootNodeID = rootID;\n\nvar publicProps=this._processProps(this._currentElement.props);\nvar publicContext=this._processContext(this._currentElement._context);\n\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\n\n\nvar inst=new Component(publicProps,publicContext);\n\nif(__DEV__){\n\n\nwarning(\ninst.render != null,\n'%s(...): No `render` method found on the returned component ' + \n'instance: you may have forgotten to define `render` in your ' + \n'component or you may have accidentally tried to render an element ' + \n'whose type is a function that isn\\'t a React component.',\nComponent.displayName || Component.name || 'Component');}\n\n\n\n\n\ninst.props = publicProps;\ninst.context = publicContext;\ninst.refs = emptyObject;\n\nthis._instance = inst;\n\n\nReactInstanceMap.set(inst,this);\n\nif(__DEV__){\nthis._warnIfContextsDiffer(this._currentElement._context,context);}\n\n\nif(__DEV__){\n\n\n\nwarning(\n!inst.getInitialState || \ninst.getInitialState.isReactClassApproved,\n'getInitialState was defined on %s, a plain JavaScript class. ' + \n'This is only supported for classes created using React.createClass. ' + \n'Did you mean to define a state property instead?',\nthis.getName() || 'a component');\n\nwarning(\n!inst.getDefaultProps || \ninst.getDefaultProps.isReactClassApproved,\n'getDefaultProps was defined on %s, a plain JavaScript class. ' + \n'This is only supported for classes created using React.createClass. ' + \n'Use a static property to define defaultProps instead.',\nthis.getName() || 'a component');\n\nwarning(\n!inst.propTypes,\n'propTypes was defined as an instance property on %s. Use a static ' + \n'property to define propTypes instead.',\nthis.getName() || 'a component');\n\nwarning(\n!inst.contextTypes,\n'contextTypes was defined as an instance property on %s. Use a ' + \n'static property to define contextTypes instead.',\nthis.getName() || 'a component');\n\nwarning(\ntypeof inst.componentShouldUpdate !== 'function',\n'%s has a method called ' + \n'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + \n'The name is phrased as a question because the function is ' + \n'expected to return a value.',\nthis.getName() || 'A component');}\n\n\n\nvar initialState=inst.state;\nif(initialState === undefined){\ninst.state = initialState = null;}\n\ninvariant(\ntypeof initialState === 'object' && !Array.isArray(initialState),\n'%s.state: must be set to an object or null',\nthis.getName() || 'ReactCompositeComponent');\n\n\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\n\nvar renderedElement;\n\nvar previouslyMounting=ReactLifeCycle.currentlyMountingInstance;\nReactLifeCycle.currentlyMountingInstance = this;\ntry{\nif(inst.componentWillMount){\ninst.componentWillMount();\n\n\nif(this._pendingStateQueue){\ninst.state = this._processPendingState(inst.props,inst.context);}}\n\n\n\nrenderedElement = this._renderValidatedComponent();}finally \n{\nReactLifeCycle.currentlyMountingInstance = previouslyMounting;}\n\n\nthis._renderedComponent = this._instantiateReactComponent(\nrenderedElement,\nthis._currentElement.type);\n\n\nvar markup=ReactReconciler.mountComponent(\nthis._renderedComponent,\nrootID,\ntransaction,\nthis._processChildContext(context));\n\nif(inst.componentDidMount){\ntransaction.getReactMountReady().enqueue(inst.componentDidMount,inst);}\n\n\nreturn markup;},\n\n\n\n\n\n\n\n\nunmountComponent:function(){\nvar inst=this._instance;\n\nif(inst.componentWillUnmount){\nvar previouslyUnmounting=ReactLifeCycle.currentlyUnmountingInstance;\nReactLifeCycle.currentlyUnmountingInstance = this;\ntry{\ninst.componentWillUnmount();}finally \n{\nReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;}}\n\n\n\nReactReconciler.unmountComponent(this._renderedComponent);\nthis._renderedComponent = null;\n\n\nthis._pendingStateQueue = null;\nthis._pendingReplaceState = false;\nthis._pendingForceUpdate = false;\nthis._pendingCallbacks = null;\nthis._pendingElement = null;\n\n\n\nthis._context = null;\nthis._rootNodeID = null;\n\n\n\n\nReactInstanceMap.remove(inst);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_setPropsInternal:function(partialProps,callback){\n\n\nvar element=this._pendingElement || this._currentElement;\nthis._pendingElement = ReactElement.cloneAndReplaceProps(\nelement,\nassign({},element.props,partialProps));\n\nReactUpdates.enqueueUpdate(this,callback);},\n\n\n\n\n\n\n\n\n\n\n_maskContext:function(context){\nvar maskedContext=null;\n\n\nif(typeof this._currentElement.type === 'string'){\nreturn emptyObject;}\n\nvar contextTypes=this._currentElement.type.contextTypes;\nif(!contextTypes){\nreturn emptyObject;}\n\nmaskedContext = {};\nfor(var contextName in contextTypes) {\nmaskedContext[contextName] = context[contextName];}\n\nreturn maskedContext;},\n\n\n\n\n\n\n\n\n\n\n_processContext:function(context){\nvar maskedContext=this._maskContext(context);\nif(__DEV__){\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\nif(Component.contextTypes){\nthis._checkPropTypes(\nComponent.contextTypes,\nmaskedContext,\nReactPropTypeLocations.context);}}\n\n\n\nreturn maskedContext;},\n\n\n\n\n\n\n\n_processChildContext:function(currentContext){\nvar inst=this._instance;\nvar childContext=inst.getChildContext && inst.getChildContext();\nif(childContext){\ninvariant(\ntypeof inst.constructor.childContextTypes === 'object',\n'%s.getChildContext(): childContextTypes must be defined in order to ' + \n'use getChildContext().',\nthis.getName() || 'ReactCompositeComponent');\n\nif(__DEV__){\nthis._checkPropTypes(\ninst.constructor.childContextTypes,\nchildContext,\nReactPropTypeLocations.childContext);}\n\n\nfor(var name in childContext) {\ninvariant(\nname in inst.constructor.childContextTypes,\n'%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\nthis.getName() || 'ReactCompositeComponent',\nname);}\n\n\nreturn assign({},currentContext,childContext);}\n\nreturn currentContext;},\n\n\n\n\n\n\n\n\n\n\n\n_processProps:function(newProps){\nif(__DEV__){\nvar Component=ReactNativeComponent.getComponentClassForElement(\nthis._currentElement);\n\nif(Component.propTypes){\nthis._checkPropTypes(\nComponent.propTypes,\nnewProps,\nReactPropTypeLocations.prop);}}\n\n\n\nreturn newProps;},\n\n\n\n\n\n\n\n\n\n\n_checkPropTypes:function(propTypes,props,location){\n\n\nvar componentName=this.getName();\nfor(var propName in propTypes) {\nif(propTypes.hasOwnProperty(propName)){\nvar error;\ntry{\n\n\ninvariant(\ntypeof propTypes[propName] === 'function',\n'%s: %s type `%s` is invalid; it must be a function, usually ' + \n'from React.PropTypes.',\ncomponentName || 'React class',\nReactPropTypeLocationNames[location],\npropName);\n\nerror = propTypes[propName](props,propName,componentName,location);}\ncatch(ex) {\nerror = ex;}\n\nif(error instanceof Error){\n\n\n\nvar addendum=getDeclarationErrorAddendum(this);\n\nif(location === ReactPropTypeLocations.prop){\n\nwarning(\nfalse,\n'Failed Composite propType: %s%s',\nerror.message,\naddendum);}else \n\n{\nwarning(\nfalse,\n'Failed Context Types: %s%s',\nerror.message,\naddendum);}}}}},\n\n\n\n\n\n\n\nreceiveComponent:function(nextElement,transaction,nextContext){\nvar prevElement=this._currentElement;\nvar prevContext=this._context;\n\nthis._pendingElement = null;\n\nthis.updateComponent(\ntransaction,\nprevElement,\nnextElement,\nprevContext,\nnextContext);},\n\n\n\n\n\n\n\n\n\n\nperformUpdateIfNecessary:function(transaction){\nif(this._pendingElement != null){\nReactReconciler.receiveComponent(\nthis,\nthis._pendingElement || this._currentElement,\ntransaction,\nthis._context);}\n\n\n\nif(this._pendingStateQueue !== null || this._pendingForceUpdate){\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(\nthis._currentElement);}\n\n\n\nthis.updateComponent(\ntransaction,\nthis._currentElement,\nthis._currentElement,\nthis._context,\nthis._context);}},\n\n\n\n\n\n\n\n\n_warnIfContextsDiffer:function(ownerBasedContext,parentBasedContext){\nownerBasedContext = this._maskContext(ownerBasedContext);\nparentBasedContext = this._maskContext(parentBasedContext);\nvar parentKeys=Object.keys(parentBasedContext).sort();\nvar displayName=this.getName() || 'ReactCompositeComponent';\nfor(var i=0;i < parentKeys.length;i++) {\nvar key=parentKeys[i];\nwarning(\nownerBasedContext[key] === parentBasedContext[key],\n'owner-based and parent-based contexts differ ' + \n'(values: `%s` vs `%s`) for key (%s) while mounting %s ' + \n'(see: http://fb.me/react-context-by-parent)',\nownerBasedContext[key],\nparentBasedContext[key],\nkey,\ndisplayName);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nupdateComponent:function(\ntransaction,\nprevParentElement,\nnextParentElement,\nprevUnmaskedContext,\nnextUnmaskedContext)\n{\nvar inst=this._instance;\n\nvar nextContext=inst.context;\nvar nextProps=inst.props;\n\n\nif(prevParentElement !== nextParentElement){\nnextContext = this._processContext(nextParentElement._context);\nnextProps = this._processProps(nextParentElement.props);\n\nif(__DEV__){\nif(nextUnmaskedContext != null){\nthis._warnIfContextsDiffer(\nnextParentElement._context,\nnextUnmaskedContext);}}\n\n\n\n\n\n\n\n\nif(inst.componentWillReceiveProps){\ninst.componentWillReceiveProps(nextProps,nextContext);}}\n\n\n\nvar nextState=this._processPendingState(nextProps,nextContext);\n\nvar shouldUpdate=\nthis._pendingForceUpdate || \n!inst.shouldComponentUpdate || \ninst.shouldComponentUpdate(nextProps,nextState,nextContext);\n\nif(__DEV__){\nwarning(\ntypeof shouldUpdate !== 'undefined',\n'%s.shouldComponentUpdate(): Returned undefined instead of a ' + \n'boolean value. Make sure to return true or false.',\nthis.getName() || 'ReactCompositeComponent');}\n\n\n\nif(shouldUpdate){\nthis._pendingForceUpdate = false;\n\nthis._performComponentUpdate(\nnextParentElement,\nnextProps,\nnextState,\nnextContext,\ntransaction,\nnextUnmaskedContext);}else \n\n{\n\n\nthis._currentElement = nextParentElement;\nthis._context = nextUnmaskedContext;\ninst.props = nextProps;\ninst.state = nextState;\ninst.context = nextContext;}},\n\n\n\n_processPendingState:function(props,context){\nvar inst=this._instance;\nvar queue=this._pendingStateQueue;\nvar replace=this._pendingReplaceState;\nthis._pendingReplaceState = false;\nthis._pendingStateQueue = null;\n\nif(!queue){\nreturn inst.state;}\n\n\nvar nextState=assign({},replace?queue[0]:inst.state);\nfor(var i=replace?1:0;i < queue.length;i++) {\nvar partial=queue[i];\nassign(\nnextState,\ntypeof partial === 'function'?\npartial.call(inst,nextState,props,context):\npartial);}\n\n\n\nreturn nextState;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_performComponentUpdate:function(\nnextElement,\nnextProps,\nnextState,\nnextContext,\ntransaction,\nunmaskedContext)\n{\nvar inst=this._instance;\n\nvar prevProps=inst.props;\nvar prevState=inst.state;\nvar prevContext=inst.context;\n\nif(inst.componentWillUpdate){\ninst.componentWillUpdate(nextProps,nextState,nextContext);}\n\n\nthis._currentElement = nextElement;\nthis._context = unmaskedContext;\ninst.props = nextProps;\ninst.state = nextState;\ninst.context = nextContext;\n\nthis._updateRenderedComponent(transaction,unmaskedContext);\n\nif(inst.componentDidUpdate){\ntransaction.getReactMountReady().enqueue(\ninst.componentDidUpdate.bind(inst,prevProps,prevState,prevContext),\ninst);}},\n\n\n\n\n\n\n\n\n\n\n_updateRenderedComponent:function(transaction,context){\nvar prevComponentInstance=this._renderedComponent;\nvar prevRenderedElement=prevComponentInstance._currentElement;\nvar nextRenderedElement=this._renderValidatedComponent();\nif(shouldUpdateReactComponent(prevRenderedElement,nextRenderedElement)){\nReactReconciler.receiveComponent(\nprevComponentInstance,\nnextRenderedElement,\ntransaction,\nthis._processChildContext(context));}else \n\n{\n\nvar thisID=this._rootNodeID;\nvar prevComponentID=prevComponentInstance._rootNodeID;\nReactReconciler.unmountComponent(prevComponentInstance);\n\nthis._renderedComponent = this._instantiateReactComponent(\nnextRenderedElement,\nthis._currentElement.type);\n\nvar nextMarkup=ReactReconciler.mountComponent(\nthis._renderedComponent,\nthisID,\ntransaction,\nthis._processChildContext(context));\n\nthis._replaceNodeWithMarkupByID(prevComponentID,nextMarkup);}},\n\n\n\n\n\n\n_replaceNodeWithMarkupByID:function(prevComponentID,nextMarkup){\nReactComponentEnvironment.replaceNodeWithMarkupByID(\nprevComponentID,\nnextMarkup);},\n\n\n\n\n\n\n_renderValidatedComponentWithoutOwnerOrContext:function(){\nvar inst=this._instance;\nvar renderedComponent=inst.render();\nif(__DEV__){\n\nif(typeof renderedComponent === 'undefined' && \ninst.render._isMockFunction){\n\n\nrenderedComponent = null;}}\n\n\n\nreturn renderedComponent;},\n\n\n\n\n\n_renderValidatedComponent:function(){\nvar renderedComponent;\nvar previousContext=ReactContext.current;\nReactContext.current = this._processChildContext(\nthis._currentElement._context);\n\nReactCurrentOwner.current = this;\ntry{\nrenderedComponent = \nthis._renderValidatedComponentWithoutOwnerOrContext();}finally \n{\nReactContext.current = previousContext;\nReactCurrentOwner.current = null;}\n\ninvariant(\n\nrenderedComponent === null || renderedComponent === false || \nReactElement.isValidElement(renderedComponent),\n'%s.render(): A valid ReactComponent must be returned. You may have ' + \n'returned undefined, an array or some other invalid object.',\nthis.getName() || 'ReactCompositeComponent');\n\nreturn renderedComponent;},\n\n\n\n\n\n\n\n\n\n\nattachRef:function(ref,component){\nvar inst=this.getPublicInstance();\nvar refs=inst.refs === emptyObject?inst.refs = {}:inst.refs;\nrefs[ref] = component.getPublicInstance();},\n\n\n\n\n\n\n\n\n\ndetachRef:function(ref){\nvar refs=this.getPublicInstance().refs;\ndelete refs[ref];},\n\n\n\n\n\n\n\n\ngetName:function(){\nvar type=this._currentElement.type;\nvar constructor=this._instance && this._instance.constructor;\nreturn (\ntype.displayName || constructor && constructor.displayName || \ntype.name || constructor && constructor.name || \nnull);},\n\n\n\n\n\n\n\n\n\n\n\ngetPublicInstance:function(){\nreturn this._instance;},\n\n\n\n_instantiateReactComponent:null};\n\n\n\nReactPerf.measureMethods(\nReactCompositeComponentMixin,\n'ReactCompositeComponent',\n{\nmountComponent:'mountComponent',\nupdateComponent:'updateComponent',\n_renderValidatedComponent:'_renderValidatedComponent'});\n\n\n\nvar ReactCompositeComponent={\n\nMixin:ReactCompositeComponentMixin};\n\n\n\nmodule.exports = ReactCompositeComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactCompositeComponent\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactContext = require('ReactContext');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactLifeCycle = require('ReactLifeCycle');\nvar ReactNativeComponent = require('ReactNativeComponent');\nvar ReactPerf = require('ReactPerf');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdates = require('ReactUpdates');\n\nvar assign = require('Object.assign');\nvar emptyObject = require('emptyObject');\nvar invariant = require('invariant');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\nvar warning = require('warning');\n\nfunction getDeclarationErrorAddendum(component) {\n var owner = component._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponentMixin = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function(element) {\n this._currentElement = element;\n this._rootNodeID = null;\n this._instance = null;\n\n // See ReactUpdateQueue\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedComponent = null;\n\n this._context = null;\n this._mountOrder = 0;\n this._isTopLevel = false;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {string} rootID DOM ID of the root node.\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function(rootID, transaction, context) {\n this._context = context;\n this._mountOrder = nextMountID++;\n this._rootNodeID = rootID;\n\n var publicProps = this._processProps(this._currentElement.props);\n var publicContext = this._processContext(this._currentElement._context);\n\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n\n // Initialize the public class\n var inst = new Component(publicProps, publicContext);\n\n if (__DEV__) {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n warning(\n inst.render != null,\n '%s(...): No `render` method found on the returned component ' +\n 'instance: you may have forgotten to define `render` in your ' +\n 'component or you may have accidentally tried to render an element ' +\n 'whose type is a function that isn\\'t a React component.',\n Component.displayName || Component.name || 'Component'\n );\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (__DEV__) {\n this._warnIfContextsDiffer(this._currentElement._context, context);\n }\n\n if (__DEV__) {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n warning(\n !inst.getInitialState ||\n inst.getInitialState.isReactClassApproved,\n 'getInitialState was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Did you mean to define a state property instead?',\n this.getName() || 'a component'\n );\n warning(\n !inst.getDefaultProps ||\n inst.getDefaultProps.isReactClassApproved,\n 'getDefaultProps was defined on %s, a plain JavaScript class. ' +\n 'This is only supported for classes created using React.createClass. ' +\n 'Use a static property to define defaultProps instead.',\n this.getName() || 'a component'\n );\n warning(\n !inst.propTypes,\n 'propTypes was defined as an instance property on %s. Use a static ' +\n 'property to define propTypes instead.',\n this.getName() || 'a component'\n );\n warning(\n !inst.contextTypes,\n 'contextTypes was defined as an instance property on %s. Use a ' +\n 'static property to define contextTypes instead.',\n this.getName() || 'a component'\n );\n warning(\n typeof inst.componentShouldUpdate !== 'function',\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n (this.getName() || 'A component')\n );\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.state: must be set to an object or null',\n this.getName() || 'ReactCompositeComponent'\n );\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var renderedElement;\n\n var previouslyMounting = ReactLifeCycle.currentlyMountingInstance;\n ReactLifeCycle.currentlyMountingInstance = this;\n try {\n if (inst.componentWillMount) {\n inst.componentWillMount();\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n renderedElement = this._renderValidatedComponent();\n } finally {\n ReactLifeCycle.currentlyMountingInstance = previouslyMounting;\n }\n\n this._renderedComponent = this._instantiateReactComponent(\n renderedElement,\n this._currentElement.type // The wrapping type\n );\n\n var markup = ReactReconciler.mountComponent(\n this._renderedComponent,\n rootID,\n transaction,\n this._processChildContext(context)\n );\n if (inst.componentDidMount) {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n\n return markup;\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function() {\n var inst = this._instance;\n\n if (inst.componentWillUnmount) {\n var previouslyUnmounting = ReactLifeCycle.currentlyUnmountingInstance;\n ReactLifeCycle.currentlyUnmountingInstance = this;\n try {\n inst.componentWillUnmount();\n } finally {\n ReactLifeCycle.currentlyUnmountingInstance = previouslyUnmounting;\n }\n }\n\n ReactReconciler.unmountComponent(this._renderedComponent);\n this._renderedComponent = null;\n\n // Reset pending fields\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Schedule a partial update to the props. Only used for internal testing.\n *\n * @param {object} partialProps Subset of the next props.\n * @param {?function} callback Called after props are updated.\n * @final\n * @internal\n */\n _setPropsInternal: function(partialProps, callback) {\n // This is a deoptimized path. We optimize for always having an element.\n // This creates an extra internal element.\n var element = this._pendingElement || this._currentElement;\n this._pendingElement = ReactElement.cloneAndReplaceProps(\n element,\n assign({}, element.props, partialProps)\n );\n ReactUpdates.enqueueUpdate(this, callback);\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function(context) {\n var maskedContext = null;\n // This really should be getting the component class for the element,\n // but we know that we're not going to need it for built-ins.\n if (typeof this._currentElement.type === 'string') {\n return emptyObject;\n }\n var contextTypes = this._currentElement.type.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function(context) {\n var maskedContext = this._maskContext(context);\n if (__DEV__) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.contextTypes) {\n this._checkPropTypes(\n Component.contextTypes,\n maskedContext,\n ReactPropTypeLocations.context\n );\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function(currentContext) {\n var inst = this._instance;\n var childContext = inst.getChildContext && inst.getChildContext();\n if (childContext) {\n invariant(\n typeof inst.constructor.childContextTypes === 'object',\n '%s.getChildContext(): childContextTypes must be defined in order to ' +\n 'use getChildContext().',\n this.getName() || 'ReactCompositeComponent'\n );\n if (__DEV__) {\n this._checkPropTypes(\n inst.constructor.childContextTypes,\n childContext,\n ReactPropTypeLocations.childContext\n );\n }\n for (var name in childContext) {\n invariant(\n name in inst.constructor.childContextTypes,\n '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.',\n this.getName() || 'ReactCompositeComponent',\n name\n );\n }\n return assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Processes props by setting default values for unspecified props and\n * asserting that the props are valid. Does not mutate its argument; returns\n * a new props object with defaults merged in.\n *\n * @param {object} newProps\n * @return {object}\n * @private\n */\n _processProps: function(newProps) {\n if (__DEV__) {\n var Component = ReactNativeComponent.getComponentClassForElement(\n this._currentElement\n );\n if (Component.propTypes) {\n this._checkPropTypes(\n Component.propTypes,\n newProps,\n ReactPropTypeLocations.prop\n );\n }\n }\n return newProps;\n },\n\n /**\n * Assert that the props are valid\n *\n * @param {object} propTypes Map of prop name to a ReactPropType\n * @param {object} props\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkPropTypes: function(propTypes, props, location) {\n // TODO: Stop validating prop types here and only use the element\n // validation.\n var componentName = this.getName();\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error;\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(\n typeof propTypes[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually ' +\n 'from React.PropTypes.',\n componentName || 'React class',\n ReactPropTypeLocationNames[location],\n propName\n );\n error = propTypes[propName](props, propName, componentName, location);\n } catch (ex) {\n error = ex;\n }\n if (error instanceof Error) {\n // We may want to extend this logic for similar errors in\n // React.render calls, so I'm abstracting it away into\n // a function to minimize refactoring in the future\n var addendum = getDeclarationErrorAddendum(this);\n\n if (location === ReactPropTypeLocations.prop) {\n // Preface gives us something to blacklist in warning module\n warning(\n false,\n 'Failed Composite propType: %s%s',\n error.message,\n addendum\n );\n } else {\n warning(\n false,\n 'Failed Context Types: %s%s',\n error.message,\n addendum\n );\n }\n }\n }\n }\n },\n\n receiveComponent: function(nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(\n transaction,\n prevElement,\n nextElement,\n prevContext,\n nextContext\n );\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function(transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(\n this,\n this._pendingElement || this._currentElement,\n transaction,\n this._context\n );\n }\n\n if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(\n this._currentElement\n );\n }\n\n this.updateComponent(\n transaction,\n this._currentElement,\n this._currentElement,\n this._context,\n this._context\n );\n }\n },\n\n /**\n * Compare two contexts, warning if they are different\n * TODO: Remove this check when owner-context is removed\n */\n _warnIfContextsDiffer: function(ownerBasedContext, parentBasedContext) {\n ownerBasedContext = this._maskContext(ownerBasedContext);\n parentBasedContext = this._maskContext(parentBasedContext);\n var parentKeys = Object.keys(parentBasedContext).sort();\n var displayName = this.getName() || 'ReactCompositeComponent';\n for (var i = 0; i < parentKeys.length; i++) {\n var key = parentKeys[i];\n warning(\n ownerBasedContext[key] === parentBasedContext[key],\n 'owner-based and parent-based contexts differ ' +\n '(values: `%s` vs `%s`) for key (%s) while mounting %s ' +\n '(see: http://fb.me/react-context-by-parent)',\n ownerBasedContext[key],\n parentBasedContext[key],\n key,\n displayName\n );\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function(\n transaction,\n prevParentElement,\n nextParentElement,\n prevUnmaskedContext,\n nextUnmaskedContext\n ) {\n var inst = this._instance;\n\n var nextContext = inst.context;\n var nextProps = inst.props;\n\n // Distinguish between a props update versus a simple state update\n if (prevParentElement !== nextParentElement) {\n nextContext = this._processContext(nextParentElement._context);\n nextProps = this._processProps(nextParentElement.props);\n\n if (__DEV__) {\n if (nextUnmaskedContext != null) {\n this._warnIfContextsDiffer(\n nextParentElement._context,\n nextUnmaskedContext\n );\n }\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n\n if (inst.componentWillReceiveProps) {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n\n var shouldUpdate =\n this._pendingForceUpdate ||\n !inst.shouldComponentUpdate ||\n inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\n if (__DEV__) {\n warning(\n typeof shouldUpdate !== 'undefined',\n '%s.shouldComponentUpdate(): Returned undefined instead of a ' +\n 'boolean value. Make sure to return true or false.',\n this.getName() || 'ReactCompositeComponent'\n );\n }\n\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(\n nextParentElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n nextUnmaskedContext\n );\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function(props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n var nextState = assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n assign(\n nextState,\n typeof partial === 'function' ?\n partial.call(inst, nextState, props, context) :\n partial\n );\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function(\n nextElement,\n nextProps,\n nextState,\n nextContext,\n transaction,\n unmaskedContext\n ) {\n var inst = this._instance;\n\n var prevProps = inst.props;\n var prevState = inst.state;\n var prevContext = inst.context;\n\n if (inst.componentWillUpdate) {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (inst.componentDidUpdate) {\n transaction.getReactMountReady().enqueue(\n inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext),\n inst\n );\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function(transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(\n prevComponentInstance,\n nextRenderedElement,\n transaction,\n this._processChildContext(context)\n );\n } else {\n // These two IDs are actually the same! But nothing should rely on that.\n var thisID = this._rootNodeID;\n var prevComponentID = prevComponentInstance._rootNodeID;\n ReactReconciler.unmountComponent(prevComponentInstance);\n\n this._renderedComponent = this._instantiateReactComponent(\n nextRenderedElement,\n this._currentElement.type\n );\n var nextMarkup = ReactReconciler.mountComponent(\n this._renderedComponent,\n thisID,\n transaction,\n this._processChildContext(context)\n );\n this._replaceNodeWithMarkupByID(prevComponentID, nextMarkup);\n }\n },\n\n /**\n * @protected\n */\n _replaceNodeWithMarkupByID: function(prevComponentID, nextMarkup) {\n ReactComponentEnvironment.replaceNodeWithMarkupByID(\n prevComponentID,\n nextMarkup\n );\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function() {\n var inst = this._instance;\n var renderedComponent = inst.render();\n if (__DEV__) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (typeof renderedComponent === 'undefined' &&\n inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedComponent = null;\n }\n }\n\n return renderedComponent;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function() {\n var renderedComponent;\n var previousContext = ReactContext.current;\n ReactContext.current = this._processChildContext(\n this._currentElement._context\n );\n ReactCurrentOwner.current = this;\n try {\n renderedComponent =\n this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactContext.current = previousContext;\n ReactCurrentOwner.current = null;\n }\n invariant(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedComponent === null || renderedComponent === false ||\n ReactElement.isValidElement(renderedComponent),\n '%s.render(): A valid ReactComponent must be returned. You may have ' +\n 'returned undefined, an array or some other invalid object.',\n this.getName() || 'ReactCompositeComponent'\n );\n return renderedComponent;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function(ref, component) {\n var inst = this.getPublicInstance();\n var refs = inst.refs === emptyObject ? (inst.refs = {}) : inst.refs;\n refs[ref] = component.getPublicInstance();\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function(ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function() {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return (\n type.displayName || (constructor && constructor.displayName) ||\n type.name || (constructor && constructor.name) ||\n null\n );\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by React.render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function() {\n return this._instance;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nReactPerf.measureMethods(\n ReactCompositeComponentMixin,\n 'ReactCompositeComponent',\n {\n mountComponent: 'mountComponent',\n updateComponent: 'updateComponent',\n _renderValidatedComponent: '_renderValidatedComponent'\n }\n);\n\nvar ReactCompositeComponent = {\n\n Mixin: ReactCompositeComponentMixin\n\n};\n\nmodule.exports = ReactCompositeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactCompositeComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactComponentEnvironment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar injected=false;\n\nvar ReactComponentEnvironment={\n\n\n\n\n\n\nunmountIDFromEnvironment:null,\n\n\n\n\n\nreplaceNodeWithMarkupByID:null,\n\n\n\n\n\nprocessChildrenUpdates:null,\n\ninjection:{\ninjectEnvironment:function(environment){\ninvariant(\n!injected,\n'ReactCompositeComponent: injectEnvironment() can only be called once.');\n\nReactComponentEnvironment.unmountIDFromEnvironment = \nenvironment.unmountIDFromEnvironment;\nReactComponentEnvironment.replaceNodeWithMarkupByID = \nenvironment.replaceNodeWithMarkupByID;\nReactComponentEnvironment.processChildrenUpdates = \nenvironment.processChildrenUpdates;\ninjected = true;}}};\n\n\n\n\n\nmodule.exports = ReactComponentEnvironment;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactComponentEnvironment\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable environment dependent cleanup hook. (server vs.\n * browser etc). Example: A browser system caches DOM nodes based on component\n * ID and must remove that cache entry when this instance is unmounted.\n */\n unmountIDFromEnvironment: null,\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkupByID: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function(environment) {\n invariant(\n !injected,\n 'ReactCompositeComponent: injectEnvironment() can only be called once.'\n );\n ReactComponentEnvironment.unmountIDFromEnvironment =\n environment.unmountIDFromEnvironment;\n ReactComponentEnvironment.replaceNodeWithMarkupByID =\n environment.replaceNodeWithMarkupByID;\n ReactComponentEnvironment.processChildrenUpdates =\n environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactComponentEnvironment.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/shouldUpdateReactComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shouldUpdateReactComponent(prevElement,nextElement){\nif(prevElement != null && nextElement != null){\nvar prevType=typeof prevElement;\nvar nextType=typeof nextElement;\nif(prevType === 'string' || prevType === 'number'){\nreturn nextType === 'string' || nextType === 'number';}else \n{\nif(nextType === 'object' && \nprevElement.type === nextElement.type && \nprevElement.key === nextElement.key){\nvar ownersMatch=prevElement._owner === nextElement._owner;\nvar prevName=null;\nvar nextName=null;\nvar nextDisplayName=null;\nif(__DEV__){\nif(!ownersMatch){\nif(prevElement._owner != null && \nprevElement._owner.getPublicInstance() != null && \nprevElement._owner.getPublicInstance().constructor != null){\nprevName = \nprevElement._owner.getPublicInstance().constructor.displayName;}\n\nif(nextElement._owner != null && \nnextElement._owner.getPublicInstance() != null && \nnextElement._owner.getPublicInstance().constructor != null){\nnextName = \nnextElement._owner.getPublicInstance().constructor.displayName;}\n\nif(nextElement.type != null && \nnextElement.type.displayName != null){\nnextDisplayName = nextElement.type.displayName;}\n\nif(nextElement.type != null && typeof nextElement.type === 'string'){\nnextDisplayName = nextElement.type;}\n\nif(typeof nextElement.type !== 'string' || \nnextElement.type === 'input' || \nnextElement.type === 'textarea'){\nif(prevElement._owner != null && \nprevElement._owner._isOwnerNecessary === false || \nnextElement._owner != null && \nnextElement._owner._isOwnerNecessary === false){\nif(prevElement._owner != null){\nprevElement._owner._isOwnerNecessary = true;}\n\nif(nextElement._owner != null){\nnextElement._owner._isOwnerNecessary = true;}\n\nwarning(\nfalse,\n'<%s /> is being rendered by both %s and %s using the same ' + \n'key (%s) in the same place. Currently, this means that ' + \n'they don\\'t preserve state. This behavior should be very ' + \n'rare so we\\'re considering deprecating it. Please contact ' + \n'the React team and explain your use case so that we can ' + \n'take that into consideration.',\nnextDisplayName || 'Unknown Component',\nprevName || '[Unknown]',\nnextName || '[Unknown]',\nprevElement.key);}}}}\n\n\n\n\n\nreturn ownersMatch;}}}\n\n\n\nreturn false;}\n\n\nmodule.exports = shouldUpdateReactComponent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shouldUpdateReactComponent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar warning = require('warning');\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n if (prevElement != null && nextElement != null) {\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return (nextType === 'string' || nextType === 'number');\n } else {\n if (nextType === 'object' &&\n prevElement.type === nextElement.type &&\n prevElement.key === nextElement.key) {\n var ownersMatch = prevElement._owner === nextElement._owner;\n var prevName = null;\n var nextName = null;\n var nextDisplayName = null;\n if (__DEV__) {\n if (!ownersMatch) {\n if (prevElement._owner != null &&\n prevElement._owner.getPublicInstance() != null &&\n prevElement._owner.getPublicInstance().constructor != null) {\n prevName =\n prevElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement._owner != null &&\n nextElement._owner.getPublicInstance() != null &&\n nextElement._owner.getPublicInstance().constructor != null) {\n nextName =\n nextElement._owner.getPublicInstance().constructor.displayName;\n }\n if (nextElement.type != null &&\n nextElement.type.displayName != null) {\n nextDisplayName = nextElement.type.displayName;\n }\n if (nextElement.type != null && typeof nextElement.type === 'string') {\n nextDisplayName = nextElement.type;\n }\n if (typeof nextElement.type !== 'string' ||\n nextElement.type === 'input' ||\n nextElement.type === 'textarea') {\n if ((prevElement._owner != null &&\n prevElement._owner._isOwnerNecessary === false) ||\n (nextElement._owner != null &&\n nextElement._owner._isOwnerNecessary === false)) {\n if (prevElement._owner != null) {\n prevElement._owner._isOwnerNecessary = true;\n }\n if (nextElement._owner != null) {\n nextElement._owner._isOwnerNecessary = true;\n }\n warning(\n false,\n '<%s /> is being rendered by both %s and %s using the same ' +\n 'key (%s) in the same place. Currently, this means that ' +\n 'they don\\'t preserve state. This behavior should be very ' +\n 'rare so we\\'re considering deprecating it. Please contact ' +\n 'the React team and explain your use case so that we can ' +\n 'take that into consideration.',\n nextDisplayName || 'Unknown Component',\n prevName || '[Unknown]',\n nextName || '[Unknown]',\n prevElement.key\n );\n }\n }\n }\n }\n return ownersMatch;\n }\n }\n }\n return false;\n}\n\nmodule.exports = shouldUpdateReactComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/shouldUpdateReactComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEmptyComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactInstanceMap=require('ReactInstanceMap');\n\nvar invariant=require('invariant');\n\nvar component;\n\n\nvar nullComponentIDsRegistry={};\n\nvar ReactEmptyComponentInjection={\ninjectEmptyComponent:function(emptyComponent){\ncomponent = ReactElement.createFactory(emptyComponent);}};\n\n\n\nvar ReactEmptyComponentType=function(){};\nReactEmptyComponentType.prototype.componentDidMount = function(){\nvar internalInstance=ReactInstanceMap.get(this);\n\n\n\n\nif(!internalInstance){\nreturn;}\n\nregisterNullComponentID(internalInstance._rootNodeID);};\n\nReactEmptyComponentType.prototype.componentWillUnmount = function(){\nvar internalInstance=ReactInstanceMap.get(this);\n\nif(!internalInstance){\nreturn;}\n\nderegisterNullComponentID(internalInstance._rootNodeID);};\n\nReactEmptyComponentType.prototype.render = function(){\ninvariant(\ncomponent,\n'Trying to return null from a render, but no null placeholder component ' + \n'was injected.');\n\nreturn component();};\n\n\nvar emptyElement=ReactElement.createElement(ReactEmptyComponentType);\n\n\n\n\n\nfunction registerNullComponentID(id){\nnullComponentIDsRegistry[id] = true;}\n\n\n\n\n\n\nfunction deregisterNullComponentID(id){\ndelete nullComponentIDsRegistry[id];}\n\n\n\n\n\n\nfunction isNullComponentID(id){\nreturn !!nullComponentIDsRegistry[id];}\n\n\nvar ReactEmptyComponent={\nemptyElement:emptyElement,\ninjection:ReactEmptyComponentInjection,\nisNullComponentID:isNullComponentID};\n\n\nmodule.exports = ReactEmptyComponent;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEmptyComponent\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactInstanceMap = require('ReactInstanceMap');\n\nvar invariant = require('invariant');\n\nvar component;\n// This registry keeps track of the React IDs of the components that rendered to\n// `null` (in reality a placeholder such as `noscript`)\nvar nullComponentIDsRegistry = {};\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponent: function(emptyComponent) {\n component = ReactElement.createFactory(emptyComponent);\n }\n};\n\nvar ReactEmptyComponentType = function() {};\nReactEmptyComponentType.prototype.componentDidMount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Make sure we run these methods in the correct order, we shouldn't\n // need this check. We're going to assume if we're here it means we ran\n // componentWillUnmount already so there is no internal instance (it gets\n // removed as part of the unmounting process).\n if (!internalInstance) {\n return;\n }\n registerNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.componentWillUnmount = function() {\n var internalInstance = ReactInstanceMap.get(this);\n // TODO: Get rid of this check. See TODO in componentDidMount.\n if (!internalInstance) {\n return;\n }\n deregisterNullComponentID(internalInstance._rootNodeID);\n};\nReactEmptyComponentType.prototype.render = function() {\n invariant(\n component,\n 'Trying to return null from a render, but no null placeholder component ' +\n 'was injected.'\n );\n return component();\n};\n\nvar emptyElement = ReactElement.createElement(ReactEmptyComponentType);\n\n/**\n * Mark the component as having rendered to null.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction registerNullComponentID(id) {\n nullComponentIDsRegistry[id] = true;\n}\n\n/**\n * Unmark the component as having rendered to null: it renders to something now.\n * @param {string} id Component's `_rootNodeID`.\n */\nfunction deregisterNullComponentID(id) {\n delete nullComponentIDsRegistry[id];\n}\n\n/**\n * @param {string} id Component's `_rootNodeID`.\n * @return {boolean} True if the component is rendered to null.\n */\nfunction isNullComponentID(id) {\n return !!nullComponentIDsRegistry[id];\n}\n\nvar ReactEmptyComponent = {\n emptyElement: emptyElement,\n injection: ReactEmptyComponentInjection,\n isNullComponentID: isNullComponentID\n};\n\nmodule.exports = ReactEmptyComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEmptyComponent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Device/RCTDeviceEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\n\nvar RCTDeviceEventEmitter=new EventEmitter();\n\nmodule.exports = RCTDeviceEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTDeviceEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\n\nvar RCTDeviceEventEmitter = new EventEmitter();\n\nmodule.exports = RCTDeviceEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Device/RCTDeviceEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EmitterSubscription=require('EmitterSubscription');\nvar ErrorUtils=require('ErrorUtils');\nvar EventSubscriptionVendor=require('EventSubscriptionVendor');\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=(function(){\n\n\n\nfunction EventEmitter(){_classCallCheck(this,EventEmitter);\nthis._subscriber = new EventSubscriptionVendor();}_createClass(EventEmitter,[{key:'addListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addListener(\neventType,listener,context){\nreturn this._subscriber.addSubscription(\neventType,\nnew EmitterSubscription(this._subscriber,listener,context));}},{key:'once',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction once(eventType,listener,context){\nvar emitter=this;\nreturn this.addListener(eventType,function(){\nemitter.removeCurrentListener();\nlistener.apply(context,arguments);});}},{key:'removeAllListeners',value:\n\n\n\n\n\n\n\n\n\n\nfunction removeAllListeners(eventType){\nthis._subscriber.removeAllSubscriptions(eventType);}},{key:'removeCurrentListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction removeCurrentListener(){\ninvariant(\n!!this._currentSubscription,\n'Not in an emitting cycle; there is no current subscription');\n\nthis._subscriber.removeSubscription(this._currentSubscription);}},{key:'listeners',value:\n\n\n\n\n\n\n\n\n\nfunction listeners(eventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nreturn subscriptions?\nsubscriptions.filter(emptyFunction.thatReturnsTrue).map(\nfunction(subscription){\nreturn subscription.listener;}):\n\n[];}},{key:'emit',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emit(eventType){\nvar subscriptions=this._subscriber.getSubscriptionsForType(eventType);\nif(subscriptions){\nvar keys=Object.keys(subscriptions);\nfor(var ii=0;ii < keys.length;ii++) {\nvar key=keys[ii];\nvar subscription=subscriptions[key];\n\n\nif(subscription){\nthis._currentSubscription = subscription;\n\nErrorUtils.applyWithGuard(\nsubscription.listener,\nsubscription.context,\nArray.prototype.slice.call(arguments,1),\nnull,\n'EventEmitter:' + eventType);}}\n\n\n\nthis._currentSubscription = null;}}}]);return EventEmitter;})();\n\n\n\n\nmodule.exports = EventEmitter;","sourceCode":"/**\n * @generated SignedSource<<494e66dea72a3e90b763a5ec50b1e0ca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventEmitter\n * @typechecks\n */\n\nvar EmitterSubscription = require('EmitterSubscription');\nvar ErrorUtils = require('ErrorUtils');\nvar EventSubscriptionVendor = require('EventSubscriptionVendor');\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\n\n/**\n * @class EventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\nclass EventEmitter {\n /**\n * @constructor\n */\n constructor() {\n this._subscriber = new EventSubscriptionVendor();\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n addListener(\n eventType: String, listener, context: ?Object): EmitterSubscription {\n return this._subscriber.addSubscription(\n eventType,\n new EmitterSubscription(this._subscriber, listener, context));\n }\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n once(eventType: String, listener, context: ?Object): EmitterSubscription {\n var emitter = this;\n return this.addListener(eventType, function() {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n }\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n removeAllListeners(eventType: ?String) {\n this._subscriber.removeAllSubscriptions(eventType);\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n removeCurrentListener() {\n invariant(\n !!this._currentSubscription,\n 'Not in an emitting cycle; there is no current subscription'\n );\n this._subscriber.removeSubscription(this._currentSubscription);\n }\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @returns {array}\n */\n listeners(eventType: String): Array /* TODO: Array<EventSubscription> */ {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n return subscriptions\n ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(\n function(subscription) {\n return subscription.listener;\n })\n : [];\n }\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n emit(eventType: String) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key];\n\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n\n ErrorUtils.applyWithGuard(\n subscription.listener,\n subscription.context,\n Array.prototype.slice.call(arguments, 1),\n null,\n 'EventEmitter:' + eventType\n );\n }\n }\n this._currentSubscription = null;\n }\n }\n}\n\nmodule.exports = EventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js":{"data":{"code":"'use strict';var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventSubscription=require('EventSubscription');var \n\n\n\n\nEmitterSubscription=(function(_EventSubscription){_inherits(EmitterSubscription,_EventSubscription);\n\n\n\n\n\n\n\n\n\nfunction EmitterSubscription(subscriber,listener,context){_classCallCheck(this,EmitterSubscription);\n_get(Object.getPrototypeOf(EmitterSubscription.prototype),'constructor',this).call(this,subscriber);\nthis.listener = listener;\nthis.context = context;}return EmitterSubscription;})(EventSubscription);\n\n\n\nmodule.exports = EmitterSubscription;","sourceCode":"/**\n * @generated SignedSource<<d17b6e5d9b7118fb0ed9169f579e5b8a>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EmitterSubscription\n * @typechecks\n */\n'use strict';\n\nvar EventSubscription = require('EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\nclass EmitterSubscription extends EventSubscription {\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n constructor(subscriber: EventSubscriptionVendor, listener, context: ?Object) {\n super(subscriber);\n this.listener = listener;\n this.context = context;\n }\n}\n\nmodule.exports = EmitterSubscription;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventSubscription=(function(){\n\n\n\n\n\nfunction EventSubscription(subscriber){_classCallCheck(this,EventSubscription);\nthis.subscriber = subscriber;}_createClass(EventSubscription,[{key:'remove',value:\n\n\n\n\n\nfunction remove(){\nthis.subscriber.removeSubscription(this);}}]);return EventSubscription;})();\n\n\n\nmodule.exports = EventSubscription;","sourceCode":"/**\n * @generated SignedSource<<92108a17b1f3eee4b7e3dd7d484aa17a>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventSubscription\n * @typechecks\n */\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\nclass EventSubscription {\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n constructor(subscriber: EventSubscriptionVendor) {\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n remove() {\n this.subscriber.removeSubscription(this);\n }\n}\n\nmodule.exports = EventSubscription;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');var \n\n\n\n\n\nEventSubscriptionVendor=(function(){\n\nfunction EventSubscriptionVendor(){_classCallCheck(this,EventSubscriptionVendor);\nthis._subscriptionsForType = {};\nthis._currentSubscription = null;}_createClass(EventSubscriptionVendor,[{key:'addSubscription',value:\n\n\n\n\n\n\n\n\nfunction addSubscription(\neventType,subscription){\ninvariant(\nsubscription.subscriber === this,\n'The subscriber of the subscription is incorrectly set.');\nif(!this._subscriptionsForType[eventType]){\nthis._subscriptionsForType[eventType] = [];}\n\nvar key=this._subscriptionsForType[eventType].length;\nthis._subscriptionsForType[eventType].push(subscription);\nsubscription.eventType = eventType;\nsubscription.key = key;\nreturn subscription;}},{key:'removeAllSubscriptions',value:\n\n\n\n\n\n\n\n\nfunction removeAllSubscriptions(eventType){\nif(eventType === undefined){\nthis._subscriptionsForType = {};}else \n{\ndelete this._subscriptionsForType[eventType];}}},{key:'removeSubscription',value:\n\n\n\n\n\n\n\n\n\nfunction removeSubscription(subscription){\nvar eventType=subscription.eventType;\nvar key=subscription.key;\n\nvar subscriptionsForType=this._subscriptionsForType[eventType];\nif(subscriptionsForType){\ndelete subscriptionsForType[key];}}},{key:'getSubscriptionsForType',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getSubscriptionsForType(eventType){\nreturn this._subscriptionsForType[eventType];}}]);return EventSubscriptionVendor;})();\n\n\n\nmodule.exports = EventSubscriptionVendor;","sourceCode":"/**\n * @generated SignedSource<<24d5cc1cdd24704296686faf89dd36cf>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventSubscriptionVendor\n * @typechecks\n */\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\nclass EventSubscriptionVendor {\n\n constructor() {\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n addSubscription(\n eventType: String, subscription: EventSubscription): EventSubscription {\n invariant(\n subscription.subscriber === this,\n 'The subscriber of the subscription is incorrectly set.');\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n var key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n }\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n removeAllSubscriptions(eventType: ?String) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n }\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n removeSubscription(subscription: Object) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n\n var subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n }\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @returns {?array}\n */\n getSubscriptionsForType(eventType: String): ?Array {\n return this._subscriptionsForType[eventType];\n }\n}\n\nmodule.exports = EventSubscriptionVendor;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar performanceNow=require('performanceNow');\n\nvar timespans={};\n\n\n\n\n\nvar PerformanceLogger={\naddTimespan:function(key,lengthInMs,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to add a timespan that already exists');}\n\n\nreturn;}\n\n\ntimespans[key] = {\ndescription:description,\ntotalTime:lengthInMs};},\n\n\n\nstartTimespan:function(key,description){\nif(timespans[key]){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to start a timespan that already exists');}\n\n\nreturn;}\n\n\ntimespans[key] = {\ndescription:description,\nstartTime:performanceNow()};},\n\n\n\nstopTimespan:function(key){\nif(!timespans[key] || !timespans[key].startTime){\nif(__DEV__){\nconsole.log(\n'PerformanceLogger: Attempting to end a timespan that has not started');}\n\n\nreturn;}\n\n\ntimespans[key].endTime = performanceNow();\ntimespans[key].totalTime = \ntimespans[key].endTime - timespans[key].startTime;},\n\n\nclearTimespans:function(){\ntimespans = {};},\n\n\ngetTimespans:function(){\nreturn timespans;},\n\n\nlogTimespans:function(){\nfor(var key in timespans) {\nconsole.log(key + ': ' + timespans[key].totalTime + 'ms');}},\n\n\n\naddTimespans:function(newTimespans,labels){\nfor(var i=0,l=newTimespans.length;i < l;i += 2) {\nvar label=labels[i / 2];\nPerformanceLogger.addTimespan(\nlabel,\nnewTimespans[i + 1] - newTimespans[i],\nlabel);}}};\n\n\n\n\n\nmodule.exports = PerformanceLogger;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PerformanceLogger\n */\n'use strict';\n\n\nvar performanceNow = require('performanceNow');\n\nvar timespans = {};\n\n/**\n * This is meant to collect and log performance data in production, which means\n * it needs to have minimal overhead.\n */\nvar PerformanceLogger = {\n addTimespan(key, lengthInMs, description) {\n if (timespans[key]) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to add a timespan that already exists'\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n totalTime: lengthInMs,\n };\n },\n\n startTimespan(key, description) {\n if (timespans[key]) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to start a timespan that already exists'\n );\n }\n return;\n }\n\n timespans[key] = {\n description: description,\n startTime: performanceNow(),\n };\n },\n\n stopTimespan(key) {\n if (!timespans[key] || !timespans[key].startTime) {\n if (__DEV__) {\n console.log(\n 'PerformanceLogger: Attempting to end a timespan that has not started'\n );\n }\n return;\n }\n\n timespans[key].endTime = performanceNow();\n timespans[key].totalTime =\n timespans[key].endTime - timespans[key].startTime;\n },\n\n clearTimespans() {\n timespans = {};\n },\n\n getTimespans() {\n return timespans;\n },\n\n logTimespans() {\n for (var key in timespans) {\n console.log(key + ': ' + timespans[key].totalTime + 'ms');\n }\n },\n\n addTimespans(newTimespans, labels) {\n for (var i = 0, l = newTimespans.length; i < l; i += 2) {\n var label = labels[i / 2];\n PerformanceLogger.addTimespan(\n label,\n (newTimespans[i + 1] - newTimespans[i]),\n label\n );\n }\n }\n};\n\nmodule.exports = PerformanceLogger;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PerformanceLogger.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTExceptionsManager=require('NativeModules').ExceptionsManager;\n\nvar loadSourceMap=require('loadSourceMap');\nvar parseErrorStack=require('parseErrorStack');\nvar stringifySafe=require('stringifySafe');\n\nvar sourceMapPromise;\n\n\n\n\n\n\n\nfunction reportException(e,isFatal,stack){\nif(RCTExceptionsManager){\nif(!stack){\nstack = parseErrorStack(e);}\n\nif(isFatal){\nRCTExceptionsManager.reportFatalException(e.message,stack);}else \n{\nRCTExceptionsManager.reportSoftException(e.message,stack);}\n\nif(__DEV__){\n(sourceMapPromise = sourceMapPromise || loadSourceMap()).\nthen(function(map){\nvar prettyStack=parseErrorStack(e,map);\nRCTExceptionsManager.updateExceptionMessage(e.message,prettyStack);}).\n\ncatch(function(error){\n\n\nconsole.warn('Unable to load source map: ' + error.message);});}}}\n\n\n\n\n\nfunction handleException(e,isFatal){\nvar stack=parseErrorStack(e);\nvar msg=\n'Error: ' + e.message + \n'\\n stack: \\n' + stackToString(stack) + \n'\\n URL: ' + e.sourceURL + \n'\\n line: ' + e.line + \n'\\n message: ' + e.message;\nif(console.errorOriginal){\nconsole.errorOriginal(msg);}else \n{\nconsole.error(msg);}\n\nreportException(e,isFatal,stack);}\n\n\n\n\n\n\nfunction installConsoleErrorReporter(){\nif(console.reportException){\nreturn;}\n\nconsole.reportException = reportException;\nconsole.errorOriginal = console.error.bind(console);\nconsole.error = function reactConsoleError(){\nconsole.errorOriginal.apply(null,arguments);\nif(!console.reportErrorsAsExceptions){\nreturn;}\n\nvar str=Array.prototype.map.call(arguments,stringifySafe).join(', ');\nvar error=new Error('console.error: ' + str);\nerror.framesToPop = 1;\nreportException(error,false);};\n\nif(console.reportErrorsAsExceptions === undefined){\nconsole.reportErrorsAsExceptions = true;}}\n\n\n\nfunction stackToString(stack){\nvar maxLength=Math.max.apply(null,stack.map(function(frame){return frame.methodName.length;}));\nreturn stack.map(function(frame){return stackFrameToString(frame,maxLength);}).join('\\n');}\n\n\nfunction stackFrameToString(stackFrame,maxLength){\nvar fileNameParts=stackFrame.file.split('/');\nvar fileName=fileNameParts[fileNameParts.length - 1];\n\nif(fileName.length > 18){\nfileName = fileName.substr(0,17) + '\\u2026';}\n\n\nvar spaces=fillSpaces(maxLength - stackFrame.methodName.length);\nreturn ' ' + stackFrame.methodName + spaces + ' ' + fileName + ':' + stackFrame.lineNumber;}\n\n\nfunction fillSpaces(n){\nreturn new Array(n + 1).join(' ');}\n\n\nmodule.exports = {handleException:handleException,installConsoleErrorReporter:installConsoleErrorReporter};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExceptionsManager\n * @flow\n */\n'use strict';\n\nvar RCTExceptionsManager = require('NativeModules').ExceptionsManager;\n\nvar loadSourceMap = require('loadSourceMap');\nvar parseErrorStack = require('parseErrorStack');\nvar stringifySafe = require('stringifySafe');\n\nvar sourceMapPromise;\n\ntype Exception = {\n sourceURL: string;\n line: number;\n message: string;\n}\n\nfunction reportException(e: Exception, isFatal: bool, stack?: any) {\n if (RCTExceptionsManager) {\n if (!stack) {\n stack = parseErrorStack(e);\n }\n if (isFatal) {\n RCTExceptionsManager.reportFatalException(e.message, stack);\n } else {\n RCTExceptionsManager.reportSoftException(e.message, stack);\n }\n if (__DEV__) {\n (sourceMapPromise = sourceMapPromise || loadSourceMap())\n .then(map => {\n var prettyStack = parseErrorStack(e, map);\n RCTExceptionsManager.updateExceptionMessage(e.message, prettyStack);\n })\n .catch(error => {\n // This can happen in a variety of normal situations, such as\n // Network module not being available, or when running locally\n console.warn('Unable to load source map: ' + error.message);\n });\n }\n }\n}\n\nfunction handleException(e: Exception, isFatal: boolean) {\n var stack = parseErrorStack(e);\n var msg =\n 'Error: ' + e.message +\n '\\n stack: \\n' + stackToString(stack) +\n '\\n URL: ' + e.sourceURL +\n '\\n line: ' + e.line +\n '\\n message: ' + e.message;\n if (console.errorOriginal) {\n console.errorOriginal(msg);\n } else {\n console.error(msg);\n }\n reportException(e, isFatal, stack);\n}\n\n/**\n * Shows a redbox with stacktrace for all console.error messages. Disable by\n * setting `console.reportErrorsAsExceptions = false;` in your app.\n */\nfunction installConsoleErrorReporter() {\n if (console.reportException) {\n return; // already installed\n }\n console.reportException = reportException;\n console.errorOriginal = console.error.bind(console);\n console.error = function reactConsoleError() {\n console.errorOriginal.apply(null, arguments);\n if (!console.reportErrorsAsExceptions) {\n return;\n }\n var str = Array.prototype.map.call(arguments, stringifySafe).join(', ');\n var error: any = new Error('console.error: ' + str);\n error.framesToPop = 1;\n reportException(error, /* isFatal */ false);\n };\n if (console.reportErrorsAsExceptions === undefined) {\n console.reportErrorsAsExceptions = true; // Individual apps can disable this\n }\n}\n\nfunction stackToString(stack) {\n var maxLength = Math.max.apply(null, stack.map(frame => frame.methodName.length));\n return stack.map(frame => stackFrameToString(frame, maxLength)).join('\\n');\n}\n\nfunction stackFrameToString(stackFrame, maxLength) {\n var fileNameParts = stackFrame.file.split('/');\n var fileName = fileNameParts[fileNameParts.length - 1];\n\n if (fileName.length > 18) {\n fileName = fileName.substr(0, 17) + '\\u2026' /* ... */;\n }\n\n var spaces = fillSpaces(maxLength - stackFrame.methodName.length);\n return ' ' + stackFrame.methodName + spaces + ' ' + fileName + ':' + stackFrame.lineNumber;\n}\n\nfunction fillSpaces(n) {\n return new Array(n + 1).join(' ');\n}\n\nmodule.exports = { handleException, installConsoleErrorReporter };\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/loadSourceMap.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Promise=require('Promise');\nvar NativeModules=require('NativeModules');\nvar SourceMapConsumer=require('SourceMap').SourceMapConsumer;\nvar SourceMapURL=require('./source-map-url');\n\nvar RCTSourceCode=NativeModules.SourceCode;\nvar RCTNetworking=NativeModules.Networking;\n\nfunction loadSourceMap(){\nreturn fetchSourceMap().\nthen(function(map){return new SourceMapConsumer(map);});}\n\n\nfunction fetchSourceMap(){\nif(global.RAW_SOURCE_MAP){\nreturn Promise.resolve(global.RAW_SOURCE_MAP);}\n\n\nif(!RCTSourceCode){\nreturn Promise.reject(new Error('RCTSourceCode module is not available'));}\n\n\nif(!RCTNetworking){\n\nreturn Promise.reject(new Error('RCTNetworking module is not available'));}\n\n\nreturn new Promise(RCTSourceCode.getScriptText).\nthen(extractSourceMapURL).\nthen(function(url){\nif(url === null){\nreturn Promise.reject(new Error('No source map URL found. May be running from bundled file.'));}\n\nreturn Promise.resolve(url);}).\n\nthen(fetch).\nthen(function(response){return response.text();});}\n\n\nfunction extractSourceMapURL(_ref){var url=_ref.url;var text=_ref.text;var fullSourceMappingURL=_ref.fullSourceMappingURL;\nif(fullSourceMappingURL){\nreturn fullSourceMappingURL;}\n\nvar mapURL=SourceMapURL.getFrom(text);\nif(!mapURL){\nreturn null;}\n\nvar baseURL=url.match(/(.+:\\/\\/.*?)\\//)[1];\nreturn baseURL + mapURL;}\n\n\nmodule.exports = loadSourceMap;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule loadSourceMap\n * @flow\n */\n\n'use strict';\n\nvar Promise = require('Promise');\nvar NativeModules = require('NativeModules');\nvar SourceMapConsumer = require('SourceMap').SourceMapConsumer;\nvar SourceMapURL = require('./source-map-url');\n\nvar RCTSourceCode = NativeModules.SourceCode;\nvar RCTNetworking = NativeModules.Networking;\n\nfunction loadSourceMap(): Promise {\n return fetchSourceMap()\n .then(map => new SourceMapConsumer(map));\n}\n\nfunction fetchSourceMap(): Promise {\n if (global.RAW_SOURCE_MAP) {\n return Promise.resolve(global.RAW_SOURCE_MAP);\n }\n\n if (!RCTSourceCode) {\n return Promise.reject(new Error('RCTSourceCode module is not available'));\n }\n\n if (!RCTNetworking) {\n // Used internally by fetch\n return Promise.reject(new Error('RCTNetworking module is not available'));\n }\n\n return new Promise(RCTSourceCode.getScriptText)\n .then(extractSourceMapURL)\n .then((url) => {\n if (url === null) {\n return Promise.reject(new Error('No source map URL found. May be running from bundled file.'));\n }\n return Promise.resolve(url);\n })\n .then(fetch)\n .then(response => response.text())\n}\n\nfunction extractSourceMapURL({url, text, fullSourceMappingURL}): ?string {\n if (fullSourceMappingURL) {\n return fullSourceMappingURL;\n }\n var mapURL = SourceMapURL.getFrom(text);\n if (!mapURL) {\n return null;\n }\n var baseURL = url.match(/(.+:\\/\\/.*?)\\//)[1];\n return baseURL + mapURL;\n}\n\nmodule.exports = loadSourceMap;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/loadSourceMap.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Promise.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nglobal.setImmediate = require('setImmediate');\nvar Promise=require('promise/setimmediate/es6-extensions');\nrequire('promise/setimmediate/done');\n\n\n\n\nPromise.prototype.finally = function(onSettled){\nreturn this.then(onSettled,onSettled);};\n\n\n\nmodule.exports = Promise;","sourceCode":"/**\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule Promise\n *\n * This module wraps and augments the minimally ES6-compliant Promise\n * implementation provided by the promise npm package.\n */\n\n'use strict';\n\nglobal.setImmediate = require('setImmediate');\nvar Promise = require('promise/setimmediate/es6-extensions');\nrequire('promise/setimmediate/done');\n\n/**\n * Handle either fulfillment or rejection with the same callback.\n */\nPromise.prototype.finally = function(onSettled) {\n return this.then(onSettled, onSettled);\n};\n\n\nmodule.exports = Promise;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Promise.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/setImmediate.js":{"data":{"code":"module.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports = global.setImmediate || \nrequire('ImmediateImplementation').setImmediate;","sourceCode":"/**\n * @generated SignedSource<<9715e66cd259f4d1a1c3d39c97cd0b92>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule setImmediate\n */\n\nmodule.exports = global.setImmediate ||\n require('ImmediateImplementation').setImmediate;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/setImmediate.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/immediate/setImmediate.js":{"data":{"code":"/**\n * @generated SignedSource<<57d0446bbd1186485d372efe6b323dca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic\n * Denicola\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n * @providesModule ImmediateImplementation\n */\n\n(function(global,undefined){\n\"use strict\";\n\nvar nextHandle=1;\nvar tasksByHandle={};\nvar queueHead={};\nvar queueTail=queueHead;\nvar currentlyRunningATask=false;\nvar doc=global.document;\nvar setImmediate;\n\nfunction addFromSetImmediateArguments(args){\nvar handler=args[0];\nargs = Array.prototype.slice.call(args,1);\ntasksByHandle[nextHandle] = function(){\nhandler.apply(undefined,args);};\n\nqueueTail = queueTail.next = {handle:nextHandle++};\nreturn queueTail.handle;}\n\n\nfunction flushQueue(){\nvar next,task;\nwhile(!currentlyRunningATask && (next = queueHead.next)) {\nqueueHead = next;\nif(task = tasksByHandle[next.handle]){\ncurrentlyRunningATask = true;\ntry{\ntask();\ncurrentlyRunningATask = false;}finally \n{\nclearImmediate(next.handle);\nif(currentlyRunningATask){\ncurrentlyRunningATask = false;\n\n\n\n\n\n\nif(queueHead.next){\nsetImmediate(flushQueue);}}}}}}\n\n\n\n\n\n\n\nfunction clearImmediate(handle){\ndelete tasksByHandle[handle];}\n\n\nfunction canUsePostMessage(){\n\n\nif(global.postMessage && !global.importScripts){\nvar postMessageIsAsynchronous=true;\n\nvar onMessage=function(){\npostMessageIsAsynchronous = false;\nif(global.removeEventListener){\nglobal.removeEventListener(\"message\",onMessage,false);}else \n{\nglobal.detachEvent(\"onmessage\",onMessage);}};\n\n\n\nif(global.addEventListener){\nglobal.addEventListener(\"message\",onMessage,false);}else \nif(global.attachEvent){\nglobal.attachEvent(\"onmessage\",onMessage);}else \n{\nreturn false;}\n\n\nglobal.postMessage(\"\",\"*\");\nreturn postMessageIsAsynchronous;}}\n\n\n\nfunction installPostMessageImplementation(){\n\n\nvar messagePrefix=\"setImmediate$\" + Math.random() + \"$\";\nvar onGlobalMessage=function(event){\nif(event.source === global && \ntypeof event.data === \"string\" && \nevent.data.indexOf(messagePrefix) === 0){\nflushQueue();}};\n\n\n\nif(global.addEventListener){\nglobal.addEventListener(\"message\",onGlobalMessage,false);}else \n{\nglobal.attachEvent(\"onmessage\",onGlobalMessage);}\n\n\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\nglobal.postMessage(messagePrefix + handle,\"*\");\nreturn handle;};}\n\n\n\nfunction installMessageChannelImplementation(){\nvar channel=new MessageChannel();\nchannel.port1.onmessage = flushQueue;\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\nchannel.port2.postMessage(handle);\nreturn handle;};}\n\n\n\nfunction installReadyStateChangeImplementation(){\nvar html=doc.documentElement;\nsetImmediate = function(){\nvar handle=addFromSetImmediateArguments(arguments);\n\n\nvar script=doc.createElement(\"script\");\nscript.onreadystatechange = function(){\nscript.onreadystatechange = null;\nhtml.removeChild(script);\nscript = null;\nflushQueue();};\n\nhtml.appendChild(script);\nreturn handle;};}\n\n\n\nfunction installSetTimeoutImplementation(){\nsetImmediate = function(){\nsetTimeout(flushQueue,0);\nreturn addFromSetImmediateArguments(arguments);};}\n\n\n\nif(canUsePostMessage()){\n\ninstallPostMessageImplementation();}else \n\nif(global.MessageChannel){\n\ninstallMessageChannelImplementation();}else \n\nif(doc && \"onreadystatechange\" in doc.createElement(\"script\")){\n\ninstallReadyStateChangeImplementation();}else \n\n{\n\ninstallSetTimeoutImplementation();}\n\n\nexports.setImmediate = setImmediate;\nexports.clearImmediate = clearImmediate;})(\nFunction(\"return this\")());","sourceCode":"/**\n * @generated SignedSource<<57d0446bbd1186485d372efe6b323dca>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright (c) 2012 Barnesandnoble.com, llc, Donavon West, and Domenic\n * Denicola\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n * @providesModule ImmediateImplementation\n */\n\n(function(global, undefined) {\n \"use strict\";\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var queueHead = {};\n var queueTail = queueHead;\n var currentlyRunningATask = false;\n var doc = global.document;\n var setImmediate;\n\n function addFromSetImmediateArguments(args) {\n var handler = args[0];\n args = Array.prototype.slice.call(args, 1);\n tasksByHandle[nextHandle] = function() {\n handler.apply(undefined, args);\n };\n queueTail = (queueTail.next = { handle: nextHandle++ });\n return queueTail.handle;\n }\n\n function flushQueue() {\n var next, task;\n while (!currentlyRunningATask && (next = queueHead.next)) {\n queueHead = next; // If this task fails, don't retry it.\n if ((task = tasksByHandle[next.handle])) {\n currentlyRunningATask = true;\n try {\n task();\n currentlyRunningATask = false;\n } finally {\n clearImmediate(next.handle);\n if (currentlyRunningATask) {\n currentlyRunningATask = false;\n // The call to task() must have thrown an\n // exception if we reach this point, so, just in\n // case there are tasks remaining to be executed,\n // we schedule another flushQueue in a later tick\n // of the event loop, and let the exception\n // propagate uncaught.\n if (queueHead.next) {\n setImmediate(flushQueue);\n }\n }\n }\n }\n }\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n\n var onMessage = function() {\n postMessageIsAsynchronous = false;\n if (global.removeEventListener) {\n global.removeEventListener(\"message\", onMessage, false);\n } else {\n global.detachEvent(\"onmessage\", onMessage);\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onMessage, false);\n } else if (global.attachEvent) {\n global.attachEvent(\"onmessage\", onMessage);\n } else {\n return false;\n }\n\n global.postMessage(\"\", \"*\");\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n flushQueue();\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n global.postMessage(messagePrefix + handle, \"*\");\n return handle;\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flushQueue;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n channel.port2.postMessage(handle);\n return handle;\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n setImmediate = function() {\n var handle = addFromSetImmediateArguments(arguments);\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n flushQueue();\n };\n html.appendChild(script);\n return handle;\n };\n }\n\n function installSetTimeoutImplementation() {\n setImmediate = function() {\n setTimeout(flushQueue, 0);\n return addFromSetImmediateArguments(arguments);\n };\n }\n\n if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6-8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n exports.setImmediate = setImmediate;\n exports.clearImmediate = clearImmediate;\n}(/* jslint evil: true */ Function(\"return this\")()));\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/immediate/setImmediate.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/es6-extensions.js":{"data":{"code":"'use strict';\n\n\n\nvar Promise=require('./core.js');\n\nmodule.exports = Promise;\n\n\n\nvar TRUE=valuePromise(true);\nvar FALSE=valuePromise(false);\nvar NULL=valuePromise(null);\nvar UNDEFINED=valuePromise(undefined);\nvar ZERO=valuePromise(0);\nvar EMPTYSTRING=valuePromise('');\n\nfunction valuePromise(value){\nvar p=new Promise(Promise._99);\np._37 = 1;\np._12 = value;\nreturn p;}\n\nPromise.resolve = function(value){\nif(value instanceof Promise)return value;\n\nif(value === null)return NULL;\nif(value === undefined)return UNDEFINED;\nif(value === true)return TRUE;\nif(value === false)return FALSE;\nif(value === 0)return ZERO;\nif(value === '')return EMPTYSTRING;\n\nif(typeof value === 'object' || typeof value === 'function'){\ntry{\nvar then=value.then;\nif(typeof then === 'function'){\nreturn new Promise(then.bind(value));}}\n\ncatch(ex) {\nreturn new Promise(function(resolve,reject){\nreject(ex);});}}\n\n\n\nreturn valuePromise(value);};\n\n\nPromise.all = function(arr){\nvar args=Array.prototype.slice.call(arr);\n\nreturn new Promise(function(resolve,reject){\nif(args.length === 0)return resolve([]);\nvar remaining=args.length;\nfunction res(i,val){\nif(val && (typeof val === 'object' || typeof val === 'function')){\nif(val instanceof Promise && val.then === Promise.prototype.then){\nwhile(val._37 === 3) {\nval = val._12;}\n\nif(val._37 === 1)return res(i,val._12);\nif(val._37 === 2)reject(val._12);\nval.then(function(val){\nres(i,val);},\nreject);\nreturn;}else \n{\nvar then=val.then;\nif(typeof then === 'function'){\nvar p=new Promise(then.bind(val));\np.then(function(val){\nres(i,val);},\nreject);\nreturn;}}}\n\n\n\nargs[i] = val;\nif(--remaining === 0){\nresolve(args);}}\n\n\nfor(var i=0;i < args.length;i++) {\nres(i,args[i]);}});};\n\n\n\n\nPromise.reject = function(value){\nreturn new Promise(function(resolve,reject){\nreject(value);});};\n\n\n\nPromise.race = function(values){\nreturn new Promise(function(resolve,reject){\nvalues.forEach(function(value){\nPromise.resolve(value).then(resolve,reject);});});};\n\n\n\n\n\n\nPromise.prototype['catch'] = function(onRejected){\nreturn this.then(null,onRejected);};","sourceCode":"'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._99);\n p._37 = 1;\n p._12 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._37 === 3) {\n val = val._12;\n }\n if (val._37 === 1) return res(i, val._12);\n if (val._37 === 2) reject(val._12);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/es6-extensions.js"},"mtime":1438678256000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/core.js":{"data":{"code":"'use strict';\n\n\n\nfunction noop(){}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar LAST_ERROR=null;\nvar IS_ERROR={};\nfunction getThen(obj){\ntry{\nreturn obj.then;}\ncatch(ex) {\nLAST_ERROR = ex;\nreturn IS_ERROR;}}\n\n\n\nfunction tryCallOne(fn,a){\ntry{\nreturn fn(a);}\ncatch(ex) {\nLAST_ERROR = ex;\nreturn IS_ERROR;}}\n\n\nfunction tryCallTwo(fn,a,b){\ntry{\nfn(a,b);}\ncatch(ex) {\nLAST_ERROR = ex;\nreturn IS_ERROR;}}\n\n\n\nmodule.exports = Promise;\n\nfunction Promise(fn){\nif(typeof this !== 'object'){\nthrow new TypeError('Promises must be constructed via new');}\n\nif(typeof fn !== 'function'){\nthrow new TypeError('not a function');}\n\nthis._37 = 0;\nthis._12 = null;\nthis._59 = [];\nif(fn === noop)return;\ndoResolve(fn,this);}\n\nPromise._99 = noop;\n\nPromise.prototype.then = function(onFulfilled,onRejected){\nif(this.constructor !== Promise){\nreturn safeThen(this,onFulfilled,onRejected);}\n\nvar res=new Promise(noop);\nhandle(this,new Handler(onFulfilled,onRejected,res));\nreturn res;};\n\n\nfunction safeThen(self,onFulfilled,onRejected){\nreturn new self.constructor(function(resolve,reject){\nvar res=new Promise(noop);\nres.then(resolve,reject);\nhandle(self,new Handler(onFulfilled,onRejected,res));});}\n\n;\nfunction handle(self,deferred){\nwhile(self._37 === 3) {\nself = self._12;}\n\nif(self._37 === 0){\nself._59.push(deferred);\nreturn;}\n\nsetImmediate(function(){\nvar cb=self._37 === 1?deferred.onFulfilled:deferred.onRejected;\nif(cb === null){\nif(self._37 === 1){\nresolve(deferred.promise,self._12);}else \n{\nreject(deferred.promise,self._12);}\n\nreturn;}\n\nvar ret=tryCallOne(cb,self._12);\nif(ret === IS_ERROR){\nreject(deferred.promise,LAST_ERROR);}else \n{\nresolve(deferred.promise,ret);}});}\n\n\n\nfunction resolve(self,newValue){\n\nif(newValue === self){\nreturn reject(\nself,\nnew TypeError('A promise cannot be resolved with itself.'));}\n\n\nif(\nnewValue && (\ntypeof newValue === 'object' || typeof newValue === 'function'))\n{\nvar then=getThen(newValue);\nif(then === IS_ERROR){\nreturn reject(self,LAST_ERROR);}\n\nif(\nthen === self.then && \nnewValue instanceof Promise)\n{\nself._37 = 3;\nself._12 = newValue;\nfinale(self);\nreturn;}else \nif(typeof then === 'function'){\ndoResolve(then.bind(newValue),self);\nreturn;}}\n\n\nself._37 = 1;\nself._12 = newValue;\nfinale(self);}\n\n\nfunction reject(self,newValue){\nself._37 = 2;\nself._12 = newValue;\nfinale(self);}\n\nfunction finale(self){\nfor(var i=0;i < self._59.length;i++) {\nhandle(self,self._59[i]);}\n\nself._59 = null;}\n\n\nfunction Handler(onFulfilled,onRejected,promise){\nthis.onFulfilled = typeof onFulfilled === 'function'?onFulfilled:null;\nthis.onRejected = typeof onRejected === 'function'?onRejected:null;\nthis.promise = promise;}\n\n\n\n\n\n\n\n\nfunction doResolve(fn,promise){\nvar done=false;\nvar res=tryCallTwo(fn,function(value){\nif(done)return;\ndone = true;\nresolve(promise,value);},\nfunction(reason){\nif(done)return;\ndone = true;\nreject(promise,reason);});\n\nif(!done && res === IS_ERROR){\ndone = true;\nreject(promise,LAST_ERROR);}}","sourceCode":"'use strict';\n\n\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('not a function');\n }\n this._37 = 0;\n this._12 = null;\n this._59 = [];\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._99 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n};\nfunction handle(self, deferred) {\n while (self._37 === 3) {\n self = self._12;\n }\n if (self._37 === 0) {\n self._59.push(deferred);\n return;\n }\n setImmediate(function() {\n var cb = self._37 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._37 === 1) {\n resolve(deferred.promise, self._12);\n } else {\n reject(deferred.promise, self._12);\n }\n return;\n }\n var ret = tryCallOne(cb, self._12);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._37 = 3;\n self._12 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._37 = 1;\n self._12 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._37 = 2;\n self._12 = newValue;\n finale(self);\n}\nfunction finale(self) {\n for (var i = 0; i < self._59.length; i++) {\n handle(self, self._59[i]);\n }\n self._59 = null;\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n })\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/core.js"},"mtime":1438678256000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/done.js":{"data":{"code":"'use strict';\n\nvar Promise=require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function(onFulfilled,onRejected){\nvar self=arguments.length?this.then.apply(this,arguments):this;\nself.then(null,function(err){\nsetTimeout(function(){\nthrow err;},\n0);});};","sourceCode":"'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/promise/setimmediate/done.js"},"mtime":1438678256000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMap.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscope={};\nwrapper.call(scope);\n\nmodule.exports = scope.sourceMap;\n\nfunction wrapper(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction define(moduleName,deps,payload){\nif(typeof moduleName != \"string\"){\nthrow new TypeError('Expected string, got: ' + moduleName);}\n\n\nif(arguments.length == 2){\npayload = deps;}\n\n\nif(moduleName in define.modules){\nthrow new Error(\"Module already defined: \" + moduleName);}\n\ndefine.modules[moduleName] = payload;}\n;\n\n\n\n\ndefine.modules = {};\n\n\n\n\n\n\n\n\n\n\nfunction Domain(){\nthis.modules = {};\nthis._currentModule = null;}\n\n\n(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nDomain.prototype.require = function(deps,callback){\nif(Array.isArray(deps)){\nvar params=deps.map(function(dep){\nreturn this.lookup(dep);},\nthis);\nif(callback){\ncallback.apply(null,params);}\n\nreturn undefined;}else \n\n{\nreturn this.lookup(deps);}};\n\n\n\nfunction normalize(path){\nvar bits=path.split('/');\nvar i=1;\nwhile(i < bits.length) {\nif(bits[i] === '..'){\nbits.splice(i - 1,1);}else \nif(bits[i] === '.'){\nbits.splice(i,1);}else \n{\ni++;}}\n\n\nreturn bits.join('/');}\n\n\nfunction join(a,b){\na = a.trim();\nb = b.trim();\nif(/^\\//.test(b)){\nreturn b;}else \n{\nreturn a.replace(/\\/*$/,'/') + b;}}\n\n\n\nfunction dirname(path){\nvar bits=path.split('/');\nbits.pop();\nreturn bits.join('/');}\n\n\n\n\n\n\n\n\nDomain.prototype.lookup = function(moduleName){\nif(/^\\./.test(moduleName)){\nmoduleName = normalize(join(dirname(this._currentModule),moduleName));}\n\n\nif(moduleName in this.modules){\nvar module=this.modules[moduleName];\nreturn module;}\n\n\nif(!(moduleName in define.modules)){\nthrow new Error(\"Module not defined: \" + moduleName);}\n\n\nvar module=define.modules[moduleName];\n\nif(typeof module == \"function\"){\nvar exports={};\nvar previousModule=this._currentModule;\nthis._currentModule = moduleName;\nmodule(this.require.bind(this),exports,{id:moduleName,uri:\"\"});\nthis._currentModule = previousModule;\nmodule = exports;}\n\n\n\nthis.modules[moduleName] = module;\n\nreturn module;};})();\n\n\n\n\ndefine.Domain = Domain;\ndefine.globalDomain = new Domain();\nvar require=define.globalDomain.require.bind(define.globalDomain);\n\n\n\n\n\n\ndefine('source-map/source-map-generator',['require','exports','module','source-map/base64-vlq','source-map/util','source-map/array-set'],function(require,exports,module){\n\nvar base64VLQ=require('./base64-vlq');\nvar util=require('./util');\nvar ArraySet=require('./array-set').ArraySet;\n\n\n\n\n\n\n\n\n\nfunction SourceMapGenerator(aArgs){\nthis._file = util.getArg(aArgs,'file');\nthis._sourceRoot = util.getArg(aArgs,'sourceRoot',null);\nthis._sources = new ArraySet();\nthis._names = new ArraySet();\nthis._mappings = [];\nthis._sourcesContents = null;}\n\n\nSourceMapGenerator.prototype._version = 3;\n\n\n\n\n\n\nSourceMapGenerator.fromSourceMap = \nfunction SourceMapGenerator_fromSourceMap(aSourceMapConsumer){\nvar sourceRoot=aSourceMapConsumer.sourceRoot;\nvar generator=new SourceMapGenerator({\nfile:aSourceMapConsumer.file,\nsourceRoot:sourceRoot});\n\naSourceMapConsumer.eachMapping(function(mapping){\nvar newMapping={\ngenerated:{\nline:mapping.generatedLine,\ncolumn:mapping.generatedColumn}};\n\n\n\nif(mapping.source){\nnewMapping.source = mapping.source;\nif(sourceRoot){\nnewMapping.source = util.relative(sourceRoot,newMapping.source);}\n\n\nnewMapping.original = {\nline:mapping.originalLine,\ncolumn:mapping.originalColumn};\n\n\nif(mapping.name){\nnewMapping.name = mapping.name;}}\n\n\n\ngenerator.addMapping(newMapping);});\n\naSourceMapConsumer.sources.forEach(function(sourceFile){\nvar content=aSourceMapConsumer.sourceContentFor(sourceFile);\nif(content){\ngenerator.setSourceContent(sourceFile,content);}});\n\n\nreturn generator;};\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype.addMapping = \nfunction SourceMapGenerator_addMapping(aArgs){\nvar generated=util.getArg(aArgs,'generated');\nvar original=util.getArg(aArgs,'original',null);\nvar source=util.getArg(aArgs,'source',null);\nvar name=util.getArg(aArgs,'name',null);\n\nthis._validateMapping(generated,original,source,name);\n\nif(source && !this._sources.has(source)){\nthis._sources.add(source);}\n\n\nif(name && !this._names.has(name)){\nthis._names.add(name);}\n\n\nthis._mappings.push({\ngeneratedLine:generated.line,\ngeneratedColumn:generated.column,\noriginalLine:original != null && original.line,\noriginalColumn:original != null && original.column,\nsource:source,\nname:name});};\n\n\n\n\n\n\nSourceMapGenerator.prototype.setSourceContent = \nfunction SourceMapGenerator_setSourceContent(aSourceFile,aSourceContent){\nvar source=aSourceFile;\nif(this._sourceRoot){\nsource = util.relative(this._sourceRoot,source);}\n\n\nif(aSourceContent !== null){\n\n\nif(!this._sourcesContents){\nthis._sourcesContents = {};}\n\nthis._sourcesContents[util.toSetString(source)] = aSourceContent;}else \n{\n\n\ndelete this._sourcesContents[util.toSetString(source)];\nif(Object.keys(this._sourcesContents).length === 0){\nthis._sourcesContents = null;}}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype.applySourceMap = \nfunction SourceMapGenerator_applySourceMap(aSourceMapConsumer,aSourceFile){\n\nif(!aSourceFile){\naSourceFile = aSourceMapConsumer.file;}\n\nvar sourceRoot=this._sourceRoot;\n\nif(sourceRoot){\naSourceFile = util.relative(sourceRoot,aSourceFile);}\n\n\n\nvar newSources=new ArraySet();\nvar newNames=new ArraySet();\n\n\nthis._mappings.forEach(function(mapping){\nif(mapping.source === aSourceFile && mapping.originalLine){\n\nvar original=aSourceMapConsumer.originalPositionFor({\nline:mapping.originalLine,\ncolumn:mapping.originalColumn});\n\nif(original.source !== null){\n\nif(sourceRoot){\nmapping.source = util.relative(sourceRoot,original.source);}else \n{\nmapping.source = original.source;}\n\nmapping.originalLine = original.line;\nmapping.originalColumn = original.column;\nif(original.name !== null && mapping.name !== null){\n\n\nmapping.name = original.name;}}}\n\n\n\n\nvar source=mapping.source;\nif(source && !newSources.has(source)){\nnewSources.add(source);}\n\n\nvar name=mapping.name;\nif(name && !newNames.has(name)){\nnewNames.add(name);}},\n\n\nthis);\nthis._sources = newSources;\nthis._names = newNames;\n\n\naSourceMapConsumer.sources.forEach(function(sourceFile){\nvar content=aSourceMapConsumer.sourceContentFor(sourceFile);\nif(content){\nif(sourceRoot){\nsourceFile = util.relative(sourceRoot,sourceFile);}\n\nthis.setSourceContent(sourceFile,content);}},\n\nthis);};\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype._validateMapping = \nfunction SourceMapGenerator_validateMapping(aGenerated,aOriginal,aSource,\naName){\nif(aGenerated && 'line' in aGenerated && 'column' in aGenerated && \naGenerated.line > 0 && aGenerated.column >= 0 && \n!aOriginal && !aSource && !aName){\n\nreturn;}else \n\nif(aGenerated && 'line' in aGenerated && 'column' in aGenerated && \naOriginal && 'line' in aOriginal && 'column' in aOriginal && \naGenerated.line > 0 && aGenerated.column >= 0 && \naOriginal.line > 0 && aOriginal.column >= 0 && \naSource){\n\nreturn;}else \n\n{\nthrow new Error('Invalid mapping: ' + JSON.stringify({\ngenerated:aGenerated,\nsource:aSource,\norginal:aOriginal,\nname:aName}));}};\n\n\n\n\n\n\n\n\nSourceMapGenerator.prototype._serializeMappings = \nfunction SourceMapGenerator_serializeMappings(){\nvar previousGeneratedColumn=0;\nvar previousGeneratedLine=1;\nvar previousOriginalColumn=0;\nvar previousOriginalLine=0;\nvar previousName=0;\nvar previousSource=0;\nvar result='';\nvar mapping;\n\n\n\n\n\n\nthis._mappings.sort(util.compareByGeneratedPositions);\n\nfor(var i=0,len=this._mappings.length;i < len;i++) {\nmapping = this._mappings[i];\n\nif(mapping.generatedLine !== previousGeneratedLine){\npreviousGeneratedColumn = 0;\nwhile(mapping.generatedLine !== previousGeneratedLine) {\nresult += ';';\npreviousGeneratedLine++;}}else \n\n\n{\nif(i > 0){\nif(!util.compareByGeneratedPositions(mapping,this._mappings[i - 1])){\ncontinue;}\n\nresult += ',';}}\n\n\n\nresult += base64VLQ.encode(mapping.generatedColumn - \npreviousGeneratedColumn);\npreviousGeneratedColumn = mapping.generatedColumn;\n\nif(mapping.source){\nresult += base64VLQ.encode(this._sources.indexOf(mapping.source) - \npreviousSource);\npreviousSource = this._sources.indexOf(mapping.source);\n\n\nresult += base64VLQ.encode(mapping.originalLine - 1 - \npreviousOriginalLine);\npreviousOriginalLine = mapping.originalLine - 1;\n\nresult += base64VLQ.encode(mapping.originalColumn - \npreviousOriginalColumn);\npreviousOriginalColumn = mapping.originalColumn;\n\nif(mapping.name){\nresult += base64VLQ.encode(this._names.indexOf(mapping.name) - \npreviousName);\npreviousName = this._names.indexOf(mapping.name);}}}\n\n\n\n\nreturn result;};\n\n\nSourceMapGenerator.prototype._generateSourcesContent = \nfunction SourceMapGenerator_generateSourcesContent(aSources,aSourceRoot){\nreturn aSources.map(function(source){\nif(!this._sourcesContents){\nreturn null;}\n\nif(aSourceRoot){\nsource = util.relative(aSourceRoot,source);}\n\nvar key=util.toSetString(source);\nreturn Object.prototype.hasOwnProperty.call(this._sourcesContents,\nkey)?\nthis._sourcesContents[key]:\nnull;},\nthis);};\n\n\n\n\n\nSourceMapGenerator.prototype.toJSON = \nfunction SourceMapGenerator_toJSON(){\nvar map={\nversion:this._version,\nfile:this._file,\nsources:this._sources.toArray(),\nnames:this._names.toArray(),\nmappings:this._serializeMappings()};\n\nif(this._sourceRoot){\nmap.sourceRoot = this._sourceRoot;}\n\nif(this._sourcesContents){\nmap.sourcesContent = this._generateSourcesContent(map.sources,map.sourceRoot);}\n\n\nreturn map;};\n\n\n\n\n\nSourceMapGenerator.prototype.toString = \nfunction SourceMapGenerator_toString(){\nreturn JSON.stringify(this);};\n\n\nexports.SourceMapGenerator = SourceMapGenerator;});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ndefine('source-map/base64-vlq',['require','exports','module','source-map/base64'],function(require,exports,module){\n\nvar base64=require('./base64');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar VLQ_BASE_SHIFT=5;\n\n\nvar VLQ_BASE=1 << VLQ_BASE_SHIFT;\n\n\nvar VLQ_BASE_MASK=VLQ_BASE - 1;\n\n\nvar VLQ_CONTINUATION_BIT=VLQ_BASE;\n\n\n\n\n\n\n\nfunction toVLQSigned(aValue){\nreturn aValue < 0?\n(-aValue << 1) + 1:\n(aValue << 1) + 0;}\n\n\n\n\n\n\n\n\nfunction fromVLQSigned(aValue){\nvar isNegative=(aValue & 1) === 1;\nvar shifted=aValue >> 1;\nreturn isNegative?\n-shifted:\nshifted;}\n\n\n\n\n\nexports.encode = function base64VLQ_encode(aValue){\nvar encoded=\"\";\nvar digit;\n\nvar vlq=toVLQSigned(aValue);\n\ndo {\ndigit = vlq & VLQ_BASE_MASK;\nvlq >>>= VLQ_BASE_SHIFT;\nif(vlq > 0){\n\n\ndigit |= VLQ_CONTINUATION_BIT;}\n\nencoded += base64.encode(digit);}while(\nvlq > 0);\n\nreturn encoded;};\n\n\n\n\n\n\nexports.decode = function base64VLQ_decode(aStr){\nvar i=0;\nvar strLen=aStr.length;\nvar result=0;\nvar shift=0;\nvar continuation,digit;\n\ndo {\nif(i >= strLen){\nthrow new Error(\"Expected more digits in base 64 VLQ value.\");}\n\ndigit = base64.decode(aStr.charAt(i++));\ncontinuation = !!(digit & VLQ_CONTINUATION_BIT);\ndigit &= VLQ_BASE_MASK;\nresult = result + (digit << shift);\nshift += VLQ_BASE_SHIFT;}while(\ncontinuation);\n\nreturn {\nvalue:fromVLQSigned(result),\nrest:aStr.slice(i)};};});\n\n\n\n\n\n\n\n\n\n\ndefine('source-map/base64',['require','exports','module'],function(require,exports,module){\n\nvar charToIntMap={};\nvar intToCharMap={};\n\n'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.\nsplit('').\nforEach(function(ch,index){\ncharToIntMap[ch] = index;\nintToCharMap[index] = ch;});\n\n\n\n\n\nexports.encode = function base64_encode(aNumber){\nif(aNumber in intToCharMap){\nreturn intToCharMap[aNumber];}\n\nthrow new TypeError(\"Must be between 0 and 63: \" + aNumber);};\n\n\n\n\n\nexports.decode = function base64_decode(aChar){\nif(aChar in charToIntMap){\nreturn charToIntMap[aChar];}\n\nthrow new TypeError(\"Not a valid base 64 digit: \" + aChar);};});\n\n\n\n\n\n\n\n\n\ndefine('source-map/util',['require','exports','module'],function(require,exports,module){\n\n\n\n\n\n\n\n\n\n\n\nfunction getArg(aArgs,aName,aDefaultValue){\nif(aName in aArgs){\nreturn aArgs[aName];}else \nif(arguments.length === 3){\nreturn aDefaultValue;}else \n{\nthrow new Error('\"' + aName + '\" is a required argument.');}}\n\n\nexports.getArg = getArg;\n\nvar urlRegexp=/([\\w+\\-.]+):\\/\\/((\\w+:\\w+)@)?([\\w.]+)?(:(\\d+))?(\\S+)?/;\nvar dataUrlRegexp=/^data:.+\\,.+/;\n\nfunction urlParse(aUrl){\nvar match=aUrl.match(urlRegexp);\nif(!match){\nreturn null;}\n\nreturn {\nscheme:match[1],\nauth:match[3],\nhost:match[4],\nport:match[6],\npath:match[7]};}\n\n\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl){\nvar url=aParsedUrl.scheme + \"://\";\nif(aParsedUrl.auth){\nurl += aParsedUrl.auth + \"@\";}\n\nif(aParsedUrl.host){\nurl += aParsedUrl.host;}\n\nif(aParsedUrl.port){\nurl += \":\" + aParsedUrl.port;}\n\nif(aParsedUrl.path){\nurl += aParsedUrl.path;}\n\nreturn url;}\n\nexports.urlGenerate = urlGenerate;\n\nfunction join(aRoot,aPath){\nvar url;\n\nif(aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)){\nreturn aPath;}\n\n\nif(aPath.charAt(0) === '/' && (url = urlParse(aRoot))){\nurl.path = aPath;\nreturn urlGenerate(url);}\n\n\nreturn aRoot.replace(/\\/$/,'') + '/' + aPath;}\n\nexports.join = join;\n\n\n\n\n\n\n\n\n\n\nfunction toSetString(aStr){\nreturn '$' + aStr;}\n\nexports.toSetString = toSetString;\n\nfunction fromSetString(aStr){\nreturn aStr.substr(1);}\n\nexports.fromSetString = fromSetString;\n\nfunction relative(aRoot,aPath){\naRoot = aRoot.replace(/\\/$/,'');\n\nvar url=urlParse(aRoot);\nif(aPath.charAt(0) == \"/\" && url && url.path == \"/\"){\nreturn aPath.slice(1);}\n\n\nreturn aPath.indexOf(aRoot + '/') === 0?\naPath.substr(aRoot.length + 1):\naPath;}\n\nexports.relative = relative;\n\nfunction strcmp(aStr1,aStr2){\nvar s1=aStr1 || \"\";\nvar s2=aStr2 || \"\";\nreturn (s1 > s2) - (s1 < s2);}\n\n\n\n\n\n\n\n\n\n\nfunction compareByOriginalPositions(mappingA,mappingB,onlyCompareOriginal){\nvar cmp;\n\ncmp = strcmp(mappingA.source,mappingB.source);\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalLine - mappingB.originalLine;\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalColumn - mappingB.originalColumn;\nif(cmp || onlyCompareOriginal){\nreturn cmp;}\n\n\ncmp = strcmp(mappingA.name,mappingB.name);\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.generatedLine - mappingB.generatedLine;\nif(cmp){\nreturn cmp;}\n\n\nreturn mappingA.generatedColumn - mappingB.generatedColumn;}\n;\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n\n\n\n\n\n\n\n\n\nfunction compareByGeneratedPositions(mappingA,mappingB,onlyCompareGenerated){\nvar cmp;\n\ncmp = mappingA.generatedLine - mappingB.generatedLine;\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.generatedColumn - mappingB.generatedColumn;\nif(cmp || onlyCompareGenerated){\nreturn cmp;}\n\n\ncmp = strcmp(mappingA.source,mappingB.source);\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalLine - mappingB.originalLine;\nif(cmp){\nreturn cmp;}\n\n\ncmp = mappingA.originalColumn - mappingB.originalColumn;\nif(cmp){\nreturn cmp;}\n\n\nreturn strcmp(mappingA.name,mappingB.name);}\n;\nexports.compareByGeneratedPositions = compareByGeneratedPositions;});\n\n\n\n\n\n\n\n\ndefine('source-map/array-set',['require','exports','module','source-map/util'],function(require,exports,module){\n\nvar util=require('./util');\n\n\n\n\n\n\n\nfunction ArraySet(){\nthis._array = [];\nthis._set = {};}\n\n\n\n\n\nArraySet.fromArray = function ArraySet_fromArray(aArray,aAllowDuplicates){\nvar set=new ArraySet();\nfor(var i=0,len=aArray.length;i < len;i++) {\nset.add(aArray[i],aAllowDuplicates);}\n\nreturn set;};\n\n\n\n\n\n\n\nArraySet.prototype.add = function ArraySet_add(aStr,aAllowDuplicates){\nvar isDuplicate=this.has(aStr);\nvar idx=this._array.length;\nif(!isDuplicate || aAllowDuplicates){\nthis._array.push(aStr);}\n\nif(!isDuplicate){\nthis._set[util.toSetString(aStr)] = idx;}};\n\n\n\n\n\n\n\n\nArraySet.prototype.has = function ArraySet_has(aStr){\nreturn Object.prototype.hasOwnProperty.call(this._set,\nutil.toSetString(aStr));};\n\n\n\n\n\n\n\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr){\nif(this.has(aStr)){\nreturn this._set[util.toSetString(aStr)];}\n\nthrow new Error('\"' + aStr + '\" is not in the set.');};\n\n\n\n\n\n\n\nArraySet.prototype.at = function ArraySet_at(aIdx){\nif(aIdx >= 0 && aIdx < this._array.length){\nreturn this._array[aIdx];}\n\nthrow new Error('No element indexed by ' + aIdx);};\n\n\n\n\n\n\n\nArraySet.prototype.toArray = function ArraySet_toArray(){\nreturn this._array.slice();};\n\n\nexports.ArraySet = ArraySet;});\n\n\n\n\n\n\n\n\ndefine('source-map/source-map-consumer',['require','exports','module','source-map/util','source-map/binary-search','source-map/array-set','source-map/base64-vlq'],function(require,exports,module){\n\nvar util=require('./util');\nvar binarySearch=require('./binary-search');\nvar ArraySet=require('./array-set').ArraySet;\nvar base64VLQ=require('./base64-vlq');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SourceMapConsumer(aSourceMap){\nvar sourceMap=aSourceMap;\nif(typeof aSourceMap === 'string'){\nsourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/,''));}\n\n\nvar version=util.getArg(sourceMap,'version');\nvar sources=util.getArg(sourceMap,'sources');\n\n\nvar names=util.getArg(sourceMap,'names',[]);\nvar sourceRoot=util.getArg(sourceMap,'sourceRoot',null);\nvar sourcesContent=util.getArg(sourceMap,'sourcesContent',null);\nvar mappings=util.getArg(sourceMap,'mappings');\nvar file=util.getArg(sourceMap,'file',null);\n\n\n\nif(version != this._version){\nthrow new Error('Unsupported version: ' + version);}\n\n\n\n\n\n\nthis._names = ArraySet.fromArray(names,true);\nthis._sources = ArraySet.fromArray(sources,true);\n\nthis.sourceRoot = sourceRoot;\nthis.sourcesContent = sourcesContent;\nthis._mappings = mappings;\nthis.file = file;}\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.fromSourceMap = \nfunction SourceMapConsumer_fromSourceMap(aSourceMap){\nvar smc=Object.create(SourceMapConsumer.prototype);\n\nsmc._names = ArraySet.fromArray(aSourceMap._names.toArray(),true);\nsmc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(),true);\nsmc.sourceRoot = aSourceMap._sourceRoot;\nsmc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\nsmc.sourceRoot);\nsmc.file = aSourceMap._file;\n\nsmc.__generatedMappings = aSourceMap._mappings.slice().\nsort(util.compareByGeneratedPositions);\nsmc.__originalMappings = aSourceMap._mappings.slice().\nsort(util.compareByOriginalPositions);\n\nreturn smc;};\n\n\n\n\n\nSourceMapConsumer.prototype._version = 3;\n\n\n\n\nObject.defineProperty(SourceMapConsumer.prototype,'sources',{\nget:function(){\nreturn this._sources.toArray().map(function(s){\nreturn this.sourceRoot?util.join(this.sourceRoot,s):s;},\nthis);}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype,'_generatedMappings',{\nget:function(){\nif(!this.__generatedMappings){\nthis.__generatedMappings = [];\nthis.__originalMappings = [];\nthis._parseMappings(this._mappings,this.sourceRoot);}\n\n\nreturn this.__generatedMappings;}});\n\n\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype,'_originalMappings',{\nget:function(){\nif(!this.__originalMappings){\nthis.__generatedMappings = [];\nthis.__originalMappings = [];\nthis._parseMappings(this._mappings,this.sourceRoot);}\n\n\nreturn this.__originalMappings;}});\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype._parseMappings = \nfunction SourceMapConsumer_parseMappings(aStr,aSourceRoot){\nvar generatedLine=1;\nvar previousGeneratedColumn=0;\nvar previousOriginalLine=0;\nvar previousOriginalColumn=0;\nvar previousSource=0;\nvar previousName=0;\nvar mappingSeparator=/^[,;]/;\nvar str=aStr;\nvar mapping;\nvar temp;\n\nwhile(str.length > 0) {\nif(str.charAt(0) === ';'){\ngeneratedLine++;\nstr = str.slice(1);\npreviousGeneratedColumn = 0;}else \n\nif(str.charAt(0) === ','){\nstr = str.slice(1);}else \n\n{\nmapping = {};\nmapping.generatedLine = generatedLine;\n\n\ntemp = base64VLQ.decode(str);\nmapping.generatedColumn = previousGeneratedColumn + temp.value;\npreviousGeneratedColumn = mapping.generatedColumn;\nstr = temp.rest;\n\nif(str.length > 0 && !mappingSeparator.test(str.charAt(0))){\n\ntemp = base64VLQ.decode(str);\nmapping.source = this._sources.at(previousSource + temp.value);\npreviousSource += temp.value;\nstr = temp.rest;\nif(str.length === 0 || mappingSeparator.test(str.charAt(0))){\nthrow new Error('Found a source, but no line and column');}\n\n\n\ntemp = base64VLQ.decode(str);\nmapping.originalLine = previousOriginalLine + temp.value;\npreviousOriginalLine = mapping.originalLine;\n\nmapping.originalLine += 1;\nstr = temp.rest;\nif(str.length === 0 || mappingSeparator.test(str.charAt(0))){\nthrow new Error('Found a source and line, but no column');}\n\n\n\ntemp = base64VLQ.decode(str);\nmapping.originalColumn = previousOriginalColumn + temp.value;\npreviousOriginalColumn = mapping.originalColumn;\nstr = temp.rest;\n\nif(str.length > 0 && !mappingSeparator.test(str.charAt(0))){\n\ntemp = base64VLQ.decode(str);\nmapping.name = this._names.at(previousName + temp.value);\npreviousName += temp.value;\nstr = temp.rest;}}\n\n\n\nthis.__generatedMappings.push(mapping);\nif(typeof mapping.originalLine === 'number'){\nthis.__originalMappings.push(mapping);}}}\n\n\n\n\nthis.__originalMappings.sort(util.compareByOriginalPositions);};\n\n\n\n\n\n\nSourceMapConsumer.prototype._findMapping = \nfunction SourceMapConsumer_findMapping(aNeedle,aMappings,aLineName,\naColumnName,aComparator){\n\n\n\n\n\nif(aNeedle[aLineName] <= 0){\nthrow new TypeError('Line must be greater than or equal to 1, got ' + \naNeedle[aLineName]);}\n\nif(aNeedle[aColumnName] < 0){\nthrow new TypeError('Column must be greater than or equal to 0, got ' + \naNeedle[aColumnName]);}\n\n\nreturn binarySearch.search(aNeedle,aMappings,aComparator);};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.originalPositionFor = \nfunction SourceMapConsumer_originalPositionFor(aArgs){\nvar needle={\ngeneratedLine:util.getArg(aArgs,'line'),\ngeneratedColumn:util.getArg(aArgs,'column')};\n\n\nvar mapping=this._findMapping(needle,\nthis._generatedMappings,\n\"generatedLine\",\n\"generatedColumn\",\nutil.compareByGeneratedPositions);\n\nif(mapping){\nvar source=util.getArg(mapping,'source',null);\nif(source && this.sourceRoot){\nsource = util.join(this.sourceRoot,source);}\n\nreturn {\nsource:source,\nline:util.getArg(mapping,'originalLine',null),\ncolumn:util.getArg(mapping,'originalColumn',null),\nname:util.getArg(mapping,'name',null)};}\n\n\n\nreturn {\nsource:null,\nline:null,\ncolumn:null,\nname:null};};\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.sourceContentFor = \nfunction SourceMapConsumer_sourceContentFor(aSource){\nif(!this.sourcesContent){\nreturn null;}\n\n\nif(this.sourceRoot){\naSource = util.relative(this.sourceRoot,aSource);}\n\n\nif(this._sources.has(aSource)){\nreturn this.sourcesContent[this._sources.indexOf(aSource)];}\n\n\nvar url;\nif(this.sourceRoot && (\nurl = util.urlParse(this.sourceRoot))){\n\n\n\n\nvar fileUriAbsPath=aSource.replace(/^file:\\/\\//,\"\");\nif(url.scheme == \"file\" && \nthis._sources.has(fileUriAbsPath)){\nreturn this.sourcesContent[this._sources.indexOf(fileUriAbsPath)];}\n\n\nif((!url.path || url.path == \"/\") && \nthis._sources.has(\"/\" + aSource)){\nreturn this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];}}\n\n\n\nthrow new Error('\"' + aSource + '\" is not in the SourceMap.');};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.generatedPositionFor = \nfunction SourceMapConsumer_generatedPositionFor(aArgs){\nvar needle={\nsource:util.getArg(aArgs,'source'),\noriginalLine:util.getArg(aArgs,'line'),\noriginalColumn:util.getArg(aArgs,'column')};\n\n\nif(this.sourceRoot){\nneedle.source = util.relative(this.sourceRoot,needle.source);}\n\n\nvar mapping=this._findMapping(needle,\nthis._originalMappings,\n\"originalLine\",\n\"originalColumn\",\nutil.compareByOriginalPositions);\n\nif(mapping){\nreturn {\nline:util.getArg(mapping,'generatedLine',null),\ncolumn:util.getArg(mapping,'generatedColumn',null)};}\n\n\n\nreturn {\nline:null,\ncolumn:null};};\n\n\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSourceMapConsumer.prototype.eachMapping = \nfunction SourceMapConsumer_eachMapping(aCallback,aContext,aOrder){\nvar context=aContext || null;\nvar order=aOrder || SourceMapConsumer.GENERATED_ORDER;\n\nvar mappings;\nswitch(order){\ncase SourceMapConsumer.GENERATED_ORDER:\nmappings = this._generatedMappings;\nbreak;\ncase SourceMapConsumer.ORIGINAL_ORDER:\nmappings = this._originalMappings;\nbreak;\ndefault:\nthrow new Error(\"Unknown order of iteration.\");}\n\n\nvar sourceRoot=this.sourceRoot;\nmappings.map(function(mapping){\nvar source=mapping.source;\nif(source && sourceRoot){\nsource = util.join(sourceRoot,source);}\n\nreturn {\nsource:source,\ngeneratedLine:mapping.generatedLine,\ngeneratedColumn:mapping.generatedColumn,\noriginalLine:mapping.originalLine,\noriginalColumn:mapping.originalColumn,\nname:mapping.name};}).\n\nforEach(aCallback,context);};\n\n\nexports.SourceMapConsumer = SourceMapConsumer;});\n\n\n\n\n\n\n\n\ndefine('source-map/binary-search',['require','exports','module'],function(require,exports,module){\n\n\n\n\n\n\n\n\n\n\nfunction recursiveSearch(aLow,aHigh,aNeedle,aHaystack,aCompare){\n\n\n\n\n\n\n\n\n\n\nvar mid=Math.floor((aHigh - aLow) / 2) + aLow;\nvar cmp=aCompare(aNeedle,aHaystack[mid],true);\nif(cmp === 0){\n\nreturn aHaystack[mid];}else \n\nif(cmp > 0){\n\nif(aHigh - mid > 1){\n\nreturn recursiveSearch(mid,aHigh,aNeedle,aHaystack,aCompare);}\n\n\n\nreturn aHaystack[mid];}else \n\n{\n\nif(mid - aLow > 1){\n\nreturn recursiveSearch(aLow,mid,aNeedle,aHaystack,aCompare);}\n\n\n\nreturn aLow < 0?\nnull:\naHaystack[aLow];}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports.search = function search(aNeedle,aHaystack,aCompare){\nreturn aHaystack.length > 0?\nrecursiveSearch(-1,aHaystack.length,aNeedle,aHaystack,aCompare):\nnull;};});\n\n\n\n\n\n\n\n\n\ndefine('source-map/source-node',['require','exports','module','source-map/source-map-generator','source-map/util'],function(require,exports,module){\n\nvar SourceMapGenerator=require('./source-map-generator').SourceMapGenerator;\nvar util=require('./util');\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SourceNode(aLine,aColumn,aSource,aChunks,aName){\nthis.children = [];\nthis.sourceContents = {};\nthis.line = aLine === undefined?null:aLine;\nthis.column = aColumn === undefined?null:aColumn;\nthis.source = aSource === undefined?null:aSource;\nthis.name = aName === undefined?null:aName;\nif(aChunks != null)this.add(aChunks);}\n\n\n\n\n\n\n\n\nSourceNode.fromStringWithSourceMap = \nfunction SourceNode_fromStringWithSourceMap(aGeneratedCode,aSourceMapConsumer){\n\n\nvar node=new SourceNode();\n\n\n\nvar remainingLines=aGeneratedCode.split('\\n');\n\n\nvar lastGeneratedLine=1,lastGeneratedColumn=0;\n\n\n\n\nvar lastMapping=null;\n\naSourceMapConsumer.eachMapping(function(mapping){\nif(lastMapping === null){\n\n\n\nwhile(lastGeneratedLine < mapping.generatedLine) {\nnode.add(remainingLines.shift() + \"\\n\");\nlastGeneratedLine++;}\n\nif(lastGeneratedColumn < mapping.generatedColumn){\nvar nextLine=remainingLines[0];\nnode.add(nextLine.substr(0,mapping.generatedColumn));\nremainingLines[0] = nextLine.substr(mapping.generatedColumn);\nlastGeneratedColumn = mapping.generatedColumn;}}else \n\n{\n\n\nif(lastGeneratedLine < mapping.generatedLine){\nvar code=\"\";\n\ndo {\ncode += remainingLines.shift() + \"\\n\";\nlastGeneratedLine++;\nlastGeneratedColumn = 0;}while(\nlastGeneratedLine < mapping.generatedLine);\n\n\nif(lastGeneratedColumn < mapping.generatedColumn){\nvar nextLine=remainingLines[0];\ncode += nextLine.substr(0,mapping.generatedColumn);\nremainingLines[0] = nextLine.substr(mapping.generatedColumn);\nlastGeneratedColumn = mapping.generatedColumn;}\n\n\naddMappingWithCode(lastMapping,code);}else \n{\n\n\n\nvar nextLine=remainingLines[0];\nvar code=nextLine.substr(0,mapping.generatedColumn - \nlastGeneratedColumn);\nremainingLines[0] = nextLine.substr(mapping.generatedColumn - \nlastGeneratedColumn);\nlastGeneratedColumn = mapping.generatedColumn;\naddMappingWithCode(lastMapping,code);}}\n\n\nlastMapping = mapping;},\nthis);\n\n\n\naddMappingWithCode(lastMapping,remainingLines.join(\"\\n\"));\n\n\naSourceMapConsumer.sources.forEach(function(sourceFile){\nvar content=aSourceMapConsumer.sourceContentFor(sourceFile);\nif(content){\nnode.setSourceContent(sourceFile,content);}});\n\n\n\nreturn node;\n\nfunction addMappingWithCode(mapping,code){\nif(mapping === null || mapping.source === undefined){\nnode.add(code);}else \n{\nnode.add(new SourceNode(mapping.originalLine,\nmapping.originalColumn,\nmapping.source,\ncode,\nmapping.name));}}};\n\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.add = function SourceNode_add(aChunk){\nif(Array.isArray(aChunk)){\naChunk.forEach(function(chunk){\nthis.add(chunk);},\nthis);}else \n\nif(aChunk instanceof SourceNode || typeof aChunk === \"string\"){\nif(aChunk){\nthis.children.push(aChunk);}}else \n\n\n{\nthrow new TypeError(\n\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);}\n\n\nreturn this;};\n\n\n\n\n\n\n\n\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk){\nif(Array.isArray(aChunk)){\nfor(var i=aChunk.length - 1;i >= 0;i--) {\nthis.prepend(aChunk[i]);}}else \n\n\nif(aChunk instanceof SourceNode || typeof aChunk === \"string\"){\nthis.children.unshift(aChunk);}else \n\n{\nthrow new TypeError(\n\"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk);}\n\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.walk = function SourceNode_walk(aFn){\nvar chunk;\nfor(var i=0,len=this.children.length;i < len;i++) {\nchunk = this.children[i];\nif(chunk instanceof SourceNode){\nchunk.walk(aFn);}else \n\n{\nif(chunk !== ''){\naFn(chunk,{source:this.source,\nline:this.line,\ncolumn:this.column,\nname:this.name});}}}};\n\n\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.join = function SourceNode_join(aSep){\nvar newChildren;\nvar i;\nvar len=this.children.length;\nif(len > 0){\nnewChildren = [];\nfor(i = 0;i < len - 1;i++) {\nnewChildren.push(this.children[i]);\nnewChildren.push(aSep);}\n\nnewChildren.push(this.children[i]);\nthis.children = newChildren;}\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern,aReplacement){\nvar lastChild=this.children[this.children.length - 1];\nif(lastChild instanceof SourceNode){\nlastChild.replaceRight(aPattern,aReplacement);}else \n\nif(typeof lastChild === 'string'){\nthis.children[this.children.length - 1] = lastChild.replace(aPattern,aReplacement);}else \n\n{\nthis.children.push(''.replace(aPattern,aReplacement));}\n\nreturn this;};\n\n\n\n\n\n\n\n\n\nSourceNode.prototype.setSourceContent = \nfunction SourceNode_setSourceContent(aSourceFile,aSourceContent){\nthis.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;};\n\n\n\n\n\n\n\n\nSourceNode.prototype.walkSourceContents = \nfunction SourceNode_walkSourceContents(aFn){\nfor(var i=0,len=this.children.length;i < len;i++) {\nif(this.children[i] instanceof SourceNode){\nthis.children[i].walkSourceContents(aFn);}}\n\n\n\nvar sources=Object.keys(this.sourceContents);\nfor(var i=0,len=sources.length;i < len;i++) {\naFn(util.fromSetString(sources[i]),this.sourceContents[sources[i]]);}};\n\n\n\n\n\n\n\nSourceNode.prototype.toString = function SourceNode_toString(){\nvar str=\"\";\nthis.walk(function(chunk){\nstr += chunk;});\n\nreturn str;};\n\n\n\n\n\n\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs){\nvar generated={\ncode:\"\",\nline:1,\ncolumn:0};\n\nvar map=new SourceMapGenerator(aArgs);\nvar sourceMappingActive=false;\nvar lastOriginalSource=null;\nvar lastOriginalLine=null;\nvar lastOriginalColumn=null;\nvar lastOriginalName=null;\nthis.walk(function(chunk,original){\ngenerated.code += chunk;\nif(original.source !== null && \noriginal.line !== null && \noriginal.column !== null){\nif(lastOriginalSource !== original.source || \nlastOriginalLine !== original.line || \nlastOriginalColumn !== original.column || \nlastOriginalName !== original.name){\nmap.addMapping({\nsource:original.source,\noriginal:{\nline:original.line,\ncolumn:original.column},\n\ngenerated:{\nline:generated.line,\ncolumn:generated.column},\n\nname:original.name});}\n\n\nlastOriginalSource = original.source;\nlastOriginalLine = original.line;\nlastOriginalColumn = original.column;\nlastOriginalName = original.name;\nsourceMappingActive = true;}else \nif(sourceMappingActive){\nmap.addMapping({\ngenerated:{\nline:generated.line,\ncolumn:generated.column}});\n\n\nlastOriginalSource = null;\nsourceMappingActive = false;}\n\nchunk.split('').forEach(function(ch){\nif(ch === '\\n'){\ngenerated.line++;\ngenerated.column = 0;}else \n{\ngenerated.column++;}});});\n\n\n\nthis.walkSourceContents(function(sourceFile,sourceContent){\nmap.setSourceContent(sourceFile,sourceContent);});\n\n\nreturn {code:generated.code,map:map};};\n\n\nexports.SourceNode = SourceNode;});\n\n\n\n\n\nthis.sourceMap = {\nSourceMapConsumer:require('source-map/source-map-consumer').SourceMapConsumer,\nSourceMapGenerator:require('source-map/source-map-generator').SourceMapGenerator,\nSourceNode:require('source-map/source-node').SourceNode};}","sourceCode":"\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SourceMap\n * @generated\n * @extern\n *\n * This module was generated from `node_modules/source-map` by running\n *\n * $ npm install dryice\n * $ node Makefile.dryice.js\n * $ cat dist/source-map.js\n *\n * and wrapping resulting file into `wrapper` function.\n *\n */\n/*eslint-disable */\n\nvar scope = {};\nwrapper.call(scope);\n\nmodule.exports = scope.sourceMap;\n\nfunction wrapper() {\n\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * Define a module along with a payload.\n * @param {string} moduleName Name for the payload\n * @param {ignored} deps Ignored. For compatibility with CommonJS AMD Spec\n * @param {function} payload Function with (require, exports, module) params\n */\nfunction define(moduleName, deps, payload) {\n if (typeof moduleName != \"string\") {\n throw new TypeError('Expected string, got: ' + moduleName);\n }\n\n if (arguments.length == 2) {\n payload = deps;\n }\n\n if (moduleName in define.modules) {\n throw new Error(\"Module already defined: \" + moduleName);\n }\n define.modules[moduleName] = payload;\n};\n\n/**\n * The global store of un-instantiated modules\n */\ndefine.modules = {};\n\n\n/**\n * We invoke require() in the context of a Domain so we can have multiple\n * sets of modules running separate from each other.\n * This contrasts with JSMs which are singletons, Domains allows us to\n * optionally load a CommonJS module twice with separate data each time.\n * Perhaps you want 2 command lines with a different set of commands in each,\n * for example.\n */\nfunction Domain() {\n this.modules = {};\n this._currentModule = null;\n}\n\n(function () {\n\n /**\n * Lookup module names and resolve them by calling the definition function if\n * needed.\n * There are 2 ways to call this, either with an array of dependencies and a\n * callback to call when the dependencies are found (which can happen\n * asynchronously in an in-page context) or with a single string an no callback\n * where the dependency is resolved synchronously and returned.\n * The API is designed to be compatible with the CommonJS AMD spec and\n * RequireJS.\n * @param {string[]|string} deps A name, or names for the payload\n * @param {function|undefined} callback Function to call when the dependencies\n * are resolved\n * @return {undefined|object} The module required or undefined for\n * array/callback method\n */\n Domain.prototype.require = function(deps, callback) {\n if (Array.isArray(deps)) {\n var params = deps.map(function(dep) {\n return this.lookup(dep);\n }, this);\n if (callback) {\n callback.apply(null, params);\n }\n return undefined;\n }\n else {\n return this.lookup(deps);\n }\n };\n\n function normalize(path) {\n var bits = path.split('/');\n var i = 1;\n while (i < bits.length) {\n if (bits[i] === '..') {\n bits.splice(i-1, 1);\n } else if (bits[i] === '.') {\n bits.splice(i, 1);\n } else {\n i++;\n }\n }\n return bits.join('/');\n }\n\n function join(a, b) {\n a = a.trim();\n b = b.trim();\n if (/^\\//.test(b)) {\n return b;\n } else {\n return a.replace(/\\/*$/, '/') + b;\n }\n }\n\n function dirname(path) {\n var bits = path.split('/');\n bits.pop();\n return bits.join('/');\n }\n\n /**\n * Lookup module names and resolve them by calling the definition function if\n * needed.\n * @param {string} moduleName A name for the payload to lookup\n * @return {object} The module specified by aModuleName or null if not found.\n */\n Domain.prototype.lookup = function(moduleName) {\n if (/^\\./.test(moduleName)) {\n moduleName = normalize(join(dirname(this._currentModule), moduleName));\n }\n\n if (moduleName in this.modules) {\n var module = this.modules[moduleName];\n return module;\n }\n\n if (!(moduleName in define.modules)) {\n throw new Error(\"Module not defined: \" + moduleName);\n }\n\n var module = define.modules[moduleName];\n\n if (typeof module == \"function\") {\n var exports = {};\n var previousModule = this._currentModule;\n this._currentModule = moduleName;\n module(this.require.bind(this), exports, { id: moduleName, uri: \"\" });\n this._currentModule = previousModule;\n module = exports;\n }\n\n // cache the resulting module object for next time\n this.modules[moduleName] = module;\n\n return module;\n };\n\n}());\n\ndefine.Domain = Domain;\ndefine.globalDomain = new Domain();\nvar require = define.globalDomain.require.bind(define.globalDomain);\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-map-generator', ['require', 'exports', 'module' , 'source-map/base64-vlq', 'source-map/util', 'source-map/array-set'], function(require, exports, module) {\n\n var base64VLQ = require('./base64-vlq');\n var util = require('./util');\n var ArraySet = require('./array-set').ArraySet;\n\n /**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. To create a new one, you must pass an object\n * with the following properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: An optional root for all URLs in this source map.\n */\n function SourceMapGenerator(aArgs) {\n this._file = util.getArg(aArgs, 'file');\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = [];\n this._sourcesContents = null;\n }\n\n SourceMapGenerator.prototype._version = 3;\n\n /**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\n SourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source) {\n newMapping.source = mapping.source;\n if (sourceRoot) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n /**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\n SourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n this._validateMapping(generated, original, source, name);\n\n if (source && !this._sources.has(source)) {\n this._sources.add(source);\n }\n\n if (name && !this._names.has(name)) {\n this._names.add(name);\n }\n\n this._mappings.push({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n /**\n * Set the source content for a source file.\n */\n SourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent !== null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = {};\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n /**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n */\n SourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile) {\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (!aSourceFile) {\n aSourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"aSourceFile\" relative if an absolute Url is passed.\n if (sourceRoot) {\n aSourceFile = util.relative(sourceRoot, aSourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"aSourceFile\"\n this._mappings.forEach(function (mapping) {\n if (mapping.source === aSourceFile && mapping.originalLine) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source !== null) {\n // Copy mapping\n if (sourceRoot) {\n mapping.source = util.relative(sourceRoot, original.source);\n } else {\n mapping.source = original.source;\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name !== null && mapping.name !== null) {\n // Only use the identifier name if it's an identifier\n // in both SourceMaps\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n if (sourceRoot) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n /**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\n SourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n orginal: aOriginal,\n name: aName\n }));\n }\n };\n\n /**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\n SourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var mapping;\n\n // The mappings must be guaranteed to be in sorted order before we start\n // serializing them or else the generated line numbers (which are defined\n // via the ';' separators) will be all messed up. Note: it might be more\n // performant to maintain the sorting as we insert them, rather than as we\n // serialize them, but the big O is the same either way.\n this._mappings.sort(util.compareByGeneratedPositions);\n\n for (var i = 0, len = this._mappings.length; i < len; i++) {\n mapping = this._mappings[i];\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n result += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositions(mapping, this._mappings[i - 1])) {\n continue;\n }\n result += ',';\n }\n }\n\n result += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source) {\n result += base64VLQ.encode(this._sources.indexOf(mapping.source)\n - previousSource);\n previousSource = this._sources.indexOf(mapping.source);\n\n // lines are stored 0-based in SourceMap spec version 3\n result += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n result += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name) {\n result += base64VLQ.encode(this._names.indexOf(mapping.name)\n - previousName);\n previousName = this._names.indexOf(mapping.name);\n }\n }\n }\n\n return result;\n };\n\n SourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n /**\n * Externalize the source map.\n */\n SourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n file: this._file,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._sourceRoot) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n /**\n * Render the source map being generated to a string.\n */\n SourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this);\n };\n\n exports.SourceMapGenerator = SourceMapGenerator;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\ndefine('source-map/base64-vlq', ['require', 'exports', 'module' , 'source-map/base64'], function(require, exports, module) {\n\n var base64 = require('./base64');\n\n // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n // length quantities we use in the source map spec, the first bit is the sign,\n // the next four bits are the actual value, and the 6th bit is the\n // continuation bit. The continuation bit tells us whether there are more\n // digits in this value following this digit.\n //\n // Continuation\n // | Sign\n // | |\n // V V\n // 101011\n\n var VLQ_BASE_SHIFT = 5;\n\n // binary: 100000\n var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n // binary: 011111\n var VLQ_BASE_MASK = VLQ_BASE - 1;\n\n // binary: 100000\n var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n /**\n * Converts from a two-complement value to a value where the sign bit is\n * is placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\n function toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n }\n\n /**\n * Converts to a two-complement value from a value where the sign bit is\n * is placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\n function fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n }\n\n /**\n * Returns the base 64 VLQ encoded value.\n */\n exports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n };\n\n /**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string.\n */\n exports.decode = function base64VLQ_decode(aStr) {\n var i = 0;\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (i >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n digit = base64.decode(aStr.charAt(i++));\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n return {\n value: fromVLQSigned(result),\n rest: aStr.slice(i)\n };\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/base64', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n var charToIntMap = {};\n var intToCharMap = {};\n\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n .split('')\n .forEach(function (ch, index) {\n charToIntMap[ch] = index;\n intToCharMap[index] = ch;\n });\n\n /**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\n exports.encode = function base64_encode(aNumber) {\n if (aNumber in intToCharMap) {\n return intToCharMap[aNumber];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + aNumber);\n };\n\n /**\n * Decode a single base 64 digit to an integer.\n */\n exports.decode = function base64_decode(aChar) {\n if (aChar in charToIntMap) {\n return charToIntMap[aChar];\n }\n throw new TypeError(\"Not a valid base 64 digit: \" + aChar);\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/util', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n /**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\n function getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n }\n exports.getArg = getArg;\n\n var urlRegexp = /([\\w+\\-.]+):\\/\\/((\\w+:\\w+)@)?([\\w.]+)?(:(\\d+))?(\\S+)?/;\n var dataUrlRegexp = /^data:.+\\,.+/;\n\n function urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[3],\n host: match[4],\n port: match[6],\n path: match[7]\n };\n }\n exports.urlParse = urlParse;\n\n function urlGenerate(aParsedUrl) {\n var url = aParsedUrl.scheme + \"://\";\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + \"@\"\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n }\n exports.urlGenerate = urlGenerate;\n\n function join(aRoot, aPath) {\n var url;\n\n if (aPath.match(urlRegexp) || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n if (aPath.charAt(0) === '/' && (url = urlParse(aRoot))) {\n url.path = aPath;\n return urlGenerate(url);\n }\n\n return aRoot.replace(/\\/$/, '') + '/' + aPath;\n }\n exports.join = join;\n\n /**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\n function toSetString(aStr) {\n return '$' + aStr;\n }\n exports.toSetString = toSetString;\n\n function fromSetString(aStr) {\n return aStr.substr(1);\n }\n exports.fromSetString = fromSetString;\n\n function relative(aRoot, aPath) {\n aRoot = aRoot.replace(/\\/$/, '');\n\n var url = urlParse(aRoot);\n if (aPath.charAt(0) == \"/\" && url && url.path == \"/\") {\n return aPath.slice(1);\n }\n\n return aPath.indexOf(aRoot + '/') === 0\n ? aPath.substr(aRoot.length + 1)\n : aPath;\n }\n exports.relative = relative;\n\n function strcmp(aStr1, aStr2) {\n var s1 = aStr1 || \"\";\n var s2 = aStr2 || \"\";\n return (s1 > s2) - (s1 < s2);\n }\n\n /**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\n function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp;\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.name, mappingB.name);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return mappingA.generatedColumn - mappingB.generatedColumn;\n };\n exports.compareByOriginalPositions = compareByOriginalPositions;\n\n /**\n * Comparator between two mappings where the generated positions are\n * compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\n function compareByGeneratedPositions(mappingA, mappingB, onlyCompareGenerated) {\n var cmp;\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n };\n exports.compareByGeneratedPositions = compareByGeneratedPositions;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/array-set', ['require', 'exports', 'module' , 'source-map/util'], function(require, exports, module) {\n\n var util = require('./util');\n\n /**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\n function ArraySet() {\n this._array = [];\n this._set = {};\n }\n\n /**\n * Static method for creating ArraySet instances from an existing array.\n */\n ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n };\n\n /**\n * Add the given string to this set.\n *\n * @param String aStr\n */\n ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var isDuplicate = this.has(aStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[util.toSetString(aStr)] = idx;\n }\n };\n\n /**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\n ArraySet.prototype.has = function ArraySet_has(aStr) {\n return Object.prototype.hasOwnProperty.call(this._set,\n util.toSetString(aStr));\n };\n\n /**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\n ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (this.has(aStr)) {\n return this._set[util.toSetString(aStr)];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n };\n\n /**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\n ArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n };\n\n /**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\n ArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n };\n\n exports.ArraySet = ArraySet;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-map-consumer', ['require', 'exports', 'module' , 'source-map/util', 'source-map/binary-search', 'source-map/array-set', 'source-map/base64-vlq'], function(require, exports, module) {\n\n var util = require('./util');\n var binarySearch = require('./binary-search');\n var ArraySet = require('./array-set').ArraySet;\n var base64VLQ = require('./base64-vlq');\n\n /**\n * A SourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\n function SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names, true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n }\n\n /**\n * Create a SourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns SourceMapConsumer\n */\n SourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(SourceMapConsumer.prototype);\n\n smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n smc.__generatedMappings = aSourceMap._mappings.slice()\n .sort(util.compareByGeneratedPositions);\n smc.__originalMappings = aSourceMap._mappings.slice()\n .sort(util.compareByOriginalPositions);\n\n return smc;\n };\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n SourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(SourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n });\n\n // `__generatedMappings` and `__originalMappings` are arrays that hold the\n // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n // are lazily instantiated, accessed via the `_generatedMappings` and\n // `_originalMappings` getters respectively, and we only parse the mappings\n // and create these arrays once queried for a source location. We jump through\n // these hoops because there can be many thousands of mappings, and parsing\n // them is expensive, so we only want to do it if we must.\n //\n // Each object in the arrays is of the form:\n //\n // {\n // generatedLine: The line number in the generated code,\n // generatedColumn: The column number in the generated code,\n // source: The path to the original source file that generated this\n // chunk of code,\n // originalLine: The line number in the original source that\n // corresponds to this chunk of generated code,\n // originalColumn: The column number in the original source that\n // corresponds to this chunk of generated code,\n // name: The name of the original symbol which generated this chunk of\n // code.\n // }\n //\n // All properties except for `generatedLine` and `generatedColumn` can be\n // `null`.\n //\n // `_generatedMappings` is ordered by the generated positions.\n //\n // `_originalMappings` is ordered by the original positions.\n\n SourceMapConsumer.prototype.__generatedMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n });\n\n SourceMapConsumer.prototype.__originalMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n });\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n SourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var mappingSeparator = /^[,;]/;\n var str = aStr;\n var mapping;\n var temp;\n\n while (str.length > 0) {\n if (str.charAt(0) === ';') {\n generatedLine++;\n str = str.slice(1);\n previousGeneratedColumn = 0;\n }\n else if (str.charAt(0) === ',') {\n str = str.slice(1);\n }\n else {\n mapping = {};\n mapping.generatedLine = generatedLine;\n\n // Generated column.\n temp = base64VLQ.decode(str);\n mapping.generatedColumn = previousGeneratedColumn + temp.value;\n previousGeneratedColumn = mapping.generatedColumn;\n str = temp.rest;\n\n if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {\n // Original source.\n temp = base64VLQ.decode(str);\n mapping.source = this._sources.at(previousSource + temp.value);\n previousSource += temp.value;\n str = temp.rest;\n if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {\n throw new Error('Found a source, but no line and column');\n }\n\n // Original line.\n temp = base64VLQ.decode(str);\n mapping.originalLine = previousOriginalLine + temp.value;\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n str = temp.rest;\n if (str.length === 0 || mappingSeparator.test(str.charAt(0))) {\n throw new Error('Found a source and line, but no column');\n }\n\n // Original column.\n temp = base64VLQ.decode(str);\n mapping.originalColumn = previousOriginalColumn + temp.value;\n previousOriginalColumn = mapping.originalColumn;\n str = temp.rest;\n\n if (str.length > 0 && !mappingSeparator.test(str.charAt(0))) {\n // Original name.\n temp = base64VLQ.decode(str);\n mapping.name = this._names.at(previousName + temp.value);\n previousName += temp.value;\n str = temp.rest;\n }\n }\n\n this.__generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n this.__originalMappings.push(mapping);\n }\n }\n }\n\n this.__originalMappings.sort(util.compareByOriginalPositions);\n };\n\n /**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\n SourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator);\n };\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n SourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var mapping = this._findMapping(needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositions);\n\n if (mapping) {\n var source = util.getArg(mapping, 'source', null);\n if (source && this.sourceRoot) {\n source = util.join(this.sourceRoot, source);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: util.getArg(mapping, 'name', null)\n };\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * availible.\n */\n SourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n SourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n if (this.sourceRoot) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n\n var mapping = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions);\n\n if (mapping) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null)\n };\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n SourceMapConsumer.GENERATED_ORDER = 1;\n SourceMapConsumer.ORIGINAL_ORDER = 2;\n\n /**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\n SourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source;\n if (source && sourceRoot) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name\n };\n }).forEach(aCallback, context);\n };\n\n exports.SourceMapConsumer = SourceMapConsumer;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/binary-search', ['require', 'exports', 'module' , ], function(require, exports, module) {\n\n /**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n */\n function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the next\n // closest element that is less than that element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element which is less than the one we are searching for, so we\n // return null.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return aHaystack[mid];\n }\n else if (cmp > 0) {\n // aHaystack[mid] is greater than our needle.\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare);\n }\n // We did not find an exact match, return the next closest one\n // (termination case 2).\n return aHaystack[mid];\n }\n else {\n // aHaystack[mid] is less than our needle.\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare);\n }\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (2) or (3) and return the appropriate thing.\n return aLow < 0\n ? null\n : aHaystack[aLow];\n }\n }\n\n /**\n * This is an implementation of binary search which will always try and return\n * the next lowest value checked if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n */\n exports.search = function search(aNeedle, aHaystack, aCompare) {\n return aHaystack.length > 0\n ? recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, aCompare)\n : null;\n };\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\ndefine('source-map/source-node', ['require', 'exports', 'module' , 'source-map/source-map-generator', 'source-map/util'], function(require, exports, module) {\n\n var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\n var util = require('./util');\n\n /**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\n function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine === undefined ? null : aLine;\n this.column = aColumn === undefined ? null : aColumn;\n this.source = aSource === undefined ? null : aSource;\n this.name = aName === undefined ? null : aName;\n if (aChunks != null) this.add(aChunks);\n }\n\n /**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n */\n SourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // The generated code\n // Processed fragments are removed from this array.\n var remainingLines = aGeneratedCode.split('\\n');\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping === null) {\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(remainingLines.shift() + \"\\n\");\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n } else {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n var code = \"\";\n // Associate full lines with \"lastMapping\"\n do {\n code += remainingLines.shift() + \"\\n\";\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n } while (lastGeneratedLine < mapping.generatedLine);\n // When we reached the correct line, we add code until we\n // reach the correct column too.\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n code += nextLine.substr(0, mapping.generatedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n // Create the SourceNode.\n addMappingWithCode(lastMapping, code);\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n }\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n // Associate the remaining code in the current line with \"lastMapping\"\n // and add the remaining lines without any mapping\n addMappingWithCode(lastMapping, remainingLines.join(\"\\n\"));\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content) {\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n mapping.source,\n code,\n mapping.name));\n }\n }\n };\n\n /**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk instanceof SourceNode || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk instanceof SourceNode || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk instanceof SourceNode) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n };\n\n /**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\n SourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n };\n\n /**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\n SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild instanceof SourceNode) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n };\n\n /**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\n SourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n /**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i] instanceof SourceNode) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n /**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\n SourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n };\n\n /**\n * Returns the string representation of this source node along with a source\n * map.\n */\n SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n chunk.split('').forEach(function (ch) {\n if (ch === '\\n') {\n generated.line++;\n generated.column = 0;\n } else {\n generated.column++;\n }\n });\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n };\n\n exports.SourceNode = SourceNode;\n\n});\n/* -*- Mode: js; js-indent-level: 2; -*- */\n///////////////////////////////////////////////////////////////////////////////\n\nthis.sourceMap = {\n SourceMapConsumer: require('source-map/source-map-consumer').SourceMapConsumer,\n SourceMapGenerator: require('source-map/source-map-generator').SourceMapGenerator,\n SourceNode: require('source-map/source-node').SourceNode\n};\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/SourceMap.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/source-map-url.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(){\nvar define=null;\n\n\n\n\nvoid (function(root,factory){\nif(typeof define === \"function\" && define.amd){\ndefine(factory);}else \nif(typeof exports === \"object\"){\nmodule.exports = factory();}else \n{\nroot.sourceMappingURL = factory();}})(\n\nthis,function(){\n\nvar innerRegex=/[#@] sourceMappingURL=([^\\s'\"]*)/;\n\nvar regex=RegExp(\n\"(?:\" + \n\"/\\\\*\" + \n\"(?:\\\\s*\\r?\\n(?://)?)?\" + \n\"(?:\" + innerRegex.source + \")\" + \n\"\\\\s*\" + \n\"\\\\*/\" + \n\"|\" + \n\"//(?:\" + innerRegex.source + \")\" + \n\")\" + \n\"\\\\s*$\");\n\n\nreturn {\n\nregex:regex,\n_innerRegex:innerRegex,\n\ngetFrom:function(code){\nvar match=code.match(regex);\nreturn match?match[1] || match[2] || \"\":null;},\n\n\nexistsIn:function(code){\nreturn regex.test(code);},\n\n\nremoveFrom:function(code){\nreturn code.replace(regex,\"\");},\n\n\ninsertBefore:function(code,string){\nvar match=code.match(regex);\nif(match){\nreturn code.slice(0,match.index) + string + code.slice(match.index);}else \n{\nreturn code + string;}}};});})();","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This is a third-party micro-library grabbed from:\n * https://github.com/lydell/source-map-url\n *\n * @nolint\n */\n/* eslint-disable */\n\n(function() {\n var define = null; // Hack to make it work with our packager\n\n// Copyright 2014 Simon Lydell\n// X11 (“MIT”) Licensed. (See LICENSE.)\n\nvoid (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(factory)\n } else if (typeof exports === \"object\") {\n module.exports = factory()\n } else {\n root.sourceMappingURL = factory()\n }\n}(this, function() {\n\n var innerRegex = /[#@] sourceMappingURL=([^\\s'\"]*)/\n\n var regex = RegExp(\n \"(?:\" +\n \"/\\\\*\" +\n \"(?:\\\\s*\\r?\\n(?://)?)?\" +\n \"(?:\" + innerRegex.source + \")\" +\n \"\\\\s*\" +\n \"\\\\*/\" +\n \"|\" +\n \"//(?:\" + innerRegex.source + \")\" +\n \")\" +\n \"\\\\s*$\"\n )\n\n return {\n\n regex: regex,\n _innerRegex: innerRegex,\n\n getFrom: function(code) {\n var match = code.match(regex)\n return (match ? match[1] || match[2] || \"\" : null)\n },\n\n existsIn: function(code) {\n return regex.test(code)\n },\n\n removeFrom: function(code) {\n return code.replace(regex, \"\")\n },\n\n insertBefore: function(code, string) {\n var match = code.match(regex)\n if (match) {\n return code.slice(0, match.index) + string + code.slice(match.index)\n } else {\n return code + string\n }\n }\n }\n\n}));\n\n/** End of the third-party code */\n\n})();\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/source-map-url.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/parseErrorStack.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar stacktraceParser=require('stacktrace-parser');\n\nfunction resolveSourceMaps(sourceMapInstance,stackFrame){\ntry{\nvar orig=sourceMapInstance.originalPositionFor({\nline:stackFrame.lineNumber,\ncolumn:stackFrame.column});\n\nif(orig){\nstackFrame.file = orig.source;\nstackFrame.lineNumber = orig.line;\nstackFrame.column = orig.column;}}\n\ncatch(innerEx) {}}\n\n\n\nfunction parseErrorStack(e,sourceMapInstance){\nif(!e || !e.stack){\nreturn [];}\n\n\nvar stack=stacktraceParser.parse(e.stack);\n\nvar framesToPop=e.framesToPop || 0;\nwhile(framesToPop--) {\nstack.shift();}\n\n\nif(sourceMapInstance){\nstack.forEach(resolveSourceMaps.bind(null,sourceMapInstance));}\n\n\nreturn stack;}\n\n\nmodule.exports = parseErrorStack;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule parseErrorStack\n */\n'use strict';\n\nvar stacktraceParser = require('stacktrace-parser');\n\nfunction resolveSourceMaps(sourceMapInstance, stackFrame) {\n try {\n var orig = sourceMapInstance.originalPositionFor({\n line: stackFrame.lineNumber,\n column: stackFrame.column,\n });\n if (orig) {\n stackFrame.file = orig.source;\n stackFrame.lineNumber = orig.line;\n stackFrame.column = orig.column;\n }\n } catch (innerEx) {\n }\n}\n\nfunction parseErrorStack(e, sourceMapInstance) {\n if (!e || !e.stack) {\n return [];\n }\n\n var stack = stacktraceParser.parse(e.stack);\n\n var framesToPop = e.framesToPop || 0;\n while (framesToPop--) {\n stack.shift();\n }\n\n if (sourceMapInstance) {\n stack.forEach(resolveSourceMaps.bind(null, sourceMapInstance));\n }\n\n return stack;\n}\n\nmodule.exports = parseErrorStack;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/JavaScriptAppEngine/Initialization/parseErrorStack.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/index.js":{"data":{"code":"module.exports = require('./lib/stacktrace-parser.js');","sourceCode":"module.exports = require('./lib/stacktrace-parser.js');\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/index.js"},"mtime":1439316051000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/lib/stacktrace-parser.js":{"data":{"code":"var \n\nUNKNOWN_FUNCTION='<unknown>';\n\nvar StackTraceParser={\n\n\n\n\nparse:function(stackString){\nvar chrome=/^\\s*at (?:(?:(?:Anonymous function)?|((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?)) )?\\(?((?:file|http|https):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\ngecko=/^(?:\\s*(\\S*)(?:\\((.*?)\\))?@)?((?:\\w).*?):(\\d+)(?::(\\d+))?\\s*$/i,\nnode=/^\\s*at (?:((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\nlines=stackString.split('\\n'),\nstack=[],\nparts,\nelement;\n\nfor(var i=0,j=lines.length;i < j;++i) {\nif(parts = gecko.exec(lines[i])){\nelement = {\n'file':parts[3],\n'methodName':parts[1] || UNKNOWN_FUNCTION,\n'lineNumber':+parts[4],\n'column':parts[5]?+parts[5]:null};}else \n\nif(parts = chrome.exec(lines[i])){\nelement = {\n'file':parts[2],\n'methodName':parts[1] || UNKNOWN_FUNCTION,\n'lineNumber':+parts[3],\n'column':parts[4]?+parts[4]:null};}else \n\nif(parts = node.exec(lines[i])){\nelement = {\n'file':parts[2],\n'methodName':parts[1] || UNKNOWN_FUNCTION,\n'lineNumber':+parts[3],\n'column':parts[4]?+parts[4]:null};}else \n\n{\ncontinue;}\n\n\nstack.push(element);}\n\n\nreturn stack;}};\n\n\n\n\nmodule.exports = StackTraceParser;","sourceCode":"\n\nvar UNKNOWN_FUNCTION = '<unknown>';\n\nvar StackTraceParser = {\n /**\n * This parses the different stack traces and puts them into one format\n * This borrows heavily from TraceKit (https://github.com/occ/TraceKit)\n */\n parse: function(stackString) {\n var chrome = /^\\s*at (?:(?:(?:Anonymous function)?|((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?)) )?\\(?((?:file|http|https):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n gecko = /^(?:\\s*(\\S*)(?:\\((.*?)\\))?@)?((?:\\w).*?):(\\d+)(?::(\\d+))?\\s*$/i,\n node = /^\\s*at (?:((?:\\[object object\\])?\\S+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,\n lines = stackString.split('\\n'),\n stack = [],\n parts,\n element;\n\n for (var i = 0, j = lines.length; i < j; ++i) {\n if ((parts = gecko.exec(lines[i]))) {\n element = {\n 'file': parts[3],\n 'methodName': parts[1] || UNKNOWN_FUNCTION,\n 'lineNumber': +parts[4],\n 'column': parts[5] ? +parts[5] : null\n };\n } else if ((parts = chrome.exec(lines[i]))) {\n element = {\n 'file': parts[2],\n 'methodName': parts[1] || UNKNOWN_FUNCTION,\n 'lineNumber': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else if ((parts = node.exec(lines[i]))) {\n element = {\n 'file': parts[2],\n 'methodName': parts[1] || UNKNOWN_FUNCTION,\n 'lineNumber': +parts[3],\n 'column': parts[4] ? +parts[4] : null\n };\n } else {\n continue;\n }\n\n stack.push(element);\n }\n\n return stack;\n }\n};\n\n\nmodule.exports = StackTraceParser;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/stacktrace-parser/lib/stacktrace-parser.js"},"mtime":1439316051000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Platform.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Platform={\nOS:'ios'};\n\n\nmodule.exports = Platform;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Platform\n * @flow\n */\n\n'use strict';\n\nvar Platform = {\n OS: 'ios',\n};\n\nmodule.exports = Platform;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Platform.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequest.ios.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar FormData=require('FormData');\nvar RCTNetworking=require('NativeModules').Networking;\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\n\nvar XMLHttpRequestBase=require('XMLHttpRequestBase');var \n\nXMLHttpRequest=(function(_XMLHttpRequestBase){_inherits(XMLHttpRequest,_XMLHttpRequestBase);\n\n\n\n\nfunction XMLHttpRequest(){_classCallCheck(this,XMLHttpRequest);\n_get(Object.getPrototypeOf(XMLHttpRequest.prototype),'constructor',this).call(this);\nthis._requestId = null;\nthis._subscriptions = [];}_createClass(XMLHttpRequest,[{key:'_didCreateRequest',value:\n\n\nfunction _didCreateRequest(requestId){var _this=this;\nthis._requestId = requestId;\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didReceiveNetworkResponse',\nfunction(args){return _this._didReceiveResponse.call(_this,args[0],args[1],args[2]);}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didReceiveNetworkData',\nfunction(args){return _this._didReceiveData.call(_this,args[0],args[1]);}));\n\nthis._subscriptions.push(RCTDeviceEventEmitter.addListener(\n'didCompleteNetworkResponse',\nfunction(args){return _this._didCompleteResponse.call(_this,args[0],args[1]);}));}},{key:'_didReceiveResponse',value:\n\n\n\nfunction _didReceiveResponse(requestId,status,responseHeaders){\nif(requestId === this._requestId){\nthis.status = status;\nthis.setResponseHeaders(responseHeaders);\nthis.setReadyState(this.HEADERS_RECEIVED);}}},{key:'_didReceiveData',value:\n\n\n\nfunction _didReceiveData(requestId,responseText){\nif(requestId === this._requestId){\nif(!this.responseText){\nthis.responseText = responseText;}else \n{\nthis.responseText += responseText;}\n\nthis.setReadyState(this.LOADING);}}},{key:'_didCompleteResponse',value:\n\n\n\nfunction _didCompleteResponse(requestId,error){\nif(requestId === this._requestId){\nif(error){\nthis.responseText = error;}\n\nthis._clearSubscriptions();\nthis._requestId = null;\nthis.setReadyState(this.DONE);}}},{key:'_clearSubscriptions',value:\n\n\n\nfunction _clearSubscriptions(){\nfor(var i=0;i < this._subscriptions.length;i++) {\nvar sub=this._subscriptions[i];\nsub.remove();}\n\nthis._subscriptions = [];}},{key:'sendImpl',value:\n\n\nfunction sendImpl(method,url,headers,data){\nif(typeof data === 'string'){\ndata = {string:data};}\n\nif(data instanceof FormData){\ndata = {formData:data.getParts()};}\n\nRCTNetworking.sendRequest(\n{\nmethod:method,\nurl:url,\ndata:data,\nheaders:headers,\nincrementalUpdates:this.onreadystatechange?true:false},\n\nthis._didCreateRequest.bind(this));}},{key:'abortImpl',value:\n\n\n\nfunction abortImpl(){\nif(this._requestId){\nRCTNetworking.cancelRequest(this._requestId);\nthis._clearSubscriptions();\nthis._requestId = null;}}}]);return XMLHttpRequest;})(XMLHttpRequestBase);\n\n\n\n\nmodule.exports = XMLHttpRequest;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule XMLHttpRequest\n * @flow\n */\n'use strict';\n\nvar FormData = require('FormData');\nvar RCTNetworking = require('NativeModules').Networking;\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nvar XMLHttpRequestBase = require('XMLHttpRequestBase');\n\nclass XMLHttpRequest extends XMLHttpRequestBase {\n\n _requestId: ?number;\n _subscriptions: [any];\n\n constructor() {\n super();\n this._requestId = null;\n this._subscriptions = [];\n }\n\n _didCreateRequest(requestId: number): void {\n this._requestId = requestId;\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didReceiveNetworkResponse',\n (args) => this._didReceiveResponse.call(this, args[0], args[1], args[2])\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didReceiveNetworkData',\n (args) => this._didReceiveData.call(this, args[0], args[1])\n ));\n this._subscriptions.push(RCTDeviceEventEmitter.addListener(\n 'didCompleteNetworkResponse',\n (args) => this._didCompleteResponse.call(this, args[0], args[1])\n ));\n }\n\n _didReceiveResponse(requestId: number, status: number, responseHeaders: ?Object): void {\n if (requestId === this._requestId) {\n this.status = status;\n this.setResponseHeaders(responseHeaders);\n this.setReadyState(this.HEADERS_RECEIVED);\n }\n }\n\n _didReceiveData(requestId: number, responseText: string): void {\n if (requestId === this._requestId) {\n if (!this.responseText) {\n this.responseText = responseText;\n } else {\n this.responseText += responseText;\n }\n this.setReadyState(this.LOADING);\n }\n }\n\n _didCompleteResponse(requestId: number, error: string): void {\n if (requestId === this._requestId) {\n if (error) {\n this.responseText = error;\n }\n this._clearSubscriptions();\n this._requestId = null;\n this.setReadyState(this.DONE);\n }\n }\n\n _clearSubscriptions(): void {\n for (var i = 0; i < this._subscriptions.length; i++) {\n var sub = this._subscriptions[i];\n sub.remove();\n }\n this._subscriptions = [];\n }\n\n sendImpl(method: ?string, url: ?string, headers: Object, data: any): void {\n if (typeof data === 'string') {\n data = {string: data};\n }\n if (data instanceof FormData) {\n data = {formData: data.getParts()};\n }\n RCTNetworking.sendRequest(\n {\n method,\n url,\n data,\n headers,\n incrementalUpdates: this.onreadystatechange ? true : false,\n },\n this._didCreateRequest.bind(this)\n );\n }\n\n abortImpl(): void {\n if (this._requestId) {\n RCTNetworking.cancelRequest(this._requestId);\n this._clearSubscriptions();\n this._requestId = null;\n }\n }\n}\n\nmodule.exports = XMLHttpRequest;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequest.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/FormData.js":{"data":{"code":"'use strict';var _slicedToArray=(function(){function sliceIterator(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n = (_s = _i.next()).done);_n = true) {_arr.push(_s.value);if(i && _arr.length === i)break;}}catch(err) {_d = true;_e = err;}finally {try{if(!_n && _i['return'])_i['return']();}finally {if(_d)throw _e;}}return _arr;}return function(arr,i){if(Array.isArray(arr)){return arr;}else if(Symbol.iterator in Object(arr)){return sliceIterator(arr,i);}else {throw new TypeError('Invalid attempt to destructure non-iterable instance');}};})();var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFormData=(function(){\n\n\n\nfunction FormData(){_classCallCheck(this,FormData);\nthis._parts = [];\nthis._partsByKey = {};}_createClass(FormData,[{key:'append',value:\n\n\nfunction append(key,value){\nvar parts=this._partsByKey[key];\nif(parts){\n\n\n\n\nparts[1] = value;\nreturn;}\n\nparts = [key,value];\nthis._parts.push(parts);\nthis._partsByKey[key] = parts;}},{key:'getParts',value:\n\n\nfunction getParts(){\nreturn this._parts.map(function(_ref){var _ref2=_slicedToArray(_ref,2);var name=_ref2[0];var value=_ref2[1];\nif(typeof value === 'string'){\nreturn {\nstring:value,\nheaders:{\n'content-disposition':'form-data; name=\"' + name + '\"'}};}\n\n\n\nvar contentDisposition='form-data; name=\"' + name + '\"';\nif(typeof value.name === 'string'){\ncontentDisposition += '; filename=\"' + value.name + '\"';}\n\nreturn _extends({},\nvalue,{\nheaders:{'content-disposition':contentDisposition}});});}}]);return FormData;})();\n\n\n\n\n\nmodule.exports = FormData;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FormData\n * @flow\n */\n'use strict';\n\ntype FormDataValue = any;\ntype FormDataPart = [string, FormDataValue];\n\n/**\n * Polyfill for XMLHttpRequest2 FormData API, allowing multipart POST requests\n * with mixed data (string, native files) to be submitted via XMLHttpRequest.\n */\nclass FormData {\n _parts: Array<FormDataPart>;\n _partsByKey: {[key: string]: FormDataPart};\n\n constructor() {\n this._parts = [];\n this._partsByKey = {};\n }\n\n append(key: string, value: FormDataValue) {\n var parts = this._partsByKey[key];\n if (parts) {\n // It's a bit unclear what the behaviour should be in this case.\n // The XMLHttpRequest spec doesn't specify it, while MDN says that\n // the any new values should appended to existing values. We're not\n // doing that for now -- it's tedious and doesn't seem worth the effort.\n parts[1] = value;\n return;\n }\n parts = [key, value];\n this._parts.push(parts);\n this._partsByKey[key] = parts;\n }\n\n getParts(): Array<FormDataValue> {\n return this._parts.map(([name, value]) => {\n if (typeof value === 'string') {\n return {\n string: value,\n headers: {\n 'content-disposition': 'form-data; name=\"' + name + '\"',\n },\n };\n }\n var contentDisposition = 'form-data; name=\"' + name + '\"';\n if (typeof value.name === 'string') {\n contentDisposition += '; filename=\"' + value.name + '\"';\n }\n return {\n ...value,\n headers: {'content-disposition': contentDisposition},\n };\n });\n }\n}\n\nmodule.exports = FormData;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/FormData.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequestBase.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nXMLHttpRequestBase=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction XMLHttpRequestBase(){_classCallCheck(this,XMLHttpRequestBase);\nthis.UNSENT = 0;\nthis.OPENED = 1;\nthis.HEADERS_RECEIVED = 2;\nthis.LOADING = 3;\nthis.DONE = 4;\n\nthis.onreadystatechange = null;\nthis.onload = null;\nthis.upload = undefined;\n\nthis._reset();\nthis._method = null;\nthis._url = null;\nthis._aborted = false;}_createClass(XMLHttpRequestBase,[{key:'_reset',value:\n\n\nfunction _reset(){\nthis.readyState = this.UNSENT;\nthis.responseHeaders = undefined;\nthis.responseText = '';\nthis.status = 0;\n\nthis._headers = {};\nthis._sent = false;\nthis._lowerCaseResponseHeaders = {};}},{key:'getAllResponseHeaders',value:\n\n\nfunction getAllResponseHeaders(){\nif(!this.responseHeaders){\n\nreturn null;}\n\nvar headers=this.responseHeaders || {};\nreturn Object.keys(headers).map(function(headerName){\nreturn headerName + ': ' + headers[headerName];}).\njoin('\\n');}},{key:'getResponseHeader',value:\n\n\nfunction getResponseHeader(header){\nvar value=this._lowerCaseResponseHeaders[header.toLowerCase()];\nreturn value !== undefined?value:null;}},{key:'setRequestHeader',value:\n\n\nfunction setRequestHeader(header,value){\nif(this.readyState !== this.OPENED){\nthrow new Error('Request has not been opened');}\n\nthis._headers[header.toLowerCase()] = value;}},{key:'open',value:\n\n\nfunction open(method,url,async){\n\nif(this.readyState !== this.UNSENT){\nthrow new Error('Cannot open, already sending');}\n\nif(async !== undefined && !async){\n\nthrow new Error('Synchronous http requests are not supported');}\n\nthis._reset();\nthis._method = method;\nthis._url = url;\nthis._aborted = false;\nthis.setReadyState(this.OPENED);}},{key:'sendImpl',value:\n\n\nfunction sendImpl(method,url,headers,data){\nthrow new Error('Subclass must define sendImpl method');}},{key:'abortImpl',value:\n\n\nfunction abortImpl(){\nthrow new Error('Subclass must define abortImpl method');}},{key:'send',value:\n\n\nfunction send(data){\nif(this.readyState !== this.OPENED){\nthrow new Error('Request has not been opened');}\n\nif(this._sent){\nthrow new Error('Request has already been sent');}\n\nthis._sent = true;\nthis.sendImpl(this._method,this._url,this._headers,data);}},{key:'abort',value:\n\n\nfunction abort(){\nthis._aborted = true;\nthis.abortImpl();\n\n\nif(!(this.readyState === this.UNSENT || \nthis.readyState === this.OPENED && !this._sent || \nthis.readyState === this.DONE)){\nthis._reset();\nthis.setReadyState(this.DONE);}\n\n\nthis._reset();}},{key:'callback',value:\n\n\nfunction callback(status,responseHeaders,responseText){\nif(this._aborted){\nreturn;}\n\nthis.status = status;\nthis.setResponseHeaders(responseHeaders || {});\nthis.responseText = responseText;\nthis.setReadyState(this.DONE);}},{key:'setResponseHeaders',value:\n\n\nfunction setResponseHeaders(responseHeaders){\nthis.responseHeaders = responseHeaders || null;\nvar headers=responseHeaders || {};\nthis._lowerCaseResponseHeaders = \nObject.keys(headers).reduce(function(lcaseHeaders,headerName){\nlcaseHeaders[headerName.toLowerCase()] = headers[headerName];\nreturn lcaseHeaders;},\n{});}},{key:'setReadyState',value:\n\n\nfunction setReadyState(newState){\nthis.readyState = newState;\n\nvar onreadystatechange=this.onreadystatechange;\nif(onreadystatechange){\n\n\nonreadystatechange(null);}\n\nif(newState === this.DONE && !this._aborted){\nthis._sendLoad();}}},{key:'_sendLoad',value:\n\n\n\nfunction _sendLoad(){\n\nvar onload=this.onload;\nif(onload){\n\n\nonload(null);}}}]);return XMLHttpRequestBase;})();\n\n\n\n\nmodule.exports = XMLHttpRequestBase;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule XMLHttpRequestBase\n * @flow\n */\n'use strict';\n\n/**\n * Shared base for platform-specific XMLHttpRequest implementations.\n */\nclass XMLHttpRequestBase {\n\n UNSENT: number;\n OPENED: number;\n HEADERS_RECEIVED: number;\n LOADING: number;\n DONE: number;\n\n onreadystatechange: ?Function;\n onload: ?Function;\n upload: any;\n readyState: number;\n responseHeaders: ?Object;\n responseText: ?string;\n status: number;\n\n _method: ?string;\n _url: ?string;\n _headers: Object;\n _sent: boolean;\n _aborted: boolean;\n _lowerCaseResponseHeaders: Object;\n\n constructor() {\n this.UNSENT = 0;\n this.OPENED = 1;\n this.HEADERS_RECEIVED = 2;\n this.LOADING = 3;\n this.DONE = 4;\n\n this.onreadystatechange = null;\n this.onload = null;\n this.upload = undefined; /* Upload not supported yet */\n\n this._reset();\n this._method = null;\n this._url = null;\n this._aborted = false;\n }\n\n _reset() {\n this.readyState = this.UNSENT;\n this.responseHeaders = undefined;\n this.responseText = '';\n this.status = 0;\n\n this._headers = {};\n this._sent = false;\n this._lowerCaseResponseHeaders = {};\n }\n\n getAllResponseHeaders(): ?string {\n if (!this.responseHeaders) {\n // according to the spec, return null if no response has been received\n return null;\n }\n var headers = this.responseHeaders || {};\n return Object.keys(headers).map((headerName) => {\n return headerName + ': ' + headers[headerName];\n }).join('\\n');\n }\n\n getResponseHeader(header: string): ?string {\n var value = this._lowerCaseResponseHeaders[header.toLowerCase()];\n return value !== undefined ? value : null;\n }\n\n setRequestHeader(header: string, value: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n this._headers[header.toLowerCase()] = value;\n }\n\n open(method: string, url: string, async: ?boolean): void {\n /* Other optional arguments are not supported yet */\n if (this.readyState !== this.UNSENT) {\n throw new Error('Cannot open, already sending');\n }\n if (async !== undefined && !async) {\n // async is default\n throw new Error('Synchronous http requests are not supported');\n }\n this._reset();\n this._method = method;\n this._url = url;\n this._aborted = false;\n this.setReadyState(this.OPENED);\n }\n\n sendImpl(method: ?string, url: ?string, headers: Object, data: any): void {\n throw new Error('Subclass must define sendImpl method');\n }\n\n abortImpl(): void {\n throw new Error('Subclass must define abortImpl method');\n }\n\n send(data: any): void {\n if (this.readyState !== this.OPENED) {\n throw new Error('Request has not been opened');\n }\n if (this._sent) {\n throw new Error('Request has already been sent');\n }\n this._sent = true;\n this.sendImpl(this._method, this._url, this._headers, data);\n }\n\n abort(): void {\n this._aborted = true;\n this.abortImpl();\n // only call onreadystatechange if there is something to abort,\n // below logic is per spec\n if (!(this.readyState === this.UNSENT ||\n (this.readyState === this.OPENED && !this._sent) ||\n this.readyState === this.DONE)) {\n this._reset();\n this.setReadyState(this.DONE);\n }\n // Reset again after, in case modified in handler\n this._reset();\n }\n\n callback(status: number, responseHeaders: ?Object, responseText: string): void {\n if (this._aborted) {\n return;\n }\n this.status = status;\n this.setResponseHeaders(responseHeaders || {});\n this.responseText = responseText;\n this.setReadyState(this.DONE);\n }\n\n setResponseHeaders(responseHeaders: ?Object): void {\n this.responseHeaders = responseHeaders || null;\n var headers = responseHeaders || {};\n this._lowerCaseResponseHeaders =\n Object.keys(headers).reduce((lcaseHeaders, headerName) => {\n lcaseHeaders[headerName.toLowerCase()] = headers[headerName];\n return lcaseHeaders;\n }, {});\n }\n\n setReadyState(newState: number): void {\n this.readyState = newState;\n // TODO: workaround flow bug with nullable function checks\n var onreadystatechange = this.onreadystatechange;\n if (onreadystatechange) {\n // We should send an event to handler, but since we don't process that\n // event anywhere, let's leave it empty\n onreadystatechange(null);\n }\n if (newState === this.DONE && !this._aborted) {\n this._sendLoad();\n }\n }\n\n _sendLoad(): void {\n // TODO: workaround flow bug with nullable function checks\n var onload = this.onload;\n if (onload) {\n // We should send an event to handler, but since we don't process that\n // event anywhere, let's leave it empty\n onload(null);\n }\n }\n}\n\nmodule.exports = XMLHttpRequestBase;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/XMLHttpRequestBase.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Fetch/fetch.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar self={};\n\n/**\n * Copyright (c) 2014 GitHub, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n */\n(function(){\n'use strict';\n\nif(self.fetch){\nreturn;}\n\n\nfunction normalizeName(name){\nif(typeof name !== 'string'){\nname = name.toString();}\n\nif(/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)){\nthrow new TypeError('Invalid character in header field name');}\n\nreturn name.toLowerCase();}\n\n\nfunction normalizeValue(value){\nif(typeof value !== 'string'){\nvalue = value.toString();}\n\nreturn value;}\n\n\nfunction Headers(headers){\nthis.map = {};\n\nvar self=this;\nif(headers instanceof Headers){\nheaders.forEach(function(name,values){\nvalues.forEach(function(value){\nself.append(name,value);});});}else \n\n\n\nif(headers){\nObject.getOwnPropertyNames(headers).forEach(function(name){\nself.append(name,headers[name]);});}}\n\n\n\n\nHeaders.prototype.append = function(name,value){\nname = normalizeName(name);\nvalue = normalizeValue(value);\nvar list=this.map[name];\nif(!list){\nlist = [];\nthis.map[name] = list;}\n\nlist.push(value);};\n\n\nHeaders.prototype['delete'] = function(name){\ndelete this.map[normalizeName(name)];};\n\n\nHeaders.prototype.get = function(name){\nvar values=this.map[normalizeName(name)];\nreturn values?values[0]:null;};\n\n\nHeaders.prototype.getAll = function(name){\nreturn this.map[normalizeName(name)] || [];};\n\n\nHeaders.prototype.has = function(name){\nreturn this.map.hasOwnProperty(normalizeName(name));};\n\n\nHeaders.prototype.set = function(name,value){\nthis.map[normalizeName(name)] = [normalizeValue(value)];};\n\n\n\nHeaders.prototype.forEach = function(callback){\nvar self=this;\nObject.getOwnPropertyNames(this.map).forEach(function(name){\ncallback(name,self.map[name]);});};\n\n\n\nfunction consumed(body){\nif(body.bodyUsed){\nreturn Promise.reject(new TypeError('Already read'));}\n\nbody.bodyUsed = true;}\n\n\nfunction fileReaderReady(reader){\nreturn new Promise(function(resolve,reject){\nreader.onload = function(){\nresolve(reader.result);};\n\nreader.onerror = function(){\nreject(reader.error);};});}\n\n\n\n\nfunction readBlobAsArrayBuffer(blob){\nvar reader=new FileReader();\nreader.readAsArrayBuffer(blob);\nreturn fileReaderReady(reader);}\n\n\nfunction readBlobAsText(blob){\nvar reader=new FileReader();\nreader.readAsText(blob);\nreturn fileReaderReady(reader);}\n\n\nvar support={\nblob:'FileReader' in self && 'Blob' in self && (function(){\ntry{\nnew Blob();\nreturn true;}\ncatch(e) {\nreturn false;}})(),\n\n\nformData:'FormData' in self};\n\n\nfunction Body(){\nthis.bodyUsed = false;\n\n\nthis._initBody = function(body){\nthis._bodyInit = body;\nif(typeof body === 'string'){\nthis._bodyText = body;}else \nif(support.blob && Blob.prototype.isPrototypeOf(body)){\nthis._bodyBlob = body;}else \nif(support.formData && FormData.prototype.isPrototypeOf(body)){\nthis._bodyFormData = body;}else \nif(!body){\nthis._bodyText = '';}else \n{\nthrow new Error('unsupported BodyInit type');}};\n\n\n\nif(support.blob){\nthis.blob = function(){\nvar rejected=consumed(this);\nif(rejected){\nreturn rejected;}\n\n\nif(this._bodyBlob){\nreturn Promise.resolve(this._bodyBlob);}else \nif(this._bodyFormData){\nthrow new Error('could not read FormData body as blob');}else \n{\nreturn Promise.resolve(new Blob([this._bodyText]));}};\n\n\n\nthis.arrayBuffer = function(){\nreturn this.blob().then(readBlobAsArrayBuffer);};\n\n\nthis.text = function(){\nvar rejected=consumed(this);\nif(rejected){\nreturn rejected;}\n\n\nif(this._bodyBlob){\nreturn readBlobAsText(this._bodyBlob);}else \nif(this._bodyFormData){\nthrow new Error('could not read FormData body as text');}else \n{\nreturn Promise.resolve(this._bodyText);}};}else \n\n\n{\nthis.text = function(){\nvar rejected=consumed(this);\nreturn rejected?rejected:Promise.resolve(this._bodyText);};}\n\n\n\nif(support.formData){\nthis.formData = function(){\nreturn this.text().then(decode);};}\n\n\n\nthis.json = function(){\nreturn this.text().then(JSON.parse);};\n\n\nreturn this;}\n\n\n\nvar methods=['DELETE','GET','HEAD','OPTIONS','POST','PUT'];\n\nfunction normalizeMethod(method){\nvar upcased=method.toUpperCase();\nreturn methods.indexOf(upcased) > -1?upcased:method;}\n\n\nfunction Request(url,options){\noptions = options || {};\nthis.url = url;\n\nthis.credentials = options.credentials || 'omit';\nthis.headers = new Headers(options.headers);\nthis.method = normalizeMethod(options.method || 'GET');\nthis.mode = options.mode || null;\nthis.referrer = null;\n\nif((this.method === 'GET' || this.method === 'HEAD') && options.body){\nthrow new TypeError('Body not allowed for GET or HEAD requests');}\n\nthis._initBody(options.body);}\n\n\nfunction decode(body){\nvar form=new FormData();\nbody.trim().split('&').forEach(function(bytes){\nif(bytes){\nvar split=bytes.split('=');\nvar name=split.shift().replace(/\\+/g,' ');\nvar value=split.join('=').replace(/\\+/g,' ');\nform.append(decodeURIComponent(name),decodeURIComponent(value));}});\n\n\nreturn form;}\n\n\nfunction headers(xhr){\nvar head=new Headers();\nvar pairs=xhr.getAllResponseHeaders().trim().split('\\n');\npairs.forEach(function(header){\nvar split=header.trim().split(':');\nvar key=split.shift().trim();\nvar value=split.join(':').trim();\nhead.append(key,value);});\n\nreturn head;}\n\n\nBody.call(Request.prototype);\n\nfunction Response(bodyInit,options){\nif(!options){\noptions = {};}\n\n\nthis._initBody(bodyInit);\nthis.type = 'default';\nthis.url = null;\nthis.status = options.status;\nthis.ok = this.status >= 200 && this.status < 300;\nthis.statusText = options.statusText;\nthis.headers = options.headers instanceof Headers?options.headers:new Headers(options.headers);\nthis.url = options.url || '';}\n\n\nBody.call(Response.prototype);\n\nself.Headers = Headers;\nself.Request = Request;\nself.Response = Response;\n\nself.fetch = function(input,init){\n\nvar request;\nif(Request.prototype.isPrototypeOf(input) && !init){\nrequest = input;}else \n{\nrequest = new Request(input,init);}\n\n\nreturn new Promise(function(resolve,reject){\nvar xhr=new XMLHttpRequest();\nif(request.credentials === 'cors'){\nxhr.withCredentials = true;}\n\n\nfunction responseURL(){\nif('responseURL' in xhr){\nreturn xhr.responseURL;}\n\n\n\nif(/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())){\nreturn xhr.getResponseHeader('X-Request-URL');}\n\n\nreturn;}\n\n\nxhr.onload = function(){\nvar status=xhr.status === 1223?204:xhr.status;\nif(status < 100 || status > 599){\nreject(new TypeError('Network request failed'));\nreturn;}\n\nvar options={\nstatus:status,\nstatusText:xhr.statusText,\nheaders:headers(xhr),\nurl:responseURL()};\n\nvar body='response' in xhr?xhr.response:xhr.responseText;\nresolve(new Response(body,options));};\n\n\nxhr.onerror = function(){\nreject(new TypeError('Network request failed'));};\n\n\nxhr.open(request.method,request.url,true);\n\nif('responseType' in xhr && support.blob){\nxhr.responseType = 'blob';}\n\n\nrequest.headers.forEach(function(name,values){\nvalues.forEach(function(value){\nxhr.setRequestHeader(name,value);});});\n\n\n\nxhr.send(typeof request._bodyInit === 'undefined'?null:request._bodyInit);});};\n\n\nself.fetch.polyfill = true;})();\n\n\n\n\nmodule.exports = self;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * This is a third-party polyfill grabbed from:\n * https://github.com/github/fetch\n *\n * @providesModule fetch\n * @nolint\n */\n/* eslint-disable */\n'use strict';\n\nvar self = {};\n\n/**\n * Copyright (c) 2014 GitHub, Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @preserve-header\n */\n(function() {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = name.toString();\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = value.toString();\n }\n return value\n }\n\n function Headers(headers) {\n this.map = {}\n\n var self = this\n if (headers instanceof Headers) {\n headers.forEach(function(name, values) {\n values.forEach(function(value) {\n self.append(name, value)\n })\n })\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n self.append(name, headers[name])\n })\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n // Instead of iterable for now.\n Headers.prototype.forEach = function(callback) {\n var self = this\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n callback(name, self.map[name])\n })\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n reader.readAsArrayBuffer(blob)\n return fileReaderReady(reader)\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n reader.readAsText(blob)\n return fileReaderReady(reader)\n }\n\n var support = {\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self\n }\n\n function Body() {\n this.bodyUsed = false\n\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (!body) {\n this._bodyText = ''\n } else {\n throw new Error('unsupported BodyInit type')\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n } else {\n this.text = function() {\n var rejected = consumed(this)\n return rejected ? rejected : Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(url, options) {\n options = options || {}\n this.url = url\n\n this.credentials = options.credentials || 'omit'\n this.headers = new Headers(options.headers)\n this.method = normalizeMethod(options.method || 'GET')\n this.mode = options.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && options.body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(options.body)\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function headers(xhr) {\n var head = new Headers()\n var pairs = xhr.getAllResponseHeaders().trim().split('\\n')\n pairs.forEach(function(header) {\n var split = header.trim().split(':')\n var key = split.shift().trim()\n var value = split.join(':').trim()\n head.append(key, value)\n })\n return head\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this._initBody(bodyInit)\n this.type = 'default'\n this.url = null\n this.status = options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText\n this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers)\n this.url = options.url || ''\n }\n\n Body.call(Response.prototype)\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n // TODO: Request constructor should accept input, init\n var request\n if (Request.prototype.isPrototypeOf(input) && !init) {\n request = input\n } else {\n request = new Request(input, init)\n }\n\n return new Promise(function(resolve, reject) {\n var xhr = new XMLHttpRequest()\n if (request.credentials === 'cors') {\n xhr.withCredentials = true;\n }\n\n function responseURL() {\n if ('responseURL' in xhr) {\n return xhr.responseURL\n }\n\n // Avoid security warnings on getResponseHeader when not allowed by CORS\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL')\n }\n\n return;\n }\n\n xhr.onload = function() {\n var status = (xhr.status === 1223) ? 204 : xhr.status\n if (status < 100 || status > 599) {\n reject(new TypeError('Network request failed'))\n return\n }\n var options = {\n status: status,\n statusText: xhr.statusText,\n headers: headers(xhr),\n url: responseURL()\n }\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(name, values) {\n values.forEach(function(value) {\n xhr.setRequestHeader(name, value)\n })\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})();\n\n/** End of the third-party code */\n\nmodule.exports = self;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Fetch/fetch.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Geolocation/Geolocation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTLocationObserver=require('NativeModules').LocationObserver;\n\nvar invariant=require('invariant');\nvar logError=require('logError');\nvar warning=require('warning');\n\nvar subscriptions=[];\n\nvar updatesEnabled=false;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Geolocation={\n\n\n\n\n\ngetCurrentPosition:function(\ngeo_success,\ngeo_error,\ngeo_options)\n{\ninvariant(\ntypeof geo_success === 'function',\n'Must provide a valid geo_success callback.');\n\nRCTLocationObserver.getCurrentPosition(\ngeo_options || {},\ngeo_success,\ngeo_error || logError);},\n\n\n\n\n\n\n\nwatchPosition:function(success,error,options){\nif(!updatesEnabled){\nRCTLocationObserver.startObserving(options || {});\nupdatesEnabled = true;}\n\nvar watchID=subscriptions.length;\nsubscriptions.push([\nRCTDeviceEventEmitter.addListener(\n'geolocationDidChange',\nsuccess),\n\nerror?RCTDeviceEventEmitter.addListener(\n'geolocationError',\nerror):\nnull]);\n\nreturn watchID;},\n\n\nclearWatch:function(watchID){\nvar sub=subscriptions[watchID];\nif(!sub){\n\n\nreturn;}\n\n\nsub[0].remove();\n\nvar sub1=sub[1];sub1 && sub1.remove();\nsubscriptions[watchID] = undefined;\nvar noWatchers=true;\nfor(var ii=0;ii < subscriptions.length;ii++) {\nif(subscriptions[ii]){\nnoWatchers = false;}}\n\n\nif(noWatchers){\nGeolocation.stopObserving();}},\n\n\n\nstopObserving:function(){\nif(updatesEnabled){\nRCTLocationObserver.stopObserving();\nupdatesEnabled = false;\nfor(var ii=0;ii < subscriptions.length;ii++) {\nvar sub=subscriptions[ii];\nif(sub){\nwarning('Called stopObserving with existing subscriptions.');\nsub[0].remove();\n\nvar sub1=sub[1];sub1 && sub1.remove();}}\n\n\nsubscriptions = [];}}};\n\n\n\n\nmodule.exports = Geolocation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Geolocation\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTLocationObserver = require('NativeModules').LocationObserver;\n\nvar invariant = require('invariant');\nvar logError = require('logError');\nvar warning = require('warning');\n\nvar subscriptions = [];\n\nvar updatesEnabled = false;\n\ntype GeoOptions = {\n timeout: number;\n maximumAge: number;\n enableHighAccuracy: bool;\n}\n\n/**\n * You need to include the `NSLocationWhenInUseUsageDescription` key\n * in Info.plist to enable geolocation. Geolocation is enabled by default\n * when you create a project with `react-native init`.\n *\n * Geolocation follows the MDN specification:\n * https://developer.mozilla.org/en-US/docs/Web/API/Geolocation\n */\nvar Geolocation = {\n\n /*\n * Invokes the success callback once with the latest location info. Supported\n * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool)\n */\n getCurrentPosition: function(\n geo_success: Function,\n geo_error?: Function,\n geo_options?: GeoOptions\n ) {\n invariant(\n typeof geo_success === 'function',\n 'Must provide a valid geo_success callback.'\n );\n RCTLocationObserver.getCurrentPosition(\n geo_options || {},\n geo_success,\n geo_error || logError\n );\n },\n\n /*\n * Invokes the success callback whenever the location changes. Supported\n * options: timeout (ms), maximumAge (ms), enableHighAccuracy (bool)\n */\n watchPosition: function(success: Function, error?: Function, options?: GeoOptions): number {\n if (!updatesEnabled) {\n RCTLocationObserver.startObserving(options || {});\n updatesEnabled = true;\n }\n var watchID = subscriptions.length;\n subscriptions.push([\n RCTDeviceEventEmitter.addListener(\n 'geolocationDidChange',\n success\n ),\n error ? RCTDeviceEventEmitter.addListener(\n 'geolocationError',\n error\n ) : null,\n ]);\n return watchID;\n },\n\n clearWatch: function(watchID: number) {\n var sub = subscriptions[watchID];\n if (!sub) {\n // Silently exit when the watchID is invalid or already cleared\n // This is consistent with timers\n return;\n }\n\n sub[0].remove();\n // array element refinements not yet enabled in Flow\n var sub1 = sub[1]; sub1 && sub1.remove();\n subscriptions[watchID] = undefined;\n var noWatchers = true;\n for (var ii = 0; ii < subscriptions.length; ii++) {\n if (subscriptions[ii]) {\n noWatchers = false; // still valid subscriptions\n }\n }\n if (noWatchers) {\n Geolocation.stopObserving();\n }\n },\n\n stopObserving: function() {\n if (updatesEnabled) {\n RCTLocationObserver.stopObserving();\n updatesEnabled = false;\n for (var ii = 0; ii < subscriptions.length; ii++) {\n var sub = subscriptions[ii];\n if (sub) {\n warning('Called stopObserving with existing subscriptions.');\n sub[0].remove();\n // array element refinements not yet enabled in Flow\n var sub1 = sub[1]; sub1 && sub1.remove();\n }\n }\n subscriptions = [];\n }\n }\n};\n\nmodule.exports = Geolocation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Geolocation/Geolocation.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/logError.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar logError=function(){\nif(arguments.length === 1 && arguments[0] instanceof Error){\nvar err=arguments[0];\nconsole.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);}else \n{\nconsole.error.apply(console,arguments);}};\n\n\n\nmodule.exports = logError;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule logError\n * @flow\n */\n'use strict';\n\n/**\n * Small utility that can be used as an error handler. You cannot just pass\n * `console.error` as a failure callback - it's not properly bound. If passes an\n * `Error` object, it will print the message and stack.\n */\nvar logError = function() {\n if (arguments.length === 1 && arguments[0] instanceof Error) {\n var err = arguments[0];\n console.error('Error: \"' + err.message + '\". Stack:\\n' + err.stack);\n } else {\n console.error.apply(console, arguments);\n }\n};\n\nmodule.exports = logError;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/logError.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocket.ios.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTWebSocketManager=require('NativeModules').WebSocketManager;\n\nvar WebSocketBase=require('WebSocketBase');\n\nvar WebSocketId=0;var \n\nWebSocket=(function(_WebSocketBase){_inherits(WebSocket,_WebSocketBase);function WebSocket(){_classCallCheck(this,WebSocket);_get(Object.getPrototypeOf(WebSocket.prototype),'constructor',this).apply(this,arguments);}_createClass(WebSocket,[{key:'connectToSocketImpl',value:\n\n\n\nfunction connectToSocketImpl(url){\nthis._socketId = WebSocketId++;\nRCTWebSocketManager.connect(url,this._socketId);\nthis._registerEvents(this._socketId);}},{key:'closeConnectionImpl',value:\n\n\nfunction closeConnectionImpl(){\nRCTWebSocketManager.close(this._socketId);}},{key:'cancelConnectionImpl',value:\n\n\nfunction cancelConnectionImpl(){\nRCTWebSocketManager.close(this._socketId);}},{key:'sendStringImpl',value:\n\n\nfunction sendStringImpl(message){\nRCTWebSocketManager.send(message,this._socketId);}},{key:'sendArrayBufferImpl',value:\n\n\nfunction sendArrayBufferImpl(){\n\nconsole.warn('Sending ArrayBuffers is not yet supported');}},{key:'_unregisterEvents',value:\n\n\nfunction _unregisterEvents(){\nthis._subs.forEach(function(e){return e.remove();});\nthis._subs = [];}},{key:'_registerEvents',value:\n\n\nfunction _registerEvents(id){\nthis._subs = [\nRCTDeviceEventEmitter.addListener(\n'websocketMessage',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.onmessage && this.onmessage({\ndata:ev.data});}).\n\nbind(this)),\n\nRCTDeviceEventEmitter.addListener(\n'websocketOpen',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.readyState = this.OPEN;\nthis.onopen && this.onopen();}).\nbind(this)),\n\nRCTDeviceEventEmitter.addListener(\n'websocketClosed',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.readyState = this.CLOSED;\nthis.onclose && this.onclose(ev);\nthis._unregisterEvents();\nRCTWebSocketManager.close(id);}).\nbind(this)),\n\nRCTDeviceEventEmitter.addListener(\n'websocketFailed',\n(function(ev){\nif(ev.id !== id){\nreturn;}\n\nthis.onerror && this.onerror(new Error(ev.message));\nthis._unregisterEvents();\nRCTWebSocketManager.close(id);}).\nbind(this))];}}]);return WebSocket;})(WebSocketBase);\n\n\n\n\n\n\nmodule.exports = WebSocket;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebSocket\n *\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTWebSocketManager = require('NativeModules').WebSocketManager;\n\nvar WebSocketBase = require('WebSocketBase');\n\nvar WebSocketId = 0;\n\nclass WebSocket extends WebSocketBase {\n _socketId: number;\n _subs: any;\n\n connectToSocketImpl(url: string): void {\n this._socketId = WebSocketId++;\n RCTWebSocketManager.connect(url, this._socketId);\n this._registerEvents(this._socketId);\n }\n\n closeConnectionImpl(): void {\n RCTWebSocketManager.close(this._socketId);\n }\n\n cancelConnectionImpl(): void {\n RCTWebSocketManager.close(this._socketId);\n }\n\n sendStringImpl(message: string): void {\n RCTWebSocketManager.send(message, this._socketId);\n }\n\n sendArrayBufferImpl(): void {\n // TODO\n console.warn('Sending ArrayBuffers is not yet supported');\n }\n\n _unregisterEvents(): void {\n this._subs.forEach(e => e.remove());\n this._subs = [];\n }\n\n _registerEvents(id: number): void {\n this._subs = [\n RCTDeviceEventEmitter.addListener(\n 'websocketMessage',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.onmessage && this.onmessage({\n data: ev.data\n });\n }.bind(this)\n ),\n RCTDeviceEventEmitter.addListener(\n 'websocketOpen',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.readyState = this.OPEN;\n this.onopen && this.onopen();\n }.bind(this)\n ),\n RCTDeviceEventEmitter.addListener(\n 'websocketClosed',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.readyState = this.CLOSED;\n this.onclose && this.onclose(ev);\n this._unregisterEvents();\n RCTWebSocketManager.close(id);\n }.bind(this)\n ),\n RCTDeviceEventEmitter.addListener(\n 'websocketFailed',\n function(ev) {\n if (ev.id !== id) {\n return;\n }\n this.onerror && this.onerror(new Error(ev.message));\n this._unregisterEvents();\n RCTWebSocketManager.close(id);\n }.bind(this)\n )\n ];\n }\n\n}\n\nmodule.exports = WebSocket;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocket.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocketBase.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nWebSocketBase=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction WebSocketBase(url,protocols){_classCallCheck(this,WebSocketBase);\nthis.CONNECTING = 0;\nthis.OPEN = 1;\nthis.CLOSING = 2;\nthis.CLOSED = 3;\n\nif(!protocols){\nprotocols = [];}\n\n\nthis.connectToSocketImpl(url);}_createClass(WebSocketBase,[{key:'close',value:\n\n\nfunction close(){\nif(this.readyState === WebSocketBase.CLOSING || \nthis.readyState === WebSocketBase.CLOSED){\nreturn;}\n\n\nif(this.readyState === WebSocketBase.CONNECTING){\nthis.cancelConnectionImpl();}\n\n\nthis.closeConnectionImpl();}},{key:'send',value:\n\n\nfunction send(data){\nif(this.readyState === WebSocketBase.CONNECTING){\nthrow new Error('INVALID_STATE_ERR');}\n\n\nif(typeof data === 'string'){\nthis.sendStringImpl(data);}else \nif(data instanceof ArrayBuffer){\nthis.sendArrayBufferImpl(data);}else \n{\nthrow new Error('Not supported data type');}}},{key:'closeConnectionImpl',value:\n\n\n\nfunction closeConnectionImpl(){\nthrow new Error('Subclass must define closeConnectionImpl method');}},{key:'connectToSocketImpl',value:\n\n\nfunction connectToSocketImpl(){\nthrow new Error('Subclass must define connectToSocketImpl method');}},{key:'cancelConnectionImpl',value:\n\n\nfunction cancelConnectionImpl(){\nthrow new Error('Subclass must define cancelConnectionImpl method');}},{key:'sendStringImpl',value:\n\n\nfunction sendStringImpl(){\nthrow new Error('Subclass must define sendStringImpl method');}},{key:'sendArrayBufferImpl',value:\n\n\nfunction sendArrayBufferImpl(){\nthrow new Error('Subclass must define sendArrayBufferImpl method');}}]);return WebSocketBase;})();\n\n\n\n\nmodule.exports = WebSocketBase;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebSocketBase\n *\n */\n'use strict';\n\n/**\n * Shared base for platform-specific WebSocket implementations.\n */\nclass WebSocketBase {\n CONNECTING: number;\n OPEN: number;\n CLOSING: number;\n CLOSED: number;\n\n onclose: ?Function;\n onerror: ?Function;\n onmessage: ?Function;\n onopen: ?Function;\n\n binaryType: ?string;\n bufferedAmount: number;\n extension: ?string;\n protocol: ?string;\n readyState: number;\n url: ?string;\n\n constructor(url: string, protocols: ?any) {\n this.CONNECTING = 0;\n this.OPEN = 1;\n this.CLOSING = 2;\n this.CLOSED = 3;\n\n if (!protocols) {\n protocols = [];\n }\n\n this.connectToSocketImpl(url);\n }\n\n close(): void {\n if (this.readyState === WebSocketBase.CLOSING ||\n this.readyState === WebSocketBase.CLOSED) {\n return;\n }\n\n if (this.readyState === WebSocketBase.CONNECTING) {\n this.cancelConnectionImpl();\n }\n\n this.closeConnectionImpl();\n }\n\n send(data: any): void {\n if (this.readyState === WebSocketBase.CONNECTING) {\n throw new Error('INVALID_STATE_ERR');\n }\n\n if (typeof data === 'string') {\n this.sendStringImpl(data);\n } else if (data instanceof ArrayBuffer) {\n this.sendArrayBufferImpl(data);\n } else {\n throw new Error('Not supported data type');\n }\n }\n\n closeConnectionImpl(): void {\n throw new Error('Subclass must define closeConnectionImpl method');\n }\n\n connectToSocketImpl(): void {\n throw new Error('Subclass must define connectToSocketImpl method');\n }\n\n cancelConnectionImpl(): void {\n throw new Error('Subclass must define cancelConnectionImpl method');\n }\n\n sendStringImpl(): void {\n throw new Error('Subclass must define sendStringImpl method');\n }\n\n sendArrayBufferImpl(): void {\n throw new Error('Subclass must define sendArrayBufferImpl method');\n }\n\n}\n\nmodule.exports = WebSocketBase;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/WebSocket/WebSocketBase.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginHub.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginRegistry=require('EventPluginRegistry');\nvar EventPluginUtils=require('EventPluginUtils');\n\nvar accumulateInto=require('accumulateInto');\nvar forEachAccumulated=require('forEachAccumulated');\nvar invariant=require('invariant');\n\n\n\n\nvar listenerBank={};\n\n\n\n\n\nvar eventQueue=null;\n\n\n\n\n\n\n\nvar executeDispatchesAndRelease=function(event){\nif(event){\nvar executeDispatch=EventPluginUtils.executeDispatch;\n\nvar PluginModule=EventPluginRegistry.getPluginModuleForEvent(event);\nif(PluginModule && PluginModule.executeDispatch){\nexecuteDispatch = PluginModule.executeDispatch;}\n\nEventPluginUtils.executeDispatchesInOrder(event,executeDispatch);\n\nif(!event.isPersistent()){\nevent.constructor.release(event);}}};\n\n\n\n\n\n\n\n\nvar InstanceHandle=null;\n\nfunction validateInstanceHandle(){\nvar valid=\nInstanceHandle && \nInstanceHandle.traverseTwoPhase && \nInstanceHandle.traverseEnterLeave;\ninvariant(\nvalid,\n'InstanceHandle not injected before use!');}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginHub={\n\n\n\n\ninjection:{\n\n\n\n\n\ninjectMount:EventPluginUtils.injection.injectMount,\n\n\n\n\n\ninjectInstanceHandle:function(InjectedInstanceHandle){\nInstanceHandle = InjectedInstanceHandle;\nif(__DEV__){\nvalidateInstanceHandle();}},\n\n\n\ngetInstanceHandle:function(){\nif(__DEV__){\nvalidateInstanceHandle();}\n\nreturn InstanceHandle;},\n\n\n\n\n\n\ninjectEventPluginOrder:EventPluginRegistry.injectEventPluginOrder,\n\n\n\n\ninjectEventPluginsByName:EventPluginRegistry.injectEventPluginsByName},\n\n\n\neventNameDispatchConfigs:EventPluginRegistry.eventNameDispatchConfigs,\n\nregistrationNameModules:EventPluginRegistry.registrationNameModules,\n\n\n\n\n\n\n\n\nputListener:function(id,registrationName,listener){\ninvariant(\n!listener || typeof listener === 'function',\n'Expected %s listener to be a function, instead got type %s',\nregistrationName,typeof listener);\n\n\nvar bankForRegistrationName=\nlistenerBank[registrationName] || (listenerBank[registrationName] = {});\nbankForRegistrationName[id] = listener;},\n\n\n\n\n\n\n\ngetListener:function(id,registrationName){\nvar bankForRegistrationName=listenerBank[registrationName];\nreturn bankForRegistrationName && bankForRegistrationName[id];},\n\n\n\n\n\n\n\n\ndeleteListener:function(id,registrationName){\nvar bankForRegistrationName=listenerBank[registrationName];\nif(bankForRegistrationName){\ndelete bankForRegistrationName[id];}},\n\n\n\n\n\n\n\n\ndeleteAllListeners:function(id){\nfor(var registrationName in listenerBank) {\ndelete listenerBank[registrationName][id];}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nextractEvents:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent){\nvar events;\nvar plugins=EventPluginRegistry.plugins;\nfor(var i=0,l=plugins.length;i < l;i++) {\n\nvar possiblePlugin=plugins[i];\nif(possiblePlugin){\nvar extractedEvents=possiblePlugin.extractEvents(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent);\n\nif(extractedEvents){\nevents = accumulateInto(events,extractedEvents);}}}\n\n\n\nreturn events;},\n\n\n\n\n\n\n\n\n\nenqueueEvents:function(events){\nif(events){\neventQueue = accumulateInto(eventQueue,events);}},\n\n\n\n\n\n\n\n\nprocessEventQueue:function(){\n\n\nvar processingEventQueue=eventQueue;\neventQueue = null;\nforEachAccumulated(processingEventQueue,executeDispatchesAndRelease);\ninvariant(\n!eventQueue,\n'processEventQueue(): Additional events were enqueued while processing ' + \n'an event queue. Support for this has not yet been implemented.');},\n\n\n\n\n\n\n__purge:function(){\nlistenerBank = {};},\n\n\n__getListenerBank:function(){\nreturn listenerBank;}};\n\n\n\n\nmodule.exports = EventPluginHub;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginHub\n */\n\n'use strict';\n\nvar EventPluginRegistry = require('EventPluginRegistry');\nvar EventPluginUtils = require('EventPluginUtils');\n\nvar accumulateInto = require('accumulateInto');\nvar forEachAccumulated = require('forEachAccumulated');\nvar invariant = require('invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @private\n */\nvar executeDispatchesAndRelease = function(event) {\n if (event) {\n var executeDispatch = EventPluginUtils.executeDispatch;\n // Plugins can provide custom behavior when dispatching events.\n var PluginModule = EventPluginRegistry.getPluginModuleForEvent(event);\n if (PluginModule && PluginModule.executeDispatch) {\n executeDispatch = PluginModule.executeDispatch;\n }\n EventPluginUtils.executeDispatchesInOrder(event, executeDispatch);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\n\n/**\n * - `InstanceHandle`: [required] Module that performs logical traversals of DOM\n * hierarchy given ids of the logical DOM elements involved.\n */\nvar InstanceHandle = null;\n\nfunction validateInstanceHandle() {\n var valid =\n InstanceHandle &&\n InstanceHandle.traverseTwoPhase &&\n InstanceHandle.traverseEnterLeave;\n invariant(\n valid,\n 'InstanceHandle not injected before use!'\n );\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {object} InjectedMount\n * @public\n */\n injectMount: EventPluginUtils.injection.injectMount,\n\n /**\n * @param {object} InjectedInstanceHandle\n * @public\n */\n injectInstanceHandle: function(InjectedInstanceHandle) {\n InstanceHandle = InjectedInstanceHandle;\n if (__DEV__) {\n validateInstanceHandle();\n }\n },\n\n getInstanceHandle: function() {\n if (__DEV__) {\n validateInstanceHandle();\n }\n return InstanceHandle;\n },\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n eventNameDispatchConfigs: EventPluginRegistry.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginRegistry.registrationNameModules,\n\n /**\n * Stores `listener` at `listenerBank[registrationName][id]`. Is idempotent.\n *\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {?function} listener The callback to store.\n */\n putListener: function(id, registrationName, listener) {\n invariant(\n !listener || typeof listener === 'function',\n 'Expected %s listener to be a function, instead got type %s',\n registrationName, typeof listener\n );\n\n var bankForRegistrationName =\n listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[id] = listener;\n },\n\n /**\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function(id, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n return bankForRegistrationName && bankForRegistrationName[id];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {string} id ID of the DOM element.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function(id, registrationName) {\n var bankForRegistrationName = listenerBank[registrationName];\n if (bankForRegistrationName) {\n delete bankForRegistrationName[id];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {string} id ID of the DOM element.\n */\n deleteAllListeners: function(id) {\n for (var registrationName in listenerBank) {\n delete listenerBank[registrationName][id];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0, l = plugins.length; i < l; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n );\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function(events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function() {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n forEachAccumulated(processingEventQueue, executeDispatchesAndRelease);\n invariant(\n !eventQueue,\n 'processEventQueue(): Additional events were enqueued while processing ' +\n 'an event queue. Support for this has not yet been implemented.'\n );\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function() {\n listenerBank = {};\n },\n\n __getListenerBank: function() {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginHub.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\nvar EventPluginOrder=null;\n\n\n\n\nvar namesToPlugins={};\n\n\n\n\n\n\nfunction recomputePluginOrdering(){\nif(!EventPluginOrder){\n\nreturn;}\n\nfor(var pluginName in namesToPlugins) {\nvar PluginModule=namesToPlugins[pluginName];\nvar pluginIndex=EventPluginOrder.indexOf(pluginName);\ninvariant(\npluginIndex > -1,\n'EventPluginRegistry: Cannot inject event plugins that do not exist in ' + \n'the plugin ordering, `%s`.',\npluginName);\n\nif(EventPluginRegistry.plugins[pluginIndex]){\ncontinue;}\n\ninvariant(\nPluginModule.extractEvents,\n'EventPluginRegistry: Event plugins must implement an `extractEvents` ' + \n'method, but `%s` does not.',\npluginName);\n\nEventPluginRegistry.plugins[pluginIndex] = PluginModule;\nvar publishedEvents=PluginModule.eventTypes;\nfor(var eventName in publishedEvents) {\ninvariant(\npublishEventForPlugin(\npublishedEvents[eventName],\nPluginModule,\neventName),\n\n'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.',\neventName,\npluginName);}}}\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction publishEventForPlugin(dispatchConfig,PluginModule,eventName){\ninvariant(\n!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName),\n'EventPluginHub: More than one plugin attempted to publish the same ' + \n'event name, `%s`.',\neventName);\n\nEventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\nvar phasedRegistrationNames=dispatchConfig.phasedRegistrationNames;\nif(phasedRegistrationNames){\nfor(var phaseName in phasedRegistrationNames) {\nif(phasedRegistrationNames.hasOwnProperty(phaseName)){\nvar phasedRegistrationName=phasedRegistrationNames[phaseName];\npublishRegistrationName(\nphasedRegistrationName,\nPluginModule,\neventName);}}\n\n\n\nreturn true;}else \nif(dispatchConfig.registrationName){\npublishRegistrationName(\ndispatchConfig.registrationName,\nPluginModule,\neventName);\n\nreturn true;}\n\nreturn false;}\n\n\n\n\n\n\n\n\n\n\nfunction publishRegistrationName(registrationName,PluginModule,eventName){\ninvariant(\n!EventPluginRegistry.registrationNameModules[registrationName],\n'EventPluginHub: More than one plugin attempted to publish the same ' + \n'registration name, `%s`.',\nregistrationName);\n\nEventPluginRegistry.registrationNameModules[registrationName] = PluginModule;\nEventPluginRegistry.registrationNameDependencies[registrationName] = \nPluginModule.eventTypes[eventName].dependencies;}\n\n\n\n\n\n\n\nvar EventPluginRegistry={\n\n\n\n\nplugins:[],\n\n\n\n\neventNameDispatchConfigs:{},\n\n\n\n\nregistrationNameModules:{},\n\n\n\n\nregistrationNameDependencies:{},\n\n\n\n\n\n\n\n\n\n\ninjectEventPluginOrder:function(InjectedEventPluginOrder){\ninvariant(\n!EventPluginOrder,\n'EventPluginRegistry: Cannot inject event plugin ordering more than ' + \n'once. You are likely trying to load more than one copy of React.');\n\n\nEventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);\nrecomputePluginOrdering();},\n\n\n\n\n\n\n\n\n\n\n\n\ninjectEventPluginsByName:function(injectedNamesToPlugins){\nvar isOrderingDirty=false;\nfor(var pluginName in injectedNamesToPlugins) {\nif(!injectedNamesToPlugins.hasOwnProperty(pluginName)){\ncontinue;}\n\nvar PluginModule=injectedNamesToPlugins[pluginName];\nif(!namesToPlugins.hasOwnProperty(pluginName) || \nnamesToPlugins[pluginName] !== PluginModule){\ninvariant(\n!namesToPlugins[pluginName],\n'EventPluginRegistry: Cannot inject two different event plugins ' + \n'using the same name, `%s`.',\npluginName);\n\nnamesToPlugins[pluginName] = PluginModule;\nisOrderingDirty = true;}}\n\n\nif(isOrderingDirty){\nrecomputePluginOrdering();}},\n\n\n\n\n\n\n\n\n\n\ngetPluginModuleForEvent:function(event){\nvar dispatchConfig=event.dispatchConfig;\nif(dispatchConfig.registrationName){\nreturn EventPluginRegistry.registrationNameModules[\ndispatchConfig.registrationName] || \nnull;}\n\nfor(var phase in dispatchConfig.phasedRegistrationNames) {\nif(!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)){\ncontinue;}\n\nvar PluginModule=EventPluginRegistry.registrationNameModules[\ndispatchConfig.phasedRegistrationNames[phase]];\n\nif(PluginModule){\nreturn PluginModule;}}\n\n\nreturn null;},\n\n\n\n\n\n\n_resetEventPlugins:function(){\nEventPluginOrder = null;\nfor(var pluginName in namesToPlugins) {\nif(namesToPlugins.hasOwnProperty(pluginName)){\ndelete namesToPlugins[pluginName];}}\n\n\nEventPluginRegistry.plugins.length = 0;\n\nvar eventNameDispatchConfigs=EventPluginRegistry.eventNameDispatchConfigs;\nfor(var eventName in eventNameDispatchConfigs) {\nif(eventNameDispatchConfigs.hasOwnProperty(eventName)){\ndelete eventNameDispatchConfigs[eventName];}}\n\n\n\nvar registrationNameModules=EventPluginRegistry.registrationNameModules;\nfor(var registrationName in registrationNameModules) {\nif(registrationNameModules.hasOwnProperty(registrationName)){\ndelete registrationNameModules[registrationName];}}}};\n\n\n\n\n\n\nmodule.exports = EventPluginRegistry;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginRegistry\n * @typechecks static-only\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar EventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!EventPluginOrder) {\n // Wait until an `EventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var PluginModule = namesToPlugins[pluginName];\n var pluginIndex = EventPluginOrder.indexOf(pluginName);\n invariant(\n pluginIndex > -1,\n 'EventPluginRegistry: Cannot inject event plugins that do not exist in ' +\n 'the plugin ordering, `%s`.',\n pluginName\n );\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n invariant(\n PluginModule.extractEvents,\n 'EventPluginRegistry: Event plugins must implement an `extractEvents` ' +\n 'method, but `%s` does not.',\n pluginName\n );\n EventPluginRegistry.plugins[pluginIndex] = PluginModule;\n var publishedEvents = PluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n invariant(\n publishEventForPlugin(\n publishedEvents[eventName],\n PluginModule,\n eventName\n ),\n 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.',\n eventName,\n pluginName\n );\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, PluginModule, eventName) {\n invariant(\n !EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName),\n 'EventPluginHub: More than one plugin attempted to publish the same ' +\n 'event name, `%s`.',\n eventName\n );\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(\n phasedRegistrationName,\n PluginModule,\n eventName\n );\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(\n dispatchConfig.registrationName,\n PluginModule,\n eventName\n );\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, PluginModule, eventName) {\n invariant(\n !EventPluginRegistry.registrationNameModules[registrationName],\n 'EventPluginHub: More than one plugin attempted to publish the same ' +\n 'registration name, `%s`.',\n registrationName\n );\n EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] =\n PluginModule.eventTypes[eventName].dependencies;\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function(InjectedEventPluginOrder) {\n invariant(\n !EventPluginOrder,\n 'EventPluginRegistry: Cannot inject event plugin ordering more than ' +\n 'once. You are likely trying to load more than one copy of React.'\n );\n // Clone the ordering so it cannot be dynamically mutated.\n EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function(injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var PluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) ||\n namesToPlugins[pluginName] !== PluginModule) {\n invariant(\n !namesToPlugins[pluginName],\n 'EventPluginRegistry: Cannot inject two different event plugins ' +\n 'using the same name, `%s`.',\n pluginName\n );\n namesToPlugins[pluginName] = PluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function(event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[\n dispatchConfig.registrationName\n ] || null;\n }\n for (var phase in dispatchConfig.phasedRegistrationNames) {\n if (!dispatchConfig.phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var PluginModule = EventPluginRegistry.registrationNameModules[\n dispatchConfig.phasedRegistrationNames[phase]\n ];\n if (PluginModule) {\n return PluginModule;\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function() {\n EventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginRegistry.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\nvar injection={\nMount:null,\ninjectMount:function(InjectedMount){\ninjection.Mount = InjectedMount;\nif(__DEV__){\ninvariant(\nInjectedMount && InjectedMount.getNode,\n'EventPluginUtils.injection.injectMount(...): Injected Mount module ' + \n'is missing getNode.');}}};\n\n\n\n\n\nvar topLevelTypes=EventConstants.topLevelTypes;\n\nfunction isEndish(topLevelType){\nreturn topLevelType === topLevelTypes.topMouseUp || \ntopLevelType === topLevelTypes.topTouchEnd || \ntopLevelType === topLevelTypes.topTouchCancel;}\n\n\nfunction isMoveish(topLevelType){\nreturn topLevelType === topLevelTypes.topMouseMove || \ntopLevelType === topLevelTypes.topTouchMove;}\n\nfunction isStartish(topLevelType){\nreturn topLevelType === topLevelTypes.topMouseDown || \ntopLevelType === topLevelTypes.topTouchStart;}\n\n\n\nvar validateEventDispatches;\nif(__DEV__){\nvalidateEventDispatches = function(event){\nvar dispatchListeners=event._dispatchListeners;\nvar dispatchIDs=event._dispatchIDs;\n\nvar listenersIsArr=Array.isArray(dispatchListeners);\nvar idsIsArr=Array.isArray(dispatchIDs);\nvar IDsLen=idsIsArr?dispatchIDs.length:dispatchIDs?1:0;\nvar listenersLen=listenersIsArr?\ndispatchListeners.length:\ndispatchListeners?1:0;\n\ninvariant(\nidsIsArr === listenersIsArr && IDsLen === listenersLen,\n'EventPluginUtils: Invalid `event`.');};}\n\n\n\n\n\n\n\n\n\nfunction forEachEventDispatch(event,cb){\nvar dispatchListeners=event._dispatchListeners;\nvar dispatchIDs=event._dispatchIDs;\nif(__DEV__){\nvalidateEventDispatches(event);}\n\nif(Array.isArray(dispatchListeners)){\nfor(var i=0;i < dispatchListeners.length;i++) {\nif(event.isPropagationStopped()){\nbreak;}\n\n\ncb(event,dispatchListeners[i],dispatchIDs[i]);}}else \n\nif(dispatchListeners){\ncb(event,dispatchListeners,dispatchIDs);}}\n\n\n\n\n\n\n\n\n\nfunction executeDispatch(event,listener,domID){\nevent.currentTarget = injection.Mount.getNode(domID);\nvar returnValue=listener(event,domID);\nevent.currentTarget = null;\nreturn returnValue;}\n\n\n\n\n\nfunction executeDispatchesInOrder(event,cb){\nforEachEventDispatch(event,cb);\nevent._dispatchListeners = null;\nevent._dispatchIDs = null;}\n\n\n\n\n\n\n\n\n\nfunction executeDispatchesInOrderStopAtTrueImpl(event){\nvar dispatchListeners=event._dispatchListeners;\nvar dispatchIDs=event._dispatchIDs;\nif(__DEV__){\nvalidateEventDispatches(event);}\n\nif(Array.isArray(dispatchListeners)){\nfor(var i=0;i < dispatchListeners.length;i++) {\nif(event.isPropagationStopped()){\nbreak;}\n\n\nif(dispatchListeners[i](event,dispatchIDs[i])){\nreturn dispatchIDs[i];}}}else \n\n\nif(dispatchListeners){\nif(dispatchListeners(event,dispatchIDs)){\nreturn dispatchIDs;}}\n\n\nreturn null;}\n\n\n\n\n\nfunction executeDispatchesInOrderStopAtTrue(event){\nvar ret=executeDispatchesInOrderStopAtTrueImpl(event);\nevent._dispatchIDs = null;\nevent._dispatchListeners = null;\nreturn ret;}\n\n\n\n\n\n\n\n\n\n\n\nfunction executeDirectDispatch(event){\nif(__DEV__){\nvalidateEventDispatches(event);}\n\nvar dispatchListener=event._dispatchListeners;\nvar dispatchID=event._dispatchIDs;\ninvariant(\n!Array.isArray(dispatchListener),\n'executeDirectDispatch(...): Invalid `event`.');\n\nvar res=dispatchListener?\ndispatchListener(event,dispatchID):\nnull;\nevent._dispatchListeners = null;\nevent._dispatchIDs = null;\nreturn res;}\n\n\n\n\n\n\nfunction hasDispatches(event){\nreturn !!event._dispatchListeners;}\n\n\n\n\n\nvar EventPluginUtils={\nisEndish:isEndish,\nisMoveish:isMoveish,\nisStartish:isStartish,\n\nexecuteDirectDispatch:executeDirectDispatch,\nexecuteDispatch:executeDispatch,\nexecuteDispatchesInOrder:executeDispatchesInOrder,\nexecuteDispatchesInOrderStopAtTrue:executeDispatchesInOrderStopAtTrue,\nhasDispatches:hasDispatches,\ninjection:injection,\nuseTouchEvents:false};\n\n\nmodule.exports = EventPluginUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventPluginUtils\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\n\nvar invariant = require('invariant');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `Mount`: [required] Module that can convert between React dom IDs and\n * actual node references.\n */\nvar injection = {\n Mount: null,\n injectMount: function(InjectedMount) {\n injection.Mount = InjectedMount;\n if (__DEV__) {\n invariant(\n InjectedMount && InjectedMount.getNode,\n 'EventPluginUtils.injection.injectMount(...): Injected Mount module ' +\n 'is missing getNode.'\n );\n }\n }\n};\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nfunction isEndish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseUp ||\n topLevelType === topLevelTypes.topTouchEnd ||\n topLevelType === topLevelTypes.topTouchCancel;\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseMove ||\n topLevelType === topLevelTypes.topTouchMove;\n}\nfunction isStartish(topLevelType) {\n return topLevelType === topLevelTypes.topMouseDown ||\n topLevelType === topLevelTypes.topTouchStart;\n}\n\n\nvar validateEventDispatches;\nif (__DEV__) {\n validateEventDispatches = function(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var idsIsArr = Array.isArray(dispatchIDs);\n var IDsLen = idsIsArr ? dispatchIDs.length : dispatchIDs ? 1 : 0;\n var listenersLen = listenersIsArr ?\n dispatchListeners.length :\n dispatchListeners ? 1 : 0;\n\n invariant(\n idsIsArr === listenersIsArr && IDsLen === listenersLen,\n 'EventPluginUtils: Invalid `event`.'\n );\n };\n}\n\n/**\n * Invokes `cb(event, listener, id)`. Avoids using call if no scope is\n * provided. The `(listener,id)` pair effectively forms the \"dispatch\" but are\n * kept separate to conserve memory.\n */\nfunction forEachEventDispatch(event, cb) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n if (__DEV__) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and IDs are two parallel arrays that are always in sync.\n cb(event, dispatchListeners[i], dispatchIDs[i]);\n }\n } else if (dispatchListeners) {\n cb(event, dispatchListeners, dispatchIDs);\n }\n}\n\n/**\n * Default implementation of PluginModule.executeDispatch().\n * @param {SyntheticEvent} SyntheticEvent to handle\n * @param {function} Application-level callback\n * @param {string} domID DOM id to pass to the callback.\n */\nfunction executeDispatch(event, listener, domID) {\n event.currentTarget = injection.Mount.getNode(domID);\n var returnValue = listener(event, domID);\n event.currentTarget = null;\n return returnValue;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, cb) {\n forEachEventDispatch(event, cb);\n event._dispatchListeners = null;\n event._dispatchIDs = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return id of the first dispatch execution who's listener returns true, or\n * null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchIDs = event._dispatchIDs;\n if (__DEV__) {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and IDs are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchIDs[i])) {\n return dispatchIDs[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchIDs)) {\n return dispatchIDs;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchIDs = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (__DEV__) {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchID = event._dispatchIDs;\n invariant(\n !Array.isArray(dispatchListener),\n 'executeDirectDispatch(...): Invalid `event`.'\n );\n var res = dispatchListener ?\n dispatchListener(event, dispatchID) :\n null;\n event._dispatchListeners = null;\n event._dispatchIDs = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {bool} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatch: executeDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n injection: injection,\n useTouchEvents: false\n};\n\nmodule.exports = EventPluginUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventPluginUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventConstants.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\nvar PropagationPhases=keyMirror({bubbled:null,captured:null});\n\n\n\n\nvar topLevelTypes=keyMirror({\ntopBlur:null,\ntopChange:null,\ntopClick:null,\ntopCompositionEnd:null,\ntopCompositionStart:null,\ntopCompositionUpdate:null,\ntopContextMenu:null,\ntopCopy:null,\ntopCut:null,\ntopDoubleClick:null,\ntopDrag:null,\ntopDragEnd:null,\ntopDragEnter:null,\ntopDragExit:null,\ntopDragLeave:null,\ntopDragOver:null,\ntopDragStart:null,\ntopDrop:null,\ntopError:null,\ntopFocus:null,\ntopInput:null,\ntopKeyDown:null,\ntopKeyPress:null,\ntopKeyUp:null,\ntopLoad:null,\ntopMouseDown:null,\ntopMouseMove:null,\ntopMouseOut:null,\ntopMouseOver:null,\ntopMouseUp:null,\ntopPaste:null,\ntopReset:null,\ntopScroll:null,\ntopSelectionChange:null,\ntopSubmit:null,\ntopTextInput:null,\ntopTouchCancel:null,\ntopTouchEnd:null,\ntopTouchMove:null,\ntopTouchStart:null,\ntopWheel:null});\n\n\nvar EventConstants={\ntopLevelTypes:topLevelTypes,\nPropagationPhases:PropagationPhases};\n\n\nmodule.exports = EventConstants;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventConstants\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\nvar PropagationPhases = keyMirror({bubbled: null, captured: null});\n\n/**\n * Types of raw signals from the browser caught at the top level.\n */\nvar topLevelTypes = keyMirror({\n topBlur: null,\n topChange: null,\n topClick: null,\n topCompositionEnd: null,\n topCompositionStart: null,\n topCompositionUpdate: null,\n topContextMenu: null,\n topCopy: null,\n topCut: null,\n topDoubleClick: null,\n topDrag: null,\n topDragEnd: null,\n topDragEnter: null,\n topDragExit: null,\n topDragLeave: null,\n topDragOver: null,\n topDragStart: null,\n topDrop: null,\n topError: null,\n topFocus: null,\n topInput: null,\n topKeyDown: null,\n topKeyPress: null,\n topKeyUp: null,\n topLoad: null,\n topMouseDown: null,\n topMouseMove: null,\n topMouseOut: null,\n topMouseOver: null,\n topMouseUp: null,\n topPaste: null,\n topReset: null,\n topScroll: null,\n topSelectionChange: null,\n topSubmit: null,\n topTextInput: null,\n topTouchCancel: null,\n topTouchEnd: null,\n topTouchMove: null,\n topTouchStart: null,\n topWheel: null\n});\n\nvar EventConstants = {\n topLevelTypes: topLevelTypes,\n PropagationPhases: PropagationPhases\n};\n\nmodule.exports = EventConstants;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/event/EventConstants.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulateInto.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction accumulateInto(current,next){\ninvariant(\nnext != null,\n'accumulateInto(...): Accumulated items must not be null or undefined.');\n\nif(current == null){\nreturn next;}\n\n\n\n\nvar currentIsArray=Array.isArray(current);\nvar nextIsArray=Array.isArray(next);\n\nif(currentIsArray && nextIsArray){\ncurrent.push.apply(current,next);\nreturn current;}\n\n\nif(currentIsArray){\ncurrent.push(next);\nreturn current;}\n\n\nif(nextIsArray){\n\nreturn [current].concat(next);}\n\n\nreturn [current,next];}\n\n\nmodule.exports = accumulateInto;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule accumulateInto\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n *\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n invariant(\n next != null,\n 'accumulateInto(...): Accumulated items must not be null or undefined.'\n );\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n var currentIsArray = Array.isArray(current);\n var nextIsArray = Array.isArray(next);\n\n if (currentIsArray && nextIsArray) {\n current.push.apply(current, next);\n return current;\n }\n\n if (currentIsArray) {\n current.push(next);\n return current;\n }\n\n if (nextIsArray) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulateInto.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/forEachAccumulated.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar forEachAccumulated=function(arr,cb,scope){\nif(Array.isArray(arr)){\narr.forEach(cb,scope);}else \nif(arr){\ncb.call(scope,arr);}};\n\n\n\nmodule.exports = forEachAccumulated;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule forEachAccumulated\n */\n\n'use strict';\n\n/**\n * @param {array} an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\nvar forEachAccumulated = function(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n};\n\nmodule.exports = forEachAccumulated;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/forEachAccumulated.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSDefaultEventPluginOrder.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar IOSDefaultEventPluginOrder=[\n'ResponderEventPlugin',\n'IOSNativeBridgeEventPlugin'];\n\n\nmodule.exports = IOSDefaultEventPluginOrder;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule IOSDefaultEventPluginOrder\n * @flow\n */\n'use strict';\n\nvar IOSDefaultEventPluginOrder = [\n 'ResponderEventPlugin',\n 'IOSNativeBridgeEventPlugin'\n];\n\nmodule.exports = IOSDefaultEventPluginOrder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSDefaultEventPluginOrder.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSNativeBridgeEventPlugin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPropagators=require('EventPropagators');\nvar NativeModules=require('NativeModules');\nvar SyntheticEvent=require('SyntheticEvent');\n\nvar merge=require('merge');\nvar warning=require('warning');\n\nvar RCTUIManager=NativeModules.UIManager;\n\nvar customBubblingEventTypes=RCTUIManager.customBubblingEventTypes;\nvar customDirectEventTypes=RCTUIManager.customDirectEventTypes;\n\nvar allTypesByEventName={};\n\nfor(var bubblingTypeName in customBubblingEventTypes) {\nallTypesByEventName[bubblingTypeName] = customBubblingEventTypes[bubblingTypeName];}\n\n\nfor(var directTypeName in customDirectEventTypes) {\nwarning(\n!customBubblingEventTypes[directTypeName],\n'Event cannot be both direct and bubbling: %s',\ndirectTypeName);\n\nallTypesByEventName[directTypeName] = customDirectEventTypes[directTypeName];}\n\n\nvar IOSNativeBridgeEventPlugin={\n\neventTypes:merge(customBubblingEventTypes,customDirectEventTypes),\n\n\n\n\n\n\n\n\n\nextractEvents:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent)\n{\nvar bubbleDispatchConfig=customBubblingEventTypes[topLevelType];\nvar directDispatchConfig=customDirectEventTypes[topLevelType];\nvar event=SyntheticEvent.getPooled(\nbubbleDispatchConfig || directDispatchConfig,\ntopLevelTargetID,\nnativeEvent);\n\nif(bubbleDispatchConfig){\nEventPropagators.accumulateTwoPhaseDispatches(event);}else \nif(directDispatchConfig){\nEventPropagators.accumulateDirectDispatches(event);}else \n{\nreturn null;}\n\nreturn event;}};\n\n\n\nmodule.exports = IOSNativeBridgeEventPlugin;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule IOSNativeBridgeEventPlugin\n * @flow\n */\n'use strict';\n\nvar EventPropagators = require('EventPropagators');\nvar NativeModules = require('NativeModules');\nvar SyntheticEvent = require('SyntheticEvent');\n\nvar merge = require('merge');\nvar warning = require('warning');\n\nvar RCTUIManager = NativeModules.UIManager;\n\nvar customBubblingEventTypes = RCTUIManager.customBubblingEventTypes;\nvar customDirectEventTypes = RCTUIManager.customDirectEventTypes;\n\nvar allTypesByEventName = {};\n\nfor (var bubblingTypeName in customBubblingEventTypes) {\n allTypesByEventName[bubblingTypeName] = customBubblingEventTypes[bubblingTypeName];\n}\n\nfor (var directTypeName in customDirectEventTypes) {\n warning(\n !customBubblingEventTypes[directTypeName],\n 'Event cannot be both direct and bubbling: %s',\n directTypeName\n );\n allTypesByEventName[directTypeName] = customDirectEventTypes[directTypeName];\n}\n\nvar IOSNativeBridgeEventPlugin = {\n\n eventTypes: merge(customBubblingEventTypes, customDirectEventTypes),\n\n /**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType: string,\n topLevelTarget: EventTarget,\n topLevelTargetID: string,\n nativeEvent: Event\n ): ?Object {\n var bubbleDispatchConfig = customBubblingEventTypes[topLevelType];\n var directDispatchConfig = customDirectEventTypes[topLevelType];\n var event = SyntheticEvent.getPooled(\n bubbleDispatchConfig || directDispatchConfig,\n topLevelTargetID,\n nativeEvent\n );\n if (bubbleDispatchConfig) {\n EventPropagators.accumulateTwoPhaseDispatches(event);\n } else if (directDispatchConfig) {\n EventPropagators.accumulateDirectDispatches(event);\n } else {\n return null;\n }\n return event;\n }\n};\n\nmodule.exports = IOSNativeBridgeEventPlugin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/IOSNativeBridgeEventPlugin.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/event/EventPropagators.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginHub=require('EventPluginHub');\n\nvar accumulateInto=require('accumulateInto');\nvar forEachAccumulated=require('forEachAccumulated');\n\nvar PropagationPhases=EventConstants.PropagationPhases;\nvar getListener=EventPluginHub.getListener;\n\n\n\n\n\nfunction listenerAtPhase(id,event,propagationPhase){\nvar registrationName=\nevent.dispatchConfig.phasedRegistrationNames[propagationPhase];\nreturn getListener(id,registrationName);}\n\n\n\n\n\n\n\n\nfunction accumulateDirectionalDispatches(domID,upwards,event){\nif(__DEV__){\nif(!domID){\nthrow new Error('Dispatching id must not be null');}}\n\n\nvar phase=upwards?PropagationPhases.bubbled:PropagationPhases.captured;\nvar listener=listenerAtPhase(domID,event,phase);\nif(listener){\nevent._dispatchListeners = \naccumulateInto(event._dispatchListeners,listener);\nevent._dispatchIDs = accumulateInto(event._dispatchIDs,domID);}}\n\n\n\n\n\n\n\n\n\n\nfunction accumulateTwoPhaseDispatchesSingle(event){\nif(event && event.dispatchConfig.phasedRegistrationNames){\nEventPluginHub.injection.getInstanceHandle().traverseTwoPhase(\nevent.dispatchMarker,\naccumulateDirectionalDispatches,\nevent);}}\n\n\n\n\n\n\n\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event){\nif(event && event.dispatchConfig.phasedRegistrationNames){\nEventPluginHub.injection.getInstanceHandle().traverseTwoPhaseSkipTarget(\nevent.dispatchMarker,\naccumulateDirectionalDispatches,\nevent);}}\n\n\n\n\n\n\n\n\n\n\nfunction accumulateDispatches(id,ignoredDirection,event){\nif(event && event.dispatchConfig.registrationName){\nvar registrationName=event.dispatchConfig.registrationName;\nvar listener=getListener(id,registrationName);\nif(listener){\nevent._dispatchListeners = \naccumulateInto(event._dispatchListeners,listener);\nevent._dispatchIDs = accumulateInto(event._dispatchIDs,id);}}}\n\n\n\n\n\n\n\n\n\nfunction accumulateDirectDispatchesSingle(event){\nif(event && event.dispatchConfig.registrationName){\naccumulateDispatches(event.dispatchMarker,null,event);}}\n\n\n\nfunction accumulateTwoPhaseDispatches(events){\nforEachAccumulated(events,accumulateTwoPhaseDispatchesSingle);}\n\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events){\nforEachAccumulated(events,accumulateTwoPhaseDispatchesSingleSkipTarget);}\n\n\nfunction accumulateEnterLeaveDispatches(leave,enter,fromID,toID){\nEventPluginHub.injection.getInstanceHandle().traverseEnterLeave(\nfromID,\ntoID,\naccumulateDispatches,\nleave,\nenter);}\n\n\n\n\nfunction accumulateDirectDispatches(events){\nforEachAccumulated(events,accumulateDirectDispatchesSingle);}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPropagators={\naccumulateTwoPhaseDispatches:accumulateTwoPhaseDispatches,\naccumulateTwoPhaseDispatchesSkipTarget:accumulateTwoPhaseDispatchesSkipTarget,\naccumulateDirectDispatches:accumulateDirectDispatches,\naccumulateEnterLeaveDispatches:accumulateEnterLeaveDispatches};\n\n\nmodule.exports = EventPropagators;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule EventPropagators\n */\n\n\"use strict\";\n\nvar EventConstants = require('EventConstants');\nvar EventPluginHub = require('EventPluginHub');\n\nvar accumulateInto = require('accumulateInto');\nvar forEachAccumulated = require('forEachAccumulated');\n\nvar PropagationPhases = EventConstants.PropagationPhases;\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(id, event, propagationPhase) {\n var registrationName =\n event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(id, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(domID, upwards, event) {\n if (__DEV__) {\n if (!domID) {\n throw new Error('Dispatching id must not be null');\n }\n }\n var phase = upwards ? PropagationPhases.bubbled : PropagationPhases.captured;\n var listener = listenerAtPhase(domID, event, phase);\n if (listener) {\n event._dispatchListeners =\n accumulateInto(event._dispatchListeners, listener);\n event._dispatchIDs = accumulateInto(event._dispatchIDs, domID);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We can not perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginHub.injection.getInstanceHandle().traverseTwoPhase(\n event.dispatchMarker,\n accumulateDirectionalDispatches,\n event\n );\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginHub.injection.getInstanceHandle().traverseTwoPhaseSkipTarget(\n event.dispatchMarker,\n accumulateDirectionalDispatches,\n event\n );\n }\n}\n\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(id, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(id, registrationName);\n if (listener) {\n event._dispatchListeners =\n accumulateInto(event._dispatchListeners, listener);\n event._dispatchIDs = accumulateInto(event._dispatchIDs, id);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event.dispatchMarker, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, fromID, toID) {\n EventPluginHub.injection.getInstanceHandle().traverseEnterLeave(\n fromID,\n toID,\n accumulateDispatches,\n leave,\n enter\n );\n}\n\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/event/EventPropagators.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/syntheticEvents/SyntheticEvent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\nvar getEventTarget=require('getEventTarget');\n\n\n\n\n\nvar EventInterface={\ntype:null,\ntarget:getEventTarget,\n\ncurrentTarget:emptyFunction.thatReturnsNull,\neventPhase:null,\nbubbles:null,\ncancelable:null,\ntimeStamp:function(event){\nreturn event.timeStamp || Date.now();},\n\ndefaultPrevented:null,\nisTrusted:null};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SyntheticEvent(dispatchConfig,dispatchMarker,nativeEvent){\nthis.dispatchConfig = dispatchConfig;\nthis.dispatchMarker = dispatchMarker;\nthis.nativeEvent = nativeEvent;\n\nvar Interface=this.constructor.Interface;\nfor(var propName in Interface) {\nif(!Interface.hasOwnProperty(propName)){\ncontinue;}\n\nvar normalize=Interface[propName];\nif(normalize){\nthis[propName] = normalize(nativeEvent);}else \n{\nthis[propName] = nativeEvent[propName];}}\n\n\n\nvar defaultPrevented=nativeEvent.defaultPrevented != null?\nnativeEvent.defaultPrevented:\nnativeEvent.returnValue === false;\nif(defaultPrevented){\nthis.isDefaultPrevented = emptyFunction.thatReturnsTrue;}else \n{\nthis.isDefaultPrevented = emptyFunction.thatReturnsFalse;}\n\nthis.isPropagationStopped = emptyFunction.thatReturnsFalse;}\n\n\nassign(SyntheticEvent.prototype,{\n\npreventDefault:function(){\nthis.defaultPrevented = true;\nvar event=this.nativeEvent;\nif(event.preventDefault){\nevent.preventDefault();}else \n{\nevent.returnValue = false;}\n\nthis.isDefaultPrevented = emptyFunction.thatReturnsTrue;},\n\n\nstopPropagation:function(){\nvar event=this.nativeEvent;\nif(event.stopPropagation){\nevent.stopPropagation();}else \n{\nevent.cancelBubble = true;}\n\nthis.isPropagationStopped = emptyFunction.thatReturnsTrue;},\n\n\n\n\n\n\n\npersist:function(){\nthis.isPersistent = emptyFunction.thatReturnsTrue;},\n\n\n\n\n\n\n\nisPersistent:emptyFunction.thatReturnsFalse,\n\n\n\n\ndestructor:function(){\nvar Interface=this.constructor.Interface;\nfor(var propName in Interface) {\nthis[propName] = null;}\n\nthis.dispatchConfig = null;\nthis.dispatchMarker = null;\nthis.nativeEvent = null;}});\n\n\n\n\nSyntheticEvent.Interface = EventInterface;\n\n\n\n\n\n\n\nSyntheticEvent.augmentClass = function(Class,Interface){\nvar Super=this;\n\nvar prototype=Object.create(Super.prototype);\nassign(prototype,Class.prototype);\nClass.prototype = prototype;\nClass.prototype.constructor = Class;\n\nClass.Interface = assign({},Super.Interface,Interface);\nClass.augmentClass = Super.augmentClass;\n\nPooledClass.addPoolingTo(Class,PooledClass.threeArgumentPooler);};\n\n\nPooledClass.addPoolingTo(SyntheticEvent,PooledClass.threeArgumentPooler);\n\nmodule.exports = SyntheticEvent;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SyntheticEvent\n * @typechecks static-only\n */\n\n'use strict';\n\nvar PooledClass = require('PooledClass');\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\nvar getEventTarget = require('getEventTarget');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: getEventTarget,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n */\nfunction SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n this.dispatchConfig = dispatchConfig;\n this.dispatchMarker = dispatchMarker;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ?\n nativeEvent.defaultPrevented :\n nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n}\n\nassign(SyntheticEvent.prototype, {\n\n preventDefault: function() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function() {\n var event = this.nativeEvent;\n if (event.stopPropagation) {\n event.stopPropagation();\n } else {\n event.cancelBubble = true;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function() {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n this[propName] = null;\n }\n this.dispatchConfig = null;\n this.dispatchMarker = null;\n this.nativeEvent = null;\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function(Class, Interface) {\n var Super = this;\n\n var prototype = Object.create(Super.prototype);\n assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.threeArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/syntheticEvents/SyntheticEvent.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/getEventTarget.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getEventTarget(nativeEvent){\nvar target=nativeEvent.target || nativeEvent.srcElement || window;\n\n\nreturn target.nodeType === 3?target.parentNode:target;}\n\n\nmodule.exports = getEventTarget;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getEventTarget\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/getEventTarget.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/merge.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeInto=require('mergeInto');\n\n\n\n\n\n\n\n\nvar merge=function(one,two){\nvar result={};\nmergeInto(result,one);\nmergeInto(result,two);\nreturn result;};\n\n\nmodule.exports = merge;","sourceCode":"/**\n * @generated SignedSource<<0e3063b19e14ed191102b1dffe45551f>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule merge\n */\n\n\"use strict\";\n\nvar mergeInto = require('mergeInto');\n\n/**\n * Shallow merges two structures into a return value, without mutating either.\n *\n * @param {?object} one Optional object with properties to merge from.\n * @param {?object} two Optional object with properties to merge from.\n * @return {object} The shallow extension of one by two.\n */\nvar merge = function(one, two) {\n var result = {};\n mergeInto(result, one);\n mergeInto(result, two);\n return result;\n};\n\nmodule.exports = merge;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/merge.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeInto.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeHelpers=require('mergeHelpers');\n\nvar checkMergeObjectArg=mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg=mergeHelpers.checkMergeIntoObjectArg;\n\n\n\n\n\n\n\nfunction mergeInto(one,two){\ncheckMergeIntoObjectArg(one);\nif(two != null){\ncheckMergeObjectArg(two);\nfor(var key in two) {\nif(!two.hasOwnProperty(key)){\ncontinue;}\n\none[key] = two[key];}}}\n\n\n\n\nmodule.exports = mergeInto;","sourceCode":"/**\n * @generated SignedSource<<d3caa35be27b17ea4dd4c76bef72d1ab>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule mergeInto\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar mergeHelpers = require('mergeHelpers');\n\nvar checkMergeObjectArg = mergeHelpers.checkMergeObjectArg;\nvar checkMergeIntoObjectArg = mergeHelpers.checkMergeIntoObjectArg;\n\n/**\n * Shallow merges two structures by mutating the first parameter.\n *\n * @param {object|function} one Object to be merged into.\n * @param {?object} two Optional object with properties to merge from.\n */\nfunction mergeInto(one, two) {\n checkMergeIntoObjectArg(one);\n if (two != null) {\n checkMergeObjectArg(two);\n for (var key in two) {\n if (!two.hasOwnProperty(key)) {\n continue;\n }\n one[key] = two[key];\n }\n }\n}\n\nmodule.exports = mergeInto;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeInto.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeHelpers.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\n\n\n\n\n\nvar MAX_MERGE_DEPTH=36;\n\n\n\n\n\n\n\nvar isTerminal=function(o){\nreturn typeof o !== 'object' || o === null;};\n\n\nvar mergeHelpers={\n\nMAX_MERGE_DEPTH:MAX_MERGE_DEPTH,\n\nisTerminal:isTerminal,\n\n\n\n\n\n\n\nnormalizeMergeArg:function(arg){\nreturn arg === undefined || arg === null?{}:arg;},\n\n\n\n\n\n\n\n\n\n\ncheckMergeArrayArgs:function(one,two){\ninvariant(\nArray.isArray(one) && Array.isArray(two),\n'Tried to merge arrays, instead got %s and %s.',\none,\ntwo);},\n\n\n\n\n\n\n\ncheckMergeObjectArgs:function(one,two){\nmergeHelpers.checkMergeObjectArg(one);\nmergeHelpers.checkMergeObjectArg(two);},\n\n\n\n\n\ncheckMergeObjectArg:function(arg){\ninvariant(\n!isTerminal(arg) && !Array.isArray(arg),\n'Tried to merge an object, instead got %s.',\narg);},\n\n\n\n\n\n\ncheckMergeIntoObjectArg:function(arg){\ninvariant(\n(!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),\n'Tried to merge into an object, instead got %s.',\narg);},\n\n\n\n\n\n\n\n\n\ncheckMergeLevel:function(level){\ninvariant(\nlevel < MAX_MERGE_DEPTH,\n'Maximum deep merge depth exceeded. You may be attempting to merge ' + \n'circular structures in an unsupported way.');},\n\n\n\n\n\n\n\n\ncheckArrayStrategy:function(strategy){\ninvariant(\nstrategy === undefined || strategy in mergeHelpers.ArrayStrategies,\n'You must provide an array strategy to deep merge functions to ' + \n'instruct the deep merge how to resolve merging two arrays.');},\n\n\n\n\n\n\n\n\n\n\nArrayStrategies:keyMirror({\nClobber:true,\nIndexByIndex:true})};\n\n\n\n\nmodule.exports = mergeHelpers;","sourceCode":"/**\n * @generated SignedSource<<b68d78236d45828b3f7f7fcc740782a9>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule mergeHelpers\n *\n * requiresPolyfills: Array.isArray\n */\n\n\"use strict\";\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\n\n/**\n * Maximum number of levels to traverse. Will catch circular structures.\n * @const\n */\nvar MAX_MERGE_DEPTH = 36;\n\n/**\n * We won't worry about edge cases like new String('x') or new Boolean(true).\n * Functions are considered terminals, and arrays are not.\n * @param {*} o The item/object/value to test.\n * @return {boolean} true iff the argument is a terminal.\n */\nvar isTerminal = function(o) {\n return typeof o !== 'object' || o === null;\n};\n\nvar mergeHelpers = {\n\n MAX_MERGE_DEPTH: MAX_MERGE_DEPTH,\n\n isTerminal: isTerminal,\n\n /**\n * Converts null/undefined values into empty object.\n *\n * @param {?Object=} arg Argument to be normalized (nullable optional)\n * @return {!Object}\n */\n normalizeMergeArg: function(arg) {\n return arg === undefined || arg === null ? {} : arg;\n },\n\n /**\n * If merging Arrays, a merge strategy *must* be supplied. If not, it is\n * likely the caller's fault. If this function is ever called with anything\n * but `one` and `two` being `Array`s, it is the fault of the merge utilities.\n *\n * @param {*} one Array to merge into.\n * @param {*} two Array to merge from.\n */\n checkMergeArrayArgs: function(one, two) {\n invariant(\n Array.isArray(one) && Array.isArray(two),\n 'Tried to merge arrays, instead got %s and %s.',\n one,\n two\n );\n },\n\n /**\n * @param {*} one Object to merge into.\n * @param {*} two Object to merge from.\n */\n checkMergeObjectArgs: function(one, two) {\n mergeHelpers.checkMergeObjectArg(one);\n mergeHelpers.checkMergeObjectArg(two);\n },\n\n /**\n * @param {*} arg\n */\n checkMergeObjectArg: function(arg) {\n invariant(\n !isTerminal(arg) && !Array.isArray(arg),\n 'Tried to merge an object, instead got %s.',\n arg\n );\n },\n\n /**\n * @param {*} arg\n */\n checkMergeIntoObjectArg: function(arg) {\n invariant(\n (!isTerminal(arg) || typeof arg === 'function') && !Array.isArray(arg),\n 'Tried to merge into an object, instead got %s.',\n arg\n );\n },\n\n /**\n * Checks that a merge was not given a circular object or an object that had\n * too great of depth.\n *\n * @param {number} Level of recursion to validate against maximum.\n */\n checkMergeLevel: function(level) {\n invariant(\n level < MAX_MERGE_DEPTH,\n 'Maximum deep merge depth exceeded. You may be attempting to merge ' +\n 'circular structures in an unsupported way.'\n );\n },\n\n /**\n * Checks that the supplied merge strategy is valid.\n *\n * @param {string} Array merge strategy.\n */\n checkArrayStrategy: function(strategy) {\n invariant(\n strategy === undefined || strategy in mergeHelpers.ArrayStrategies,\n 'You must provide an array strategy to deep merge functions to ' +\n 'instruct the deep merge how to resolve merging two arrays.'\n );\n },\n\n /**\n * Set of possible behaviors of merge algorithms when encountering two Arrays\n * that must be merged together.\n * - `clobber`: The left `Array` is ignored.\n * - `indexByIndex`: The result is achieved by recursively deep merging at\n * each index. (not yet supported.)\n */\n ArrayStrategies: keyMirror({\n Clobber: true,\n IndexByIndex: true\n })\n\n};\n\nmodule.exports = mergeHelpers;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/mergeHelpers.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platform/NodeHandle.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nNodeHandle={\n\n\n\ninjection:{\ninjectImplementation:function(Impl){\nNodeHandle._Implementation = Impl;}},\n\n\n\n_Implementation:null,\n\n\n\n\n\ngetRootNodeID:function(nodeHandle){\nreturn NodeHandle._Implementation.getRootNodeID(nodeHandle);}};\n\n\n\nmodule.exports = NodeHandle;","sourceCode":"/**\n * @providesModule NodeHandle\n */\n\n /**\n * A \"handle\" is a serializable representation of the underlying platform's\n * native node abstraction. This allows reasoning about nodes behind a thread\n * (worker) boundary. On some platforms (DOM main thread) the node handle *is*\n * an actual DOM node - `NodeHandle` (and potentially other libraries)\n * abstract away those differences so you can write code that doesn't depend\n * on whether or not you are running in a worker. For example, you could write\n * application code:\n *\n *\n * SomeLibrary.measureNodeHandle(myNodeHandle, cb)\n *\n * Where `measureNodeHandle` knows how to handle actual DOM nodes if running\n * in a worker thread, and knows how to handle numeric IDs if running in a\n * worker thread.\n *\n * The only other requirement of a platform/environment is that it always be\n * possible to extract the React rootNodeID in a blocking manner (see\n * `getRootNodeID`).\n *\n * +------------------+ +------------------+ +------------------+\n * | | | | | |\n * | ReactJS | | YourUtilities | | Animation Utils |\n * | | | | | |\n * +------------------+ +------------------+ +------------------+\n *\n * +------------------------------------------------------------+\n * | Async Platform Independent Node Interface |\n * +------------------------------------------------------------+\n * | |\n * | NodeIterface: |\n * | -measure(nodeHandle, cb) |\n * | -setProperties(nodeHandle, cb) |\n * | -manageChildren(nodeHandle, nodeHandles, cb) |\n * | ... |\n * | |\n * | Note: This may be a simplification. We could break up much |\n * | of this functionality into several smaller libraries, each |\n * | one requiring a . |\n * +------------------------------------------------------------+\n *\n * +------------------------------------------------------------+\n * | Platform Implementations |\n * | ----------------------------------------- |\n * | React Canvas | React DOM Worker | React DOM main |\n * +------------------------------------------------------------+\n * | | | |\n * |-measure(..) |-measure(..) |-measure(..) |\n * |-setProperties(..) |-setProperties(..) |-setProperties(..) |\n * |-manageChildren(..)|-manageChildren(..) |-manageChildren(..)|\n * | ... | ... | ... |\n * +-----------------------------o------------------------------+\n * | Worker simply ^\n * | marshals commands |\n * | to Web DOM thread. |\n * +---------------------+\n */\nvar NodeHandle = {\n /**\n * Injection\n */\n injection: {\n injectImplementation: function(Impl) {\n NodeHandle._Implementation = Impl;\n }\n },\n\n _Implementation: null,\n\n /**\n * @param {NodeHandle} nodeHandle The handle to the low level resource.\n * @return {string} React root node ID.\n */\n getRootNodeID: function(nodeHandle) {\n return NodeHandle._Implementation.getRootNodeID(nodeHandle);\n }\n};\n\nmodule.exports = NodeHandle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platform/NodeHandle.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactDefaultBatchingStrategy.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactUpdates=require('ReactUpdates');\nvar Transaction=require('Transaction');\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\n\nvar RESET_BATCHED_UPDATES={\ninitialize:emptyFunction,\nclose:function(){\nReactDefaultBatchingStrategy.isBatchingUpdates = false;}};\n\n\n\nvar FLUSH_BATCHED_UPDATES={\ninitialize:emptyFunction,\nclose:ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)};\n\n\nvar TRANSACTION_WRAPPERS=[FLUSH_BATCHED_UPDATES,RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction(){\nthis.reinitializeTransaction();}\n\n\nassign(\nReactDefaultBatchingStrategyTransaction.prototype,\nTransaction.Mixin,\n{\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;}});\n\n\n\n\nvar transaction=new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy={\nisBatchingUpdates:false,\n\n\n\n\n\nbatchedUpdates:function(callback,a,b,c,d){\nvar alreadyBatchingUpdates=ReactDefaultBatchingStrategy.isBatchingUpdates;\n\nReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n\nif(alreadyBatchingUpdates){\ncallback(a,b,c,d);}else \n{\ntransaction.perform(callback,null,a,b,c,d);}}};\n\n\n\n\nmodule.exports = ReactDefaultBatchingStrategy;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultBatchingStrategy\n */\n\n'use strict';\n\nvar ReactUpdates = require('ReactUpdates');\nvar Transaction = require('Transaction');\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function() {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\nassign(\n ReactDefaultBatchingStrategyTransaction.prototype,\n Transaction.Mixin,\n {\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n }\n }\n);\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function(callback, a, b, c, d) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n callback(a, b, c, d);\n } else {\n transaction.perform(callback, null, a, b, c, d);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactDefaultBatchingStrategy.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponentEnvironment.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeDOMIDOperations=require('ReactNativeDOMIDOperations');\nvar ReactNativeReconcileTransaction=require('ReactNativeReconcileTransaction');\n\nvar ReactNativeComponentEnvironment={\n\nprocessChildrenUpdates:ReactNativeDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\nreplaceNodeWithMarkupByID:ReactNativeDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID,\n\n\n\n\n\n\nunmountIDFromEnvironment:function(){},\n\n\n\n\n\n\nclearNode:function(){},\n\n\n\nReactReconcileTransaction:ReactNativeReconcileTransaction};\n\n\nmodule.exports = ReactNativeComponentEnvironment;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeComponentEnvironment\n * @flow\n */\n'use strict';\n\nvar ReactNativeDOMIDOperations = require('ReactNativeDOMIDOperations');\nvar ReactNativeReconcileTransaction = require('ReactNativeReconcileTransaction');\n\nvar ReactNativeComponentEnvironment = {\n\n processChildrenUpdates: ReactNativeDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkupByID: ReactNativeDOMIDOperations.dangerouslyReplaceNodeWithMarkupByID,\n\n /**\n * Nothing to do for UIKit bridge.\n *\n * @private\n */\n unmountIDFromEnvironment: function(/*rootNodeID*/) {\n\n },\n\n /**\n * @param {DOMElement} Element to clear.\n */\n clearNode: function(/*containerView*/) {\n\n },\n\n ReactReconcileTransaction: ReactNativeReconcileTransaction,\n};\n\nmodule.exports = ReactNativeComponentEnvironment;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponentEnvironment.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDOMIDOperations.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactMultiChildUpdateTypes=require('ReactMultiChildUpdateTypes');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar ReactPerf=require('ReactPerf');\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dangerouslyProcessChildrenUpdates=function(childrenUpdates,markupList){\nif(!childrenUpdates.length){\nreturn;}\n\nvar byContainerTag={};\n\n\nfor(var i=0;i < childrenUpdates.length;i++) {\nvar update=childrenUpdates[i];\nvar containerTag=ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(update.parentID);\nvar updates=byContainerTag[containerTag] || (byContainerTag[containerTag] = {});\nif(update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING){\n(updates.moveFromIndices || (updates.moveFromIndices = [])).push(update.fromIndex);\n(updates.moveToIndices || (updates.moveToIndices = [])).push(update.toIndex);}else \nif(update.type === ReactMultiChildUpdateTypes.REMOVE_NODE){\n(updates.removeAtIndices || (updates.removeAtIndices = [])).push(update.fromIndex);}else \nif(update.type === ReactMultiChildUpdateTypes.INSERT_MARKUP){\nvar mountImage=markupList[update.markupIndex];\nvar tag=mountImage.tag;\nvar rootNodeID=mountImage.rootNodeID;\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(rootNodeID,tag);\n(updates.addAtIndices || (updates.addAtIndices = [])).push(update.toIndex);\n(updates.addChildTags || (updates.addChildTags = [])).push(tag);}}\n\n\n\n\n\nfor(var updateParentTagString in byContainerTag) {\nvar updateParentTagNumber=+updateParentTagString;\nvar childUpdatesToSend=byContainerTag[updateParentTagNumber];\nRCTUIManager.manageChildren(\nupdateParentTagNumber,\nchildUpdatesToSend.moveFromIndices,\nchildUpdatesToSend.moveToIndices,\nchildUpdatesToSend.addChildTags,\nchildUpdatesToSend.addAtIndices,\nchildUpdatesToSend.removeAtIndices);}};\n\n\n\n\n\n\n\n\nvar ReactNativeDOMIDOperations={\ndangerouslyProcessChildrenUpdates:ReactPerf.measure(\n\n'ReactDOMIDOperations',\n'dangerouslyProcessChildrenUpdates',\ndangerouslyProcessChildrenUpdates),\n\n\n\n\n\n\n\n\ndangerouslyReplaceNodeWithMarkupByID:ReactPerf.measure(\n'ReactDOMIDOperations',\n'dangerouslyReplaceNodeWithMarkupByID',\nfunction(id,mountImage){\nvar oldTag=ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(id);\nRCTUIManager.replaceExistingNonRootView(oldTag,mountImage.tag);\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(id,mountImage.tag);})};\n\n\n\n\nmodule.exports = ReactNativeDOMIDOperations;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeDOMIDOperations\n * @flow\n */\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactMultiChildUpdateTypes = require('ReactMultiChildUpdateTypes');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar ReactPerf = require('ReactPerf');\n\n/**\n * Updates a component's children by processing a series of updates.\n * For each of the update/create commands, the `fromIndex` refers to the index\n * that the item existed at *before* any of the updates are applied, and the\n * `toIndex` refers to the index after *all* of the updates are applied\n * (including deletes/moves). TODO: refactor so this can be shared with\n * DOMChildrenOperations.\n *\n * @param {array<object>} updates List of update configurations.\n * @param {array<string>} markup List of markup strings - in the case of React\n * IOS, the ids of new components assumed to be already created.\n */\nvar dangerouslyProcessChildrenUpdates = function(childrenUpdates, markupList) {\n if (!childrenUpdates.length) {\n return;\n }\n var byContainerTag = {};\n // Group by parent ID - send them across the bridge in separate commands per\n // containerID.\n for (var i = 0; i < childrenUpdates.length; i++) {\n var update = childrenUpdates[i];\n var containerTag = ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(update.parentID);\n var updates = byContainerTag[containerTag] || (byContainerTag[containerTag] = {});\n if (update.type === ReactMultiChildUpdateTypes.MOVE_EXISTING) {\n (updates.moveFromIndices || (updates.moveFromIndices = [])).push(update.fromIndex);\n (updates.moveToIndices || (updates.moveToIndices = [])).push(update.toIndex);\n } else if (update.type === ReactMultiChildUpdateTypes.REMOVE_NODE) {\n (updates.removeAtIndices || (updates.removeAtIndices = [])).push(update.fromIndex);\n } else if (update.type === ReactMultiChildUpdateTypes.INSERT_MARKUP) {\n var mountImage = markupList[update.markupIndex];\n var tag = mountImage.tag;\n var rootNodeID = mountImage.rootNodeID;\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(rootNodeID, tag);\n (updates.addAtIndices || (updates.addAtIndices = [])).push(update.toIndex);\n (updates.addChildTags || (updates.addChildTags = [])).push(tag);\n }\n }\n // Note this enumeration order will be different on V8! Move `byContainerTag`\n // to a sparse array as soon as we confirm there are not horrible perf\n // penalties.\n for (var updateParentTagString in byContainerTag) {\n var updateParentTagNumber = +updateParentTagString;\n var childUpdatesToSend = byContainerTag[updateParentTagNumber];\n RCTUIManager.manageChildren(\n updateParentTagNumber,\n childUpdatesToSend.moveFromIndices,\n childUpdatesToSend.moveToIndices,\n childUpdatesToSend.addChildTags,\n childUpdatesToSend.addAtIndices,\n childUpdatesToSend.removeAtIndices\n );\n }\n};\n\n/**\n * Operations used to process updates to DOM nodes. This is made injectable via\n * `ReactComponent.DOMIDOperations`.\n */\nvar ReactNativeDOMIDOperations = {\n dangerouslyProcessChildrenUpdates: ReactPerf.measure(\n // FIXME(frantic): #4441289 Hack to avoid modifying react-tools\n 'ReactDOMIDOperations',\n 'dangerouslyProcessChildrenUpdates',\n dangerouslyProcessChildrenUpdates\n ),\n\n /**\n * Replaces a view that exists in the document with markup.\n *\n * @param {string} id ID of child to be replaced.\n * @param {string} markup Mount image to replace child with id.\n */\n dangerouslyReplaceNodeWithMarkupByID: ReactPerf.measure(\n 'ReactDOMIDOperations',\n 'dangerouslyReplaceNodeWithMarkupByID',\n function(id, mountImage) {\n var oldTag = ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(id);\n RCTUIManager.replaceExistingNonRootView(oldTag, mountImage.tag);\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(id, mountImage.tag);\n }\n ),\n};\n\nmodule.exports = ReactNativeDOMIDOperations;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeDOMIDOperations.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChildUpdateTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\n\n\n\n\n\n\n\n\nvar ReactMultiChildUpdateTypes=keyMirror({\nINSERT_MARKUP:null,\nMOVE_EXISTING:null,\nREMOVE_NODE:null,\nTEXT_CONTENT:null});\n\n\nmodule.exports = ReactMultiChildUpdateTypes;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChildUpdateTypes\n */\n\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\n/**\n * When a component's children are updated, a series of update configuration\n * objects are created in order to batch and serialize the required changes.\n *\n * Enumerates all the possible types of update configurations.\n *\n * @internal\n */\nvar ReactMultiChildUpdateTypes = keyMirror({\n INSERT_MARKUP: null,\n MOVE_EXISTING: null,\n REMOVE_NODE: null,\n TEXT_CONTENT: null\n});\n\nmodule.exports = ReactMultiChildUpdateTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChildUpdateTypes.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeReconcileTransaction.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar CallbackQueue=require('CallbackQueue');\nvar PooledClass=require('PooledClass');\nvar Transaction=require('Transaction');\n\n\n\n\n\nvar ON_DOM_READY_QUEUEING={\n\n\n\ninitialize:function(){\nthis.reactMountReady.reset();},\n\n\n\n\n\nclose:function(){\nthis.reactMountReady.notifyAll();}};\n\n\n\n\n\n\n\n\nvar TRANSACTION_WRAPPERS=[ON_DOM_READY_QUEUEING];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ReactNativeReconcileTransaction(){\nthis.reinitializeTransaction();\nthis.reactMountReady = CallbackQueue.getPooled(null);}\n\n\nvar Mixin={\n\n\n\n\n\n\n\ngetTransactionWrappers:function(){\nreturn TRANSACTION_WRAPPERS;},\n\n\n\n\n\n\ngetReactMountReady:function(){\nreturn this.reactMountReady;},\n\n\n\n\n\n\ndestructor:function(){\nCallbackQueue.release(this.reactMountReady);\nthis.reactMountReady = null;}};\n\n\n\nObject.assign(\nReactNativeReconcileTransaction.prototype,\nTransaction.Mixin,\nReactNativeReconcileTransaction,\nMixin);\n\n\nPooledClass.addPoolingTo(ReactNativeReconcileTransaction);\n\nmodule.exports = ReactNativeReconcileTransaction;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeReconcileTransaction\n * @flow\n */\n'use strict';\n\nvar CallbackQueue = require('CallbackQueue');\nvar PooledClass = require('PooledClass');\nvar Transaction = require('Transaction');\n\n/**\n * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks during\n * the performing of the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function() {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function() {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [ON_DOM_READY_QUEUEING];\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactNativeReconcileTransaction\n */\nfunction ReactNativeReconcileTransaction() {\n this.reinitializeTransaction();\n this.reactMountReady = CallbackQueue.getPooled(null);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap proceedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function() {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n * TODO: convert to ReactMountReady\n */\n getReactMountReady: function() {\n return this.reactMountReady;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be resused.\n */\n destructor: function() {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\nObject.assign(\n ReactNativeReconcileTransaction.prototype,\n Transaction.Mixin,\n ReactNativeReconcileTransaction,\n Mixin\n);\n\nPooledClass.addPoolingTo(ReactNativeReconcileTransaction);\n\nmodule.exports = ReactNativeReconcileTransaction;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeReconcileTransaction.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalInteractionHandler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar InteractionManager=require('InteractionManager');\n\n\n\nvar interactionHandle=null;\n\nvar ReactNativeGlobalInteractionHandler={\nonChange:function(numberActiveTouches){\nif(numberActiveTouches === 0){\nif(interactionHandle){\nInteractionManager.clearInteractionHandle(interactionHandle);\ninteractionHandle = null;}}else \n\nif(!interactionHandle){\ninteractionHandle = InteractionManager.createInteractionHandle();}}};\n\n\n\n\nmodule.exports = ReactNativeGlobalInteractionHandler;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeGlobalInteractionHandler\n * @flow\n */\n'use strict';\n\nvar InteractionManager = require('InteractionManager');\n\n// Interaction handle is created/cleared when responder is granted or\n// released/terminated.\nvar interactionHandle = null;\n\nvar ReactNativeGlobalInteractionHandler = {\n onChange: function(numberActiveTouches: number) {\n if (numberActiveTouches === 0) {\n if (interactionHandle) {\n InteractionManager.clearInteractionHandle(interactionHandle);\n interactionHandle = null;\n }\n } else if (!interactionHandle) {\n interactionHandle = InteractionManager.createInteractionHandle();\n }\n }\n};\n\nmodule.exports = ReactNativeGlobalInteractionHandler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalInteractionHandler.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionManager.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ErrorUtils=require('ErrorUtils');\nvar EventEmitter=require('EventEmitter');\nvar Set=require('Set');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar setImmediate=require('setImmediate');\n\n\n\nvar _emitter=new EventEmitter();\nvar _interactionSet=new Set();\nvar _addInteractionSet=new Set();\nvar _deleteInteractionSet=new Set();\nvar _nextUpdateHandle=null;\nvar _queue=[];\nvar _inc=0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar InteractionManager={\nEvents:keyMirror({\ninteractionStart:true,\ninteractionComplete:true}),\n\n\n\n\n\nrunAfterInteractions:function(callback){\ninvariant(\ntypeof callback === 'function',\n'Must specify a function to schedule.');\n\nscheduleUpdate();\n_queue.push(callback);},\n\n\n\n\n\ncreateInteractionHandle:function(){\nscheduleUpdate();\nvar handle=++_inc;\n_addInteractionSet.add(handle);\nreturn handle;},\n\n\n\n\n\nclearInteractionHandle:function(handle){\ninvariant(\n!!handle,\n'Must provide a handle to clear.');\n\nscheduleUpdate();\n_addInteractionSet.delete(handle);\n_deleteInteractionSet.add(handle);},\n\n\naddListener:_emitter.addListener.bind(_emitter)};\n\n\n\n\n\nfunction scheduleUpdate(){\nif(!_nextUpdateHandle){\n_nextUpdateHandle = setImmediate(processUpdate);}}\n\n\n\n\n\n\nfunction processUpdate(){\n_nextUpdateHandle = null;\n\nvar interactionCount=_interactionSet.size;\n_addInteractionSet.forEach(function(handle){return (\n_interactionSet.add(handle));});\n\n_deleteInteractionSet.forEach(function(handle){return (\n_interactionSet.delete(handle));});\n\nvar nextInteractionCount=_interactionSet.size;\n\nif(interactionCount !== 0 && nextInteractionCount === 0){\n\n_emitter.emit(InteractionManager.Events.interactionComplete);}else \nif(interactionCount === 0 && nextInteractionCount !== 0){\n\n_emitter.emit(InteractionManager.Events.interactionStart);}\n\n\n\nif(nextInteractionCount === 0){\nvar queue=_queue;\n_queue = [];\nqueue.forEach(function(callback){\nErrorUtils.applyWithGuard(callback);});}\n\n\n\n_addInteractionSet.clear();\n_deleteInteractionSet.clear();}\n\n\nmodule.exports = InteractionManager;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InteractionManager\n * @flow\n */\n'use strict';\n\nvar ErrorUtils = require('ErrorUtils');\nvar EventEmitter = require('EventEmitter');\nvar Set = require('Set');\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar setImmediate = require('setImmediate');\n\ntype Handle = number;\n\nvar _emitter = new EventEmitter();\nvar _interactionSet = new Set();\nvar _addInteractionSet = new Set();\nvar _deleteInteractionSet = new Set();\nvar _nextUpdateHandle = null;\nvar _queue = [];\nvar _inc = 0;\n\n/**\n * InteractionManager allows long-running work to be scheduled after any\n * interactions/animations have completed. In particular, this allows JavaScript\n * animations to run smoothly.\n *\n * Applications can schedule tasks to run after interactions with the following:\n *\n * ```\n * InteractionManager.runAfterInteractions(() => {\n * // ...long-running synchronous task...\n * });\n * ```\n *\n * Compare this to other scheduling alternatives:\n *\n * - requestAnimationFrame(): for code that animates a view over time.\n * - setImmediate/setTimeout(): run code later, note this may delay animations.\n * - runAfterInteractions(): run code later, without delaying active animations.\n *\n * The touch handling system considers one or more active touches to be an\n * 'interaction' and will delay `runAfterInteractions()` callbacks until all\n * touches have ended or been cancelled.\n *\n * InteractionManager also allows applications to register animations by\n * creating an interaction 'handle' on animation start, and clearing it upon\n * completion:\n *\n * ```\n * var handle = InteractionManager.createInteractionHandle();\n * // run animation... (`runAfterInteractions` tasks are queued)\n * // later, on animation completion:\n * InteractionManager.clearInteractionHandle(handle);\n * // queued tasks run if all handles were cleared\n * ```\n */\nvar InteractionManager = {\n Events: keyMirror({\n interactionStart: true,\n interactionComplete: true,\n }),\n\n /**\n * Schedule a function to run after all interactions have completed.\n */\n runAfterInteractions(callback: Function) {\n invariant(\n typeof callback === 'function',\n 'Must specify a function to schedule.'\n );\n scheduleUpdate();\n _queue.push(callback);\n },\n\n /**\n * Notify manager that an interaction has started.\n */\n createInteractionHandle(): Handle {\n scheduleUpdate();\n var handle = ++_inc;\n _addInteractionSet.add(handle);\n return handle;\n },\n\n /**\n * Notify manager that an interaction has completed.\n */\n clearInteractionHandle(handle: Handle) {\n invariant(\n !!handle,\n 'Must provide a handle to clear.'\n );\n scheduleUpdate();\n _addInteractionSet.delete(handle);\n _deleteInteractionSet.add(handle);\n },\n\n addListener: _emitter.addListener.bind(_emitter),\n};\n\n/**\n * Schedule an asynchronous update to the interaction state.\n */\nfunction scheduleUpdate() {\n if (!_nextUpdateHandle) {\n _nextUpdateHandle = setImmediate(processUpdate);\n }\n}\n\n/**\n * Notify listeners, process queue, etc\n */\nfunction processUpdate() {\n _nextUpdateHandle = null;\n\n var interactionCount = _interactionSet.size;\n _addInteractionSet.forEach(handle =>\n _interactionSet.add(handle)\n );\n _deleteInteractionSet.forEach(handle =>\n _interactionSet.delete(handle)\n );\n var nextInteractionCount = _interactionSet.size;\n\n if (interactionCount !== 0 && nextInteractionCount === 0) {\n // transition from 1+ --> 0 interactions\n _emitter.emit(InteractionManager.Events.interactionComplete);\n } else if (interactionCount === 0 && nextInteractionCount !== 0) {\n // transition from 0 --> 1+ interactions\n _emitter.emit(InteractionManager.Events.interactionStart);\n }\n\n // process the queue regardless of a transition\n if (nextInteractionCount === 0) {\n var queue = _queue;\n _queue = [];\n queue.forEach(callback => {\n ErrorUtils.applyWithGuard(callback);\n });\n }\n\n _addInteractionSet.clear();\n _deleteInteractionSet.clear();\n}\n\nmodule.exports = InteractionManager;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionManager.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Set.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar toIterator=require('toIterator');\nvar _shouldPolyfillES6Collection=require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global,undefined){\n\n\n\n\n\nif(!_shouldPolyfillES6Collection('Set')){\nreturn global.Set;}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nSet=(function(){\n\n\n\n\n\n\n\n\n\n\nfunction Set(iterable){_classCallCheck(this,Set);\nif(this == null || \ntypeof this !== 'object' && typeof this !== 'function'){\nthrow new TypeError('Wrong set object type.');}\n\n\ninitSet(this);\n\nif(iterable != null){\nvar it=toIterator(iterable);\nvar next;\nwhile(!(next = it.next()).done) {\nthis.add(next.value);}}}_createClass(Set,[{key:'add',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction add(value){\nthis._map.set(value,value);\nthis.size = this._map.size;\nreturn this;}},{key:'clear',value:\n\n\n\n\n\n\n\nfunction clear(){\ninitSet(this);}},{key:'delete',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction _delete(value){\nvar ret=this._map.delete(value);\nthis.size = this._map.size;\nreturn ret;}},{key:'entries',value:\n\n\n\n\n\n\n\nfunction entries(){\nreturn this._map.entries();}},{key:'forEach',value:\n\n\n\n\n\n\n\n\n\nfunction forEach(callback){\nvar thisArg=arguments[1];\nvar it=this._map.keys();\nvar next;\nwhile(!(next = it.next()).done) {\ncallback.call(thisArg,next.value,next.value,this);}}},{key:'has',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction has(value){\nreturn this._map.has(value);}},{key:'values',value:\n\n\n\n\n\n\n\nfunction values(){\nreturn this._map.values();}}]);return Set;})();\n\n\n\n\nSet.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values;\n\n\nSet.prototype.keys = Set.prototype.values;\n\nfunction initSet(set){\nset._map = new Map();\nset.size = set._map.size;}\n\n\nreturn Set;})(\nFunction('return this')());","sourceCode":"/**\n * @generated SignedSource<<1fe20877e83ba5d4d0ea68ab240df21c>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n * @providesModule Set\n * @preventMunge\n * @typechecks\n */\n\nvar Map = require('Map');\nvar toIterator = require('toIterator');\nvar _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n // These checks are adapted from es6-shim https://fburl.com/34437854\n if (!_shouldPolyfillES6Collection('Set')) {\n return global.Set;\n }\n\n /**\n * == ES6 Set Collection ==\n *\n * This module is meant to implement a Set collection as described in chapter\n * 23.2 of the ES6 specification.\n *\n * Set objects are collections of unique values. Where values can be any\n * JavaScript value.\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys. @see Map module for more on this.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var set = new set(iterable);\n *\n * set.set(value);\n * set.has(value); // true\n * set.delete(value); // true\n *\n * var iterator = set.keys();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = set.entries();\n * iterator.next(); // {value: [value, value], done: false}\n *\n * set.forEach(function(value, value){ this === thisArg }, thisArg);\n *\n * set.clear(); // resets set.\n */\n\n class Set {\n\n /**\n * 23.2.1.1\n *\n * Takes an optional `iterable` (which is basically any object that\n * implements a Symbol.iterator (@@iterator) method). That is a collection\n * of values used to instantiate the set.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (this == null ||\n (typeof this !== 'object' && typeof this !== 'function')) {\n throw new TypeError('Wrong set object type.');\n }\n\n initSet(this);\n\n if (iterable != null) {\n var it = toIterator(iterable);\n var next;\n while (!(next = it.next()).done) {\n this.add(next.value);\n }\n }\n }\n\n /**\n * 23.2.3.1\n *\n * If it doesn't already exist in the collection a `value` is added.\n *\n * @param {*} value\n * @return {set}\n */\n add(value) {\n this._map.set(value, value);\n this.size = this._map.size;\n return this;\n }\n\n /**\n * 23.2.3.2\n *\n * Clears the set.\n */\n clear() {\n initSet(this);\n }\n\n /**\n * 23.2.3.4\n *\n * Deletes a `value` from the collection if it exists.\n * Returns true if the value was found and deleted and false otherwise.\n *\n * @param {*} value\n * @return {boolean}\n */\n delete(value) {\n var ret = this._map.delete(value);\n this.size = this._map.size;\n return ret;\n }\n\n /**\n * 23.2.3.5\n *\n * Returns an iterator over a collection of [value, value] tuples.\n */\n entries() {\n return this._map.entries();\n }\n\n /**\n * 23.2.3.6\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {function} callback\n */\n forEach(callback) {\n var thisArg = arguments[1];\n var it = this._map.keys();\n var next;\n while (!(next = it.next()).done) {\n callback.call(thisArg, next.value, next.value, this);\n }\n }\n\n /**\n * 23.2.3.7\n *\n * Iterate over the collection calling `callback` with (value, value, set).\n *\n * @param {*} value\n * @return {boolean}\n */\n has(value) {\n return this._map.has(value);\n }\n\n /**\n * 23.2.3.7\n *\n * Returns an iterator over the colleciton of values.\n */\n values() {\n return this._map.values();\n }\n }\n\n // 23.2.3.11\n Set.prototype[toIterator.ITERATOR_SYMBOL] = Set.prototype.values;\n\n // 23.2.3.7\n Set.prototype.keys = Set.prototype.values;\n\n function initSet(set) {\n set._map = new Map();\n set.size = set._map.size;\n }\n\n return Set;\n})(/* jslint evil: true */ Function('return this')());\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Set.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Map.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar guid=require('guid');\nvar isNode=require('isNode');\nvar toIterator=require('toIterator');\nvar _shouldPolyfillES6Collection=require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global,undefined){\n\n\n\n\nif(!_shouldPolyfillES6Collection('Map')){\nreturn global.Map;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KIND_KEY='key';\nvar KIND_VALUE='value';\nvar KIND_KEY_VALUE='key+value';\n\n\n\nvar KEY_PREFIX='$map_';\n\n\n\nvar SECRET_SIZE_PROP;\nif(__DEV__){\nSECRET_SIZE_PROP = '$size' + guid();}\n\n\n\nvar OLD_IE_HASH_PREFIX='IE_HASH_';var \n\nMap=(function(){\n\n\n\n\n\n\n\n\n\n\nfunction Map(iterable){_classCallCheck(this,Map);\nif(!isObject(this)){\nthrow new TypeError('Wrong map object type.');}\n\n\ninitMap(this);\n\nif(iterable != null){\nvar it=toIterator(iterable);\nvar next;\nwhile(!(next = it.next()).done) {\nif(!isObject(next.value)){\nthrow new TypeError('Expected iterable items to be pair objects.');}\n\nthis.set(next.value[0],next.value[1]);}}}_createClass(Map,[{key:'clear',value:\n\n\n\n\n\n\n\n\nfunction clear(){\ninitMap(this);}},{key:'has',value:\n\n\n\n\n\n\n\n\n\nfunction has(key){\nvar index=getIndex(this,key);\nreturn !!(index != null && this._mapData[index]);}},{key:'set',value:\n\n\n\n\n\n\n\n\n\n\nfunction set(key,value){\nvar index=getIndex(this,key);\n\nif(index != null && this._mapData[index]){\nthis._mapData[index][1] = value;}else \n{\nindex = this._mapData.push([\nkey,\nvalue]) - \n1;\nsetIndex(this,key,index);\nif(__DEV__){\nthis[SECRET_SIZE_PROP] += 1;}else \n{\nthis.size += 1;}}\n\n\n\nreturn this;}},{key:'get',value:\n\n\n\n\n\n\n\n\n\nfunction get(key){\nvar index=getIndex(this,key);\nif(index == null){\nreturn undefined;}else \n{\nreturn this._mapData[index][1];}}},{key:'delete',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction _delete(key){\nvar index=getIndex(this,key);\nif(index != null && this._mapData[index]){\nsetIndex(this,key,undefined);\nthis._mapData[index] = undefined;\nif(__DEV__){\nthis[SECRET_SIZE_PROP] -= 1;}else \n{\nthis.size -= 1;}\n\nreturn true;}else \n{\nreturn false;}}},{key:'entries',value:\n\n\n\n\n\n\n\n\n\n\nfunction entries(){\nreturn new MapIterator(this,KIND_KEY_VALUE);}},{key:'keys',value:\n\n\n\n\n\n\n\n\nfunction keys(){\nreturn new MapIterator(this,KIND_KEY);}},{key:'values',value:\n\n\n\n\n\n\n\n\nfunction values(){\nreturn new MapIterator(this,KIND_VALUE);}},{key:'forEach',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction forEach(callback,thisArg){\nif(typeof callback !== 'function'){\nthrow new TypeError('Callback must be callable.');}\n\n\nvar boundCallback=callback.bind(thisArg || undefined);\nvar mapData=this._mapData;\n\n\n\n\nfor(var i=0;i < mapData.length;i++) {\nvar entry=mapData[i];\nif(entry != null){\nboundCallback(entry[1],entry[0],this);}}}}]);return Map;})();\n\n\n\n\n\n\nMap.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries;var \n\nMapIterator=(function(){\n\n\n\n\n\n\n\n\n\nfunction MapIterator(map,kind){_classCallCheck(this,MapIterator);\nif(!(isObject(map) && map['_mapData'])){\nthrow new TypeError('Object is not a map.');}\n\n\nif([KIND_KEY,KIND_KEY_VALUE,KIND_VALUE].indexOf(kind) === -1){\nthrow new Error('Invalid iteration kind.');}\n\n\nthis._map = map;\nthis._nextIndex = 0;\nthis._kind = kind;}_createClass(MapIterator,[{key:'next',value:\n\n\n\n\n\n\n\n\nfunction next(){\nif(!this instanceof Map){\nthrow new TypeError('Expected to be called on a MapIterator.');}\n\n\nvar map=this._map;\nvar index=this._nextIndex;\nvar kind=this._kind;\n\nif(map == null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar entries=map['_mapData'];\n\nwhile(index < entries.length) {\nvar record=entries[index];\n\nindex += 1;\nthis._nextIndex = index;\n\nif(record){\nif(kind === KIND_KEY){\nreturn createIterResultObject(record[0],false);}else \nif(kind === KIND_VALUE){\nreturn createIterResultObject(record[1],false);}else \nif(kind){\nreturn createIterResultObject(record,false);}}}\n\n\n\n\nthis._map = undefined;\n\nreturn createIterResultObject(undefined,true);}}]);return MapIterator;})();\n\n\n\n\n\n\nMapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function(){\nreturn this;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getIndex(map,key){\nif(isObject(key)){\nvar hash=getHash(key);\nreturn map._objectIndex[hash];}else \n{\nvar prefixedKey=KEY_PREFIX + key;\nif(typeof key === 'string'){\nreturn map._stringIndex[prefixedKey];}else \n{\nreturn map._otherIndex[prefixedKey];}}}\n\n\n\n\n\n\n\n\n\n\nfunction setIndex(map,key,index){\nvar shouldDelete=index == null;\n\nif(isObject(key)){\nvar hash=getHash(key);\nif(shouldDelete){\ndelete map._objectIndex[hash];}else \n{\nmap._objectIndex[hash] = index;}}else \n\n{\nvar prefixedKey=KEY_PREFIX + key;\nif(typeof key === 'string'){\nif(shouldDelete){\ndelete map._stringIndex[prefixedKey];}else \n{\nmap._stringIndex[prefixedKey] = index;}}else \n\n{\nif(shouldDelete){\ndelete map._otherIndex[prefixedKey];}else \n{\nmap._otherIndex[prefixedKey] = index;}}}}\n\n\n\n\n\n\n\n\n\n\nfunction initMap(map){\n\n\n\n\n\n\nmap._mapData = [];\n\n\n\n\n\n\n\nmap._objectIndex = {};\n\n\nmap._stringIndex = {};\n\n\nmap._otherIndex = {};\n\n\n\n\n\n\n\nif(__DEV__){\nif(isES5){\n\n\n\nif(map.hasOwnProperty(SECRET_SIZE_PROP)){\nmap[SECRET_SIZE_PROP] = 0;}else \n{\nObject.defineProperty(map,SECRET_SIZE_PROP,{\nvalue:0,\nwritable:true});\n\nObject.defineProperty(map,'size',{\nset:function(v){\nconsole.error(\n'PLEASE FIX ME: You are changing the map size property which ' + \n'should not be writable and will break in production.');\n\nthrow new Error('The map size property is not writable.');},\n\nget:function(){return map[SECRET_SIZE_PROP];}});}\n\n\n\n\nreturn;}}\n\n\n\n\n\nmap.size = 0;}\n\n\n\n\n\n\n\n\nfunction isObject(o){\nreturn o != null && (typeof o === 'object' || typeof o === 'function');}\n\n\n\n\n\n\n\n\n\nfunction createIterResultObject(value,done){\nreturn {value:value,done:done};}\n\n\n\nvar isES5=(function(){\ntry{\nObject.defineProperty({},'x',{});\nreturn true;}\ncatch(e) {\nreturn false;}})();\n\n\n\n\n\n\n\n\n\nfunction isExtensible(o){\nif(!isES5){\nreturn true;}else \n{\nreturn Object.isExtensible(o);}}\n\n\n\n\n\n\n\n\n\n\n\nfunction getIENodeHash(node){\nvar uniqueID;\nswitch(node.nodeType){\ncase 1:\nuniqueID = node.uniqueID;\nbreak;\ncase 9:\nuniqueID = node.documentElement.uniqueID;\nbreak;\ndefault:\nreturn null;}\n\n\nif(uniqueID){\nreturn OLD_IE_HASH_PREFIX + uniqueID;}else \n{\nreturn null;}}\n\n\n\nvar getHash=(function(){\nvar propIsEnumerable=Object.prototype.propertyIsEnumerable;\nvar hashProperty=guid();\nvar hashCounter=0;\n\n\n\n\n\n\n\nreturn function getHash(o){\nif(o[hashProperty]){\nreturn o[hashProperty];}else \nif(!isES5 && \no.propertyIsEnumerable && \no.propertyIsEnumerable[hashProperty]){\nreturn o.propertyIsEnumerable[hashProperty];}else \nif(!isES5 && \nisNode(o) && \ngetIENodeHash(o)){\nreturn getIENodeHash(o);}else \nif(!isES5 && o[hashProperty]){\nreturn o[hashProperty];}\n\n\nif(isExtensible(o)){\nhashCounter += 1;\nif(isES5){\nObject.defineProperty(o,hashProperty,{\nenumerable:false,\nwritable:false,\nconfigurable:false,\nvalue:hashCounter});}else \n\nif(o.propertyIsEnumerable){\n\n\n\n\no.propertyIsEnumerable = function(){\nreturn propIsEnumerable.apply(this,arguments);};\n\no.propertyIsEnumerable[hashProperty] = hashCounter;}else \nif(isNode(o)){\n\n\n\n\no[hashProperty] = hashCounter;}else \n{\nthrow new Error('Unable to set a non-enumerable property on object.');}\n\nreturn hashCounter;}else \n{\nthrow new Error('Non-extensible objects are not allowed as keys.');}};})();\n\n\n\n\nreturn Map;})(\nFunction('return this')());","sourceCode":"/**\n * @generated SignedSource<<375749f44ce7c0f681fc1297943eaf74>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n * @providesModule Map\n * @preventMunge\n * @typechecks\n */\n\nvar guid = require('guid');\nvar isNode = require('isNode');\nvar toIterator = require('toIterator');\nvar _shouldPolyfillES6Collection = require('_shouldPolyfillES6Collection');\n\nmodule.exports = (function(global, undefined) {\n // Since our implementation is spec-compliant for the most part we can safely\n // delegate to a built-in version if exists and is implemented correctly.\n // Firefox had gotten a few implementation details wrong across different\n // versions so we guard against that.\n if (!_shouldPolyfillES6Collection('Map')) {\n return global.Map;\n }\n\n /**\n * == ES6 Map Collection ==\n *\n * This module is meant to implement a Map collection as described in chapter\n * 23.1 of the ES6 specification.\n *\n * Map objects are collections of key/value pairs where both the keys and\n * values may be arbitrary ECMAScript language values. A distinct key value\n * may only occur in one key/value pair within the Map's collection.\n *\n * https://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-objects\n *\n * There only two -- rather small -- diviations from the spec:\n *\n * 1. The use of frozen objects as keys.\n * We decided not to allow and simply throw an error. The reason being is\n * we store a \"hash\" on the object for fast access to it's place in the\n * internal map entries.\n * If this turns out to be a popular use case it's possible to implement by\n * overiding `Object.freeze` to store a \"hash\" property on the object\n * for later use with the map.\n *\n * 2. The `size` property on a map object is a regular property and not a\n * computed property on the prototype as described by the spec.\n * The reason being is that we simply want to support ES3 environments\n * which doesn't implement computed properties.\n *\n * == Usage ==\n *\n * var map = new Map(iterable);\n *\n * map.set(key, value);\n * map.get(key); // value\n * map.has(key); // true\n * map.delete(key); // true\n *\n * var iterator = map.keys();\n * iterator.next(); // {value: key, done: false}\n *\n * var iterator = map.values();\n * iterator.next(); // {value: value, done: false}\n *\n * var iterator = map.entries();\n * iterator.next(); // {value: [key, value], done: false}\n *\n * map.forEach(function(value, key){ this === thisArg }, thisArg);\n *\n * map.clear(); // resets map.\n */\n\n /**\n * Constants\n */\n\n // Kinds of map iterations 23.1.5.3\n var KIND_KEY = 'key';\n var KIND_VALUE = 'value';\n var KIND_KEY_VALUE = 'key+value';\n\n // In older browsers we can't create a null-prototype object so we have to\n // defend against key collisions with built-in methods.\n var KEY_PREFIX = '$map_';\n\n // This property will be used as the internal size variable to disallow\n // writing and to issue warnings for writings in development.\n var SECRET_SIZE_PROP;\n if (__DEV__) {\n SECRET_SIZE_PROP = '$size' + guid();\n }\n\n // In oldIE we use the DOM Node `uniqueID` property to get create the hash.\n var OLD_IE_HASH_PREFIX = 'IE_HASH_';\n\n class Map {\n\n /**\n * 23.1.1.1\n * Takes an `iterable` which is basically any object that implements a\n * Symbol.iterator (@@iterator) method. The iterable is expected to be a\n * collection of pairs. Each pair is a key/value pair that will be used\n * to instantiate the map.\n *\n * @param {*} iterable\n */\n constructor(iterable) {\n if (!isObject(this)) {\n throw new TypeError('Wrong map object type.');\n }\n\n initMap(this);\n\n if (iterable != null) {\n var it = toIterator(iterable);\n var next;\n while (!(next = it.next()).done) {\n if (!isObject(next.value)) {\n throw new TypeError('Expected iterable items to be pair objects.');\n }\n this.set(next.value[0], next.value[1]);\n }\n }\n }\n\n /**\n * 23.1.3.1\n * Clears the map from all keys and values.\n */\n clear() {\n initMap(this);\n }\n\n /**\n * 23.1.3.7\n * Check if a key exists in the collection.\n *\n * @param {*} key\n * @return {boolean}\n */\n has(key) {\n var index = getIndex(this, key);\n return !!(index != null && this._mapData[index]);\n }\n\n /**\n * 23.1.3.9\n * Adds a key/value pair to the collection.\n *\n * @param {*} key\n * @param {*} value\n * @return {map}\n */\n set(key, value) {\n var index = getIndex(this, key);\n\n if (index != null && this._mapData[index]) {\n this._mapData[index][1] = value;\n } else {\n index = this._mapData.push([\n key,\n value\n ]) - 1;\n setIndex(this, key, index);\n if (__DEV__) {\n this[SECRET_SIZE_PROP] += 1;\n } else {\n this.size += 1;\n }\n }\n\n return this;\n }\n\n /**\n * 23.1.3.6\n * Gets a value associated with a key in the collection.\n *\n * @param {*} key\n * @return {*}\n */\n get(key) {\n var index = getIndex(this, key);\n if (index == null) {\n return undefined;\n } else {\n return this._mapData[index][1];\n }\n }\n\n\n /**\n * 23.1.3.3\n * Delete a key/value from the collection.\n *\n * @param {*} key\n * @return {boolean} Whether the key was found and deleted.\n */\n delete(key) {\n var index = getIndex(this, key);\n if (index != null && this._mapData[index]) {\n setIndex(this, key, undefined);\n this._mapData[index] = undefined;\n if (__DEV__) {\n this[SECRET_SIZE_PROP] -= 1;\n } else {\n this.size -= 1;\n }\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * 23.1.3.4\n * Returns an iterator over the key/value pairs (in the form of an Array) in\n * the collection.\n *\n * @return {MapIterator}\n */\n entries() {\n return new MapIterator(this, KIND_KEY_VALUE);\n }\n\n /**\n * 23.1.3.8\n * Returns an iterator over the keys in the collection.\n *\n * @return {MapIterator}\n */\n keys() {\n return new MapIterator(this, KIND_KEY);\n }\n\n /**\n * 23.1.3.11\n * Returns an iterator over the values pairs in the collection.\n *\n * @return {MapIterator}\n */\n values() {\n return new MapIterator(this, KIND_VALUE);\n }\n\n /**\n * 23.1.3.5\n * Iterates over the key/value pairs in the collection calling `callback`\n * with [value, key, map]. An optional `thisArg` can be passed to set the\n * context when `callback` is called.\n *\n * @param {function} callback\n * @param {?object} thisArg\n */\n forEach(callback, thisArg) {\n if (typeof callback !== 'function') {\n throw new TypeError('Callback must be callable.');\n }\n\n var boundCallback = callback.bind(thisArg || undefined);\n var mapData = this._mapData;\n\n // Note that `mapData.length` should be computed on each iteration to\n // support iterating over new items in the map that were added after the\n // start of the iteration.\n for (var i = 0; i < mapData.length; i++) {\n var entry = mapData[i];\n if (entry != null) {\n boundCallback(entry[1], entry[0], this);\n }\n }\n }\n }\n\n // 23.1.3.12\n Map.prototype[toIterator.ITERATOR_SYMBOL] = Map.prototype.entries;\n\n class MapIterator {\n\n /**\n * 23.1.5.1\n * Create a `MapIterator` for a given `map`. While this class is private it\n * will create objects that will be passed around publicily.\n *\n * @param {map} map\n * @param {string} kind\n */\n constructor(map, kind) {\n if (!(isObject(map) && map['_mapData'])) {\n throw new TypeError('Object is not a map.');\n }\n\n if ([KIND_KEY, KIND_KEY_VALUE, KIND_VALUE].indexOf(kind) === -1) {\n throw new Error('Invalid iteration kind.');\n }\n\n this._map = map;\n this._nextIndex = 0;\n this._kind = kind;\n }\n\n /**\n * 23.1.5.2.1\n * Get the next iteration.\n *\n * @return {object}\n */\n next() {\n if (!this instanceof Map) {\n throw new TypeError('Expected to be called on a MapIterator.');\n }\n\n var map = this._map;\n var index = this._nextIndex;\n var kind = this._kind;\n\n if (map == null) {\n return createIterResultObject(undefined, true);\n }\n\n var entries = map['_mapData'];\n\n while (index < entries.length) {\n var record = entries[index];\n\n index += 1;\n this._nextIndex = index;\n\n if (record) {\n if (kind === KIND_KEY) {\n return createIterResultObject(record[0], false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(record[1], false);\n } else if (kind) {\n return createIterResultObject(record, false);\n }\n }\n }\n\n this._map = undefined;\n\n return createIterResultObject(undefined, true);\n }\n }\n\n // We can put this in the class definition once we have computed props\n // transform.\n // 23.1.5.2.2\n MapIterator.prototype[toIterator.ITERATOR_SYMBOL] = function() {\n return this;\n }\n\n /**\n * Helper Functions.\n */\n\n /**\n * Return an index to map.[[MapData]] array for a given Key.\n *\n * @param {map} map\n * @param {*} key\n * @return {?number}\n */\n function getIndex(map, key) {\n if (isObject(key)) {\n var hash = getHash(key);\n return map._objectIndex[hash];\n } else {\n var prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n return map._stringIndex[prefixedKey];\n } else {\n return map._otherIndex[prefixedKey];\n }\n }\n }\n\n /**\n * Setup an index that refer to the key's location in map.[[MapData]].\n *\n * @param {map} map\n * @param {*} key\n */\n function setIndex(map, key, index) {\n var shouldDelete = index == null;\n\n if (isObject(key)) {\n var hash = getHash(key);\n if (shouldDelete) {\n delete map._objectIndex[hash];\n } else {\n map._objectIndex[hash] = index;\n }\n } else {\n var prefixedKey = KEY_PREFIX + key;\n if (typeof key === 'string') {\n if (shouldDelete) {\n delete map._stringIndex[prefixedKey];\n } else {\n map._stringIndex[prefixedKey] = index;\n }\n } else {\n if (shouldDelete) {\n delete map._otherIndex[prefixedKey];\n } else {\n map._otherIndex[prefixedKey] = index;\n }\n }\n }\n }\n\n /**\n * Instantiate a map with internal slots.\n *\n * @param {map} map\n */\n function initMap(map) {\n // Data structure design inspired by Traceur's Map implementation.\n // We maintain an internal array for all the entries. The array is needed\n // to remember order. However, to have a reasonable HashMap performance\n // i.e. O(1) for insertion, deletion, and retrieval. We maintain indices\n // in objects for fast look ups. Indices are split up according to data\n // types to avoid collisions.\n map._mapData = [];\n\n // Object index maps from an object \"hash\" to index. The hash being a unique\n // property of our choosing that we associate with the object. Association\n // is done by ways of keeping a non-enumerable property on the object.\n // Ideally these would be `Object.create(null)` objects but since we're\n // trying to support ES3 we'll have to gaurd against collisions using\n // prefixes on the keys rather than rely on null prototype objects.\n map._objectIndex = {};\n\n // String index maps from strings to index.\n map._stringIndex = {};\n\n // Numbers, booleans, undefined, and null.\n map._otherIndex = {};\n\n // Unfortunately we have to support ES3 and cannot have `Map.prototype.size`\n // be a getter method but just a regular method. The biggest problem with\n // this is safety. Clients can change the size property easily and possibly\n // without noticing (e.g. `if (map.size = 1) {..}` kind of typo). What we\n // can do to mitigate use getters and setters in development to disallow\n // and issue a warning for changing the `size` property.\n if (__DEV__) {\n if (isES5) {\n // If the `SECRET_SIZE_PROP` property is already defined then we're not\n // in the first call to `initMap` (e.g. coming from `map.clear()`) so\n // all we need to do is reset the size without defining the properties.\n if (map.hasOwnProperty(SECRET_SIZE_PROP)) {\n map[SECRET_SIZE_PROP] = 0;\n } else {\n Object.defineProperty(map, SECRET_SIZE_PROP, {\n value: 0,\n writable: true\n });\n Object.defineProperty(map, 'size', {\n set: (v) => {\n console.error(\n 'PLEASE FIX ME: You are changing the map size property which ' +\n 'should not be writable and will break in production.'\n );\n throw new Error('The map size property is not writable.');\n },\n get: () => map[SECRET_SIZE_PROP]\n });\n }\n\n // NOTE: Early return to implement immutable `.size` in DEV.\n return;\n }\n }\n\n // This is a diviation from the spec. `size` should be a getter on\n // `Map.prototype`. However, we have to support IE8.\n map.size = 0;\n }\n\n /**\n * Check if something is an object.\n *\n * @param {*} o\n * @return {boolean}\n */\n function isObject(o) {\n return o != null && (typeof o === 'object' || typeof o === 'function');\n }\n\n /**\n * Create an iteration object.\n *\n * @param {*} value\n * @param {boolean} done\n * @return {object}\n */\n function createIterResultObject(value, done) {\n return {value, done};\n }\n\n // Are we in a legit ES5 environment. Spoiler alert: that doesn't include IE8.\n var isES5 = (function() {\n try {\n Object.defineProperty({}, 'x', {});\n return true;\n } catch(e) {\n return false;\n }\n })();\n\n /**\n * Check if an object can be extended.\n *\n * @param {object|array|function|regexp} o\n * @return {boolean}\n */\n function isExtensible(o) {\n if (!isES5) {\n return true;\n } else {\n return Object.isExtensible(o);\n }\n }\n\n /**\n * IE has a `uniqueID` set on every DOM node. So we construct the hash from\n * this uniqueID to avoid memory leaks and the IE cloneNode bug where it\n * clones properties in addition to the attributes.\n *\n * @param {object} node\n * @return {?string}\n */\n function getIENodeHash(node) {\n var uniqueID;\n switch (node.nodeType) {\n case 1: // Element\n uniqueID = node.uniqueID;\n break;\n case 9: // Document\n uniqueID = node.documentElement.uniqueID;\n break;\n default:\n return null;\n }\n\n if (uniqueID) {\n return OLD_IE_HASH_PREFIX + uniqueID;\n } else {\n return null;\n }\n }\n\n var getHash = (function() {\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n var hashProperty = guid();\n var hashCounter = 0;\n\n /**\n * Get the \"hash\" associated with an object.\n *\n * @param {object|array|function|regexp} o\n * @return {number}\n */\n return function getHash(o) {\n if (o[hashProperty]) {\n return o[hashProperty];\n } else if (!isES5 &&\n o.propertyIsEnumerable &&\n o.propertyIsEnumerable[hashProperty]) {\n return o.propertyIsEnumerable[hashProperty];\n } else if (!isES5 &&\n isNode(o) &&\n getIENodeHash(o)) {\n return getIENodeHash(o);\n } else if (!isES5 && o[hashProperty]) {\n return o[hashProperty];\n }\n\n if (isExtensible(o)) {\n hashCounter += 1;\n if (isES5) {\n Object.defineProperty(o, hashProperty, {\n enumerable: false,\n writable: false,\n configurable: false,\n value: hashCounter\n });\n } else if (o.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Addiotionally, since this is a function it\n // will not show up in `JSON.stringify` which is what we want.\n o.propertyIsEnumerable = function() {\n return propIsEnumerable.apply(this, arguments);\n };\n o.propertyIsEnumerable[hashProperty] = hashCounter;\n } else if (isNode(o)) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `hashProperty` on the node\n // itself.\n o[hashProperty] = hashCounter;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n return hashCounter;\n } else {\n throw new Error('Non-extensible objects are not allowed as keys.');\n }\n };\n })();\n\n return Map;\n})(/* jslint evil: true */ Function('return this')());\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/Map.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/guid.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nguid(){\nreturn 'f' + (Math.random() * (1 << 30)).toString(16).replace('.','');}\n\n\nmodule.exports = guid;","sourceCode":"/**\n * @generated SignedSource<<4425c6f5a34b56ee4707e090f43fd075>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * Module that provides a function for creating a unique identifier.\n * The returned value does not conform to the GUID standard, but should\n * be globally unique in the context of the browser.\n *\n * @providesModule guid\n *\n */\n\n/*jshint bitwise: false*/\n\nfunction guid() {\n return 'f' + (Math.random() * (1 << 30)).toString(16).replace('.', '');\n}\n\nmodule.exports = guid;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/guid.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isNode.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nisNode(object){\nreturn !!(object && (\ntypeof Node === 'function'?object instanceof Node:\ntypeof object === 'object' && \ntypeof object.nodeType === 'number' && \ntypeof object.nodeName === 'string'));}\n\n\n\nmodule.exports = isNode;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isNode\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n return !!(object && (\n typeof Node === 'function' ? object instanceof Node :\n typeof object === 'object' &&\n typeof object.nodeType === 'number' &&\n typeof object.nodeName === 'string'\n ));\n}\n\nmodule.exports = isNode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isNode.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/toIterator.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KIND_KEY='key';\nvar KIND_VALUE='value';\nvar KIND_KEY_VAL='key+value';\n\nvar ITERATOR_SYMBOL=typeof Symbol === 'function'?\nSymbol.iterator:\n'@@iterator';\n\nvar toIterator=(function(){\nif(!(Array.prototype[ITERATOR_SYMBOL] && \nString.prototype[ITERATOR_SYMBOL])){\n\nreturn (function(){var \nArrayIterator=(function(){\n\nfunction ArrayIterator(array,kind){_classCallCheck(this,ArrayIterator);\nif(!Array.isArray(array)){\nthrow new TypeError('Object is not an Array');}\n\nthis._iteratedObject = array;\nthis._kind = kind;\nthis._nextIndex = 0;}_createClass(ArrayIterator,[{key:'next',value:\n\n\n\nfunction next(){\nif(!this instanceof ArrayIterator){\nthrow new TypeError('Object is not an ArrayIterator');}\n\n\nif(this._iteratedObject == null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar array=this._iteratedObject;\nvar len=this._iteratedObject.length;\nvar index=this._nextIndex;\nvar kind=this._kind;\n\nif(index >= len){\nthis._iteratedObject = undefined;\nreturn createIterResultObject(undefined,true);}\n\n\nthis._nextIndex = index + 1;\n\nif(kind === KIND_KEY){\nreturn createIterResultObject(index,false);}else \nif(kind === KIND_VALUE){\nreturn createIterResultObject(array[index],false);}else \nif(kind === KIND_KEY_VAL){\nreturn createIterResultObject([index,array[index]],false);}}},{key:\n\n\n\n\n'@@iterator',value:function iterator(){\nreturn this;}}]);return ArrayIterator;})();var \n\n\n\nStringIterator=(function(){\n\nfunction StringIterator(string){_classCallCheck(this,StringIterator);\nif(typeof string !== 'string'){\nthrow new TypeError('Object is not a string');}\n\nthis._iteratedString = string;\nthis._nextIndex = 0;}_createClass(StringIterator,[{key:'next',value:\n\n\n\nfunction next(){\nif(!this instanceof StringIterator){\nthrow new TypeError('Object is not a StringIterator');}\n\n\nif(this._iteratedString == null){\nreturn createIterResultObject(undefined,true);}\n\n\nvar index=this._nextIndex;\nvar s=this._iteratedString;\nvar len=s.length;\n\nif(index >= len){\nthis._iteratedString = undefined;\nreturn createIterResultObject(undefined,true);}\n\n\nvar ret;\nvar first=s.charCodeAt(index);\n\nif(first < 0xD800 || first > 0xDBFF || index + 1 === len){\nret = s[index];}else \n{\nvar second=s.charCodeAt(index + 1);\nif(second < 0xDC00 || second > 0xDFFF){\nret = s[index];}else \n{\nret = s[index] + s[index + 1];}}\n\n\n\nthis._nextIndex = index + ret.length;\n\nreturn createIterResultObject(ret,false);}},{key:\n\n\n\n'@@iterator',value:function iterator(){\nreturn this;}}]);return StringIterator;})();\n\n\n\n\nfunction createIterResultObject(value,done){\nreturn {value:value,done:done};}\n\n\nreturn function(object,kind){\nif(typeof object === 'string'){\nreturn new StringIterator(object);}else \nif(Array.isArray(object)){\nreturn new ArrayIterator(object,kind || KIND_VALUE);}else \n{\nreturn object[ITERATOR_SYMBOL]();}};})();}else \n\n\n\n{\nreturn function(object){\nreturn object[ITERATOR_SYMBOL]();};}})();\n\n\n\n\n\n\n\n\nObject.assign(toIterator,{\nKIND_KEY:KIND_KEY,\nKIND_VALUE:KIND_VALUE,\nKIND_KEY_VAL:KIND_KEY_VAL,\nITERATOR_SYMBOL:ITERATOR_SYMBOL});\n\n\nmodule.exports = toIterator;","sourceCode":"/**\n * @generated SignedSource<<32241616e13b8a54d1a7baadce8eae5d>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule toIterator\n *\n */\n\n\n/**\n * Given an object `toIterator` will return the itrator for that object. If the\n * object has a `Symbol.iterator` method we just call that. Otherwise we\n * implement the ES6 `Array` and `String` Iterator.\n */\n\n/**\n * Constants\n */\n\nvar KIND_KEY = 'key';\nvar KIND_VALUE = 'value';\nvar KIND_KEY_VAL = 'key+value';\n/*global Symbol: true*/\nvar ITERATOR_SYMBOL = (typeof Symbol === 'function')\n ? Symbol.iterator\n : '@@iterator';\n\nvar toIterator = (function() {\n if (!(Array.prototype[ITERATOR_SYMBOL] &&\n String.prototype[ITERATOR_SYMBOL])) {\n // IIFE to avoid creating classes for no reason because of hoisting.\n return (function() {\n class ArrayIterator {\n // 22.1.5.1 CreateArrayIterator Abstract Operation\n constructor(array, kind) {\n if (!Array.isArray(array)) {\n throw new TypeError('Object is not an Array');\n }\n this._iteratedObject = array;\n this._kind = kind;\n this._nextIndex = 0;\n }\n\n // 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n next() {\n if (!this instanceof ArrayIterator) {\n throw new TypeError('Object is not an ArrayIterator');\n }\n\n if (this._iteratedObject == null) {\n return createIterResultObject(undefined, true);\n }\n\n var array = this._iteratedObject;\n var len = this._iteratedObject.length;\n var index = this._nextIndex;\n var kind = this._kind;\n\n if (index >= len) {\n this._iteratedObject = undefined;\n return createIterResultObject(undefined, true);\n }\n\n this._nextIndex = index + 1;\n\n if (kind === KIND_KEY) {\n return createIterResultObject(index, false);\n } else if (kind === KIND_VALUE) {\n return createIterResultObject(array[index], false);\n } else if (kind === KIND_KEY_VAL) {\n return createIterResultObject([index, array[index]], false);\n }\n }\n\n // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]()\n '@@iterator'() {\n return this;\n }\n }\n\n class StringIterator {\n // 21.1.5.1 CreateStringIterator Abstract Operation\n constructor(string) {\n if (typeof string !== 'string') {\n throw new TypeError('Object is not a string');\n }\n this._iteratedString = string;\n this._nextIndex = 0;\n }\n\n // 21.1.5.2.1 %StringIteratorPrototype%.next()\n next() {\n if (!this instanceof StringIterator) {\n throw new TypeError('Object is not a StringIterator');\n }\n\n if (this._iteratedString == null) {\n return createIterResultObject(undefined, true);\n }\n\n var index = this._nextIndex;\n var s = this._iteratedString;\n var len = s.length;\n\n if (index >= len) {\n this._iteratedString = undefined;\n return createIterResultObject(undefined, true);\n }\n\n var ret;\n var first = s.charCodeAt(index);\n\n if (first < 0xD800 || first > 0xDBFF || index + 1 === len) {\n ret = s[index];\n } else {\n var second = s.charCodeAt(index + 1);\n if (second < 0xDC00 || second > 0xDFFF) {\n ret = s[index];\n } else {\n ret = s[index] + s[index + 1];\n }\n }\n\n this._nextIndex = index + ret.length;\n\n return createIterResultObject(ret, false);\n }\n\n // 21.1.5.2.2 %StringIteratorPrototype%[@@ITERATOR_SYMBOL]()\n '@@iterator'() {\n return this;\n }\n }\n\n // 7.4.7 createIterResultObject(value, done)\n function createIterResultObject(value, done) {\n return {value: value, done: done};\n }\n\n return function(object, kind) {\n if (typeof object === 'string') {\n return new StringIterator(object);\n } else if (Array.isArray(object)) {\n return new ArrayIterator(object, kind || KIND_VALUE);\n } else {\n return object[ITERATOR_SYMBOL]();\n }\n };\n })();\n } else {\n return function(object) {\n return object[ITERATOR_SYMBOL]();\n };\n }\n})();\n\n/**\n * Export constants\n */\n\nObject.assign(toIterator, {\n KIND_KEY,\n KIND_VALUE,\n KIND_KEY_VAL,\n ITERATOR_SYMBOL\n});\n\nmodule.exports = toIterator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/toIterator.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js":{"data":{"code":"var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shouldPolyfillES6Collection(collectionName){\nvar Collection=global[collectionName];\nif(Collection == null){\nreturn true;}\n\n\nvar proto=Collection.prototype;\n\n\nreturn Collection == null || \ntypeof Collection !== 'function' || \ntypeof proto.clear !== 'function' || \nnew Collection().size !== 0 || \ntypeof proto.keys !== 'function' || \ntypeof proto.forEach !== 'function' || \nisCallableWithoutNew(Collection) || \n!supportsSubclassing(Collection);}\n\n\n\n\n\n\n\nfunction supportsSubclassing(Collection){var \nSubCollection=(function(_Collection){_inherits(SubCollection,_Collection);function SubCollection(){_classCallCheck(this,SubCollection);_get(Object.getPrototypeOf(SubCollection.prototype),'constructor',this).apply(this,arguments);}return SubCollection;})(Collection);\ntry{\nvar s=new SubCollection([]);\n\n\ns.size;\nreturn s instanceof Collection;}\ncatch(e) {\nreturn false;}}\n\n\n\n\n\n\n\n\nfunction isCallableWithoutNew(Collection){\ntry{\nCollection();}\ncatch(e) {\nreturn false;}\n\nreturn true;}\n\n\nmodule.exports = shouldPolyfillES6Collection;","sourceCode":"/**\n * @generated SignedSource<<6c1a82d2f5918f03f3f0e5825e1f32f3>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2013-2014 Facebook, Inc.\n * @providesModule _shouldPolyfillES6Collection\n * @preventMunge\n * @typechecks\n */\n\n/**\n * Given a collection class name (Map or Set) return whether it's safe to use\n * the native polyfill.\n *\n * @param {string} collectionName\n */\nfunction shouldPolyfillES6Collection(collectionName) {\n var Collection = global[collectionName];\n if (Collection == null) {\n return true;\n }\n\n var proto = Collection.prototype;\n\n // These checks are adapted from es6-shim https://fburl.com/34437854\n return Collection == null ||\n typeof Collection !== 'function' ||\n typeof proto.clear !== 'function' ||\n new Collection().size !== 0 ||\n typeof proto.keys !== 'function' ||\n typeof proto.forEach !== 'function' ||\n isCallableWithoutNew(Collection) ||\n !supportsSubclassing(Collection);\n}\n\n/**\n * Given a class can we subclass it?\n *\n * @param {function} Collection\n */\nfunction supportsSubclassing(Collection) {\n class SubCollection extends Collection {}\n try {\n var s = (new SubCollection([]));\n // Firefox 32 will throw a type error when any operation is called on a\n // subclass.\n s.size;\n return s instanceof Collection;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Given a constructor can we call it without `new`?\n *\n * @param {function} Collection\n */\nfunction isCallableWithoutNew(Collection) {\n try {\n Collection();\n } catch (e) {\n return false;\n }\n return true;\n}\n\nmodule.exports = shouldPolyfillES6Collection;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalResponderHandler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nvar ReactNativeGlobalResponderHandler={\nonChange:function(from,to,blockNativeResponder){\nif(to !== null){\nRCTUIManager.setJSResponder(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(to),\nblockNativeResponder);}else \n\n{\nRCTUIManager.clearJSResponder();}}};\n\n\n\n\nmodule.exports = ReactNativeGlobalResponderHandler;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeGlobalResponderHandler\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nvar ReactNativeGlobalResponderHandler = {\n onChange: function(from: string, to: string, blockNativeResponder: boolean) {\n if (to !== null) {\n RCTUIManager.setJSResponder(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(to),\n blockNativeResponder\n );\n } else {\n RCTUIManager.clearJSResponder();\n }\n }\n};\n\nmodule.exports = ReactNativeGlobalResponderHandler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeGlobalResponderHandler.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTextComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar assign=require('Object.assign');\n\nvar ReactNativeTextComponent=function(props){};\n\n\n\nassign(ReactNativeTextComponent.prototype,{\n\nconstruct:function(text){\n\nthis._currentElement = text;\nthis._stringText = '' + text;\nthis._rootNodeID = null;},\n\n\nmountComponent:function(rootID,transaction,context){\nthis._rootNodeID = rootID;\nvar tag=ReactNativeTagHandles.allocateTag();\nvar nativeTopRootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\nRCTUIManager.createView(\ntag,\n'RCTRawText',\nnativeTopRootID?ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID]:null,\n{text:this._stringText});\n\nreturn {\nrootNodeID:rootID,\ntag:tag};},\n\n\n\nreceiveComponent:function(nextText,transaction,context){\nif(nextText !== this._currentElement){\nthis._currentElement = nextText;\nvar nextStringText='' + nextText;\nif(nextStringText !== this._stringText){\nthis._stringText = nextStringText;\nRCTUIManager.updateView(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(\nthis._rootNodeID),\n\n'RCTRawText',\n{text:this._stringText});}}},\n\n\n\n\n\nunmountComponent:function(){\nthis._currentElement = null;\nthis._stringText = null;\nthis._rootNodeID = null;}});\n\n\n\n\nmodule.exports = ReactNativeTextComponent;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeTextComponent\n */\n\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar assign = require('Object.assign');\n\nvar ReactNativeTextComponent = function(props) {\n // This constructor and its argument is currently used by mocks.\n};\n\nassign(ReactNativeTextComponent.prototype, {\n\n construct: function(text) {\n // This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n this._rootNodeID = null;\n },\n\n mountComponent: function(rootID, transaction, context) {\n this._rootNodeID = rootID;\n var tag = ReactNativeTagHandles.allocateTag();\n var nativeTopRootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\n RCTUIManager.createView(\n tag,\n 'RCTRawText',\n nativeTopRootID ? ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID] : null,\n {text: this._stringText}\n );\n return {\n rootNodeID: rootID,\n tag: tag,\n };\n },\n\n receiveComponent: function(nextText, transaction, context) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n this._stringText = nextStringText;\n RCTUIManager.updateView(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(\n this._rootNodeID\n ),\n 'RCTRawText',\n {text: this._stringText}\n );\n }\n }\n },\n\n unmountComponent: function() {\n this._currentElement = null;\n this._stringText = null;\n this._rootNodeID = null;\n }\n\n});\n\nmodule.exports = ReactNativeTextComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeTextComponent.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderEventPlugin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginUtils=require('EventPluginUtils');\nvar EventPropagators=require('EventPropagators');\nvar NodeHandle=require('NodeHandle');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ResponderSyntheticEvent=require('ResponderSyntheticEvent');\nvar ResponderTouchHistoryStore=require('ResponderTouchHistoryStore');\n\nvar accumulate=require('accumulate');\nvar invariant=require('invariant');\nvar keyOf=require('keyOf');\n\nvar isStartish=EventPluginUtils.isStartish;\nvar isMoveish=EventPluginUtils.isMoveish;\nvar isEndish=EventPluginUtils.isEndish;\nvar executeDirectDispatch=EventPluginUtils.executeDirectDispatch;\nvar hasDispatches=EventPluginUtils.hasDispatches;\nvar executeDispatchesInOrderStopAtTrue=\nEventPluginUtils.executeDispatchesInOrderStopAtTrue;\n\n\n\n\n\nvar responderID=null;\n\n\n\n\n\nvar trackedTouchCount=0;\n\n\n\n\nvar previousActiveTouches=0;\n\nvar changeResponder=function(nextResponderID,blockNativeResponder){\nvar oldResponderID=responderID;\nresponderID = nextResponderID;\nif(ResponderEventPlugin.GlobalResponderHandler !== null){\nResponderEventPlugin.GlobalResponderHandler.onChange(\noldResponderID,\nnextResponderID,\nblockNativeResponder);}};\n\n\n\n\nvar eventTypes={\n\n\n\n\nstartShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onStartShouldSetResponder:null}),\ncaptured:keyOf({onStartShouldSetResponderCapture:null})}},\n\n\n\n\n\n\n\n\n\n\n\n\nscrollShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onScrollShouldSetResponder:null}),\ncaptured:keyOf({onScrollShouldSetResponderCapture:null})}},\n\n\n\n\n\n\n\n\n\n\nselectionChangeShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onSelectionChangeShouldSetResponder:null}),\ncaptured:keyOf({onSelectionChangeShouldSetResponderCapture:null})}},\n\n\n\n\n\n\n\nmoveShouldSetResponder:{\nphasedRegistrationNames:{\nbubbled:keyOf({onMoveShouldSetResponder:null}),\ncaptured:keyOf({onMoveShouldSetResponderCapture:null})}},\n\n\n\n\n\n\nresponderStart:{registrationName:keyOf({onResponderStart:null})},\nresponderMove:{registrationName:keyOf({onResponderMove:null})},\nresponderEnd:{registrationName:keyOf({onResponderEnd:null})},\nresponderRelease:{registrationName:keyOf({onResponderRelease:null})},\nresponderTerminationRequest:{\nregistrationName:keyOf({onResponderTerminationRequest:null})},\n\nresponderGrant:{registrationName:keyOf({onResponderGrant:null})},\nresponderReject:{registrationName:keyOf({onResponderReject:null})},\nresponderTerminate:{registrationName:keyOf({onResponderTerminate:null})}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction setResponderAndExtractTransfer(\ntopLevelType,\ntopLevelTargetID,\nnativeEvent){\nvar shouldSetEventType=\nisStartish(topLevelType)?eventTypes.startShouldSetResponder:\nisMoveish(topLevelType)?eventTypes.moveShouldSetResponder:\ntopLevelType === EventConstants.topLevelTypes.topSelectionChange?\neventTypes.selectionChangeShouldSetResponder:\neventTypes.scrollShouldSetResponder;\n\n\nvar bubbleShouldSetFrom=!responderID?\ntopLevelTargetID:\nReactInstanceHandles._getFirstCommonAncestorID(responderID,topLevelTargetID);\n\n\n\n\n\nvar skipOverBubbleShouldSetFrom=bubbleShouldSetFrom === responderID;\nvar shouldSetEvent=ResponderSyntheticEvent.getPooled(\nshouldSetEventType,\nbubbleShouldSetFrom,\nnativeEvent);\n\nshouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nif(skipOverBubbleShouldSetFrom){\nEventPropagators.accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent);}else \n{\nEventPropagators.accumulateTwoPhaseDispatches(shouldSetEvent);}\n\nvar wantsResponderID=executeDispatchesInOrderStopAtTrue(shouldSetEvent);\nif(!shouldSetEvent.isPersistent()){\nshouldSetEvent.constructor.release(shouldSetEvent);}\n\n\nif(!wantsResponderID || wantsResponderID === responderID){\nreturn null;}\n\nvar extracted;\nvar grantEvent=ResponderSyntheticEvent.getPooled(\neventTypes.responderGrant,\nwantsResponderID,\nnativeEvent);\n\ngrantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n\nEventPropagators.accumulateDirectDispatches(grantEvent);\nvar blockNativeResponder=executeDirectDispatch(grantEvent) === true;\nif(responderID){\n\nvar terminationRequestEvent=ResponderSyntheticEvent.getPooled(\neventTypes.responderTerminationRequest,\nresponderID,\nnativeEvent);\n\nterminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(terminationRequestEvent);\nvar shouldSwitch=!hasDispatches(terminationRequestEvent) || \nexecuteDirectDispatch(terminationRequestEvent);\nif(!terminationRequestEvent.isPersistent()){\nterminationRequestEvent.constructor.release(terminationRequestEvent);}\n\n\nif(shouldSwitch){\nvar terminateType=eventTypes.responderTerminate;\nvar terminateEvent=ResponderSyntheticEvent.getPooled(\nterminateType,\nresponderID,\nnativeEvent);\n\nterminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(terminateEvent);\nextracted = accumulate(extracted,[grantEvent,terminateEvent]);\nchangeResponder(wantsResponderID,blockNativeResponder);}else \n{\nvar rejectEvent=ResponderSyntheticEvent.getPooled(\neventTypes.responderReject,\nwantsResponderID,\nnativeEvent);\n\nrejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(rejectEvent);\nextracted = accumulate(extracted,rejectEvent);}}else \n\n{\nextracted = accumulate(extracted,grantEvent);\nchangeResponder(wantsResponderID,blockNativeResponder);}\n\nreturn extracted;}\n\n\n\n\n\n\n\n\n\n\nfunction canTriggerTransfer(topLevelType,topLevelTargetID){\nreturn topLevelTargetID && (\ntopLevelType === EventConstants.topLevelTypes.topScroll || \ntrackedTouchCount > 0 && \ntopLevelType === EventConstants.topLevelTypes.topSelectionChange || \nisStartish(topLevelType) || \nisMoveish(topLevelType));}\n\n\n\n\n\n\n\n\n\n\nfunction noResponderTouches(nativeEvent){\nvar touches=nativeEvent.touches;\nif(!touches || touches.length === 0){\nreturn true;}\n\nfor(var i=0;i < touches.length;i++) {\nvar activeTouch=touches[i];\nvar target=activeTouch.target;\nif(target !== null && target !== undefined && target !== 0){\n\nvar commonAncestor=\nReactInstanceHandles._getFirstCommonAncestorID(\nresponderID,\nNodeHandle.getRootNodeID(target));\n\nif(commonAncestor === responderID){\nreturn false;}}}\n\n\n\nreturn true;}\n\n\n\nvar ResponderEventPlugin={\n\ngetResponderID:function(){\nreturn responderID;},\n\n\neventTypes:eventTypes,\n\n\n\n\n\n\n\n\n\n\n\n\n\nextractEvents:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent){\n\nif(isStartish(topLevelType)){\ntrackedTouchCount += 1;}else \nif(isEndish(topLevelType)){\ntrackedTouchCount -= 1;\ninvariant(\ntrackedTouchCount >= 0,\n'Ended a touch event which was not counted in trackedTouchCount.');}\n\n\n\nResponderTouchHistoryStore.recordTouchTrack(topLevelType,nativeEvent);\n\nvar extracted=canTriggerTransfer(topLevelType,topLevelTargetID)?\nsetResponderAndExtractTransfer(topLevelType,topLevelTargetID,nativeEvent):\nnull;\n\n\n\n\n\n\n\n\n\n\nvar isResponderTouchStart=responderID && isStartish(topLevelType);\nvar isResponderTouchMove=responderID && isMoveish(topLevelType);\nvar isResponderTouchEnd=responderID && isEndish(topLevelType);\nvar incrementalTouch=\nisResponderTouchStart?eventTypes.responderStart:\nisResponderTouchMove?eventTypes.responderMove:\nisResponderTouchEnd?eventTypes.responderEnd:\nnull;\n\nif(incrementalTouch){\nvar gesture=\nResponderSyntheticEvent.getPooled(incrementalTouch,responderID,nativeEvent);\ngesture.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(gesture);\nextracted = accumulate(extracted,gesture);}\n\n\nvar isResponderTerminate=\nresponderID && \ntopLevelType === EventConstants.topLevelTypes.topTouchCancel;\nvar isResponderRelease=\nresponderID && \n!isResponderTerminate && \nisEndish(topLevelType) && \nnoResponderTouches(nativeEvent);\nvar finalTouch=\nisResponderTerminate?eventTypes.responderTerminate:\nisResponderRelease?eventTypes.responderRelease:\nnull;\nif(finalTouch){\nvar finalEvent=\nResponderSyntheticEvent.getPooled(finalTouch,responderID,nativeEvent);\nfinalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\nEventPropagators.accumulateDirectDispatches(finalEvent);\nextracted = accumulate(extracted,finalEvent);\nchangeResponder(null);}\n\n\nvar numberActiveTouches=\nResponderTouchHistoryStore.touchHistory.numberActiveTouches;\nif(ResponderEventPlugin.GlobalInteractionHandler && \nnumberActiveTouches !== previousActiveTouches){\nResponderEventPlugin.GlobalInteractionHandler.onChange(\nnumberActiveTouches);}\n\n\npreviousActiveTouches = numberActiveTouches;\n\nreturn extracted;},\n\n\nGlobalResponderHandler:null,\nGlobalInteractionHandler:null,\n\ninjection:{\n\n\n\n\n\ninjectGlobalResponderHandler:function(GlobalResponderHandler){\nResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;},\n\n\n\n\n\n\ninjectGlobalInteractionHandler:function(GlobalInteractionHandler){\nResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler;}}};\n\n\n\n\nmodule.exports = ResponderEventPlugin;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ResponderEventPlugin\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\nvar EventPluginUtils = require('EventPluginUtils');\nvar EventPropagators = require('EventPropagators');\nvar NodeHandle = require('NodeHandle');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ResponderSyntheticEvent = require('ResponderSyntheticEvent');\nvar ResponderTouchHistoryStore = require('ResponderTouchHistoryStore');\n\nvar accumulate = require('accumulate');\nvar invariant = require('invariant');\nvar keyOf = require('keyOf');\n\nvar isStartish = EventPluginUtils.isStartish;\nvar isMoveish = EventPluginUtils.isMoveish;\nvar isEndish = EventPluginUtils.isEndish;\nvar executeDirectDispatch = EventPluginUtils.executeDirectDispatch;\nvar hasDispatches = EventPluginUtils.hasDispatches;\nvar executeDispatchesInOrderStopAtTrue =\n EventPluginUtils.executeDispatchesInOrderStopAtTrue;\n\n/**\n * ID of element that should respond to touch/move types of interactions, as\n * indicated explicitly by relevant callbacks.\n */\nvar responderID = null;\n\n/**\n * Count of current touches. A textInput should become responder iff the\n * the selection changes while there is a touch on the screen.\n */\nvar trackedTouchCount = 0;\n\n/**\n * Last reported number of active touches.\n */\nvar previousActiveTouches = 0;\n\nvar changeResponder = function(nextResponderID, blockNativeResponder) {\n var oldResponderID = responderID;\n responderID = nextResponderID;\n if (ResponderEventPlugin.GlobalResponderHandler !== null) {\n ResponderEventPlugin.GlobalResponderHandler.onChange(\n oldResponderID,\n nextResponderID,\n blockNativeResponder\n );\n }\n};\n\nvar eventTypes = {\n /**\n * On a `touchStart`/`mouseDown`, is it desired that this element become the\n * responder?\n */\n startShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onStartShouldSetResponder: null}),\n captured: keyOf({onStartShouldSetResponderCapture: null})\n }\n },\n\n /**\n * On a `scroll`, is it desired that this element become the responder? This\n * is usually not needed, but should be used to retroactively infer that a\n * `touchStart` had occured during momentum scroll. During a momentum scroll,\n * a touch start will be immediately followed by a scroll event if the view is\n * currently scrolling.\n *\n * TODO: This shouldn't bubble.\n */\n scrollShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onScrollShouldSetResponder: null}),\n captured: keyOf({onScrollShouldSetResponderCapture: null})\n }\n },\n\n /**\n * On text selection change, should this element become the responder? This\n * is needed for text inputs or other views with native selection, so the\n * JS view can claim the responder.\n *\n * TODO: This shouldn't bubble.\n */\n selectionChangeShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onSelectionChangeShouldSetResponder: null}),\n captured: keyOf({onSelectionChangeShouldSetResponderCapture: null})\n }\n },\n\n /**\n * On a `touchMove`/`mouseMove`, is it desired that this element become the\n * responder?\n */\n moveShouldSetResponder: {\n phasedRegistrationNames: {\n bubbled: keyOf({onMoveShouldSetResponder: null}),\n captured: keyOf({onMoveShouldSetResponderCapture: null})\n }\n },\n\n /**\n * Direct responder events dispatched directly to responder. Do not bubble.\n */\n responderStart: {registrationName: keyOf({onResponderStart: null})},\n responderMove: {registrationName: keyOf({onResponderMove: null})},\n responderEnd: {registrationName: keyOf({onResponderEnd: null})},\n responderRelease: {registrationName: keyOf({onResponderRelease: null})},\n responderTerminationRequest: {\n registrationName: keyOf({onResponderTerminationRequest: null})\n },\n responderGrant: {registrationName: keyOf({onResponderGrant: null})},\n responderReject: {registrationName: keyOf({onResponderReject: null})},\n responderTerminate: {registrationName: keyOf({onResponderTerminate: null})}\n};\n\n/**\n *\n * Responder System:\n * ----------------\n *\n * - A global, solitary \"interaction lock\" on a view.\n * - If a `NodeHandle` becomes the responder, it should convey visual feedback\n * immediately to indicate so, either by highlighting or moving accordingly.\n * - To be the responder means, that touches are exclusively important to that\n * responder view, and no other view.\n * - While touches are still occuring, the responder lock can be transfered to\n * a new view, but only to increasingly \"higher\" views (meaning ancestors of\n * the current responder).\n *\n * Responder being granted:\n * ------------------------\n *\n * - Touch starts, moves, and scrolls can cause an ID to become the responder.\n * - We capture/bubble `startShouldSetResponder`/`moveShouldSetResponder` to\n * the \"appropriate place\".\n * - If nothing is currently the responder, the \"appropriate place\" is the\n * initiating event's `targetID`.\n * - If something *is* already the responder, the \"appropriate place\" is the\n * first common ancestor of the event target and the current `responderID`.\n * - Some negotiation happens: See the timing diagram below.\n * - Scrolled views automatically become responder. The reasoning is that a\n * platform scroll view that isn't built on top of the responder system has\n * began scrolling, and the active responder must now be notified that the\n * interaction is no longer locked to it - the system has taken over.\n *\n * - Responder being released:\n * As soon as no more touches that *started* inside of descendents of the\n * *current* responderID, an `onResponderRelease` event is dispatched to the\n * current responder, and the responder lock is released.\n *\n * TODO:\n * - on \"end\", a callback hook for `onResponderEndShouldRemainResponder` that\n * determines if the responder lock should remain.\n * - If a view shouldn't \"remain\" the responder, any active touches should by\n * default be considered \"dead\" and do not influence future negotiations or\n * bubble paths. It should be as if those touches do not exist.\n * -- For multitouch: Usually a translate-z will choose to \"remain\" responder\n * after one out of many touches ended. For translate-y, usually the view\n * doesn't wish to \"remain\" responder after one of many touches end.\n * - Consider building this on top of a `stopPropagation` model similar to\n * `W3C` events.\n * - Ensure that `onResponderTerminate` is called on touch cancels, whether or\n * not `onResponderTerminationRequest` returns `true` or `false`.\n *\n */\n\n/* Negotiation Performed\n +-----------------------+\n / \\\nProcess low level events to + Current Responder + wantsResponderID\ndetermine who to perform negot-| (if any exists at all) |\niation/transition | Otherwise just pass through|\n-------------------------------+----------------------------+------------------+\nBubble to find first ID | |\nto return true:wantsResponderID| |\n | |\n +-------------+ | |\n | onTouchStart| | |\n +------+------+ none | |\n | return| |\n+-----------v-------------+true| +------------------------+ |\n|onStartShouldSetResponder|----->|onResponderStart (cur) |<-----------+\n+-----------+-------------+ | +------------------------+ | |\n | | | +--------+-------+\n | returned true for| false:REJECT +-------->|onResponderReject\n | wantsResponderID | | | +----------------+\n | (now attempt | +------------------+-----+ |\n | handoff) | | onResponder | |\n +------------------->| TerminationRequest| |\n | +------------------+-----+ |\n | | | +----------------+\n | true:GRANT +-------->|onResponderGrant|\n | | +--------+-------+\n | +------------------------+ | |\n | | onResponderTerminate |<-----------+\n | +------------------+-----+ |\n | | | +----------------+\n | +-------->|onResponderStart|\n | | +----------------+\nBubble to find first ID | |\nto return true:wantsResponderID| |\n | |\n +-------------+ | |\n | onTouchMove | | |\n +------+------+ none | |\n | return| |\n+-----------v-------------+true| +------------------------+ |\n|onMoveShouldSetResponder |----->|onResponderMove (cur) |<-----------+\n+-----------+-------------+ | +------------------------+ | |\n | | | +--------+-------+\n | returned true for| false:REJECT +-------->|onResponderRejec|\n | wantsResponderID | | | +----------------+\n | (now attempt | +------------------+-----+ |\n | handoff) | | onResponder | |\n +------------------->| TerminationRequest| |\n | +------------------+-----+ |\n | | | +----------------+\n | true:GRANT +-------->|onResponderGrant|\n | | +--------+-------+\n | +------------------------+ | |\n | | onResponderTerminate |<-----------+\n | +------------------+-----+ |\n | | | +----------------+\n | +-------->|onResponderMove |\n | | +----------------+\n | |\n | |\n Some active touch started| |\n inside current responder | +------------------------+ |\n +------------------------->| onResponderEnd | |\n | | +------------------------+ |\n +---+---------+ | |\n | onTouchEnd | | |\n +---+---------+ | |\n | | +------------------------+ |\n +------------------------->| onResponderEnd | |\n No active touches started| +-----------+------------+ |\n inside current responder | | |\n | v |\n | +------------------------+ |\n | | onResponderRelease | |\n | +------------------------+ |\n | |\n + + */\n\n\n\n/**\n * A note about event ordering in the `EventPluginHub`.\n *\n * Suppose plugins are injected in the following order:\n *\n * `[R, S, C]`\n *\n * To help illustrate the example, assume `S` is `SimpleEventPlugin` (for\n * `onClick` etc) and `R` is `ResponderEventPlugin`.\n *\n * \"Deferred-Dispatched Events\":\n *\n * - The current event plugin system will traverse the list of injected plugins,\n * in order, and extract events by collecting the plugin's return value of\n * `extractEvents()`.\n * - These events that are returned from `extractEvents` are \"deferred\n * dispatched events\".\n * - When returned from `extractEvents`, deferred-dispatched events contain an\n * \"accumulation\" of deferred dispatches.\n * - These deferred dispatches are accumulated/collected before they are\n * returned, but processed at a later time by the `EventPluginHub` (hence the\n * name deferred).\n *\n * In the process of returning their deferred-dispatched events, event plugins\n * themselves can dispatch events on-demand without returning them from\n * `extractEvents`. Plugins might want to do this, so that they can use event\n * dispatching as a tool that helps them decide which events should be extracted\n * in the first place.\n *\n * \"On-Demand-Dispatched Events\":\n *\n * - On-demand-dispatched events are not returned from `extractEvents`.\n * - On-demand-dispatched events are dispatched during the process of returning\n * the deferred-dispatched events.\n * - They should not have side effects.\n * - They should be avoided, and/or eventually be replaced with another\n * abstraction that allows event plugins to perform multiple \"rounds\" of event\n * extraction.\n *\n * Therefore, the sequence of event dispatches becomes:\n *\n * - `R`s on-demand events (if any) (dispatched by `R` on-demand)\n * - `S`s on-demand events (if any) (dispatched by `S` on-demand)\n * - `C`s on-demand events (if any) (dispatched by `C` on-demand)\n * - `R`s extracted events (if any) (dispatched by `EventPluginHub`)\n * - `S`s extracted events (if any) (dispatched by `EventPluginHub`)\n * - `C`s extracted events (if any) (dispatched by `EventPluginHub`)\n *\n * In the case of `ResponderEventPlugin`: If the `startShouldSetResponder`\n * on-demand dispatch returns `true` (and some other details are satisfied) the\n * `onResponderGrant` deferred dispatched event is returned from\n * `extractEvents`. The sequence of dispatch executions in this case\n * will appear as follows:\n *\n * - `startShouldSetResponder` (`ResponderEventPlugin` dispatches on-demand)\n * - `touchStartCapture` (`EventPluginHub` dispatches as usual)\n * - `touchStart` (`EventPluginHub` dispatches as usual)\n * - `responderGrant/Reject` (`EventPluginHub` dispatches as usual)\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} topLevelTargetID ID of deepest React rendered element.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n */\nfunction setResponderAndExtractTransfer(\n topLevelType,\n topLevelTargetID,\n nativeEvent) {\n var shouldSetEventType =\n isStartish(topLevelType) ? eventTypes.startShouldSetResponder :\n isMoveish(topLevelType) ? eventTypes.moveShouldSetResponder :\n topLevelType === EventConstants.topLevelTypes.topSelectionChange ?\n eventTypes.selectionChangeShouldSetResponder :\n eventTypes.scrollShouldSetResponder;\n\n // TODO: stop one short of the the current responder.\n var bubbleShouldSetFrom = !responderID ?\n topLevelTargetID :\n ReactInstanceHandles._getFirstCommonAncestorID(responderID, topLevelTargetID);\n\n // When capturing/bubbling the \"shouldSet\" event, we want to skip the target\n // (deepest ID) if it happens to be the current responder. The reasoning:\n // It's strange to get an `onMoveShouldSetResponder` when you're *already*\n // the responder.\n var skipOverBubbleShouldSetFrom = bubbleShouldSetFrom === responderID;\n var shouldSetEvent = ResponderSyntheticEvent.getPooled(\n shouldSetEventType,\n bubbleShouldSetFrom,\n nativeEvent\n );\n shouldSetEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n if (skipOverBubbleShouldSetFrom) {\n EventPropagators.accumulateTwoPhaseDispatchesSkipTarget(shouldSetEvent);\n } else {\n EventPropagators.accumulateTwoPhaseDispatches(shouldSetEvent);\n }\n var wantsResponderID = executeDispatchesInOrderStopAtTrue(shouldSetEvent);\n if (!shouldSetEvent.isPersistent()) {\n shouldSetEvent.constructor.release(shouldSetEvent);\n }\n\n if (!wantsResponderID || wantsResponderID === responderID) {\n return null;\n }\n var extracted;\n var grantEvent = ResponderSyntheticEvent.getPooled(\n eventTypes.responderGrant,\n wantsResponderID,\n nativeEvent\n );\n grantEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n\n EventPropagators.accumulateDirectDispatches(grantEvent);\n var blockNativeResponder = executeDirectDispatch(grantEvent) === true;\n if (responderID) {\n\n var terminationRequestEvent = ResponderSyntheticEvent.getPooled(\n eventTypes.responderTerminationRequest,\n responderID,\n nativeEvent\n );\n terminationRequestEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(terminationRequestEvent);\n var shouldSwitch = !hasDispatches(terminationRequestEvent) ||\n executeDirectDispatch(terminationRequestEvent);\n if (!terminationRequestEvent.isPersistent()) {\n terminationRequestEvent.constructor.release(terminationRequestEvent);\n }\n\n if (shouldSwitch) {\n var terminateType = eventTypes.responderTerminate;\n var terminateEvent = ResponderSyntheticEvent.getPooled(\n terminateType,\n responderID,\n nativeEvent\n );\n terminateEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(terminateEvent);\n extracted = accumulate(extracted, [grantEvent, terminateEvent]);\n changeResponder(wantsResponderID, blockNativeResponder);\n } else {\n var rejectEvent = ResponderSyntheticEvent.getPooled(\n eventTypes.responderReject,\n wantsResponderID,\n nativeEvent\n );\n rejectEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(rejectEvent);\n extracted = accumulate(extracted, rejectEvent);\n }\n } else {\n extracted = accumulate(extracted, grantEvent);\n changeResponder(wantsResponderID, blockNativeResponder);\n }\n return extracted;\n}\n\n/**\n * A transfer is a negotiation between a currently set responder and the next\n * element to claim responder status. Any start event could trigger a transfer\n * of responderID. Any move event could trigger a transfer.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @return {boolean} True if a transfer of responder could possibly occur.\n */\nfunction canTriggerTransfer(topLevelType, topLevelTargetID) {\n return topLevelTargetID && (\n topLevelType === EventConstants.topLevelTypes.topScroll ||\n (trackedTouchCount > 0 &&\n topLevelType === EventConstants.topLevelTypes.topSelectionChange) ||\n isStartish(topLevelType) ||\n isMoveish(topLevelType)\n );\n}\n\n/**\n * Returns whether or not this touch end event makes it such that there are no\n * longer any touches that started inside of the current `responderID`.\n *\n * @param {NativeEvent} nativeEvent Native touch end event.\n * @return {bool} Whether or not this touch end event ends the responder.\n */\nfunction noResponderTouches(nativeEvent) {\n var touches = nativeEvent.touches;\n if (!touches || touches.length === 0) {\n return true;\n }\n for (var i = 0; i < touches.length; i++) {\n var activeTouch = touches[i];\n var target = activeTouch.target;\n if (target !== null && target !== undefined && target !== 0) {\n // Is the original touch location inside of the current responder?\n var commonAncestor =\n ReactInstanceHandles._getFirstCommonAncestorID(\n responderID,\n NodeHandle.getRootNodeID(target)\n );\n if (commonAncestor === responderID) {\n return false;\n }\n }\n }\n return true;\n}\n\n\nvar ResponderEventPlugin = {\n\n getResponderID: function() {\n return responderID;\n },\n\n eventTypes: eventTypes,\n\n /**\n * We must be resilient to `topLevelTargetID` being `undefined` on\n * `touchMove`, or `touchEnd`. On certain platforms, this means that a native\n * scroll has assumed control and the original touch targets are destroyed.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {DOMEventTarget} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native browser event.\n * @return {*} An accumulation of synthetic events.\n * @see {EventPluginHub.extractEvents}\n */\n extractEvents: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n\n if (isStartish(topLevelType)) {\n trackedTouchCount += 1;\n } else if (isEndish(topLevelType)) {\n trackedTouchCount -= 1;\n invariant(\n trackedTouchCount >= 0,\n 'Ended a touch event which was not counted in trackedTouchCount.'\n );\n }\n\n ResponderTouchHistoryStore.recordTouchTrack(topLevelType, nativeEvent);\n\n var extracted = canTriggerTransfer(topLevelType, topLevelTargetID) ?\n setResponderAndExtractTransfer(topLevelType, topLevelTargetID, nativeEvent) :\n null;\n // Responder may or may not have transfered on a new touch start/move.\n // Regardless, whoever is the responder after any potential transfer, we\n // direct all touch start/move/ends to them in the form of\n // `onResponderMove/Start/End`. These will be called for *every* additional\n // finger that move/start/end, dispatched directly to whoever is the\n // current responder at that moment, until the responder is \"released\".\n //\n // These multiple individual change touch events are are always bookended\n // by `onResponderGrant`, and one of\n // (`onResponderRelease/onResponderTerminate`).\n var isResponderTouchStart = responderID && isStartish(topLevelType);\n var isResponderTouchMove = responderID && isMoveish(topLevelType);\n var isResponderTouchEnd = responderID && isEndish(topLevelType);\n var incrementalTouch =\n isResponderTouchStart ? eventTypes.responderStart :\n isResponderTouchMove ? eventTypes.responderMove :\n isResponderTouchEnd ? eventTypes.responderEnd :\n null;\n\n if (incrementalTouch) {\n var gesture =\n ResponderSyntheticEvent.getPooled(incrementalTouch, responderID, nativeEvent);\n gesture.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(gesture);\n extracted = accumulate(extracted, gesture);\n }\n\n var isResponderTerminate =\n responderID &&\n topLevelType === EventConstants.topLevelTypes.topTouchCancel;\n var isResponderRelease =\n responderID &&\n !isResponderTerminate &&\n isEndish(topLevelType) &&\n noResponderTouches(nativeEvent);\n var finalTouch =\n isResponderTerminate ? eventTypes.responderTerminate :\n isResponderRelease ? eventTypes.responderRelease :\n null;\n if (finalTouch) {\n var finalEvent =\n ResponderSyntheticEvent.getPooled(finalTouch, responderID, nativeEvent);\n finalEvent.touchHistory = ResponderTouchHistoryStore.touchHistory;\n EventPropagators.accumulateDirectDispatches(finalEvent);\n extracted = accumulate(extracted, finalEvent);\n changeResponder(null);\n }\n\n var numberActiveTouches =\n ResponderTouchHistoryStore.touchHistory.numberActiveTouches;\n if (ResponderEventPlugin.GlobalInteractionHandler &&\n numberActiveTouches !== previousActiveTouches) {\n ResponderEventPlugin.GlobalInteractionHandler.onChange(\n numberActiveTouches\n );\n }\n previousActiveTouches = numberActiveTouches;\n\n return extracted;\n },\n\n GlobalResponderHandler: null,\n GlobalInteractionHandler: null,\n\n injection: {\n /**\n * @param {{onChange: (ReactID, ReactID) => void} GlobalResponderHandler\n * Object that handles any change in responder. Use this to inject\n * integration with an existing touch handling system etc.\n */\n injectGlobalResponderHandler: function(GlobalResponderHandler) {\n ResponderEventPlugin.GlobalResponderHandler = GlobalResponderHandler;\n },\n\n /**\n * @param {{onChange: (numberActiveTouches) => void} GlobalInteractionHandler\n * Object that handles any change in the number of active touches.\n */\n injectGlobalInteractionHandler: function(GlobalInteractionHandler) {\n ResponderEventPlugin.GlobalInteractionHandler = GlobalInteractionHandler;\n },\n }\n};\n\nmodule.exports = ResponderEventPlugin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderEventPlugin.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderSyntheticEvent.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SyntheticEvent=require('SyntheticEvent');\n\n\n\n\n\n\nvar ResponderEventInterface={\ntouchHistory:function(nativeEvent){\nreturn null;}};\n\n\n\n\n\n\n\n\n\nfunction ResponderSyntheticEvent(dispatchConfig,dispatchMarker,nativeEvent){\nSyntheticEvent.call(this,dispatchConfig,dispatchMarker,nativeEvent);}\n\n\nSyntheticEvent.augmentClass(ResponderSyntheticEvent,ResponderEventInterface);\n\nmodule.exports = ResponderSyntheticEvent;","sourceCode":"/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @providesModule ResponderSyntheticEvent\n * @typechecks static-only\n */\n\n\"use strict\";\n\nvar SyntheticEvent = require('SyntheticEvent');\n\n/**\n * `touchHistory` isn't actually on the native event, but putting it in the\n * interface will ensure that it is cleaned up when pooled/destroyed. The\n * `ResponderEventPlugin` will populate it appropriately.\n */\nvar ResponderEventInterface = {\n touchHistory: function(nativeEvent) {\n return null; // Actually doesn't even look at the native event.\n },\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native event.\n * @extends {SyntheticEvent}\n */\nfunction ResponderSyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {\n SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent);\n}\n\nSyntheticEvent.augmentClass(ResponderSyntheticEvent, ResponderEventInterface);\n\nmodule.exports = ResponderSyntheticEvent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderSyntheticEvent.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderTouchHistoryStore.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar EventPluginUtils=require('EventPluginUtils');\n\nvar invariant=require('invariant');\n\nvar isMoveish=EventPluginUtils.isMoveish;\nvar isStartish=EventPluginUtils.isStartish;\nvar isEndish=EventPluginUtils.isEndish;\n\nvar MAX_TOUCH_BANK=20;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar touchHistory={\ntouchBank:[],\nnumberActiveTouches:0,\n\n\n\nindexOfSingleActiveTouch:-1,\nmostRecentTimeStamp:0};\n\n\nvar timestampForTouch=function(touch){\n\n\n\nreturn touch.timeStamp || touch.timestamp;};\n\n\n\n\n\n\n\nvar initializeTouchData=function(touch){\nreturn {\ntouchActive:true,\nstartTimeStamp:timestampForTouch(touch),\nstartPageX:touch.pageX,\nstartPageY:touch.pageY,\ncurrentPageX:touch.pageX,\ncurrentPageY:touch.pageY,\ncurrentTimeStamp:timestampForTouch(touch),\npreviousPageX:touch.pageX,\npreviousPageY:touch.pageY,\npreviousTimeStamp:timestampForTouch(touch)};};\n\n\n\nvar reinitializeTouchTrack=function(touchTrack,touch){\ntouchTrack.touchActive = true;\ntouchTrack.startTimeStamp = timestampForTouch(touch);\ntouchTrack.startPageX = touch.pageX;\ntouchTrack.startPageY = touch.pageY;\ntouchTrack.currentPageX = touch.pageX;\ntouchTrack.currentPageY = touch.pageY;\ntouchTrack.currentTimeStamp = timestampForTouch(touch);\ntouchTrack.previousPageX = touch.pageX;\ntouchTrack.previousPageY = touch.pageY;\ntouchTrack.previousTimeStamp = timestampForTouch(touch);};\n\n\nvar validateTouch=function(touch){\nvar identifier=touch.identifier;\ninvariant(identifier != null,'Touch object is missing identifier');\nif(identifier > MAX_TOUCH_BANK){\nconsole.warn(\n'Touch identifier ' + identifier + ' is greater than maximum ' + \n'supported ' + MAX_TOUCH_BANK + ' which causes performance issues ' + \n'backfilling array locations for all of the indices.');}};\n\n\n\n\nvar recordStartTouchData=function(touch){\nvar touchBank=touchHistory.touchBank;\nvar identifier=touch.identifier;\nvar touchTrack=touchBank[identifier];\nif(__DEV__){\nvalidateTouch(touch);}\n\nif(!touchTrack){\ntouchBank[touch.identifier] = initializeTouchData(touch);}else \n{\nreinitializeTouchTrack(touchTrack,touch);}\n\ntouchHistory.mostRecentTimeStamp = timestampForTouch(touch);};\n\n\nvar recordMoveTouchData=function(touch){\nvar touchBank=touchHistory.touchBank;\nvar touchTrack=touchBank[touch.identifier];\nif(__DEV__){\nvalidateTouch(touch);\ninvariant(touchTrack,'Touch data should have been recorded on start');}\n\ntouchTrack.touchActive = true;\ntouchTrack.previousPageX = touchTrack.currentPageX;\ntouchTrack.previousPageY = touchTrack.currentPageY;\ntouchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\ntouchTrack.currentPageX = touch.pageX;\ntouchTrack.currentPageY = touch.pageY;\ntouchTrack.currentTimeStamp = timestampForTouch(touch);\ntouchHistory.mostRecentTimeStamp = timestampForTouch(touch);};\n\n\nvar recordEndTouchData=function(touch){\nvar touchBank=touchHistory.touchBank;\nvar touchTrack=touchBank[touch.identifier];\nif(__DEV__){\nvalidateTouch(touch);\ninvariant(touchTrack,'Touch data should have been recorded on start');}\n\ntouchTrack.previousPageX = touchTrack.currentPageX;\ntouchTrack.previousPageY = touchTrack.currentPageY;\ntouchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\ntouchTrack.currentPageX = touch.pageX;\ntouchTrack.currentPageY = touch.pageY;\ntouchTrack.currentTimeStamp = timestampForTouch(touch);\ntouchTrack.touchActive = false;\ntouchHistory.mostRecentTimeStamp = timestampForTouch(touch);};\n\n\nvar ResponderTouchHistoryStore={\nrecordTouchTrack:function(topLevelType,nativeEvent){\nvar touchBank=touchHistory.touchBank;\nif(isMoveish(topLevelType)){\nnativeEvent.changedTouches.forEach(recordMoveTouchData);}else \nif(isStartish(topLevelType)){\nnativeEvent.changedTouches.forEach(recordStartTouchData);\ntouchHistory.numberActiveTouches = nativeEvent.touches.length;\nif(touchHistory.numberActiveTouches === 1){\ntouchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier;}}else \n\nif(isEndish(topLevelType)){\nnativeEvent.changedTouches.forEach(recordEndTouchData);\ntouchHistory.numberActiveTouches = nativeEvent.touches.length;\nif(touchHistory.numberActiveTouches === 1){\nfor(var i=0;i < touchBank.length;i++) {\nvar touchTrackToCheck=touchBank[i];\nif(touchTrackToCheck != null && touchTrackToCheck.touchActive){\ntouchHistory.indexOfSingleActiveTouch = i;\nbreak;}}\n\n\nif(__DEV__){\nvar activeTouchData=touchBank[touchHistory.indexOfSingleActiveTouch];\nvar foundActive=activeTouchData != null && !!activeTouchData.touchActive;\ninvariant(foundActive,'Cannot find single active touch');}}}},\n\n\n\n\n\ntouchHistory:touchHistory};\n\n\n\nmodule.exports = ResponderTouchHistoryStore;","sourceCode":"/**\n * @providesModule ResponderTouchHistoryStore\n */\n\n\"use strict\";\n\nvar EventPluginUtils = require('EventPluginUtils');\n\nvar invariant = require('invariant');\n\nvar isMoveish = EventPluginUtils.isMoveish;\nvar isStartish = EventPluginUtils.isStartish;\nvar isEndish = EventPluginUtils.isEndish;\n\nvar MAX_TOUCH_BANK = 20;\n\n/**\n * Touch position/time tracking information by touchID. Typically, we'll only\n * see IDs with a range of 1-20 (they are recycled when touches end and then\n * start again). This data is commonly needed by many different interaction\n * logic modules so precomputing it is very helpful to do once.\n * Each touch object in `touchBank` is of the following form:\n * { touchActive: boolean,\n * startTimeStamp: number,\n * startPageX: number,\n * startPageY: number,\n * currentPageX: number,\n * currentPageY: number,\n * currentTimeStamp: number\n * }\n */\nvar touchHistory = {\n touchBank: [ ],\n numberActiveTouches: 0,\n // If there is only one active touch, we remember its location. This prevents\n // us having to loop through all of the touches all the time in the most\n // common case.\n indexOfSingleActiveTouch: -1,\n mostRecentTimeStamp: 0,\n};\n\nvar timestampForTouch = function(touch) {\n // The legacy internal implementation provides \"timeStamp\", which has been\n // renamed to \"timestamp\". Let both work for now while we iron it out\n // TODO (evv): rename timeStamp to timestamp in internal code\n return touch.timeStamp || touch.timestamp;\n};\n\n/**\n * TODO: Instead of making gestures recompute filtered velocity, we could\n * include a built in velocity computation that can be reused globally.\n * @param {Touch} touch Native touch object.\n */\nvar initializeTouchData = function(touch) {\n return {\n touchActive: true,\n startTimeStamp: timestampForTouch(touch),\n startPageX: touch.pageX,\n startPageY: touch.pageY,\n currentPageX: touch.pageX,\n currentPageY: touch.pageY,\n currentTimeStamp: timestampForTouch(touch),\n previousPageX: touch.pageX,\n previousPageY: touch.pageY,\n previousTimeStamp: timestampForTouch(touch),\n };\n};\n\nvar reinitializeTouchTrack = function(touchTrack, touch) {\n touchTrack.touchActive = true;\n touchTrack.startTimeStamp = timestampForTouch(touch);\n touchTrack.startPageX = touch.pageX;\n touchTrack.startPageY = touch.pageY;\n touchTrack.currentPageX = touch.pageX;\n touchTrack.currentPageY = touch.pageY;\n touchTrack.currentTimeStamp = timestampForTouch(touch);\n touchTrack.previousPageX = touch.pageX;\n touchTrack.previousPageY = touch.pageY;\n touchTrack.previousTimeStamp = timestampForTouch(touch);\n};\n\nvar validateTouch = function(touch) {\n var identifier = touch.identifier;\n invariant(identifier != null, 'Touch object is missing identifier');\n if (identifier > MAX_TOUCH_BANK) {\n console.warn(\n 'Touch identifier ' + identifier + ' is greater than maximum ' +\n 'supported ' + MAX_TOUCH_BANK + ' which causes performance issues ' +\n 'backfilling array locations for all of the indices.'\n );\n }\n};\n\nvar recordStartTouchData = function(touch) {\n var touchBank = touchHistory.touchBank;\n var identifier = touch.identifier;\n var touchTrack = touchBank[identifier];\n if (__DEV__) {\n validateTouch(touch);\n }\n if (!touchTrack) {\n touchBank[touch.identifier] = initializeTouchData(touch);\n } else {\n reinitializeTouchTrack(touchTrack, touch);\n }\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n};\n\nvar recordMoveTouchData = function(touch) {\n var touchBank = touchHistory.touchBank;\n var touchTrack = touchBank[touch.identifier];\n if (__DEV__) {\n validateTouch(touch);\n invariant(touchTrack, 'Touch data should have been recorded on start');\n }\n touchTrack.touchActive = true;\n touchTrack.previousPageX = touchTrack.currentPageX;\n touchTrack.previousPageY = touchTrack.currentPageY;\n touchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\n touchTrack.currentPageX = touch.pageX;\n touchTrack.currentPageY = touch.pageY;\n touchTrack.currentTimeStamp = timestampForTouch(touch);\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n};\n\nvar recordEndTouchData = function(touch) {\n var touchBank = touchHistory.touchBank;\n var touchTrack = touchBank[touch.identifier];\n if (__DEV__) {\n validateTouch(touch);\n invariant(touchTrack, 'Touch data should have been recorded on start');\n }\n touchTrack.previousPageX = touchTrack.currentPageX;\n touchTrack.previousPageY = touchTrack.currentPageY;\n touchTrack.previousTimeStamp = touchTrack.currentTimeStamp;\n touchTrack.currentPageX = touch.pageX;\n touchTrack.currentPageY = touch.pageY;\n touchTrack.currentTimeStamp = timestampForTouch(touch);\n touchTrack.touchActive = false;\n touchHistory.mostRecentTimeStamp = timestampForTouch(touch);\n};\n\nvar ResponderTouchHistoryStore = {\n recordTouchTrack: function(topLevelType, nativeEvent) {\n var touchBank = touchHistory.touchBank;\n if (isMoveish(topLevelType)) {\n nativeEvent.changedTouches.forEach(recordMoveTouchData);\n } else if (isStartish(topLevelType)) {\n nativeEvent.changedTouches.forEach(recordStartTouchData);\n touchHistory.numberActiveTouches = nativeEvent.touches.length;\n if (touchHistory.numberActiveTouches === 1) {\n touchHistory.indexOfSingleActiveTouch = nativeEvent.touches[0].identifier;\n }\n } else if (isEndish(topLevelType)) {\n nativeEvent.changedTouches.forEach(recordEndTouchData);\n touchHistory.numberActiveTouches = nativeEvent.touches.length;\n if (touchHistory.numberActiveTouches === 1) {\n for (var i = 0; i < touchBank.length; i++) {\n var touchTrackToCheck = touchBank[i];\n if (touchTrackToCheck != null && touchTrackToCheck.touchActive) {\n touchHistory.indexOfSingleActiveTouch = i;\n break;\n }\n }\n if (__DEV__) {\n var activeTouchData = touchBank[touchHistory.indexOfSingleActiveTouch];\n var foundActive = activeTouchData != null && !!activeTouchData.touchActive;\n invariant(foundActive, 'Cannot find single active touch');\n }\n }\n }\n },\n\n touchHistory: touchHistory,\n};\n\n\nmodule.exports = ResponderTouchHistoryStore;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/ResponderTouchHistoryStore.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulate.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\nfunction accumulate(current,next){\ninvariant(\nnext != null,\n'accumulate(...): Accumulated items must be not be null or undefined.');\n\nif(current == null){\nreturn next;}else \n{\n\n\nvar currentIsArray=Array.isArray(current);\nvar nextIsArray=Array.isArray(next);\nif(currentIsArray){\nreturn current.concat(next);}else \n{\nif(nextIsArray){\nreturn [current].concat(next);}else \n{\nreturn [current,next];}}}}\n\n\n\n\n\nmodule.exports = accumulate;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule accumulate\n */\n\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Accumulates items that must not be null or undefined.\n *\n * This is used to conserve memory by avoiding array allocations.\n *\n * @return {*|array<*>} An accumulation of items.\n */\nfunction accumulate(current, next) {\n invariant(\n next != null,\n 'accumulate(...): Accumulated items must be not be null or undefined.'\n );\n if (current == null) {\n return next;\n } else {\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n var currentIsArray = Array.isArray(current);\n var nextIsArray = Array.isArray(next);\n if (currentIsArray) {\n return current.concat(next);\n } else {\n if (nextIsArray) {\n return [current].concat(next);\n } else {\n return [current, next];\n }\n }\n }\n}\n\nmodule.exports = accumulate;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/accumulate.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platformImplementations/universal/worker/UniversalWorkerNodeHandle.js":{"data":{"code":"var \n\n\n\nReactNativeTagHandles=require('ReactNativeTagHandles');\n\nvar invariant=require('invariant');\n\nvar UniversalWorkerNodeHandle={\ngetRootNodeID:function(nodeHandle){\ninvariant(\nnodeHandle !== undefined && nodeHandle !== null && nodeHandle !== 0,\n'No node handle defined');\n\nreturn ReactNativeTagHandles.tagToRootNodeID[nodeHandle];}};\n\n\n\nmodule.exports = UniversalWorkerNodeHandle;","sourceCode":"/**\n * @providesModule UniversalWorkerNodeHandle\n */\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nvar invariant = require('invariant');\n\nvar UniversalWorkerNodeHandle = {\n getRootNodeID: function(nodeHandle) {\n invariant(\n nodeHandle !== undefined && nodeHandle !== null && nodeHandle !== 0,\n 'No node handle defined'\n );\n return ReactNativeTagHandles.tagToRootNodeID[nodeHandle];\n }\n};\n\nmodule.exports = UniversalWorkerNodeHandle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/platformImplementations/universal/worker/UniversalWorkerNodeHandle.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/createReactNativeComponentClass.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeBaseComponent=require('ReactNativeBaseComponent');\n\n\n\n\n\n\n\n\n\n\n\nvar createReactNativeComponentClass=function(\nviewConfig)\n{\nvar Constructor=function(element){\nthis._currentElement = element;\n\nthis._rootNodeID = null;\nthis._renderedChildren = null;\nthis.previousFlattenedStyle = null;};\n\nConstructor.displayName = viewConfig.uiViewClassName;\nConstructor.viewConfig = viewConfig;\nConstructor.prototype = new ReactNativeBaseComponent(viewConfig);\nConstructor.prototype.constructor = Constructor;\n\nreturn Constructor;};\n\n\nmodule.exports = createReactNativeComponentClass;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createReactNativeComponentClass\n * @flow\n */\n\n'use strict';\n\nvar ReactNativeBaseComponent = require('ReactNativeBaseComponent');\n\n// See also ReactNativeBaseComponent\ntype ReactNativeBaseComponentViewConfig = {\n validAttributes: Object;\n uiViewClassName: string;\n}\n\n/**\n * @param {string} config iOS View configuration.\n * @private\n */\nvar createReactNativeComponentClass = function(\n viewConfig: ReactNativeBaseComponentViewConfig\n): ReactClass<any, any, any> {\n var Constructor = function(element) {\n this._currentElement = element;\n\n this._rootNodeID = null;\n this._renderedChildren = null;\n this.previousFlattenedStyle = null;\n };\n Constructor.displayName = viewConfig.uiViewClassName;\n Constructor.viewConfig = viewConfig;\n Constructor.prototype = new ReactNativeBaseComponent(viewConfig);\n Constructor.prototype.constructor = Constructor;\n\n return ((Constructor: any): ReactClass);\n};\n\nmodule.exports = createReactNativeComponentClass;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/createReactNativeComponentClass.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponent.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar ReactNativeEventEmitter=require('ReactNativeEventEmitter');\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar ReactMultiChild=require('ReactMultiChild');\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar styleDiffer=require('styleDiffer');\nvar deepFreezeAndThrowOnMutationInDev=require('deepFreezeAndThrowOnMutationInDev');\nvar diffRawProperties=require('diffRawProperties');\nvar flattenStyle=require('flattenStyle');\nvar precomputeStyle=require('precomputeStyle');\nvar warning=require('warning');\n\nvar registrationNames=ReactNativeEventEmitter.registrationNames;\nvar putListener=ReactNativeEventEmitter.putListener;\nvar deleteAllListeners=ReactNativeEventEmitter.deleteAllListeners;\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeBaseComponent=function(\nviewConfig)\n{\nthis.viewConfig = viewConfig;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar cachedIndexArray=function(size){\nvar cachedResult=cachedIndexArray._cache[size];\nif(!cachedResult){\nvar arr=[];\nfor(var i=0;i < size;i++) {\narr[i] = i;}\n\ncachedIndexArray._cache[size] = arr;\nreturn arr;}else \n{\nreturn cachedResult;}};\n\n\ncachedIndexArray._cache = {};\n\n\n\n\n\nReactNativeBaseComponent.Mixin = {\ngetPublicInstance:function(){\n\nreturn this;},\n\n\nconstruct:function(element){\nthis._currentElement = element;},\n\n\nunmountComponent:function(){\ndeleteAllListeners(this._rootNodeID);\nthis.unmountChildren();\nthis._rootNodeID = null;},\n\n\n\n\n\n\n\n\n\n\ninitializeChildren:function(children,containerTag,transaction,context){\nvar mountImages=this.mountChildren(children,transaction,context);\n\n\n\nif(mountImages.length){\nvar indexes=cachedIndexArray(mountImages.length);\n\n\nvar createdTags=[];\nfor(var i=0;i < mountImages.length;i++) {\nvar mountImage=mountImages[i];\nvar childTag=mountImage.tag;\nvar childID=mountImage.rootNodeID;\nwarning(\nmountImage && mountImage.rootNodeID && mountImage.tag,\n'Mount image returned does not have required data');\n\nReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\nchildID,\nchildTag);\n\ncreatedTags[i] = mountImage.tag;}\n\nRCTUIManager.\nmanageChildren(containerTag,null,null,createdTags,indexes,null);}},\n\n\n\n\n\n\n\n\n\n\n\n\ncomputeUpdatedProperties:function(prevProps,nextProps,validAttributes){\nif(__DEV__){\nfor(var key in nextProps) {\nif(nextProps.hasOwnProperty(key) && \nnextProps[key] && \nvalidAttributes[key]){\ndeepFreezeAndThrowOnMutationInDev(nextProps[key]);}}}\n\n\n\n\nvar updatePayload=diffRawProperties(\nnull,\nprevProps,\nnextProps,\nvalidAttributes);\n\n\n\n\n\n\n\nif(styleDiffer(nextProps.style,prevProps.style)){\nvar nextFlattenedStyle=precomputeStyle(flattenStyle(nextProps.style));\nupdatePayload = diffRawProperties(\nupdatePayload,\nthis.previousFlattenedStyle,\nnextFlattenedStyle,\nReactNativeStyleAttributes);\n\nthis.previousFlattenedStyle = nextFlattenedStyle;}\n\n\nreturn updatePayload;},\n\n\n\n\n\n\n\n\n\n\n\nreceiveComponent:function(nextElement,transaction,context){\nvar prevElement=this._currentElement;\nthis._currentElement = nextElement;\n\nvar updatePayload=this.computeUpdatedProperties(\nprevElement.props,\nnextElement.props,\nthis.viewConfig.validAttributes);\n\n\nif(updatePayload){\nRCTUIManager.updateView(\nReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(this._rootNodeID),\nthis.viewConfig.uiViewClassName,\nupdatePayload);}\n\n\n\nthis._reconcileListenersUponUpdate(\nprevElement.props,\nnextElement.props);\n\nthis.updateChildren(nextElement.props.children,transaction,context);},\n\n\n\n\n\n_registerListenersUponCreation:function(initialProps){\nfor(var key in initialProps) {\n\n\nif(registrationNames[key] && initialProps[key]){\nvar listener=initialProps[key];\nputListener(this._rootNodeID,key,listener);}}},\n\n\n\n\n\n\n\n\n\n_reconcileListenersUponUpdate:function(prevProps,nextProps){\nfor(var key in nextProps) {\nif(registrationNames[key] && nextProps[key] !== prevProps[key]){\nputListener(this._rootNodeID,key,nextProps[key]);}}},\n\n\n\n\n\n\n\n\n\nmountComponent:function(rootID,transaction,context){\nthis._rootNodeID = rootID;\n\nvar tag=ReactNativeTagHandles.allocateTag();\n\nthis.previousFlattenedStyle = {};\nvar updatePayload=this.computeUpdatedProperties(\n{},\nthis._currentElement.props,\nthis.viewConfig.validAttributes);\n\n\nvar nativeTopRootID=ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\nRCTUIManager.createView(\ntag,\nthis.viewConfig.uiViewClassName,\nnativeTopRootID?ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID]:null,\nupdatePayload);\n\n\nthis._registerListenersUponCreation(this._currentElement.props);\nthis.initializeChildren(\nthis._currentElement.props.children,\ntag,\ntransaction,\ncontext);\n\nreturn {\nrootNodeID:rootID,\ntag:tag};}};\n\n\n\n\n\n\n\n\nObject.assign(\nReactNativeBaseComponent.prototype,\nReactMultiChild.Mixin,\nReactNativeBaseComponent.Mixin,\nNativeMethodsMixin);\n\n\nmodule.exports = ReactNativeBaseComponent;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeBaseComponent\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar ReactNativeEventEmitter = require('ReactNativeEventEmitter');\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar ReactMultiChild = require('ReactMultiChild');\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar styleDiffer = require('styleDiffer');\nvar deepFreezeAndThrowOnMutationInDev = require('deepFreezeAndThrowOnMutationInDev');\nvar diffRawProperties = require('diffRawProperties');\nvar flattenStyle = require('flattenStyle');\nvar precomputeStyle = require('precomputeStyle');\nvar warning = require('warning');\n\nvar registrationNames = ReactNativeEventEmitter.registrationNames;\nvar putListener = ReactNativeEventEmitter.putListener;\nvar deleteAllListeners = ReactNativeEventEmitter.deleteAllListeners;\n\ntype ReactNativeBaseComponentViewConfig = {\n validAttributes: Object;\n uiViewClassName: string;\n}\n\n/**\n * @constructor ReactNativeBaseComponent\n * @extends ReactComponent\n * @extends ReactMultiChild\n * @param {!object} UIKit View Configuration.\n */\nvar ReactNativeBaseComponent = function(\n viewConfig: ReactNativeBaseComponentViewConfig\n) {\n this.viewConfig = viewConfig;\n};\n\n/**\n * Generates and caches arrays of the form:\n *\n * [0, 1, 2, 3]\n * [0, 1, 2, 3, 4]\n * [0, 1]\n *\n * @param {number} size Size of array to generate.\n * @return {Array<number>} Array with values that mirror the index.\n */\nvar cachedIndexArray = function(size) {\n var cachedResult = cachedIndexArray._cache[size];\n if (!cachedResult) {\n var arr = [];\n for (var i = 0; i < size; i++) {\n arr[i] = i;\n }\n cachedIndexArray._cache[size] = arr;\n return arr;\n } else {\n return cachedResult;\n }\n};\ncachedIndexArray._cache = {};\n\n/**\n * Mixin for containers that contain UIViews. NOTE: markup is rendered markup\n * which is a `viewID` ... see the return value for `mountComponent` !\n */\nReactNativeBaseComponent.Mixin = {\n getPublicInstance: function() {\n // TODO: This should probably use a composite wrapper\n return this;\n },\n\n construct: function(element) {\n this._currentElement = element;\n },\n\n unmountComponent: function() {\n deleteAllListeners(this._rootNodeID);\n this.unmountChildren();\n this._rootNodeID = null;\n },\n\n /**\n * Every native component is responsible for allocating its own `tag`, and\n * issuing the native `createView` command. But it is not responsible for\n * recording the fact that its own `rootNodeID` is associated with a\n * `nodeHandle`. Only the code that actually adds its `nodeHandle` (`tag`) as\n * a child of a container can confidently record that in\n * `ReactNativeTagHandles`.\n */\n initializeChildren: function(children, containerTag, transaction, context) {\n var mountImages = this.mountChildren(children, transaction, context);\n // In a well balanced tree, half of the nodes are in the bottom row and have\n // no children - let's avoid calling out to the native bridge for a large\n // portion of the children.\n if (mountImages.length) {\n var indexes = cachedIndexArray(mountImages.length);\n // TODO: Pool these per platform view class. Reusing the `mountImages`\n // array would likely be a jit deopt.\n var createdTags = [];\n for (var i = 0; i < mountImages.length; i++) {\n var mountImage = mountImages[i];\n var childTag = mountImage.tag;\n var childID = mountImage.rootNodeID;\n warning(\n mountImage && mountImage.rootNodeID && mountImage.tag,\n 'Mount image returned does not have required data'\n );\n ReactNativeTagHandles.associateRootNodeIDWithMountedNodeHandle(\n childID,\n childTag\n );\n createdTags[i] = mountImage.tag;\n }\n RCTUIManager\n .manageChildren(containerTag, null, null, createdTags, indexes, null);\n }\n },\n\n\n /**\n * Beware, this function has side effect to store this.previousFlattenedStyle!\n *\n * @param {!object} prevProps Previous properties\n * @param {!object} nextProps Next properties\n * @param {!object} validAttributes Set of valid attributes and how they\n * should be diffed\n */\n computeUpdatedProperties: function(prevProps, nextProps, validAttributes) {\n if (__DEV__) {\n for (var key in nextProps) {\n if (nextProps.hasOwnProperty(key) &&\n nextProps[key] &&\n validAttributes[key]) {\n deepFreezeAndThrowOnMutationInDev(nextProps[key]);\n }\n }\n }\n\n var updatePayload = diffRawProperties(\n null, // updatePayload\n prevProps,\n nextProps,\n validAttributes\n );\n\n // The style property is a deeply nested element which includes numbers\n // to represent static objects. Most of the time, it doesn't change across\n // renders, so it's faster to spend the time checking if it is different\n // before actually doing the expensive flattening operation in order to\n // compute the diff.\n if (styleDiffer(nextProps.style, prevProps.style)) {\n var nextFlattenedStyle = precomputeStyle(flattenStyle(nextProps.style));\n updatePayload = diffRawProperties(\n updatePayload,\n this.previousFlattenedStyle,\n nextFlattenedStyle,\n ReactNativeStyleAttributes\n );\n this.previousFlattenedStyle = nextFlattenedStyle;\n }\n\n return updatePayload;\n },\n\n\n /**\n * Updates the component's currently mounted representation.\n *\n * @param {object} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function(nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n\n var updatePayload = this.computeUpdatedProperties(\n prevElement.props,\n nextElement.props,\n this.viewConfig.validAttributes\n );\n\n if (updatePayload) {\n RCTUIManager.updateView(\n ReactNativeTagHandles.mostRecentMountedNodeHandleForRootNodeID(this._rootNodeID),\n this.viewConfig.uiViewClassName,\n updatePayload\n );\n }\n\n this._reconcileListenersUponUpdate(\n prevElement.props,\n nextElement.props\n );\n this.updateChildren(nextElement.props.children, transaction, context);\n },\n\n /**\n * @param {object} initialProps Native component props.\n */\n _registerListenersUponCreation: function(initialProps) {\n for (var key in initialProps) {\n // NOTE: The check for `!props[key]`, is only possible because this method\n // registers listeners the *first* time a component is created.\n if (registrationNames[key] && initialProps[key]) {\n var listener = initialProps[key];\n putListener(this._rootNodeID, key, listener);\n }\n }\n },\n\n /**\n * Reconciles event listeners, adding or removing if necessary.\n * @param {object} prevProps Native component props including events.\n * @param {object} nextProps Next native component props including events.\n */\n _reconcileListenersUponUpdate: function(prevProps, nextProps) {\n for (var key in nextProps) {\n if (registrationNames[key] && (nextProps[key] !== prevProps[key])) {\n putListener(this._rootNodeID, key, nextProps[key]);\n }\n }\n },\n\n /**\n * @param {string} rootID Root ID of this subtree.\n * @param {Transaction} transaction For creating/updating.\n * @return {string} Unique iOS view tag.\n */\n mountComponent: function(rootID, transaction, context) {\n this._rootNodeID = rootID;\n\n var tag = ReactNativeTagHandles.allocateTag();\n\n this.previousFlattenedStyle = {};\n var updatePayload = this.computeUpdatedProperties(\n {}, // previous props\n this._currentElement.props, // next props\n this.viewConfig.validAttributes\n );\n\n var nativeTopRootID = ReactNativeTagHandles.getNativeTopRootIDFromNodeID(rootID);\n RCTUIManager.createView(\n tag,\n this.viewConfig.uiViewClassName,\n nativeTopRootID ? ReactNativeTagHandles.rootNodeIDToTag[nativeTopRootID] : null,\n updatePayload\n );\n\n this._registerListenersUponCreation(this._currentElement.props);\n this.initializeChildren(\n this._currentElement.props.children,\n tag,\n transaction,\n context\n );\n return {\n rootNodeID: rootID,\n tag: tag\n };\n }\n};\n\n/**\n * Order of mixins is important. ReactNativeBaseComponent overrides methods in\n * ReactMultiChild.\n */\nObject.assign(\n ReactNativeBaseComponent.prototype,\n ReactMultiChild.Mixin,\n ReactNativeBaseComponent.Mixin,\n NativeMethodsMixin\n);\n\nmodule.exports = ReactNativeBaseComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeBaseComponent.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/NativeMethodsMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTPOPAnimationManager=NativeModules.POPAnimationManager;\nvar RCTUIManager=NativeModules.UIManager;\nvar TextInputState=require('TextInputState');\n\nvar findNodeHandle=require('findNodeHandle');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('invariant');\nvar mergeFast=require('mergeFast');\nvar precomputeStyle=require('precomputeStyle');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar animationIDInvariant=function(\nfuncName,\nanim)\n{\ninvariant(\nanim,\nfuncName + ' must be called with a valid animation ID returned from' + \n' POPAnimation.createAnimation, received: \"' + anim + '\"');};\n\n\n\nvar NativeMethodsMixin={\naddAnimation:function(anim,callback){\nanimationIDInvariant('addAnimation',anim);\nRCTPOPAnimationManager.addAnimation(\nfindNodeHandle(this),\nanim,\nmountSafeCallback(this,callback));},\n\n\n\nremoveAnimation:function(anim){\nanimationIDInvariant('removeAnimation',anim);\nRCTPOPAnimationManager.removeAnimation(findNodeHandle(this),anim);},\n\n\nmeasure:function(callback){\nRCTUIManager.measure(\nfindNodeHandle(this),\nmountSafeCallback(this,callback));},\n\n\n\nmeasureLayout:function(\nrelativeToNativeNode,\nonSuccess,\nonFail)\n{\nRCTUIManager.measureLayout(\nfindNodeHandle(this),\nrelativeToNativeNode,\nmountSafeCallback(this,onFail),\nmountSafeCallback(this,onSuccess));},\n\n\n\n\n\n\n\n\nsetNativeProps:function(nativeProps){\n\n\n\n\n\nvar hasOnlyStyle=true;\nfor(var key in nativeProps) {\nif(key !== 'style'){\nhasOnlyStyle = false;\nbreak;}}\n\n\nvar style=precomputeStyle(flattenStyle(nativeProps.style));\n\nvar props=null;\nif(hasOnlyStyle){\nprops = style;}else \nif(!style){\nprops = nativeProps;}else \n{\nprops = mergeFast(nativeProps,style);}\n\n\nRCTUIManager.updateView(\nfindNodeHandle(this),\nthis.viewConfig.uiViewClassName,\nprops);},\n\n\n\nfocus:function(){\nTextInputState.focusTextInput(findNodeHandle(this));},\n\n\nblur:function(){\nTextInputState.blurTextInput(findNodeHandle(this));}};\n\n\n\nfunction throwOnStylesProp(component,props){\nif(props.styles !== undefined){\nvar owner=component._owner || null;\nvar name=component.constructor.displayName;\nvar msg='`styles` is not a supported property of `' + name + '`, did ' + \n'you mean `style` (singular)?';\nif(owner && owner.constructor && owner.constructor.displayName){\nmsg += '\\n\\nCheck the `' + owner.constructor.displayName + '` parent ' + \n' component.';}\n\nthrow new Error(msg);}}\n\n\nif(__DEV__){\n\n\n\nvar NativeMethodsMixin_DEV=NativeMethodsMixin;\ninvariant(\n!NativeMethodsMixin_DEV.componentWillMount && \n!NativeMethodsMixin_DEV.componentWillReceiveProps,\n'Do not override existing functions.');\n\nNativeMethodsMixin_DEV.componentWillMount = function(){\nthrowOnStylesProp(this,this.props);};\n\nNativeMethodsMixin_DEV.componentWillReceiveProps = function(newProps){\nthrowOnStylesProp(this,newProps);};}\n\n\n\n\n\n\n\nvar mountSafeCallback=function(context,callback){\nreturn function(){\nif(!callback || context.isMounted && !context.isMounted()){\nreturn;}\n\nreturn callback.apply(context,arguments);};};\n\n\n\nmodule.exports = NativeMethodsMixin;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NativeMethodsMixin\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\nvar RCTPOPAnimationManager = NativeModules.POPAnimationManager;\nvar RCTUIManager = NativeModules.UIManager;\nvar TextInputState = require('TextInputState');\n\nvar findNodeHandle = require('findNodeHandle');\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('invariant');\nvar mergeFast = require('mergeFast');\nvar precomputeStyle = require('precomputeStyle');\n\ntype MeasureOnSuccessCallback = (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\ntype MeasureLayoutOnSuccessCallback = (\n left: number,\n top: number,\n width: number,\n height: number\n) => void\n\nvar animationIDInvariant = function(\n funcName: string,\n anim: number\n) {\n invariant(\n anim,\n funcName + ' must be called with a valid animation ID returned from' +\n ' POPAnimation.createAnimation, received: \"' + anim + '\"'\n );\n};\n\nvar NativeMethodsMixin = {\n addAnimation: function(anim: number, callback?: (finished: bool) => void) {\n animationIDInvariant('addAnimation', anim);\n RCTPOPAnimationManager.addAnimation(\n findNodeHandle(this),\n anim,\n mountSafeCallback(this, callback)\n );\n },\n\n removeAnimation: function(anim: number) {\n animationIDInvariant('removeAnimation', anim);\n RCTPOPAnimationManager.removeAnimation(findNodeHandle(this), anim);\n },\n\n measure: function(callback: MeasureOnSuccessCallback) {\n RCTUIManager.measure(\n findNodeHandle(this),\n mountSafeCallback(this, callback)\n );\n },\n\n measureLayout: function(\n relativeToNativeNode: number,\n onSuccess: MeasureLayoutOnSuccessCallback,\n onFail: () => void /* currently unused */\n ) {\n RCTUIManager.measureLayout(\n findNodeHandle(this),\n relativeToNativeNode,\n mountSafeCallback(this, onFail),\n mountSafeCallback(this, onSuccess)\n );\n },\n\n /**\n * This function sends props straight to native. They will not participate\n * in future diff process, this means that if you do not include them in the\n * next render, they will remain active.\n */\n setNativeProps: function(nativeProps: Object) {\n // nativeProps contains a style attribute that's going to be flattened\n // and all the attributes expanded in place. In order to make this\n // process do as few allocations and copies as possible, we return\n // one if the other is empty. Only if both have values then we create\n // a new object and merge.\n var hasOnlyStyle = true;\n for (var key in nativeProps) {\n if (key !== 'style') {\n hasOnlyStyle = false;\n break;\n }\n }\n var style = precomputeStyle(flattenStyle(nativeProps.style));\n\n var props = null;\n if (hasOnlyStyle) {\n props = style;\n } else if (!style) {\n props = nativeProps;\n } else {\n props = mergeFast(nativeProps, style);\n }\n\n RCTUIManager.updateView(\n findNodeHandle(this),\n this.viewConfig.uiViewClassName,\n props\n );\n },\n\n focus: function() {\n TextInputState.focusTextInput(findNodeHandle(this));\n },\n\n blur: function() {\n TextInputState.blurTextInput(findNodeHandle(this));\n }\n};\n\nfunction throwOnStylesProp(component, props) {\n if (props.styles !== undefined) {\n var owner = component._owner || null;\n var name = component.constructor.displayName;\n var msg = '`styles` is not a supported property of `' + name + '`, did ' +\n 'you mean `style` (singular)?';\n if (owner && owner.constructor && owner.constructor.displayName) {\n msg += '\\n\\nCheck the `' + owner.constructor.displayName + '` parent ' +\n ' component.';\n }\n throw new Error(msg);\n }\n}\nif (__DEV__) {\n // hide this from Flow since we can't define these properties outside of\n // __DEV__ without actually implementing them (setting them to undefined\n // isn't allowed by ReactClass)\n var NativeMethodsMixin_DEV = (NativeMethodsMixin: any);\n invariant(\n !NativeMethodsMixin_DEV.componentWillMount &&\n !NativeMethodsMixin_DEV.componentWillReceiveProps,\n 'Do not override existing functions.'\n );\n NativeMethodsMixin_DEV.componentWillMount = function () {\n throwOnStylesProp(this, this.props);\n };\n NativeMethodsMixin_DEV.componentWillReceiveProps = function (newProps) {\n throwOnStylesProp(this, newProps);\n };\n}\n\n/**\n * In the future, we should cleanup callbacks by cancelling them instead of\n * using this.\n */\nvar mountSafeCallback = function(context: ReactComponent, callback: ?Function): any {\n return function() {\n if (!callback || (context.isMounted && !context.isMounted())) {\n return;\n }\n return callback.apply(context, arguments);\n };\n};\n\nmodule.exports = NativeMethodsMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/NativeMethodsMixin.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar TextInputState={\n\n\n\n_currentlyFocusedID:null,\n\n\n\n\n\ncurrentlyFocusedField:function(){\nreturn this._currentlyFocusedID;},\n\n\n\n\n\n\n\nfocusTextInput:function(textFieldID){\nif(this._currentlyFocusedID !== textFieldID && textFieldID !== null){\nthis._currentlyFocusedID = textFieldID;\nRCTUIManager.focus(textFieldID);}},\n\n\n\n\n\n\n\n\nblurTextInput:function(textFieldID){\nif(this._currentlyFocusedID === textFieldID && textFieldID !== null){\nthis._currentlyFocusedID = null;\nRCTUIManager.blur(textFieldID);}}};\n\n\n\n\nmodule.exports = TextInputState;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextInputState\n * @flow\n *\n * This class is responsible for coordinating the \"focused\"\n * state for TextInputs. All calls relating to the keyboard\n * should be funneled through here\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar TextInputState = {\n /**\n * Internal state\n */\n _currentlyFocusedID: (null: ?number),\n\n /**\n * Returns the ID of the currently focused text field, if one exists\n * If no text field is focused it returns null\n */\n currentlyFocusedField: function(): ?number {\n return this._currentlyFocusedID;\n },\n\n /**\n * @param {number} TextInputID id of the text field to focus\n * Focuses the specified text field\n * noop if the text field was already focused\n */\n focusTextInput: function(textFieldID: ?number) {\n if (this._currentlyFocusedID !== textFieldID && textFieldID !== null) {\n this._currentlyFocusedID = textFieldID;\n RCTUIManager.focus(textFieldID);\n }\n },\n\n /**\n * @param {number} textFieldID id of the text field to focus\n * Unfocuses the specified text field\n * noop if it wasn't focused\n */\n blurTextInput: function(textFieldID: ?number) {\n if (this._currentlyFocusedID === textFieldID && textFieldID !== null) {\n this._currentlyFocusedID = null;\n RCTUIManager.blur(textFieldID);\n }\n }\n};\n\nmodule.exports = TextInputState;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInputState.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/findNodeHandle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction findNodeHandle(componentOrHandle){\nif(__DEV__){\nvar owner=ReactCurrentOwner.current;\nif(owner !== null){\nwarning(\nowner._warnedAboutRefsInRender,\n'%s is accessing findNodeHandle inside its render(). ' + \n'render() should be a pure function of props and state. It should ' + \n'never access something that requires stale data from the previous ' + \n'render, such as refs. Move this logic to componentDidMount and ' + \n'componentDidUpdate instead.',\nowner.getName() || 'A component');\n\nowner._warnedAboutRefsInRender = true;}}\n\n\nif(componentOrHandle == null){\nreturn null;}\n\nif(typeof componentOrHandle === 'number'){\n\nreturn componentOrHandle;}\n\n\nvar component=componentOrHandle;\n\n\n\nvar internalInstance=ReactInstanceMap.get(component);\nif(internalInstance){\nreturn ReactNativeTagHandles.rootNodeIDToTag[internalInstance._rootNodeID];}else \n{\nvar rootNodeID=component._rootNodeID;\nif(rootNodeID){\nreturn ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];}else \n{\ninvariant(\n\n\ntypeof component === 'object' && \n'_rootNodeID' in component || \n\n\ncomponent.render != null && \ntypeof component.render === 'function',\n\n'findNodeHandle(...): Argument is not a component ' + \n'(type: %s, keys: %s)',\ntypeof component,\nObject.keys(component));\n\ninvariant(\nfalse,\n'findNodeHandle(...): Unable to find node handle for unmounted ' + \n'component.');}}}\n\n\n\n\n\nmodule.exports = findNodeHandle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule findNodeHandle\n * @flow\n */\n\n'use strict';\n\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\n/**\n * ReactNative vs ReactWeb\n * -----------------------\n * React treats some pieces of data opaquely. This means that the information\n * is first class (it can be passed around), but cannot be inspected. This\n * allows us to build infrastructure that reasons about resources, without\n * making assumptions about the nature of those resources, and this allows that\n * infra to be shared across multiple platforms, where the resources are very\n * different. General infra (such as `ReactMultiChild`) reasons opaquely about\n * the data, but platform specific code (such as `ReactNativeBaseComponent`) can\n * make assumptions about the data.\n *\n *\n * `rootNodeID`, uniquely identifies a position in the generated native view\n * tree. Many layers of composite components (created with `React.createClass`)\n * can all share the same `rootNodeID`.\n *\n * `nodeHandle`: A sufficiently unambiguous way to refer to a lower level\n * resource (dom node, native view etc). The `rootNodeID` is sufficient for web\n * `nodeHandle`s, because the position in a tree is always enough to uniquely\n * identify a DOM node (we never have nodes in some bank outside of the\n * document). The same would be true for `ReactNative`, but we must maintain a\n * mapping that we can send efficiently serializable\n * strings across native boundaries.\n *\n * Opaque name TodaysWebReact FutureWebWorkerReact ReactNative\n * ----------------------------------------------------------------------------\n * nodeHandle N/A rootNodeID tag\n */\n\nfunction findNodeHandle(componentOrHandle: any): ?number {\n if (__DEV__) {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n warning(\n owner._warnedAboutRefsInRender,\n '%s is accessing findNodeHandle inside its render(). ' +\n 'render() should be a pure function of props and state. It should ' +\n 'never access something that requires stale data from the previous ' +\n 'render, such as refs. Move this logic to componentDidMount and ' +\n 'componentDidUpdate instead.',\n owner.getName() || 'A component'\n );\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrHandle == null) {\n return null;\n }\n if (typeof componentOrHandle === 'number') {\n // Already a node handle\n return componentOrHandle;\n }\n\n var component = componentOrHandle;\n\n // TODO (balpert): Wrap iOS native components in a composite wrapper, then\n // ReactInstanceMap.get here will always succeed for mounted components\n var internalInstance = ReactInstanceMap.get(component);\n if (internalInstance) {\n return ReactNativeTagHandles.rootNodeIDToTag[internalInstance._rootNodeID];\n } else {\n var rootNodeID = component._rootNodeID;\n if (rootNodeID) {\n return ReactNativeTagHandles.rootNodeIDToTag[rootNodeID];\n } else {\n invariant(\n (\n // Native\n typeof component === 'object' &&\n '_rootNodeID' in component\n ) || (\n // Composite\n component.render != null &&\n typeof component.render === 'function'\n ),\n 'findNodeHandle(...): Argument is not a component ' +\n '(type: %s, keys: %s)',\n typeof component,\n Object.keys(component)\n );\n invariant(\n false,\n 'findNodeHandle(...): Unable to find node handle for unmounted ' +\n 'component.'\n );\n }\n }\n}\n\nmodule.exports = findNodeHandle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/findNodeHandle.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar StyleSheetRegistry=require('StyleSheetRegistry');\nvar invariant=require('invariant');\n\n\n\n\nfunction getStyle(style){\nif(typeof style === 'number'){\nreturn StyleSheetRegistry.getStyleByID(style);}\n\nreturn style;}\n\n\nfunction flattenStyle(style){\nif(!style){\nreturn undefined;}\n\ninvariant(style !== true,'style may be false but not true');\n\nif(!Array.isArray(style)){\nreturn getStyle(style);}\n\n\nvar result={};\nfor(var i=0;i < style.length;++i) {\nvar computedStyle=flattenStyle(style[i]);\nif(computedStyle){\nfor(var key in computedStyle) {\nresult[key] = computedStyle[key];\n\nif(__DEV__){\nvar value=computedStyle[key];}}}}\n\n\n\n\nreturn result;}\n\n\nmodule.exports = flattenStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule flattenStyle\n * @flow\n */\n'use strict';\n\nvar StyleSheetRegistry = require('StyleSheetRegistry');\nvar invariant = require('invariant');\n\ntype Atom = number | bool | Object | Array<?Atom>\ntype StyleObj = Atom | Array<?StyleObj>\n\nfunction getStyle(style) {\n if (typeof style === 'number') {\n return StyleSheetRegistry.getStyleByID(style);\n }\n return style;\n}\n\nfunction flattenStyle(style: ?StyleObj): ?Object {\n if (!style) {\n return undefined;\n }\n invariant(style !== true, 'style may be false but not true');\n\n if (!Array.isArray(style)) {\n return getStyle(style);\n }\n\n var result = {};\n for (var i = 0; i < style.length; ++i) {\n var computedStyle = flattenStyle(style[i]);\n if (computedStyle) {\n for (var key in computedStyle) {\n result[key] = computedStyle[key];\n\n if (__DEV__) {\n var value = computedStyle[key];\n }\n }\n }\n }\n return result;\n}\n\nmodule.exports = flattenStyle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/flattenStyle.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetRegistry.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles={};\nvar uniqueID=1;\nvar emptyStyle={};var \n\nStyleSheetRegistry=(function(){function StyleSheetRegistry(){_classCallCheck(this,StyleSheetRegistry);}_createClass(StyleSheetRegistry,null,[{key:'registerStyle',value:\nfunction registerStyle(style){\nvar id=++uniqueID;\nif(__DEV__){\nObject.freeze(style);}\n\nstyles[id] = style;\nreturn id;}},{key:'getStyleByID',value:\n\n\nfunction getStyleByID(id){\nif(!id){\n\n\nreturn emptyStyle;}\n\n\nvar style=styles[id];\nif(!style){\nconsole.warn('Invalid style with id `' + id + '`. Skipping ...');\nreturn emptyStyle;}\n\nreturn style;}}]);return StyleSheetRegistry;})();\n\n\n\nmodule.exports = StyleSheetRegistry;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheetRegistry\n * @flow\n */\n'use strict';\n\nvar styles = {};\nvar uniqueID = 1;\nvar emptyStyle = {};\n\nclass StyleSheetRegistry {\n static registerStyle(style: Object): number {\n var id = ++uniqueID;\n if (__DEV__) {\n Object.freeze(style);\n }\n styles[id] = style;\n return id;\n }\n\n static getStyleByID(id: number): Object {\n if (!id) {\n // Used in the style={[condition && id]} pattern,\n // we want it to be a no-op when the value is false or null\n return emptyStyle;\n }\n\n var style = styles[id];\n if (!style) {\n console.warn('Invalid style with id `' + id + '`. Skipping ...');\n return emptyStyle;\n }\n return style;\n }\n}\n\nmodule.exports = StyleSheetRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetRegistry.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mergeFast.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mergeFast=function(one,two){\nvar ret={};\nfor(var keyOne in one) {\nret[keyOne] = one[keyOne];}\n\nfor(var keyTwo in two) {\nret[keyTwo] = two[keyTwo];}\n\nreturn ret;};\n\n\nmodule.exports = mergeFast;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule mergeFast\n * @flow\n */\n'use strict';\n\n/**\n * Faster version of `merge` that doesn't check its arguments and\n * also merges prototye inherited properties.\n *\n * @param {object} one Any non-null object.\n * @param {object} two Any non-null object.\n * @return {object} Merging of two objects, including prototype\n * inherited properties.\n */\nvar mergeFast = function(one: Object, two: Object): Object {\n var ret = {};\n for (var keyOne in one) {\n ret[keyOne] = one[keyOne];\n }\n for (var keyTwo in two) {\n ret[keyTwo] = two[keyTwo];\n }\n return ret;\n};\n\nmodule.exports = mergeFast;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mergeFast.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/precomputeStyle.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar MatrixMath=require('MatrixMath');\nvar Platform=require('Platform');\n\nvar deepFreezeAndThrowOnMutationInDev=require('deepFreezeAndThrowOnMutationInDev');\nvar invariant=require('invariant');\nvar stringifySafe=require('stringifySafe');\n\n\n\n\n\nfunction precomputeStyle(style){\nif(!style || !style.transform){\nreturn style;}\n\ninvariant(\n!style.transformMatrix,\n'transformMatrix and transform styles cannot be used on the same component');\n\nvar newStyle=_precomputeTransforms(_extends({},style));\ndeepFreezeAndThrowOnMutationInDev(newStyle);\nreturn newStyle;}\n\n\n\n\n\n\n\n\n\n\nfunction _precomputeTransforms(style){var \ntransform=style.transform;\nvar result=MatrixMath.createIdentityMatrix();\n\ntransform.forEach(function(transformation){\nvar key=Object.keys(transformation)[0];\nvar value=transformation[key];\nif(__DEV__){\n_validateTransform(key,value,transformation);}\n\n\nswitch(key){\ncase 'matrix':\nMatrixMath.multiplyInto(result,result,value);\nbreak;\ncase 'rotate':\n_multiplyTransform(result,MatrixMath.reuseRotateZCommand,[_convertToRadians(value)]);\nbreak;\ncase 'scale':\n_multiplyTransform(result,MatrixMath.reuseScaleCommand,[value]);\nbreak;\ncase 'scaleX':\n_multiplyTransform(result,MatrixMath.reuseScaleXCommand,[value]);\nbreak;\ncase 'scaleY':\n_multiplyTransform(result,MatrixMath.reuseScaleYCommand,[value]);\nbreak;\ncase 'translate':\n_multiplyTransform(result,MatrixMath.reuseTranslate3dCommand,[value[0],value[1],value[2] || 0]);\nbreak;\ncase 'translateX':\n_multiplyTransform(result,MatrixMath.reuseTranslate2dCommand,[value,0]);\nbreak;\ncase 'translateY':\n_multiplyTransform(result,MatrixMath.reuseTranslate2dCommand,[0,value]);\nbreak;\ndefault:\nthrow new Error('Invalid transform name: ' + key);}});\n\n\n\n\n\n\n\nif(Platform.OS === 'android'){\nreturn _extends({},\nstyle,{\ntransformMatrix:result,\ndecomposedMatrix:MatrixMath.decomposeMatrix(result)});}\n\n\nreturn _extends({},\nstyle,{\ntransformMatrix:result});}\n\n\n\n\n\n\nfunction _multiplyTransform(\nresult,\nmatrixMathFunction,\nargs)\n{\nvar matrixToApply=MatrixMath.createIdentityMatrix();\nvar argsWithIdentity=[matrixToApply].concat(args);\nmatrixMathFunction.apply(this,argsWithIdentity);\nMatrixMath.multiplyInto(result,result,matrixToApply);}\n\n\n\n\n\n\nfunction _convertToRadians(value){\nvar floatValue=parseFloat(value,10);\nreturn value.indexOf('rad') > -1?floatValue:floatValue * Math.PI / 180;}\n\n\nfunction _validateTransform(key,value,transformation){\ninvariant(\n!value.getValue,\n'You passed an Animated.Value to a normal component. ' + \n'You need to wrap that component in an Animated. For example, ' + \n'replace <View /> by <Animated.View />.');\n\n\nvar multivalueTransforms=[\n'matrix',\n'translate'];\n\nif(multivalueTransforms.indexOf(key) !== -1){\ninvariant(\nArray.isArray(value),\n'Transform with key of %s must have an array as the value: %s',\nkey,\nstringifySafe(transformation));}\n\n\nswitch(key){\ncase 'matrix':\ninvariant(\nvalue.length === 9 || value.length === 16,\n'Matrix transform must have a length of 9 (2d) or 16 (3d). ' + \n'Provided matrix has a length of %s: %s',\nvalue.length,\nstringifySafe(transformation));\n\nbreak;\ncase 'translate':\nbreak;\ncase 'rotate':\ninvariant(\ntypeof value === 'string',\n'Transform with key of \"%s\" must be a string: %s',\nkey,\nstringifySafe(transformation));\n\ninvariant(\nvalue.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n'Rotate transform must be expressed in degrees (deg) or radians ' + \n'(rad): %s',\nstringifySafe(transformation));\n\nbreak;\ndefault:\ninvariant(\ntypeof value === 'number',\n'Transform with key of \"%s\" must be a number: %s',\nkey,\nstringifySafe(transformation));}}\n\n\n\n\nmodule.exports = precomputeStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule precomputeStyle\n * @flow\n */\n'use strict';\n\nvar MatrixMath = require('MatrixMath');\nvar Platform = require('Platform');\n\nvar deepFreezeAndThrowOnMutationInDev = require('deepFreezeAndThrowOnMutationInDev');\nvar invariant = require('invariant');\nvar stringifySafe = require('stringifySafe');\n\n/**\n * This method provides a hook where flattened styles may be precomputed or\n * otherwise prepared to become better input data for native code.\n */\nfunction precomputeStyle(style: ?Object): ?Object {\n if (!style || !style.transform) {\n return style;\n }\n invariant(\n !style.transformMatrix,\n 'transformMatrix and transform styles cannot be used on the same component'\n );\n var newStyle = _precomputeTransforms({...style});\n deepFreezeAndThrowOnMutationInDev(newStyle);\n return newStyle;\n}\n\n/**\n * Generate a transform matrix based on the provided transforms, and use that\n * within the style object instead.\n *\n * This allows us to provide an API that is similar to CSS, where transforms may\n * be applied in an arbitrary order, and yet have a universal, singular\n * interface to native code.\n */\nfunction _precomputeTransforms(style: Object): Object {\n var {transform} = style;\n var result = MatrixMath.createIdentityMatrix();\n\n transform.forEach(transformation => {\n var key = Object.keys(transformation)[0];\n var value = transformation[key];\n if (__DEV__) {\n _validateTransform(key, value, transformation);\n }\n\n switch (key) {\n case 'matrix':\n MatrixMath.multiplyInto(result, result, value);\n break;\n case 'rotate':\n _multiplyTransform(result, MatrixMath.reuseRotateZCommand, [_convertToRadians(value)]);\n break;\n case 'scale':\n _multiplyTransform(result, MatrixMath.reuseScaleCommand, [value]);\n break;\n case 'scaleX':\n _multiplyTransform(result, MatrixMath.reuseScaleXCommand, [value]);\n break;\n case 'scaleY':\n _multiplyTransform(result, MatrixMath.reuseScaleYCommand, [value]);\n break;\n case 'translate':\n _multiplyTransform(result, MatrixMath.reuseTranslate3dCommand, [value[0], value[1], value[2] || 0]);\n break;\n case 'translateX':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [value, 0]);\n break;\n case 'translateY':\n _multiplyTransform(result, MatrixMath.reuseTranslate2dCommand, [0, value]);\n break;\n default:\n throw new Error('Invalid transform name: ' + key);\n }\n });\n\n // Android does not support the direct application of a transform matrix to\n // a view, so we need to decompose the result matrix into transforms that can\n // get applied in the specific order of (1) translate (2) scale (3) rotate.\n // Once we can directly apply a matrix, we can remove this decomposition.\n if (Platform.OS === 'android') {\n return {\n ...style,\n transformMatrix: result,\n decomposedMatrix: MatrixMath.decomposeMatrix(result),\n };\n }\n return {\n ...style,\n transformMatrix: result,\n };\n}\n\n/**\n * Performs a destructive operation on a transform matrix.\n */\nfunction _multiplyTransform(\n result: Array<number>,\n matrixMathFunction: Function,\n args: Array<number>\n): void {\n var matrixToApply = MatrixMath.createIdentityMatrix();\n var argsWithIdentity = [matrixToApply].concat(args);\n matrixMathFunction.apply(this, argsWithIdentity);\n MatrixMath.multiplyInto(result, result, matrixToApply);\n}\n\n/**\n * Parses a string like '0.5rad' or '60deg' into radians expressed in a float.\n * Note that validation on the string is done in `_validateTransform()`.\n */\nfunction _convertToRadians(value: string): number {\n var floatValue = parseFloat(value, 10);\n return value.indexOf('rad') > -1 ? floatValue : floatValue * Math.PI / 180;\n}\n\nfunction _validateTransform(key, value, transformation) {\n invariant(\n !value.getValue,\n 'You passed an Animated.Value to a normal component. ' +\n 'You need to wrap that component in an Animated. For example, ' +\n 'replace <View /> by <Animated.View />.'\n );\n\n var multivalueTransforms = [\n 'matrix',\n 'translate',\n ];\n if (multivalueTransforms.indexOf(key) !== -1) {\n invariant(\n Array.isArray(value),\n 'Transform with key of %s must have an array as the value: %s',\n key,\n stringifySafe(transformation),\n );\n }\n switch (key) {\n case 'matrix':\n invariant(\n value.length === 9 || value.length === 16,\n 'Matrix transform must have a length of 9 (2d) or 16 (3d). ' +\n 'Provided matrix has a length of %s: %s',\n value.length,\n stringifySafe(transformation),\n );\n break;\n case 'translate':\n break;\n case 'rotate':\n invariant(\n typeof value === 'string',\n 'Transform with key of \"%s\" must be a string: %s',\n key,\n stringifySafe(transformation),\n );\n invariant(\n value.indexOf('deg') > -1 || value.indexOf('rad') > -1,\n 'Rotate transform must be expressed in degrees (deg) or radians ' +\n '(rad): %s',\n stringifySafe(transformation),\n );\n break;\n default:\n invariant(\n typeof value === 'number',\n 'Transform with key of \"%s\" must be a number: %s',\n key,\n stringifySafe(transformation),\n );\n }\n}\n\nmodule.exports = precomputeStyle;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/precomputeStyle.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MatrixMath.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\n\n\n\n\nvar MatrixMath={\ncreateIdentityMatrix:function(){\nreturn [\n1,0,0,0,\n0,1,0,0,\n0,0,1,0,\n0,0,0,1];},\n\n\n\ncreateCopy:function(m){\nreturn [\nm[0],m[1],m[2],m[3],\nm[4],m[5],m[6],m[7],\nm[8],m[9],m[10],m[11],\nm[12],m[13],m[14],m[15]];},\n\n\n\ncreateTranslate2d:function(x,y){\nvar mat=MatrixMath.createIdentityMatrix();\nMatrixMath.reuseTranslate2dCommand(mat,x,y);\nreturn mat;},\n\n\nreuseTranslate2dCommand:function(matrixCommand,x,y){\nmatrixCommand[12] = x;\nmatrixCommand[13] = y;},\n\n\nreuseTranslate3dCommand:function(matrixCommand,x,y,z){\nmatrixCommand[12] = x;\nmatrixCommand[13] = y;\nmatrixCommand[14] = z;},\n\n\ncreateScale:function(factor){\nvar mat=MatrixMath.createIdentityMatrix();\nMatrixMath.reuseScaleCommand(mat,factor);\nreturn mat;},\n\n\nreuseScaleCommand:function(matrixCommand,factor){\nmatrixCommand[0] = factor;\nmatrixCommand[5] = factor;},\n\n\nreuseScale3dCommand:function(matrixCommand,x,y,z){\nmatrixCommand[0] = x;\nmatrixCommand[5] = y;\nmatrixCommand[10] = z;},\n\n\nreuseScaleXCommand:function(matrixCommand,factor){\nmatrixCommand[0] = factor;},\n\n\nreuseScaleYCommand:function(matrixCommand,factor){\nmatrixCommand[5] = factor;},\n\n\nreuseScaleZCommand:function(matrixCommand,factor){\nmatrixCommand[10] = factor;},\n\n\nreuseRotateXCommand:function(matrixCommand,radians){\nmatrixCommand[5] = Math.cos(radians);\nmatrixCommand[6] = Math.sin(radians);\nmatrixCommand[9] = -Math.sin(radians);\nmatrixCommand[10] = Math.cos(radians);},\n\n\nreuseRotateYCommand:function(matrixCommand,amount){\nmatrixCommand[0] = Math.cos(amount);\nmatrixCommand[2] = -Math.sin(amount);\nmatrixCommand[8] = Math.sin(amount);\nmatrixCommand[10] = Math.cos(amount);},\n\n\n\nreuseRotateZCommand:function(matrixCommand,radians){\nmatrixCommand[0] = Math.cos(radians);\nmatrixCommand[1] = Math.sin(radians);\nmatrixCommand[4] = -Math.sin(radians);\nmatrixCommand[5] = Math.cos(radians);},\n\n\ncreateRotateZ:function(radians){\nvar mat=MatrixMath.createIdentityMatrix();\nMatrixMath.reuseRotateZCommand(mat,radians);\nreturn mat;},\n\n\nmultiplyInto:function(out,a,b){\nvar a00=a[0],a01=a[1],a02=a[2],a03=a[3],\na10=a[4],a11=a[5],a12=a[6],a13=a[7],\na20=a[8],a21=a[9],a22=a[10],a23=a[11],\na30=a[12],a31=a[13],a32=a[14],a33=a[15];\n\nvar b0=b[0],b1=b[1],b2=b[2],b3=b[3];\nout[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\nb0 = b[4];b1 = b[5];b2 = b[6];b3 = b[7];\nout[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\nb0 = b[8];b1 = b[9];b2 = b[10];b3 = b[11];\nout[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\n\nb0 = b[12];b1 = b[13];b2 = b[14];b3 = b[15];\nout[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\nout[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\nout[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\nout[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;},\n\n\ndeterminant:function(matrix){var \n\nm00=\n\n\n\nmatrix[0];var m01=matrix[1];var m02=matrix[2];var m03=matrix[3];var m10=matrix[4];var m11=matrix[5];var m12=matrix[6];var m13=matrix[7];var m20=matrix[8];var m21=matrix[9];var m22=matrix[10];var m23=matrix[11];var m30=matrix[12];var m31=matrix[13];var m32=matrix[14];var m33=matrix[15];\nreturn (\nm03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 - \nm03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 + \nm02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 - \nm03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 + \nm03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 - \nm02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 + \nm03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 - \nm03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 + \nm01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 - \nm02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 + \nm02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 - \nm01 * m10 * m22 * m33 + m00 * m11 * m22 * m33);},\n\n\n\n\n\n\n\n\n\n\ninverse:function(matrix){\nvar det=MatrixMath.determinant(matrix);\nif(!det){\nreturn matrix;}var \n\n\nm00=\n\n\n\nmatrix[0];var m01=matrix[1];var m02=matrix[2];var m03=matrix[3];var m10=matrix[4];var m11=matrix[5];var m12=matrix[6];var m13=matrix[7];var m20=matrix[8];var m21=matrix[9];var m22=matrix[10];var m23=matrix[11];var m30=matrix[12];var m31=matrix[13];var m32=matrix[14];var m33=matrix[15];\nreturn [\n(m12 * m23 * m31 - m13 * m22 * m31 + m13 * m21 * m32 - m11 * m23 * m32 - m12 * m21 * m33 + m11 * m22 * m33) / det,\n(m03 * m22 * m31 - m02 * m23 * m31 - m03 * m21 * m32 + m01 * m23 * m32 + m02 * m21 * m33 - m01 * m22 * m33) / det,\n(m02 * m13 * m31 - m03 * m12 * m31 + m03 * m11 * m32 - m01 * m13 * m32 - m02 * m11 * m33 + m01 * m12 * m33) / det,\n(m03 * m12 * m21 - m02 * m13 * m21 - m03 * m11 * m22 + m01 * m13 * m22 + m02 * m11 * m23 - m01 * m12 * m23) / det,\n(m13 * m22 * m30 - m12 * m23 * m30 - m13 * m20 * m32 + m10 * m23 * m32 + m12 * m20 * m33 - m10 * m22 * m33) / det,\n(m02 * m23 * m30 - m03 * m22 * m30 + m03 * m20 * m32 - m00 * m23 * m32 - m02 * m20 * m33 + m00 * m22 * m33) / det,\n(m03 * m12 * m30 - m02 * m13 * m30 - m03 * m10 * m32 + m00 * m13 * m32 + m02 * m10 * m33 - m00 * m12 * m33) / det,\n(m02 * m13 * m20 - m03 * m12 * m20 + m03 * m10 * m22 - m00 * m13 * m22 - m02 * m10 * m23 + m00 * m12 * m23) / det,\n(m11 * m23 * m30 - m13 * m21 * m30 + m13 * m20 * m31 - m10 * m23 * m31 - m11 * m20 * m33 + m10 * m21 * m33) / det,\n(m03 * m21 * m30 - m01 * m23 * m30 - m03 * m20 * m31 + m00 * m23 * m31 + m01 * m20 * m33 - m00 * m21 * m33) / det,\n(m01 * m13 * m30 - m03 * m11 * m30 + m03 * m10 * m31 - m00 * m13 * m31 - m01 * m10 * m33 + m00 * m11 * m33) / det,\n(m03 * m11 * m20 - m01 * m13 * m20 - m03 * m10 * m21 + m00 * m13 * m21 + m01 * m10 * m23 - m00 * m11 * m23) / det,\n(m12 * m21 * m30 - m11 * m22 * m30 - m12 * m20 * m31 + m10 * m22 * m31 + m11 * m20 * m32 - m10 * m21 * m32) / det,\n(m01 * m22 * m30 - m02 * m21 * m30 + m02 * m20 * m31 - m00 * m22 * m31 - m01 * m20 * m32 + m00 * m21 * m32) / det,\n(m02 * m11 * m30 - m01 * m12 * m30 - m02 * m10 * m31 + m00 * m12 * m31 + m01 * m10 * m32 - m00 * m11 * m32) / det,\n(m01 * m12 * m20 - m02 * m11 * m20 + m02 * m10 * m21 - m00 * m12 * m21 - m01 * m10 * m22 + m00 * m11 * m22) / det];},\n\n\n\n\n\n\ntranspose:function(m){\nreturn [\nm[0],m[4],m[8],m[12],\nm[1],m[5],m[9],m[13],\nm[2],m[6],m[10],m[14],\nm[3],m[7],m[11],m[15]];},\n\n\n\n\n\n\nmultiplyVectorByMatrix:function(\nv,\nm)\n{var \nvx=v[0];var vy=v[1];var vz=v[2];var vw=v[3];\nreturn [\nvx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\nvx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\nvx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\nvx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]];},\n\n\n\n\n\n\nv3Length:function(a){\nreturn Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]);},\n\n\n\n\n\nv3Normalize:function(\nvector,\nv3Length)\n{\nvar im=1 / (v3Length || MatrixMath.v3Length(vector));\nreturn [\nvector[0] * im,\nvector[1] * im,\nvector[2] * im];},\n\n\n\n\n\n\n\nv3Dot:function(a,b){\nreturn a[0] * b[0] + \na[1] * b[1] + \na[2] * b[2];},\n\n\n\n\n\n\nv3Combine:function(\na,\nb,\naScale,\nbScale)\n{\nreturn [\naScale * a[0] + bScale * b[0],\naScale * a[1] + bScale * b[1],\naScale * a[2] + bScale * b[2]];},\n\n\n\n\n\n\n\nv3Cross:function(a,b){\nreturn [\na[1] * b[2] - a[2] * b[1],\na[2] * b[0] - a[0] * b[2],\na[0] * b[1] - a[1] * b[0]];},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nquaternionToDegreesXYZ:function(q,matrix,row){var \nqx=q[0];var qy=q[1];var qz=q[2];var qw=q[3];\nvar qw2=qw * qw;\nvar qx2=qx * qx;\nvar qy2=qy * qy;\nvar qz2=qz * qz;\nvar test=qx * qy + qz * qw;\nvar unit=qw2 + qx2 + qy2 + qz2;\nvar conv=180 / Math.PI;\n\nif(test > 0.49999 * unit){\nreturn [0,2 * Math.atan2(qx,qw) * conv,90];}\n\nif(test < -0.49999 * unit){\nreturn [0,-2 * Math.atan2(qx,qw) * conv,-90];}\n\n\nreturn [\nMatrixMath.roundTo3Places(\nMath.atan2(2 * qx * qw - 2 * qy * qz,1 - 2 * qx2 - 2 * qz2) * conv),\n\nMatrixMath.roundTo3Places(\nMath.atan2(2 * qy * qw - 2 * qx * qz,1 - 2 * qy2 - 2 * qz2) * conv),\n\nMatrixMath.roundTo3Places(\nMath.asin(2 * qx * qy + 2 * qz * qw) * conv)];},\n\n\n\n\n\n\n\n\nroundTo3Places:function(n){\nvar arr=n.toString().split('e');\nreturn Math.round(arr[0] + 'e' + (arr[1]?+arr[1] - 3:3)) * 0.001;},\n\n\n\n\n\n\n\n\n\n\n\n\n\ndecomposeMatrix:function(transformMatrix){\n\ninvariant(\ntransformMatrix.length === 16,\n'Matrix decomposition needs a list of 3d matrix values, received %s',\ntransformMatrix);\n\n\n\nvar perspective=[];\nvar quaternion=[];\nvar scale=[];\nvar skew=[];\nvar translation=[];\n\n\n\nif(!transformMatrix[15]){\nreturn;}\n\nvar matrix=[];\nvar perspectiveMatrix=[];\nfor(var i=0;i < 4;i++) {\nmatrix.push([]);\nfor(var j=0;j < 4;j++) {\nvar value=transformMatrix[i * 4 + j] / transformMatrix[15];\nmatrix[i].push(value);\nperspectiveMatrix.push(j === 3?0:value);}}\n\n\nperspectiveMatrix[15] = 1;\n\n\nif(!MatrixMath.determinant(perspectiveMatrix)){\nreturn;}\n\n\n\nif(matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0){\n\n\nvar rightHandSide=[\nmatrix[0][3],\nmatrix[1][3],\nmatrix[2][3],\nmatrix[3][3]];\n\n\n\n\nvar inversePerspectiveMatrix=MatrixMath.inverse3x3(\nperspectiveMatrix);\n\nvar transposedInversePerspectiveMatrix=MatrixMath.transpose4x4(\ninversePerspectiveMatrix);\n\nvar perspective=MatrixMath.multiplyVectorByMatrix(\nrightHandSide,\ntransposedInversePerspectiveMatrix);}else \n\n{\n\nperspective[0] = perspective[1] = perspective[2] = 0;\nperspective[3] = 1;}\n\n\n\nfor(var i=0;i < 3;i++) {\ntranslation[i] = matrix[3][i];}\n\n\n\n\nvar row=[];\nfor(i = 0;i < 3;i++) {\nrow[i] = [\nmatrix[i][0],\nmatrix[i][1],\nmatrix[i][2]];}\n\n\n\n\nscale[0] = MatrixMath.v3Length(row[0]);\nrow[0] = MatrixMath.v3Normalize(row[0],scale[0]);\n\n\nskew[0] = MatrixMath.v3Dot(row[0],row[1]);\nrow[1] = MatrixMath.v3Combine(row[1],row[0],1.0,-skew[0]);\n\n\nskew[0] = MatrixMath.v3Dot(row[0],row[1]);\nrow[1] = MatrixMath.v3Combine(row[1],row[0],1.0,-skew[0]);\n\n\nscale[1] = MatrixMath.v3Length(row[1]);\nrow[1] = MatrixMath.v3Normalize(row[1],scale[1]);\nskew[0] /= scale[1];\n\n\nskew[1] = MatrixMath.v3Dot(row[0],row[2]);\nrow[2] = MatrixMath.v3Combine(row[2],row[0],1.0,-skew[1]);\nskew[2] = MatrixMath.v3Dot(row[1],row[2]);\nrow[2] = MatrixMath.v3Combine(row[2],row[1],1.0,-skew[2]);\n\n\nscale[2] = MatrixMath.v3Length(row[2]);\nrow[2] = MatrixMath.v3Normalize(row[2],scale[2]);\nskew[1] /= scale[2];\nskew[2] /= scale[2];\n\n\n\n\nvar pdum3=MatrixMath.v3Cross(row[1],row[2]);\nif(MatrixMath.v3Dot(row[0],pdum3) < 0){\nfor(i = 0;i < 3;i++) {\nscale[i] *= -1;\nrow[i][0] *= -1;\nrow[i][1] *= -1;\nrow[i][2] *= -1;}}\n\n\n\n\nquaternion[0] = \n0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2],0));\nquaternion[1] = \n0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2],0));\nquaternion[2] = \n0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2],0));\nquaternion[3] = \n0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2],0));\n\nif(row[2][1] > row[1][2]){\nquaternion[0] = -quaternion[0];}\n\nif(row[0][2] > row[2][0]){\nquaternion[1] = -quaternion[1];}\n\nif(row[1][0] > row[0][1]){\nquaternion[2] = -quaternion[2];}\n\n\n\nvar rotationDegrees;\nif(\nquaternion[0] < 0.001 && quaternion[0] >= 0 && \nquaternion[1] < 0.001 && quaternion[1] >= 0)\n{\n\nrotationDegrees = [0,0,MatrixMath.roundTo3Places(\nMath.atan2(row[0][1],row[0][0]) * 180 / Math.PI)];}else \n\n{\nrotationDegrees = MatrixMath.quaternionToDegreesXYZ(quaternion,matrix,row);}\n\n\n\nreturn {\nrotationDegrees:rotationDegrees,\nperspective:perspective,\nquaternion:quaternion,\nscale:scale,\nskew:skew,\ntranslation:translation,\n\nrotate:rotationDegrees[2],\nscaleX:scale[0],\nscaleY:scale[1],\ntranslateX:translation[0],\ntranslateY:translation[1]};}};\n\n\n\n\n\nmodule.exports = MatrixMath;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule MatrixMath\n */\n/* eslint-disable space-infix-ops */\n'use strict';\n\nvar invariant = require('invariant');\n\n/**\n * Memory conservative (mutative) matrix math utilities. Uses \"command\"\n * matrices, which are reusable.\n */\nvar MatrixMath = {\n createIdentityMatrix: function() {\n return [\n 1,0,0,0,\n 0,1,0,0,\n 0,0,1,0,\n 0,0,0,1\n ];\n },\n\n createCopy: function(m) {\n return [\n m[0], m[1], m[2], m[3],\n m[4], m[5], m[6], m[7],\n m[8], m[9], m[10], m[11],\n m[12], m[13], m[14], m[15],\n ];\n },\n\n createTranslate2d: function(x, y) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseTranslate2dCommand(mat, x, y);\n return mat;\n },\n\n reuseTranslate2dCommand: function(matrixCommand, x, y) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n },\n\n reuseTranslate3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[12] = x;\n matrixCommand[13] = y;\n matrixCommand[14] = z;\n },\n\n createScale: function(factor) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseScaleCommand(mat, factor);\n return mat;\n },\n\n reuseScaleCommand: function(matrixCommand, factor) {\n matrixCommand[0] = factor;\n matrixCommand[5] = factor;\n },\n\n reuseScale3dCommand: function(matrixCommand, x, y, z) {\n matrixCommand[0] = x;\n matrixCommand[5] = y;\n matrixCommand[10] = z;\n },\n\n reuseScaleXCommand(matrixCommand, factor) {\n matrixCommand[0] = factor;\n },\n\n reuseScaleYCommand(matrixCommand, factor) {\n matrixCommand[5] = factor;\n },\n\n reuseScaleZCommand(matrixCommand, factor) {\n matrixCommand[10] = factor;\n },\n\n reuseRotateXCommand: function(matrixCommand, radians) {\n matrixCommand[5] = Math.cos(radians);\n matrixCommand[6] = Math.sin(radians);\n matrixCommand[9] = -Math.sin(radians);\n matrixCommand[10] = Math.cos(radians);\n },\n\n reuseRotateYCommand: function(matrixCommand, amount) {\n matrixCommand[0] = Math.cos(amount);\n matrixCommand[2] = -Math.sin(amount);\n matrixCommand[8] = Math.sin(amount);\n matrixCommand[10] = Math.cos(amount);\n },\n\n // http://www.w3.org/TR/css3-transforms/#recomposing-to-a-2d-matrix\n reuseRotateZCommand: function(matrixCommand, radians) {\n matrixCommand[0] = Math.cos(radians);\n matrixCommand[1] = Math.sin(radians);\n matrixCommand[4] = -Math.sin(radians);\n matrixCommand[5] = Math.cos(radians);\n },\n\n createRotateZ: function(radians) {\n var mat = MatrixMath.createIdentityMatrix();\n MatrixMath.reuseRotateZCommand(mat, radians);\n return mat;\n },\n\n multiplyInto: function(out, a, b) {\n var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3],\n a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7],\n a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11],\n a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15];\n\n var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3];\n out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7];\n out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11];\n out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n\n b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15];\n out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30;\n out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31;\n out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32;\n out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33;\n },\n\n determinant(matrix: Array<number>): number {\n var [\n m00, m01, m02, m03,\n m10, m11, m12, m13,\n m20, m21, m22, m23,\n m30, m31, m32, m33\n ] = matrix;\n return (\n m03 * m12 * m21 * m30 - m02 * m13 * m21 * m30 -\n m03 * m11 * m22 * m30 + m01 * m13 * m22 * m30 +\n m02 * m11 * m23 * m30 - m01 * m12 * m23 * m30 -\n m03 * m12 * m20 * m31 + m02 * m13 * m20 * m31 +\n m03 * m10 * m22 * m31 - m00 * m13 * m22 * m31 -\n m02 * m10 * m23 * m31 + m00 * m12 * m23 * m31 +\n m03 * m11 * m20 * m32 - m01 * m13 * m20 * m32 -\n m03 * m10 * m21 * m32 + m00 * m13 * m21 * m32 +\n m01 * m10 * m23 * m32 - m00 * m11 * m23 * m32 -\n m02 * m11 * m20 * m33 + m01 * m12 * m20 * m33 +\n m02 * m10 * m21 * m33 - m00 * m12 * m21 * m33 -\n m01 * m10 * m22 * m33 + m00 * m11 * m22 * m33\n );\n },\n\n /**\n * Inverse of a matrix. Multiplying by the inverse is used in matrix math\n * instead of division.\n *\n * Formula from:\n * http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n */\n inverse(matrix: Array<number>): Array<number> {\n var det = MatrixMath.determinant(matrix);\n if (!det) {\n return matrix;\n }\n var [\n m00, m01, m02, m03,\n m10, m11, m12, m13,\n m20, m21, m22, m23,\n m30, m31, m32, m33\n ] = matrix;\n return [\n (m12*m23*m31 - m13*m22*m31 + m13*m21*m32 - m11*m23*m32 - m12*m21*m33 + m11*m22*m33) / det,\n (m03*m22*m31 - m02*m23*m31 - m03*m21*m32 + m01*m23*m32 + m02*m21*m33 - m01*m22*m33) / det,\n (m02*m13*m31 - m03*m12*m31 + m03*m11*m32 - m01*m13*m32 - m02*m11*m33 + m01*m12*m33) / det,\n (m03*m12*m21 - m02*m13*m21 - m03*m11*m22 + m01*m13*m22 + m02*m11*m23 - m01*m12*m23) / det,\n (m13*m22*m30 - m12*m23*m30 - m13*m20*m32 + m10*m23*m32 + m12*m20*m33 - m10*m22*m33) / det,\n (m02*m23*m30 - m03*m22*m30 + m03*m20*m32 - m00*m23*m32 - m02*m20*m33 + m00*m22*m33) / det,\n (m03*m12*m30 - m02*m13*m30 - m03*m10*m32 + m00*m13*m32 + m02*m10*m33 - m00*m12*m33) / det,\n (m02*m13*m20 - m03*m12*m20 + m03*m10*m22 - m00*m13*m22 - m02*m10*m23 + m00*m12*m23) / det,\n (m11*m23*m30 - m13*m21*m30 + m13*m20*m31 - m10*m23*m31 - m11*m20*m33 + m10*m21*m33) / det,\n (m03*m21*m30 - m01*m23*m30 - m03*m20*m31 + m00*m23*m31 + m01*m20*m33 - m00*m21*m33) / det,\n (m01*m13*m30 - m03*m11*m30 + m03*m10*m31 - m00*m13*m31 - m01*m10*m33 + m00*m11*m33) / det,\n (m03*m11*m20 - m01*m13*m20 - m03*m10*m21 + m00*m13*m21 + m01*m10*m23 - m00*m11*m23) / det,\n (m12*m21*m30 - m11*m22*m30 - m12*m20*m31 + m10*m22*m31 + m11*m20*m32 - m10*m21*m32) / det,\n (m01*m22*m30 - m02*m21*m30 + m02*m20*m31 - m00*m22*m31 - m01*m20*m32 + m00*m21*m32) / det,\n (m02*m11*m30 - m01*m12*m30 - m02*m10*m31 + m00*m12*m31 + m01*m10*m32 - m00*m11*m32) / det,\n (m01*m12*m20 - m02*m11*m20 + m02*m10*m21 - m00*m12*m21 - m01*m10*m22 + m00*m11*m22) / det\n ];\n },\n\n /**\n * Turns columns into rows and rows into columns.\n */\n transpose(m: Array<number>): Array<number> {\n return [\n m[0], m[4], m[8], m[12],\n m[1], m[5], m[9], m[13],\n m[2], m[6], m[10], m[14],\n m[3], m[7], m[11], m[15]\n ];\n },\n\n /**\n * Based on: http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n multiplyVectorByMatrix(\n v: Array<number>,\n m: Array<number>\n ): Array<number> {\n var [vx, vy, vz, vw] = v;\n return [\n vx * m[0] + vy * m[4] + vz * m[8] + vw * m[12],\n vx * m[1] + vy * m[5] + vz * m[9] + vw * m[13],\n vx * m[2] + vy * m[6] + vz * m[10] + vw * m[14],\n vx * m[3] + vy * m[7] + vz * m[11] + vw * m[15]\n ];\n },\n\n /**\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Length(a: Array<number>): number {\n return Math.sqrt(a[0]*a[0] + a[1]*a[1] + a[2]*a[2]);\n },\n\n /**\n * Based on: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Normalize(\n vector: Array<number>,\n v3Length: number\n ): Array<number> {\n var im = 1 / (v3Length || MatrixMath.v3Length(vector));\n return [\n vector[0] * im,\n vector[1] * im,\n vector[2] * im\n ];\n },\n\n /**\n * The dot product of a and b, two 3-element vectors.\n * From: https://code.google.com/p/webgl-mjs/source/browse/mjs.js\n */\n v3Dot(a, b) {\n return a[0] * b[0] +\n a[1] * b[1] +\n a[2] * b[2];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Combine(\n a: Array<number>,\n b: Array<number>,\n aScale: number,\n bScale: number\n ): Array<number> {\n return [\n aScale * a[0] + bScale * b[0],\n aScale * a[1] + bScale * b[1],\n aScale * a[2] + bScale * b[2]\n ];\n },\n\n /**\n * From:\n * http://www.opensource.apple.com/source/WebCore/WebCore-514/platform/graphics/transforms/TransformationMatrix.cpp\n */\n v3Cross(a: Array<number>, b: Array<number>): Array<number> {\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0]\n ];\n },\n\n /**\n * Based on:\n * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/\n * and:\n * http://quat.zachbennett.com/\n *\n * Note that this rounds degrees to the thousandth of a degree, due to\n * floating point errors in the creation of the quaternion.\n *\n * Also note that this expects the qw value to be last, not first.\n *\n * Also, when researching this, remember that:\n * yaw === heading === z-axis\n * pitch === elevation/attitude === y-axis\n * roll === bank === x-axis\n */\n quaternionToDegreesXYZ(q: Array<number>, matrix, row): Array<number> {\n var [qx, qy, qz, qw] = q;\n var qw2 = qw * qw;\n var qx2 = qx * qx;\n var qy2 = qy * qy;\n var qz2 = qz * qz;\n var test = qx * qy + qz * qw;\n var unit = qw2 + qx2 + qy2 + qz2;\n var conv = 180 / Math.PI;\n\n if (test > 0.49999 * unit) {\n return [0, 2 * Math.atan2(qx, qw) * conv, 90];\n }\n if (test < -0.49999 * unit) {\n return [0, -2 * Math.atan2(qx, qw) * conv, -90];\n }\n\n return [\n MatrixMath.roundTo3Places(\n Math.atan2(2*qx*qw-2*qy*qz,1-2*qx2-2*qz2) * conv\n ),\n MatrixMath.roundTo3Places(\n Math.atan2(2*qy*qw-2*qx*qz,1-2*qy2-2*qz2) * conv\n ),\n MatrixMath.roundTo3Places(\n Math.asin(2*qx*qy+2*qz*qw) * conv\n )\n ];\n },\n\n /**\n * Based on:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round\n */\n roundTo3Places(n: number): number {\n var arr = n.toString().split('e');\n return Math.round(arr[0] + 'e' + (arr[1] ? (+arr[1] - 3) : 3)) * 0.001;\n },\n\n /**\n * Decompose a matrix into separate transform values, for use on platforms\n * where applying a precomposed matrix is not possible, and transforms are\n * applied in an inflexible ordering (e.g. Android).\n *\n * Implementation based on\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-2d-matrix\n * http://www.w3.org/TR/css3-transforms/#decomposing-a-3d-matrix\n * which was based on\n * http://tog.acm.org/resources/GraphicsGems/gemsii/unmatrix.c\n */\n decomposeMatrix(transformMatrix: Array<number>): ?Object {\n\n invariant(\n transformMatrix.length === 16,\n 'Matrix decomposition needs a list of 3d matrix values, received %s',\n transformMatrix\n );\n\n // output values\n var perspective = [];\n var quaternion = [];\n var scale = [];\n var skew = [];\n var translation = [];\n\n // create normalized, 2d array matrix\n // and normalized 1d array perspectiveMatrix with redefined 4th column\n if (!transformMatrix[15]) {\n return;\n }\n var matrix = [];\n var perspectiveMatrix = [];\n for (var i = 0; i < 4; i++) {\n matrix.push([]);\n for (var j = 0; j < 4; j++) {\n var value = transformMatrix[(i * 4) + j] / transformMatrix[15];\n matrix[i].push(value);\n perspectiveMatrix.push(j === 3 ? 0 : value);\n }\n }\n perspectiveMatrix[15] = 1;\n\n // test for singularity of upper 3x3 part of the perspective matrix\n if (!MatrixMath.determinant(perspectiveMatrix)) {\n return;\n }\n\n // isolate perspective\n if (matrix[0][3] !== 0 || matrix[1][3] !== 0 || matrix[2][3] !== 0) {\n // rightHandSide is the right hand side of the equation.\n // rightHandSide is a vector, or point in 3d space relative to the origin.\n var rightHandSide = [\n matrix[0][3],\n matrix[1][3],\n matrix[2][3],\n matrix[3][3]\n ];\n\n // Solve the equation by inverting perspectiveMatrix and multiplying\n // rightHandSide by the inverse.\n var inversePerspectiveMatrix = MatrixMath.inverse3x3(\n perspectiveMatrix\n );\n var transposedInversePerspectiveMatrix = MatrixMath.transpose4x4(\n inversePerspectiveMatrix\n );\n var perspective = MatrixMath.multiplyVectorByMatrix(\n rightHandSide,\n transposedInversePerspectiveMatrix\n );\n } else {\n // no perspective\n perspective[0] = perspective[1] = perspective[2] = 0;\n perspective[3] = 1;\n }\n\n // translation is simple\n for (var i = 0; i < 3; i++) {\n translation[i] = matrix[3][i];\n }\n\n // Now get scale and shear.\n // 'row' is a 3 element array of 3 component vectors\n var row = [];\n for (i = 0; i < 3; i++) {\n row[i] = [\n matrix[i][0],\n matrix[i][1],\n matrix[i][2]\n ];\n }\n\n // Compute X scale factor and normalize first row.\n scale[0] = MatrixMath.v3Length(row[0]);\n row[0] = MatrixMath.v3Normalize(row[0], scale[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Compute XY shear factor and make 2nd row orthogonal to 1st.\n skew[0] = MatrixMath.v3Dot(row[0], row[1]);\n row[1] = MatrixMath.v3Combine(row[1], row[0], 1.0, -skew[0]);\n\n // Now, compute Y scale and normalize 2nd row.\n scale[1] = MatrixMath.v3Length(row[1]);\n row[1] = MatrixMath.v3Normalize(row[1], scale[1]);\n skew[0] /= scale[1];\n\n // Compute XZ and YZ shears, orthogonalize 3rd row\n skew[1] = MatrixMath.v3Dot(row[0], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[0], 1.0, -skew[1]);\n skew[2] = MatrixMath.v3Dot(row[1], row[2]);\n row[2] = MatrixMath.v3Combine(row[2], row[1], 1.0, -skew[2]);\n\n // Next, get Z scale and normalize 3rd row.\n scale[2] = MatrixMath.v3Length(row[2]);\n row[2] = MatrixMath.v3Normalize(row[2], scale[2]);\n skew[1] /= scale[2];\n skew[2] /= scale[2];\n\n // At this point, the matrix (in rows) is orthonormal.\n // Check for a coordinate system flip. If the determinant\n // is -1, then negate the matrix and the scaling factors.\n var pdum3 = MatrixMath.v3Cross(row[1], row[2]);\n if (MatrixMath.v3Dot(row[0], pdum3) < 0) {\n for (i = 0; i < 3; i++) {\n scale[i] *= -1;\n row[i][0] *= -1;\n row[i][1] *= -1;\n row[i][2] *= -1;\n }\n }\n\n // Now, get the rotations out\n quaternion[0] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] - row[1][1] - row[2][2], 0));\n quaternion[1] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] + row[1][1] - row[2][2], 0));\n quaternion[2] =\n 0.5 * Math.sqrt(Math.max(1 - row[0][0] - row[1][1] + row[2][2], 0));\n quaternion[3] =\n 0.5 * Math.sqrt(Math.max(1 + row[0][0] + row[1][1] + row[2][2], 0));\n\n if (row[2][1] > row[1][2]) {\n quaternion[0] = -quaternion[0];\n }\n if (row[0][2] > row[2][0]) {\n quaternion[1] = -quaternion[1];\n }\n if (row[1][0] > row[0][1]) {\n quaternion[2] = -quaternion[2];\n }\n\n // correct for occasional, weird Euler synonyms for 2d rotation\n var rotationDegrees;\n if (\n quaternion[0] < 0.001 && quaternion[0] >= 0 &&\n quaternion[1] < 0.001 && quaternion[1] >= 0\n ) {\n // this is a 2d rotation on the z-axis\n rotationDegrees = [0, 0, MatrixMath.roundTo3Places(\n Math.atan2(row[0][1], row[0][0]) * 180 / Math.PI\n )];\n } else {\n rotationDegrees = MatrixMath.quaternionToDegreesXYZ(quaternion, matrix, row);\n }\n\n // expose both base data and convenience names\n return {\n rotationDegrees,\n perspective,\n quaternion,\n scale,\n skew,\n translation,\n\n rotate: rotationDegrees[2],\n scaleX: scale[0],\n scaleY: scale[1],\n translateX: translation[0],\n translateY: translation[1],\n };\n },\n\n};\n\nmodule.exports = MatrixMath;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/MatrixMath.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction deepFreezeAndThrowOnMutationInDev(object){\nif(__DEV__){\nif(typeof object !== 'object' || \nobject === null || \nObject.isFrozen(object) || \nObject.isSealed(object)){\nreturn;}\n\n\nfor(var key in object) {\nif(object.hasOwnProperty(key)){\nobject.__defineGetter__(key,identity.bind(null,object[key]));\nobject.__defineSetter__(key,throwOnImmutableMutation.bind(null,key));\ndeepFreezeAndThrowOnMutationInDev(object[key]);}}\n\n\nObject.freeze(object);\nObject.seal(object);}}\n\n\n\nfunction throwOnImmutableMutation(key,value){\nthrow Error(\n'You attempted to set the key `' + key + '` with the value `' + \nJSON.stringify(value) + '` on an object that is meant to be immutable ' + \n'and has been frozen.');}\n\n\n\nfunction identity(value){\nreturn value;}\n\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule deepFreezeAndThrowOnMutationInDev\n * @flow\n */\n\n'use strict';\n\n/**\n * If your application is accepting different values for the same field over\n * time and is doing a diff on them, you can either (1) create a copy or\n * (2) ensure that those values are not mutated behind two passes.\n * This function helps you with (2) by freezing the object and throwing if\n * the user subsequently modifies the value.\n *\n * There are two caveats with this function:\n * - If the call site is not in strict mode, it will only throw when\n * mutating existing fields, adding a new one\n * will unfortunately fail silently :(\n * - If the object is already frozen or sealed, it will not continue the\n * deep traversal and will leave leaf nodes unfrozen.\n *\n * Freezing the object and adding the throw mechanism is expensive and will\n * only be used in DEV.\n */\nfunction deepFreezeAndThrowOnMutationInDev(object: Object) {\n if (__DEV__) {\n if (typeof object !== 'object' ||\n object === null ||\n Object.isFrozen(object) ||\n Object.isSealed(object)) {\n return;\n }\n\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n object.__defineGetter__(key, identity.bind(null, object[key]));\n object.__defineSetter__(key, throwOnImmutableMutation.bind(null, key));\n deepFreezeAndThrowOnMutationInDev(object[key]);\n }\n }\n Object.freeze(object);\n Object.seal(object);\n }\n}\n\nfunction throwOnImmutableMutation(key, value) {\n throw Error(\n 'You attempted to set the key `' + key + '` with the value `' +\n JSON.stringify(value) + '` on an object that is meant to be immutable ' +\n 'and has been frozen.'\n );\n}\n\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = deepFreezeAndThrowOnMutationInDev;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/deepFreezeAndThrowOnMutationInDev.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginHub=require('EventPluginHub');\nvar ReactEventEmitterMixin=require('ReactEventEmitterMixin');\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar NodeHandle=require('NodeHandle');\nvar EventConstants=require('EventConstants');\n\nvar merge=require('merge');\nvar warning=require('warning');\n\nvar topLevelTypes=EventConstants.topLevelTypes;\n\n\n\n\n\n\n\nvar EMPTY_NATIVE_EVENT={};\n\n\n\n\n\n\n\n\nvar touchSubsequence=function(touches,indices){\nvar ret=[];\nfor(var i=0;i < indices.length;i++) {\nret.push(touches[indices[i]]);}\n\nreturn ret;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar removeTouchesAtIndices=function(\ntouches,\nindices)\n{\nvar rippedOut=[];\n\n\nvar temp=touches;\nfor(var i=0;i < indices.length;i++) {\nvar index=indices[i];\nrippedOut.push(touches[index]);\ntemp[index] = null;}\n\nvar fillAt=0;\nfor(var j=0;j < temp.length;j++) {\nvar cur=temp[j];\nif(cur !== null){\ntemp[fillAt++] = cur;}}\n\n\ntemp.length = fillAt;\nreturn rippedOut;};\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeEventEmitter=merge(ReactEventEmitterMixin,{\n\nregistrationNames:EventPluginHub.registrationNameModules,\n\nputListener:EventPluginHub.putListener,\n\ngetListener:EventPluginHub.getListener,\n\ndeleteListener:EventPluginHub.deleteListener,\n\ndeleteAllListeners:EventPluginHub.deleteAllListeners,\n\n\n\n\n\n\n\n\n\n\n\n_receiveRootNodeIDEvent:function(\nrootNodeID,\ntopLevelType,\nnativeEventParam)\n{\nvar nativeEvent=nativeEventParam || EMPTY_NATIVE_EVENT;\nReactNativeEventEmitter.handleTopLevel(\ntopLevelType,\nrootNodeID,\nrootNodeID,\nnativeEvent);},\n\n\n\n\n\n\n\n\n\n\nreceiveEvent:function(\ntag,\ntopLevelType,\nnativeEventParam)\n{\nvar rootNodeID=ReactNativeTagHandles.tagToRootNodeID[tag];\nReactNativeEventEmitter._receiveRootNodeIDEvent(\nrootNodeID,\ntopLevelType,\nnativeEventParam);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nreceiveTouches:function(\neventTopLevelType,\ntouches,\nchangedIndices)\n{\nvar changedTouches=\neventTopLevelType === topLevelTypes.topTouchEnd || \neventTopLevelType === topLevelTypes.topTouchCancel?\nremoveTouchesAtIndices(touches,changedIndices):\ntouchSubsequence(touches,changedIndices);\n\nfor(var jj=0;jj < changedTouches.length;jj++) {\nvar touch=changedTouches[jj];\n\n\ntouch.changedTouches = changedTouches;\ntouch.touches = touches;\nvar nativeEvent=touch;\nvar rootNodeID=null;\nvar target=nativeEvent.target;\nif(target !== null && target !== undefined){\nif(target < ReactNativeTagHandles.tagsStartAt){\nif(__DEV__){\nwarning(\nfalse,\n'A view is reporting that a touch occured on tag zero.');}}else \n\n\n{\nrootNodeID = NodeHandle.getRootNodeID(target);}}\n\n\nReactNativeEventEmitter._receiveRootNodeIDEvent(\nrootNodeID,\neventTopLevelType,\nnativeEvent);}}});\n\n\n\n\n\nmodule.exports = ReactNativeEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventPluginHub = require('EventPluginHub');\nvar ReactEventEmitterMixin = require('ReactEventEmitterMixin');\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar NodeHandle = require('NodeHandle');\nvar EventConstants = require('EventConstants');\n\nvar merge = require('merge');\nvar warning = require('warning');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\n/**\n * Version of `ReactBrowserEventEmitter` that works on the receiving side of a\n * serialized worker boundary.\n */\n\n// Shared default empty native event - conserve memory.\nvar EMPTY_NATIVE_EVENT = {};\n\n/**\n * Selects a subsequence of `Touch`es, without destroying `touches`.\n *\n * @param {Array<Touch>} touches Deserialized touch objects.\n * @param {Array<number>} indices Indices by which to pull subsequence.\n * @return {Array<Touch>} Subsequence of touch objects.\n */\nvar touchSubsequence = function(touches, indices) {\n var ret = [];\n for (var i = 0; i < indices.length; i++) {\n ret.push(touches[indices[i]]);\n }\n return ret;\n};\n\n/**\n * TODO: Pool all of this.\n *\n * Destroys `touches` by removing touch objects at indices `indices`. This is\n * to maintain compatibility with W3C touch \"end\" events, where the active\n * touches don't include the set that has just been \"ended\".\n *\n * @param {Array<Touch>} touches Deserialized touch objects.\n * @param {Array<number>} indices Indices to remove from `touches`.\n * @return {Array<Touch>} Subsequence of removed touch objects.\n */\nvar removeTouchesAtIndices = function(\n touches: Array<Object>,\n indices: Array<number>\n): Array<Object> {\n var rippedOut = [];\n // use an unsafe downcast to alias to nullable elements,\n // so we can delete and then compact.\n var temp: Array<?Object> = (touches: Array<any>);\n for (var i = 0; i < indices.length; i++) {\n var index = indices[i];\n rippedOut.push(touches[index]);\n temp[index] = null;\n }\n var fillAt = 0;\n for (var j = 0; j < temp.length; j++) {\n var cur = temp[j];\n if (cur !== null) {\n temp[fillAt++] = cur;\n }\n }\n temp.length = fillAt;\n return rippedOut;\n};\n\n/**\n * `ReactNativeEventEmitter` is used to attach top-level event listeners. For example:\n *\n * ReactNativeEventEmitter.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactNativeEventEmitter = merge(ReactEventEmitterMixin, {\n\n registrationNames: EventPluginHub.registrationNameModules,\n\n putListener: EventPluginHub.putListener,\n\n getListener: EventPluginHub.getListener,\n\n deleteListener: EventPluginHub.deleteListener,\n\n deleteAllListeners: EventPluginHub.deleteAllListeners,\n\n /**\n * Internal version of `receiveEvent` in terms of normalized (non-tag)\n * `rootNodeID`.\n *\n * @see receiveEvent.\n *\n * @param {rootNodeID} rootNodeID React root node ID that event occured on.\n * @param {TopLevelType} topLevelType Top level type of event.\n * @param {object} nativeEventParam Object passed from native.\n */\n _receiveRootNodeIDEvent: function(\n rootNodeID: ?string,\n topLevelType: string,\n nativeEventParam: Object\n ) {\n var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT;\n ReactNativeEventEmitter.handleTopLevel(\n topLevelType,\n rootNodeID,\n rootNodeID,\n nativeEvent\n );\n },\n\n /**\n * Publically exposed method on module for native objc to invoke when a top\n * level event is extracted.\n * @param {rootNodeID} rootNodeID React root node ID that event occured on.\n * @param {TopLevelType} topLevelType Top level type of event.\n * @param {object} nativeEventParam Object passed from native.\n */\n receiveEvent: function(\n tag: number,\n topLevelType: string,\n nativeEventParam: Object\n ) {\n var rootNodeID = ReactNativeTagHandles.tagToRootNodeID[tag];\n ReactNativeEventEmitter._receiveRootNodeIDEvent(\n rootNodeID,\n topLevelType,\n nativeEventParam\n );\n },\n\n /**\n * Simple multi-wrapper around `receiveEvent` that is intended to receive an\n * efficient representation of `Touch` objects, and other information that\n * can be used to construct W3C compliant `Event` and `Touch` lists.\n *\n * This may create dispatch behavior that differs than web touch handling. We\n * loop through each of the changed touches and receive it as a single event.\n * So two `touchStart`/`touchMove`s that occur simultaneously are received as\n * two separate touch event dispatches - when they arguably should be one.\n *\n * This implementation reuses the `Touch` objects themselves as the `Event`s\n * since we dispatch an event for each touch (though that might not be spec\n * compliant). The main purpose of reusing them is to save allocations.\n *\n * TODO: Dispatch multiple changed touches in one event. The bubble path\n * could be the first common ancestor of all the `changedTouches`.\n *\n * One difference between this behavior and W3C spec: cancelled touches will\n * not appear in `.touches`, or in any future `.touches`, though they may\n * still be \"actively touching the surface\".\n *\n * Web desktop polyfills only need to construct a fake touch event with\n * identifier 0, also abandoning traditional click handlers.\n */\n receiveTouches: function(\n eventTopLevelType: string,\n touches: Array<Object>,\n changedIndices: Array<number>\n ) {\n var changedTouches =\n eventTopLevelType === topLevelTypes.topTouchEnd ||\n eventTopLevelType === topLevelTypes.topTouchCancel ?\n removeTouchesAtIndices(touches, changedIndices) :\n touchSubsequence(touches, changedIndices);\n\n for (var jj = 0; jj < changedTouches.length; jj++) {\n var touch = changedTouches[jj];\n // Touch objects can fullfill the role of `DOM` `Event` objects if we set\n // the `changedTouches`/`touches`. This saves allocations.\n touch.changedTouches = changedTouches;\n touch.touches = touches;\n var nativeEvent = touch;\n var rootNodeID = null;\n var target = nativeEvent.target;\n if (target !== null && target !== undefined) {\n if (target < ReactNativeTagHandles.tagsStartAt) {\n if (__DEV__) {\n warning(\n false,\n 'A view is reporting that a touch occured on tag zero.'\n );\n }\n } else {\n rootNodeID = NodeHandle.getRootNodeID(target);\n }\n }\n ReactNativeEventEmitter._receiveRootNodeIDEvent(\n rootNodeID,\n eventTopLevelType,\n nativeEvent\n );\n }\n }\n});\n\nmodule.exports = ReactNativeEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEventEmitterMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventPluginHub=require('EventPluginHub');\n\nfunction runEventQueueInBatch(events){\nEventPluginHub.enqueueEvents(events);\nEventPluginHub.processEventQueue();}\n\n\nvar ReactEventEmitterMixin={\n\n\n\n\n\n\n\n\n\n\nhandleTopLevel:function(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent){\nvar events=EventPluginHub.extractEvents(\ntopLevelType,\ntopLevelTarget,\ntopLevelTargetID,\nnativeEvent);\n\n\nrunEventQueueInBatch(events);}};\n\n\n\nmodule.exports = ReactEventEmitterMixin;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactEventEmitterMixin\n */\n\n'use strict';\n\nvar EventPluginHub = require('EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue();\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} topLevelTarget The listening component root node.\n * @param {string} topLevelTargetID ID of `topLevelTarget`.\n * @param {object} nativeEvent Native environment event.\n */\n handleTopLevel: function(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent) {\n var events = EventPluginHub.extractEvents(\n topLevelType,\n topLevelTarget,\n topLevelTargetID,\n nativeEvent\n );\n\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactEventEmitterMixin.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeStyleAttributes.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar keyMirror=require('keyMirror');\nvar matricesDiffer=require('matricesDiffer');\nvar sizesDiffer=require('sizesDiffer');\n\nvar ReactNativeStyleAttributes=_extends({},\nkeyMirror(ViewStylePropTypes),\nkeyMirror(TextStylePropTypes),\nkeyMirror(ImageStylePropTypes));\n\n\nReactNativeStyleAttributes.transformMatrix = {diff:matricesDiffer};\nReactNativeStyleAttributes.shadowOffset = {diff:sizesDiffer};\n\n\nReactNativeStyleAttributes.decomposedMatrix = 'decomposedMatrix';\n\nmodule.exports = ReactNativeStyleAttributes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeStyleAttributes\n * @flow\n */\n\n'use strict';\n\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar keyMirror = require('keyMirror');\nvar matricesDiffer = require('matricesDiffer');\nvar sizesDiffer = require('sizesDiffer');\n\nvar ReactNativeStyleAttributes = {\n ...keyMirror(ViewStylePropTypes),\n ...keyMirror(TextStylePropTypes),\n ...keyMirror(ImageStylePropTypes),\n};\n\nReactNativeStyleAttributes.transformMatrix = { diff: matricesDiffer };\nReactNativeStyleAttributes.shadowOffset = { diff: sizesDiffer };\n\n// Do not rely on this attribute.\nReactNativeStyleAttributes.decomposedMatrix = 'decomposedMatrix';\n\nmodule.exports = ReactNativeStyleAttributes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeStyleAttributes.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageStylePropTypes.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageResizeMode=require('ImageResizeMode');\nvar LayoutPropTypes=require('LayoutPropTypes');\nvar ReactPropTypes=require('ReactPropTypes');\nvar TransformPropTypes=require('TransformPropTypes');\n\nvar ImageStylePropTypes=_extends({},\nLayoutPropTypes,\nTransformPropTypes,{\nresizeMode:ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),\nbackgroundColor:ReactPropTypes.string,\nborderColor:ReactPropTypes.string,\nborderWidth:ReactPropTypes.number,\nborderRadius:ReactPropTypes.number,\n\n\n\ntintColor:ReactPropTypes.string,\nopacity:ReactPropTypes.number});\n\n\nmodule.exports = ImageStylePropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ImageStylePropTypes\n * @flow\n */\n'use strict';\n\nvar ImageResizeMode = require('ImageResizeMode');\nvar LayoutPropTypes = require('LayoutPropTypes');\nvar ReactPropTypes = require('ReactPropTypes');\nvar TransformPropTypes = require('TransformPropTypes');\n\nvar ImageStylePropTypes = {\n ...LayoutPropTypes,\n ...TransformPropTypes,\n resizeMode: ReactPropTypes.oneOf(Object.keys(ImageResizeMode)),\n backgroundColor: ReactPropTypes.string,\n borderColor: ReactPropTypes.string,\n borderWidth: ReactPropTypes.number,\n borderRadius: ReactPropTypes.number,\n\n // iOS-Specific style to \"tint\" an image.\n // It changes the color of all the non-transparent pixels to the tintColor\n tintColor: ReactPropTypes.string,\n opacity: ReactPropTypes.number,\n};\n\nmodule.exports = ImageStylePropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageStylePropTypes.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageResizeMode.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar keyMirror=require('keyMirror');\n\n\n\n\n\nvar ImageResizeMode=keyMirror({\n\n\n\n\ncontain:null,\n\n\n\n\ncover:null,\n\n\n\n\n\nstretch:null});\n\n\nmodule.exports = ImageResizeMode;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ImageResizeMode\n * @flow\n */\n'use strict';\n\nvar keyMirror = require('keyMirror');\n\n/**\n * ImageResizeMode - Enum for different image resizing modes, set via\n * `resizeMode` style property on `<Image>` components.\n */\nvar ImageResizeMode = keyMirror({\n /**\n * contain - The image will be resized such that it will be completely\n * visible, contained within the frame of the View.\n */\n contain: null,\n /**\n * cover - The image will be resized such that the entire area of the view\n * is covered by the image, potentially clipping parts of the image.\n */\n cover: null,\n /**\n * stretch - The image will be stretched to fill the entire frame of the\n * view without clipping. This may change the aspect ratio of the image,\n * distoring it.\n */\n stretch: null,\n});\n\nmodule.exports = ImageResizeMode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImageResizeMode.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\n\n\n\n\n\n\nvar LayoutPropTypes={\nwidth:ReactPropTypes.number,\nheight:ReactPropTypes.number,\ntop:ReactPropTypes.number,\nleft:ReactPropTypes.number,\nright:ReactPropTypes.number,\nbottom:ReactPropTypes.number,\nmargin:ReactPropTypes.number,\nmarginVertical:ReactPropTypes.number,\nmarginHorizontal:ReactPropTypes.number,\nmarginTop:ReactPropTypes.number,\nmarginBottom:ReactPropTypes.number,\nmarginLeft:ReactPropTypes.number,\nmarginRight:ReactPropTypes.number,\npadding:ReactPropTypes.number,\npaddingVertical:ReactPropTypes.number,\npaddingHorizontal:ReactPropTypes.number,\npaddingTop:ReactPropTypes.number,\npaddingBottom:ReactPropTypes.number,\npaddingLeft:ReactPropTypes.number,\npaddingRight:ReactPropTypes.number,\nborderWidth:ReactPropTypes.number,\nborderTopWidth:ReactPropTypes.number,\nborderRightWidth:ReactPropTypes.number,\nborderBottomWidth:ReactPropTypes.number,\nborderLeftWidth:ReactPropTypes.number,\n\nposition:ReactPropTypes.oneOf([\n'absolute',\n'relative']),\n\n\n\nflexDirection:ReactPropTypes.oneOf([\n'row',\n'column']),\n\n\n\nflexWrap:ReactPropTypes.oneOf([\n'wrap',\n'nowrap']),\n\n\n\n\njustifyContent:ReactPropTypes.oneOf([\n'flex-start',\n'flex-end',\n'center',\n'space-between',\n'space-around']),\n\n\n\n\nalignItems:ReactPropTypes.oneOf([\n'flex-start',\n'flex-end',\n'center',\n'stretch']),\n\n\n\n\nalignSelf:ReactPropTypes.oneOf([\n'auto',\n'flex-start',\n'flex-end',\n'center',\n'stretch']),\n\n\n\nflex:ReactPropTypes.number};\n\n\nmodule.exports = LayoutPropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LayoutPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\n\n/**\n * These properties are a subset of our styles that are consumed by the layout\n * algorithm and affect the positioning and sizing of views.\n */\n\nvar LayoutPropTypes = {\n width: ReactPropTypes.number,\n height: ReactPropTypes.number,\n top: ReactPropTypes.number,\n left: ReactPropTypes.number,\n right: ReactPropTypes.number,\n bottom: ReactPropTypes.number,\n margin: ReactPropTypes.number,\n marginVertical: ReactPropTypes.number,\n marginHorizontal: ReactPropTypes.number,\n marginTop: ReactPropTypes.number,\n marginBottom: ReactPropTypes.number,\n marginLeft: ReactPropTypes.number,\n marginRight: ReactPropTypes.number,\n padding: ReactPropTypes.number,\n paddingVertical: ReactPropTypes.number,\n paddingHorizontal: ReactPropTypes.number,\n paddingTop: ReactPropTypes.number,\n paddingBottom: ReactPropTypes.number,\n paddingLeft: ReactPropTypes.number,\n paddingRight: ReactPropTypes.number,\n borderWidth: ReactPropTypes.number,\n borderTopWidth: ReactPropTypes.number,\n borderRightWidth: ReactPropTypes.number,\n borderBottomWidth: ReactPropTypes.number,\n borderLeftWidth: ReactPropTypes.number,\n\n position: ReactPropTypes.oneOf([\n 'absolute',\n 'relative'\n ]),\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction\n flexDirection: ReactPropTypes.oneOf([\n 'row',\n 'column'\n ]),\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap\n flexWrap: ReactPropTypes.oneOf([\n 'wrap',\n 'nowrap'\n ]),\n\n // How to align children in the main direction\n // https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n justifyContent: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'space-between',\n 'space-around'\n ]),\n\n // How to align children in the cross direction\n // https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n alignItems: ReactPropTypes.oneOf([\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch'\n ]),\n\n // How to align the element in the cross direction\n // https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n alignSelf: ReactPropTypes.oneOf([\n 'auto',\n 'flex-start',\n 'flex-end',\n 'center',\n 'stretch'\n ]),\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n flex: ReactPropTypes.number,\n};\n\nmodule.exports = LayoutPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/LayoutPropTypes.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactFragment=require('ReactFragment');\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\n\nvar emptyFunction=require('emptyFunction');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ANONYMOUS='<<anonymous>>';\n\nvar elementTypeChecker=createElementTypeChecker();\nvar nodeTypeChecker=createNodeChecker();\n\nvar ReactPropTypes={\narray:createPrimitiveTypeChecker('array'),\nbool:createPrimitiveTypeChecker('boolean'),\nfunc:createPrimitiveTypeChecker('function'),\nnumber:createPrimitiveTypeChecker('number'),\nobject:createPrimitiveTypeChecker('object'),\nstring:createPrimitiveTypeChecker('string'),\n\nany:createAnyTypeChecker(),\narrayOf:createArrayOfTypeChecker,\nelement:elementTypeChecker,\ninstanceOf:createInstanceTypeChecker,\nnode:nodeTypeChecker,\nobjectOf:createObjectOfTypeChecker,\noneOf:createEnumTypeChecker,\noneOfType:createUnionTypeChecker,\nshape:createShapeTypeChecker};\n\n\nfunction createChainableTypeChecker(validate){\nfunction checkType(isRequired,props,propName,componentName,location){\ncomponentName = componentName || ANONYMOUS;\nif(props[propName] == null){\nvar locationName=ReactPropTypeLocationNames[location];\nif(isRequired){\nreturn new Error(\n'Required ' + locationName + ' `' + propName + '` was not specified in ' + ('`' + \ncomponentName + '`.'));}\n\n\nreturn null;}else \n{\nreturn validate(props,propName,componentName,location);}}\n\n\n\nvar chainedCheckType=checkType.bind(null,false);\nchainedCheckType.isRequired = checkType.bind(null,true);\n\nreturn chainedCheckType;}\n\n\nfunction createPrimitiveTypeChecker(expectedType){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nvar propType=getPropType(propValue);\nif(propType !== expectedType){\nvar locationName=ReactPropTypeLocationNames[location];\n\n\n\nvar preciseType=getPreciseType(propValue);\n\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type `' + preciseType + '` ' + ('supplied to `' + \ncomponentName + '`, expected `' + expectedType + '`.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createAnyTypeChecker(){\nreturn createChainableTypeChecker(emptyFunction.thatReturns(null));}\n\n\nfunction createArrayOfTypeChecker(typeChecker){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nif(!Array.isArray(propValue)){\nvar locationName=ReactPropTypeLocationNames[location];\nvar propType=getPropType(propValue);\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type ' + ('`' + \npropType + '` supplied to `' + componentName + '`, expected an array.'));}\n\n\nfor(var i=0;i < propValue.length;i++) {\nvar error=typeChecker(propValue,i,componentName,location);\nif(error instanceof Error){\nreturn error;}}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createElementTypeChecker(){\nfunction validate(props,propName,componentName,location){\nif(!ReactElement.isValidElement(props[propName])){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`, expected a ReactElement.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createInstanceTypeChecker(expectedClass){\nfunction validate(props,propName,componentName,location){\nif(!(props[propName] instanceof expectedClass)){\nvar locationName=ReactPropTypeLocationNames[location];\nvar expectedClassName=expectedClass.name || ANONYMOUS;\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`, expected instance of `' + expectedClassName + '`.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createEnumTypeChecker(expectedValues){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nfor(var i=0;i < expectedValues.length;i++) {\nif(propValue === expectedValues[i]){\nreturn null;}}\n\n\n\nvar locationName=ReactPropTypeLocationNames[location];\nvar valuesString=JSON.stringify(expectedValues);\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of value `' + propValue + '` ' + ('supplied to `' + \ncomponentName + '`, expected one of ' + valuesString + '.'));}\n\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createObjectOfTypeChecker(typeChecker){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nvar propType=getPropType(propValue);\nif(propType !== 'object'){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type ' + ('`' + \npropType + '` supplied to `' + componentName + '`, expected an object.'));}\n\n\nfor(var key in propValue) {\nif(propValue.hasOwnProperty(key)){\nvar error=typeChecker(propValue,key,componentName,location);\nif(error instanceof Error){\nreturn error;}}}\n\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers){\nfunction validate(props,propName,componentName,location){\nfor(var i=0;i < arrayOfTypeCheckers.length;i++) {\nvar checker=arrayOfTypeCheckers[i];\nif(checker(props,propName,componentName,location) == null){\nreturn null;}}\n\n\n\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`.'));}\n\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createNodeChecker(){\nfunction validate(props,propName,componentName,location){\nif(!isNode(props[propName])){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` supplied to ' + ('`' + \ncomponentName + '`, expected a ReactNode.'));}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction createShapeTypeChecker(shapeTypes){\nfunction validate(props,propName,componentName,location){\nvar propValue=props[propName];\nvar propType=getPropType(propValue);\nif(propType !== 'object'){\nvar locationName=ReactPropTypeLocationNames[location];\nreturn new Error(\n'Invalid ' + locationName + ' `' + propName + '` of type `' + propType + '` ' + ('supplied to `' + \ncomponentName + '`, expected `object`.'));}\n\n\nfor(var key in shapeTypes) {\nvar checker=shapeTypes[key];\nif(!checker){\ncontinue;}\n\nvar error=checker(propValue,key,componentName,location);\nif(error){\nreturn error;}}\n\n\nreturn null;}\n\nreturn createChainableTypeChecker(validate);}\n\n\nfunction isNode(propValue){\nswitch(typeof propValue){\ncase 'number':\ncase 'string':\ncase 'undefined':\nreturn true;\ncase 'boolean':\nreturn !propValue;\ncase 'object':\nif(Array.isArray(propValue)){\nreturn propValue.every(isNode);}\n\nif(propValue === null || ReactElement.isValidElement(propValue)){\nreturn true;}\n\npropValue = ReactFragment.extractIfFragment(propValue);\nfor(var k in propValue) {\nif(!isNode(propValue[k])){\nreturn false;}}\n\n\nreturn true;\ndefault:\nreturn false;}}\n\n\n\n\nfunction getPropType(propValue){\nvar propType=typeof propValue;\nif(Array.isArray(propValue)){\nreturn 'array';}\n\nif(propValue instanceof RegExp){\n\n\n\nreturn 'object';}\n\nreturn propType;}\n\n\n\n\nfunction getPreciseType(propValue){\nvar propType=getPropType(propValue);\nif(propType === 'object'){\nif(propValue instanceof Date){\nreturn 'date';}else \nif(propValue instanceof RegExp){\nreturn 'regexp';}}\n\n\nreturn propType;}\n\n\nmodule.exports = ReactPropTypes;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTypes\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactFragment = require('ReactFragment');\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\n\nvar emptyFunction = require('emptyFunction');\n\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\nvar ANONYMOUS = '<<anonymous>>';\n\nvar elementTypeChecker = createElementTypeChecker();\nvar nodeTypeChecker = createNodeChecker();\n\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: elementTypeChecker,\n instanceOf: createInstanceTypeChecker,\n node: nodeTypeChecker,\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location) {\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n if (isRequired) {\n return new Error(\n `Required ${locationName} \\`${propName}\\` was not specified in ` +\n `\\`${componentName}\\`.`\n );\n }\n return null;\n } else {\n return validate(props, propName, componentName, location);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location];\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type \\`${preciseType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`${expectedType}\\`.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type ` +\n `\\`${propType}\\` supplied to \\`${componentName}\\`, expected an array.`\n );\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location) {\n if (!ReactElement.isValidElement(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`, expected a ReactElement.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`, expected instance of \\`${expectedClassName}\\`.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (propValue === expectedValues[i]) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of value \\`${propValue}\\` ` +\n `supplied to \\`${componentName}\\`, expected one of ${valuesString}.`\n );\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type ` +\n `\\`${propType}\\` supplied to \\`${componentName}\\`, expected an object.`\n );\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n function validate(props, propName, componentName, location) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`.`\n );\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` supplied to ` +\n `\\`${componentName}\\`, expected a ReactNode.`\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new Error(\n `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`object\\`.`\n );\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n propValue = ReactFragment.extractIfFragment(propValue);\n for (var k in propValue) {\n if (!isNode(propValue[k])) {\n return false;\n }\n }\n return true;\n default:\n return false;\n }\n}\n\n// Equivalent of `typeof` but with special handling for array and regexp.\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n return propType;\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n}\n\nmodule.exports = ReactPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/classic/types/ReactPropTypes.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/TransformPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\n\nvar TransformPropTypes={\ntransform:ReactPropTypes.arrayOf(\nReactPropTypes.oneOfType([\nReactPropTypes.shape({rotate:ReactPropTypes.string}),\nReactPropTypes.shape({scaleX:ReactPropTypes.number}),\nReactPropTypes.shape({scaleY:ReactPropTypes.number}),\nReactPropTypes.shape({translateX:ReactPropTypes.number}),\nReactPropTypes.shape({translateY:ReactPropTypes.number})])),\n\n\n\n\n\n\n\n\ntransformMatrix:ReactPropTypes.arrayOf(ReactPropTypes.number),\n\n\nrotation:ReactPropTypes.number,\nscaleX:ReactPropTypes.number,\nscaleY:ReactPropTypes.number,\ntranslateX:ReactPropTypes.number,\ntranslateY:ReactPropTypes.number};\n\n\nmodule.exports = TransformPropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TransformPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\n\nvar TransformPropTypes = {\n transform: ReactPropTypes.arrayOf(\n ReactPropTypes.oneOfType([\n ReactPropTypes.shape({rotate: ReactPropTypes.string}),\n ReactPropTypes.shape({scaleX: ReactPropTypes.number}),\n ReactPropTypes.shape({scaleY: ReactPropTypes.number}),\n ReactPropTypes.shape({translateX: ReactPropTypes.number}),\n ReactPropTypes.shape({translateY: ReactPropTypes.number})\n ])\n ),\n\n /*\n * `transformMatrix` accepts a 4x4 matrix expressed as a row-major ordered\n * array. This property is DEPRECATED and cannot be used simultaneously with\n * the `transform` property.\n */\n transformMatrix: ReactPropTypes.arrayOf(ReactPropTypes.number),\n\n // DEPRECATED\n rotation: ReactPropTypes.number,\n scaleX: ReactPropTypes.number,\n scaleY: ReactPropTypes.number,\n translateX: ReactPropTypes.number,\n translateY: ReactPropTypes.number,\n};\n\nmodule.exports = TransformPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/TransformPropTypes.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/TextStylePropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\n\nvar TextStylePropTypes=Object.assign(Object.create(ViewStylePropTypes),{\nfontFamily:ReactPropTypes.string,\nfontSize:ReactPropTypes.number,\nfontWeight:ReactPropTypes.oneOf(\n['normal','bold',\n'100','200','300','400','500','600','700','800','900']),\n\nfontStyle:ReactPropTypes.oneOf(['normal','italic']),\nlineHeight:ReactPropTypes.number,\ncolor:ReactPropTypes.string,\n\ntextAlign:ReactPropTypes.oneOf(\n['auto','left','right','center','justify']),\n\nwritingDirection:ReactPropTypes.oneOf(\n['auto','ltr','rtl']),\n\nletterSpacing:ReactPropTypes.number,\ntextDecorationLine:ReactPropTypes.oneOf(\n['none','underline','line-through','underline line-through']),\n\ntextDecorationStyle:ReactPropTypes.oneOf(\n['solid','double','dotted','dashed']),\n\ntextDecorationColor:ReactPropTypes.string});\n\n\n\nvar unsupportedProps=Object.keys({\npadding:null,\npaddingTop:null,\npaddingLeft:null,\npaddingRight:null,\npaddingBottom:null,\npaddingVertical:null,\npaddingHorizontal:null});\n\n\nfor(var ii=0;ii < unsupportedProps.length;ii++) {\ndelete TextStylePropTypes[unsupportedProps[ii]];}\n\n\nmodule.exports = TextStylePropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextStylePropTypes\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\n// TODO: use spread instead of Object.assign/create after #6560135 is fixed\nvar TextStylePropTypes = Object.assign(Object.create(ViewStylePropTypes), {\n fontFamily: ReactPropTypes.string,\n fontSize: ReactPropTypes.number,\n fontWeight: ReactPropTypes.oneOf(\n ['normal' /*default*/, 'bold',\n '100', '200', '300', '400', '500', '600', '700', '800', '900']\n ),\n fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),\n lineHeight: ReactPropTypes.number,\n color: ReactPropTypes.string,\n // NOTE: 'justify is supported only on iOS\n textAlign: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'left', 'right', 'center', 'justify']\n ),\n writingDirection: ReactPropTypes.oneOf(\n ['auto' /*default*/, 'ltr', 'rtl']\n ),\n letterSpacing: ReactPropTypes.number,\n textDecorationLine:ReactPropTypes.oneOf(\n ['none' /*default*/, 'underline', 'line-through', 'underline line-through']\n ),\n textDecorationStyle:ReactPropTypes.oneOf(\n ['solid' /*default*/, 'double', 'dotted','dashed']\n ),\n textDecorationColor: ReactPropTypes.string,\n});\n\n// Text doesn't support padding correctly (#4841912)\nvar unsupportedProps = Object.keys({\n padding: null,\n paddingTop: null,\n paddingLeft: null,\n paddingRight: null,\n paddingBottom: null,\n paddingVertical: null,\n paddingHorizontal: null,\n});\n\nfor (var ii = 0; ii < unsupportedProps.length; ii++) {\n delete TextStylePropTypes[unsupportedProps[ii]];\n}\n\nmodule.exports = TextStylePropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/TextStylePropTypes.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar LayoutPropTypes=require('LayoutPropTypes');\nvar ReactPropTypes=require('ReactPropTypes');\nvar TransformPropTypes=require('TransformPropTypes');\n\n\n\n\nvar ViewStylePropTypes=_extends({},\nLayoutPropTypes,\nTransformPropTypes,{\nbackgroundColor:ReactPropTypes.string,\nborderColor:ReactPropTypes.string,\nborderTopColor:ReactPropTypes.string,\nborderRightColor:ReactPropTypes.string,\nborderBottomColor:ReactPropTypes.string,\nborderLeftColor:ReactPropTypes.string,\nborderRadius:ReactPropTypes.number,\nborderTopLeftRadius:ReactPropTypes.number,\nborderTopRightRadius:ReactPropTypes.number,\nborderBottomLeftRadius:ReactPropTypes.number,\nborderBottomRightRadius:ReactPropTypes.number,\nborderStyle:ReactPropTypes.oneOf(['solid','dotted','dashed']),\nopacity:ReactPropTypes.number,\noverflow:ReactPropTypes.oneOf(['visible','hidden']),\nshadowColor:ReactPropTypes.string,\nshadowOffset:ReactPropTypes.shape(\n{width:ReactPropTypes.number,height:ReactPropTypes.number}),\n\nshadowOpacity:ReactPropTypes.number,\nshadowRadius:ReactPropTypes.number});\n\n\nmodule.exports = ViewStylePropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ViewStylePropTypes\n * @flow\n */\n'use strict';\n\nvar LayoutPropTypes = require('LayoutPropTypes');\nvar ReactPropTypes = require('ReactPropTypes');\nvar TransformPropTypes = require('TransformPropTypes');\n\n/**\n * Warning: Some of these properties may not be supported in all releases.\n */\nvar ViewStylePropTypes = {\n ...LayoutPropTypes,\n ...TransformPropTypes,\n backgroundColor: ReactPropTypes.string,\n borderColor: ReactPropTypes.string,\n borderTopColor: ReactPropTypes.string,\n borderRightColor: ReactPropTypes.string,\n borderBottomColor: ReactPropTypes.string,\n borderLeftColor: ReactPropTypes.string,\n borderRadius: ReactPropTypes.number,\n borderTopLeftRadius: ReactPropTypes.number,\n borderTopRightRadius: ReactPropTypes.number,\n borderBottomLeftRadius: ReactPropTypes.number,\n borderBottomRightRadius: ReactPropTypes.number,\n borderStyle: ReactPropTypes.oneOf(['solid', 'dotted', 'dashed']),\n opacity: ReactPropTypes.number,\n overflow: ReactPropTypes.oneOf(['visible', 'hidden']),\n shadowColor: ReactPropTypes.string,\n shadowOffset: ReactPropTypes.shape(\n {width: ReactPropTypes.number, height: ReactPropTypes.number}\n ),\n shadowOpacity: ReactPropTypes.number,\n shadowRadius: ReactPropTypes.number,\n};\n\nmodule.exports = ViewStylePropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/ViewStylePropTypes.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar matricesDiffer=function(one,two){\nif(one === two){\nreturn false;}\n\nreturn !one || !two || \none[12] !== two[12] || \none[13] !== two[13] || \none[14] !== two[14] || \none[5] !== two[5] || \none[10] !== two[10] || \none[1] !== two[1] || \none[2] !== two[2] || \none[3] !== two[3] || \none[4] !== two[4] || \none[6] !== two[6] || \none[7] !== two[7] || \none[8] !== two[8] || \none[9] !== two[9] || \none[11] !== two[11] || \none[15] !== two[15];};\n\n\nmodule.exports = matricesDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule matricesDiffer\n */\n'use strict';\n\n/**\n * Unrolls an array comparison specially for matrices. Prioritizes\n * checking of indices that are most likely to change so that the comparison\n * bails as early as possible.\n *\n * @param {MatrixMath.Matrix} one First matrix.\n * @param {MatrixMath.Matrix} two Second matrix.\n * @return {boolean} Whether or not the two matrices differ.\n */\nvar matricesDiffer = function(one, two) {\n if (one === two) {\n return false;\n }\n return !one || !two ||\n one[12] !== two[12] ||\n one[13] !== two[13] ||\n one[14] !== two[14] ||\n one[5] !== two[5] ||\n one[10] !== two[10] ||\n one[1] !== two[1] ||\n one[2] !== two[2] ||\n one[3] !== two[3] ||\n one[4] !== two[4] ||\n one[6] !== two[6] ||\n one[7] !== two[7] ||\n one[8] !== two[8] ||\n one[9] !== two[9] ||\n one[11] !== two[11] ||\n one[15] !== two[15];\n};\n\nmodule.exports = matricesDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/matricesDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nvar dummySize={width:undefined,height:undefined};\n\nvar sizesDiffer=function(one,two){\none = one || dummySize;\ntwo = two || dummySize;\nreturn one !== two && (\none.width !== two.width || \none.height !== two.height);};\n\n\n\nmodule.exports = sizesDiffer;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule sizesDiffer\n */\n'use strict';\n\nvar dummySize = {width: undefined, height: undefined};\n\nvar sizesDiffer = function(one, two) {\n one = one || dummySize;\n two = two || dummySize;\n return one !== two && (\n one.width !== two.width ||\n one.height !== two.height\n );\n};\n\nmodule.exports = sizesDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChild.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentEnvironment=require('ReactComponentEnvironment');\nvar ReactMultiChildUpdateTypes=require('ReactMultiChildUpdateTypes');\n\nvar ReactReconciler=require('ReactReconciler');\nvar ReactChildReconciler=require('ReactChildReconciler');\n\n\n\n\n\n\n\n\nvar updateDepth=0;\n\n\n\n\n\n\n\n\n\nvar updateQueue=[];\n\n\n\n\n\n\n\nvar markupQueue=[];\n\n\n\n\n\n\n\n\n\nfunction enqueueMarkup(parentID,markup,toIndex){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.INSERT_MARKUP,\nmarkupIndex:markupQueue.push(markup) - 1,\ntextContent:null,\nfromIndex:null,\ntoIndex:toIndex});}\n\n\n\n\n\n\n\n\n\n\n\nfunction enqueueMove(parentID,fromIndex,toIndex){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.MOVE_EXISTING,\nmarkupIndex:null,\ntextContent:null,\nfromIndex:fromIndex,\ntoIndex:toIndex});}\n\n\n\n\n\n\n\n\n\n\nfunction enqueueRemove(parentID,fromIndex){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.REMOVE_NODE,\nmarkupIndex:null,\ntextContent:null,\nfromIndex:fromIndex,\ntoIndex:null});}\n\n\n\n\n\n\n\n\n\n\nfunction enqueueTextContent(parentID,textContent){\n\nupdateQueue.push({\nparentID:parentID,\nparentNode:null,\ntype:ReactMultiChildUpdateTypes.TEXT_CONTENT,\nmarkupIndex:null,\ntextContent:textContent,\nfromIndex:null,\ntoIndex:null});}\n\n\n\n\n\n\n\n\nfunction processQueue(){\nif(updateQueue.length){\nReactComponentEnvironment.processChildrenUpdates(\nupdateQueue,\nmarkupQueue);\n\nclearQueue();}}\n\n\n\n\n\n\n\n\nfunction clearQueue(){\nupdateQueue.length = 0;\nmarkupQueue.length = 0;}\n\n\n\n\n\n\n\n\nvar ReactMultiChild={\n\n\n\n\n\n\n\n\nMixin:{\n\n\n\n\n\n\n\n\n\nmountChildren:function(nestedChildren,transaction,context){\nvar children=ReactChildReconciler.instantiateChildren(\nnestedChildren,transaction,context);\n\nthis._renderedChildren = children;\nvar mountImages=[];\nvar index=0;\nfor(var name in children) {\nif(children.hasOwnProperty(name)){\nvar child=children[name];\n\nvar rootID=this._rootNodeID + name;\nvar mountImage=ReactReconciler.mountComponent(\nchild,\nrootID,\ntransaction,\ncontext);\n\nchild._mountIndex = index;\nmountImages.push(mountImage);\nindex++;}}\n\n\nreturn mountImages;},\n\n\n\n\n\n\n\n\nupdateTextContent:function(nextContent){\nupdateDepth++;\nvar errorThrown=true;\ntry{\nvar prevChildren=this._renderedChildren;\n\nReactChildReconciler.unmountChildren(prevChildren);\n\nfor(var name in prevChildren) {\nif(prevChildren.hasOwnProperty(name)){\nthis._unmountChildByName(prevChildren[name],name);}}\n\n\n\nthis.setTextContent(nextContent);\nerrorThrown = false;}finally \n{\nupdateDepth--;\nif(!updateDepth){\nif(errorThrown){\nclearQueue();}else \n{\nprocessQueue();}}}},\n\n\n\n\n\n\n\n\n\n\n\n\nupdateChildren:function(nextNestedChildren,transaction,context){\nupdateDepth++;\nvar errorThrown=true;\ntry{\nthis._updateChildren(nextNestedChildren,transaction,context);\nerrorThrown = false;}finally \n{\nupdateDepth--;\nif(!updateDepth){\nif(errorThrown){\nclearQueue();}else \n{\nprocessQueue();}}}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_updateChildren:function(nextNestedChildren,transaction,context){\nvar prevChildren=this._renderedChildren;\nvar nextChildren=ReactChildReconciler.updateChildren(\nprevChildren,nextNestedChildren,transaction,context);\n\nthis._renderedChildren = nextChildren;\nif(!nextChildren && !prevChildren){\nreturn;}\n\nvar name;\n\n\nvar lastIndex=0;\nvar nextIndex=0;\nfor(name in nextChildren) {\nif(!nextChildren.hasOwnProperty(name)){\ncontinue;}\n\nvar prevChild=prevChildren && prevChildren[name];\nvar nextChild=nextChildren[name];\nif(prevChild === nextChild){\nthis.moveChild(prevChild,nextIndex,lastIndex);\nlastIndex = Math.max(prevChild._mountIndex,lastIndex);\nprevChild._mountIndex = nextIndex;}else \n{\nif(prevChild){\n\nlastIndex = Math.max(prevChild._mountIndex,lastIndex);\nthis._unmountChildByName(prevChild,name);}\n\n\nthis._mountChildByNameAtIndex(\nnextChild,name,nextIndex,transaction,context);}\n\n\nnextIndex++;}\n\n\nfor(name in prevChildren) {\nif(prevChildren.hasOwnProperty(name) && \n!(nextChildren && nextChildren.hasOwnProperty(name))){\nthis._unmountChildByName(prevChildren[name],name);}}},\n\n\n\n\n\n\n\n\n\n\nunmountChildren:function(){\nvar renderedChildren=this._renderedChildren;\nReactChildReconciler.unmountChildren(renderedChildren);\nthis._renderedChildren = null;},\n\n\n\n\n\n\n\n\n\n\nmoveChild:function(child,toIndex,lastIndex){\n\n\n\nif(child._mountIndex < lastIndex){\nenqueueMove(this._rootNodeID,child._mountIndex,toIndex);}},\n\n\n\n\n\n\n\n\n\n\ncreateChild:function(child,mountImage){\nenqueueMarkup(this._rootNodeID,mountImage,child._mountIndex);},\n\n\n\n\n\n\n\n\nremoveChild:function(child){\nenqueueRemove(this._rootNodeID,child._mountIndex);},\n\n\n\n\n\n\n\n\nsetTextContent:function(textContent){\nenqueueTextContent(this._rootNodeID,textContent);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n_mountChildByNameAtIndex:function(\nchild,\nname,\nindex,\ntransaction,\ncontext){\n\nvar rootID=this._rootNodeID + name;\nvar mountImage=ReactReconciler.mountComponent(\nchild,\nrootID,\ntransaction,\ncontext);\n\nchild._mountIndex = index;\nthis.createChild(child,mountImage);},\n\n\n\n\n\n\n\n\n\n\n\n_unmountChildByName:function(child,name){\nthis.removeChild(child);\nchild._mountIndex = null;}}};\n\n\n\n\n\n\nmodule.exports = ReactMultiChild;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMultiChild\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactComponentEnvironment = require('ReactComponentEnvironment');\nvar ReactMultiChildUpdateTypes = require('ReactMultiChildUpdateTypes');\n\nvar ReactReconciler = require('ReactReconciler');\nvar ReactChildReconciler = require('ReactChildReconciler');\n\n/**\n * Updating children of a component may trigger recursive updates. The depth is\n * used to batch recursive updates to render markup more efficiently.\n *\n * @type {number}\n * @private\n */\nvar updateDepth = 0;\n\n/**\n * Queue of update configuration objects.\n *\n * Each object has a `type` property that is in `ReactMultiChildUpdateTypes`.\n *\n * @type {array<object>}\n * @private\n */\nvar updateQueue = [];\n\n/**\n * Queue of markup to be rendered.\n *\n * @type {array<string>}\n * @private\n */\nvar markupQueue = [];\n\n/**\n * Enqueues markup to be rendered and inserted at a supplied index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction enqueueMarkup(parentID, markup, toIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.INSERT_MARKUP,\n markupIndex: markupQueue.push(markup) - 1,\n textContent: null,\n fromIndex: null,\n toIndex: toIndex\n });\n}\n\n/**\n * Enqueues moving an existing element to another index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction enqueueMove(parentID, fromIndex, toIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.MOVE_EXISTING,\n markupIndex: null,\n textContent: null,\n fromIndex: fromIndex,\n toIndex: toIndex\n });\n}\n\n/**\n * Enqueues removing an element at an index.\n *\n * @param {string} parentID ID of the parent component.\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction enqueueRemove(parentID, fromIndex) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.REMOVE_NODE,\n markupIndex: null,\n textContent: null,\n fromIndex: fromIndex,\n toIndex: null\n });\n}\n\n/**\n * Enqueues setting the text content.\n *\n * @param {string} parentID ID of the parent component.\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction enqueueTextContent(parentID, textContent) {\n // NOTE: Null values reduce hidden classes.\n updateQueue.push({\n parentID: parentID,\n parentNode: null,\n type: ReactMultiChildUpdateTypes.TEXT_CONTENT,\n markupIndex: null,\n textContent: textContent,\n fromIndex: null,\n toIndex: null\n });\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue() {\n if (updateQueue.length) {\n ReactComponentEnvironment.processChildrenUpdates(\n updateQueue,\n markupQueue\n );\n clearQueue();\n }\n}\n\n/**\n * Clears any enqueued updates.\n *\n * @private\n */\nfunction clearQueue() {\n updateQueue.length = 0;\n markupQueue.length = 0;\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function(nestedChildren, transaction, context) {\n var children = ReactChildReconciler.instantiateChildren(\n nestedChildren, transaction, context\n );\n this._renderedChildren = children;\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n // Inlined for performance, see `ReactInstanceHandles.createReactID`.\n var rootID = this._rootNodeID + name;\n var mountImage = ReactReconciler.mountComponent(\n child,\n rootID,\n transaction,\n context\n );\n child._mountIndex = index;\n mountImages.push(mountImage);\n index++;\n }\n }\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function(nextContent) {\n updateDepth++;\n var errorThrown = true;\n try {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren);\n // TODO: The setTextContent operation should be enough\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n this._unmountChildByName(prevChildren[name], name);\n }\n }\n // Set new text content.\n this.setTextContent(nextContent);\n errorThrown = false;\n } finally {\n updateDepth--;\n if (!updateDepth) {\n if (errorThrown) {\n clearQueue();\n } else {\n processQueue();\n }\n }\n }\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildren Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function(nextNestedChildren, transaction, context) {\n updateDepth++;\n var errorThrown = true;\n try {\n this._updateChildren(nextNestedChildren, transaction, context);\n errorThrown = false;\n } finally {\n updateDepth--;\n if (!updateDepth) {\n if (errorThrown) {\n clearQueue();\n } else {\n processQueue();\n }\n }\n\n }\n },\n\n /**\n * Improve performance by isolating this hot code path from the try/catch\n * block in `updateChildren`.\n *\n * @param {?object} nextNestedChildren Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function(nextNestedChildren, transaction, context) {\n var prevChildren = this._renderedChildren;\n var nextChildren = ReactChildReconciler.updateChildren(\n prevChildren, nextNestedChildren, transaction, context\n );\n this._renderedChildren = nextChildren;\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var lastIndex = 0;\n var nextIndex = 0;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n this.moveChild(prevChild, nextIndex, lastIndex);\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n this._unmountChildByName(prevChild, name);\n }\n // The child must be instantiated before it's mounted.\n this._mountChildByNameAtIndex(\n nextChild, name, nextIndex, transaction, context\n );\n }\n nextIndex++;\n }\n // Remove children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) &&\n !(nextChildren && nextChildren.hasOwnProperty(name))) {\n this._unmountChildByName(prevChildren[name], name);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @internal\n */\n unmountChildren: function() {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function(child, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n enqueueMove(this._rootNodeID, child._mountIndex, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function(child, mountImage) {\n enqueueMarkup(this._rootNodeID, mountImage, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function(child) {\n enqueueRemove(this._rootNodeID, child._mountIndex);\n },\n\n /**\n * Sets this text content string.\n *\n * @param {string} textContent Text content to set.\n * @protected\n */\n setTextContent: function(textContent) {\n enqueueTextContent(this._rootNodeID, textContent);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildByNameAtIndex: function(\n child,\n name,\n index,\n transaction,\n context) {\n // Inlined for performance, see `ReactInstanceHandles.createReactID`.\n var rootID = this._rootNodeID + name;\n var mountImage = ReactReconciler.mountComponent(\n child,\n rootID,\n transaction,\n context\n );\n child._mountIndex = index;\n this.createChild(child, mountImage);\n },\n\n /**\n * Unmounts a rendered child by name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @param {string} name Name of the child in `this._renderedChildren`.\n * @private\n */\n _unmountChildByName: function(child, name) {\n this.removeChild(child);\n child._mountIndex = null;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactMultiChild.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactChildReconciler.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactReconciler=require('ReactReconciler');\n\nvar flattenChildren=require('flattenChildren');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\n\n\n\n\n\n\nvar ReactChildReconciler={\n\n\n\n\n\n\n\n\n\ninstantiateChildren:function(nestedChildNodes,transaction,context){\nvar children=flattenChildren(nestedChildNodes);\nfor(var name in children) {\nif(children.hasOwnProperty(name)){\nvar child=children[name];\n\n\nvar childInstance=instantiateReactComponent(child,null);\nchildren[name] = childInstance;}}\n\n\nreturn children;},\n\n\n\n\n\n\n\n\n\n\n\n\nupdateChildren:function(\nprevChildren,\nnextNestedChildNodes,\ntransaction,\ncontext){\n\n\n\n\n\nvar nextChildren=flattenChildren(nextNestedChildNodes);\nif(!nextChildren && !prevChildren){\nreturn null;}\n\nvar name;\nfor(name in nextChildren) {\nif(!nextChildren.hasOwnProperty(name)){\ncontinue;}\n\nvar prevChild=prevChildren && prevChildren[name];\nvar prevElement=prevChild && prevChild._currentElement;\nvar nextElement=nextChildren[name];\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nReactReconciler.receiveComponent(\nprevChild,nextElement,transaction,context);\n\nnextChildren[name] = prevChild;}else \n{\nif(prevChild){\nReactReconciler.unmountComponent(prevChild,name);}\n\n\nvar nextChildInstance=instantiateReactComponent(\nnextElement,\nnull);\n\nnextChildren[name] = nextChildInstance;}}\n\n\n\nfor(name in prevChildren) {\nif(prevChildren.hasOwnProperty(name) && \n!(nextChildren && nextChildren.hasOwnProperty(name))){\nReactReconciler.unmountComponent(prevChildren[name]);}}\n\n\nreturn nextChildren;},\n\n\n\n\n\n\n\n\n\nunmountChildren:function(renderedChildren){\nfor(var name in renderedChildren) {\nvar renderedChild=renderedChildren[name];\nReactReconciler.unmountComponent(renderedChild);}}};\n\n\n\n\n\nmodule.exports = ReactChildReconciler;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactChildReconciler\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactReconciler = require('ReactReconciler');\n\nvar flattenChildren = require('flattenChildren');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function(nestedChildNodes, transaction, context) {\n var children = flattenChildren(nestedChildNodes);\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n // The rendered children must be turned into instances as they're\n // mounted.\n var childInstance = instantiateReactComponent(child, null);\n children[name] = childInstance;\n }\n }\n return children;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextNestedChildNodes Nested child maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function(\n prevChildren,\n nextNestedChildNodes,\n transaction,\n context) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n var nextChildren = flattenChildren(nextNestedChildNodes);\n if (!nextChildren && !prevChildren) {\n return null;\n }\n var name;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(\n prevChild, nextElement, transaction, context\n );\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n ReactReconciler.unmountComponent(prevChild, name);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(\n nextElement,\n null\n );\n nextChildren[name] = nextChildInstance;\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) &&\n !(nextChildren && nextChildren.hasOwnProperty(name))) {\n ReactReconciler.unmountComponent(prevChildren[name]);\n }\n }\n return nextChildren;\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function(renderedChildren) {\n for (var name in renderedChildren) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild);\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactChildReconciler.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/flattenChildren.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar traverseAllChildren=require('traverseAllChildren');\nvar warning=require('warning');\n\n\n\n\n\n\nfunction flattenSingleChildIntoContext(traverseContext,child,name){\n\nvar result=traverseContext;\nvar keyUnique=!result.hasOwnProperty(name);\nif(__DEV__){\nwarning(\nkeyUnique,\n'flattenChildren(...): Encountered two children with the same key, ' + \n'`%s`. Child keys must be unique; when two children share a key, only ' + \n'the first child will be used.',\nname);}\n\n\nif(keyUnique && child != null){\nresult[name] = child;}}\n\n\n\n\n\n\n\n\nfunction flattenChildren(children){\nif(children == null){\nreturn children;}\n\nvar result={};\ntraverseAllChildren(children,flattenSingleChildIntoContext,result);\nreturn result;}\n\n\nmodule.exports = flattenChildren;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule flattenChildren\n */\n\n'use strict';\n\nvar traverseAllChildren = require('traverseAllChildren');\nvar warning = require('warning');\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name) {\n // We found a component instance.\n var result = traverseContext;\n var keyUnique = !result.hasOwnProperty(name);\n if (__DEV__) {\n warning(\n keyUnique,\n 'flattenChildren(...): Encountered two children with the same key, ' +\n '`%s`. Child keys must be unique; when two children share a key, only ' +\n 'the first child will be used.',\n name\n );\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children) {\n if (children == null) {\n return children;\n }\n var result = {};\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n return result;\n}\n\nmodule.exports = flattenChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/flattenChildren.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/styleDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar deepDiffer=require('deepDiffer');\n\nfunction styleDiffer(a,b){\nreturn !styleEqual(a,b);}\n\n\nfunction styleEqual(a,b){\nif(!a){\nreturn !b;}\n\nif(!b){\nreturn !a;}\n\nif(typeof a !== typeof b){\nreturn false;}\n\nif(typeof a === 'number'){\nreturn a === b;}\n\n\nif(Array.isArray(a)){\nif(!Array.isArray(b) || a.length !== b.length){\nreturn false;}\n\nfor(var i=0;i < a.length;++i) {\nif(!styleEqual(a[i],b[i])){\nreturn false;}}\n\n\nreturn true;}\n\n\nfor(var key in a) {\nif(deepDiffer(a[key],b[key])){\nreturn false;}}\n\n\n\nfor(var key in b) {\nif(!a.hasOwnProperty(key)){\nreturn false;}}\n\n\n\nreturn true;}\n\n\nmodule.exports = styleDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule styleDiffer\n * @flow\n */\n'use strict';\n\nvar deepDiffer = require('deepDiffer');\n\nfunction styleDiffer(a: any, b: any): bool {\n return !styleEqual(a, b);\n}\n\nfunction styleEqual(a: any, b: any): bool {\n if (!a) {\n return !b;\n }\n if (!b) {\n return !a;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'number') {\n return a === b;\n }\n\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; ++i) {\n if (!styleEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n\n for (var key in a) {\n if (deepDiffer(a[key], b[key])) {\n return false;\n }\n }\n\n for (var key in b) {\n if (!a.hasOwnProperty(key)) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = styleDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/styleDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar deepDiffer=function(one,two){\nif(one === two){\n\nreturn false;}\n\nif(typeof one === 'function' && typeof two === 'function'){\n\nreturn false;}\n\nif(typeof one !== 'object' || one === null){\n\nreturn one !== two;}\n\nif(typeof two !== 'object' || two === null){\n\n\nreturn true;}\n\nif(one.constructor !== two.constructor){\nreturn true;}\n\nif(Array.isArray(one)){\n\nvar len=one.length;\nif(two.length !== len){\nreturn true;}\n\nfor(var ii=0;ii < len;ii++) {\nif(deepDiffer(one[ii],two[ii])){\nreturn true;}}}else \n\n\n{\nfor(var key in one) {\nif(deepDiffer(one[key],two[key])){\nreturn true;}}\n\n\nfor(var twoKey in two) {\n\n\nif(one[twoKey] === undefined && two[twoKey] !== undefined){\nreturn true;}}}\n\n\n\nreturn false;};\n\n\nmodule.exports = deepDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule deepDiffer\n * @flow\n */\n'use strict';\n\n/*\n * @returns {bool} true if different, false if equal\n */\nvar deepDiffer = function(one: any, two: any): bool {\n if (one === two) {\n // Short circuit on identical object references instead of traversing them.\n return false;\n }\n if ((typeof one === 'function') && (typeof two === 'function')) {\n // We consider all functions equal\n return false;\n }\n if ((typeof one !== 'object') || (one === null)) {\n // Primitives can be directly compared\n return one !== two;\n }\n if ((typeof two !== 'object') || (two === null)) {\n // We know they are different because the previous case would have triggered\n // otherwise.\n return true;\n }\n if (one.constructor !== two.constructor) {\n return true;\n }\n if (Array.isArray(one)) {\n // We know two is also an array because the constructors are equal\n var len = one.length;\n if (two.length !== len) {\n return true;\n }\n for (var ii = 0; ii < len; ii++) {\n if (deepDiffer(one[ii], two[ii])) {\n return true;\n }\n }\n } else {\n for (var key in one) {\n if (deepDiffer(one[key], two[key])) {\n return true;\n }\n }\n for (var twoKey in two) {\n // The only case we haven't checked yet is keys that are in two but aren't\n // in one, which means they are different.\n if (one[twoKey] === undefined && two[twoKey] !== undefined) {\n return true;\n }\n }\n }\n return false;\n};\n\nmodule.exports = deepDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/diffRawProperties.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction diffRawProperties(\nupdatePayload,\nprevProps,\nnextProps,\nvalidAttributes)\n{\nvar validAttributeConfig;\nvar nextProp;\nvar prevProp;\nvar isScalar;\nvar shouldUpdate;\n\nif(nextProps){\nfor(var propKey in nextProps) {\nvalidAttributeConfig = validAttributes[propKey];\nif(!validAttributeConfig){\ncontinue;}\n\nprevProp = prevProps && prevProps[propKey];\nnextProp = nextProps[propKey];\n\n\n\nif(typeof prevProp === 'function'){\nprevProp = true;}\n\nif(typeof nextProp === 'function'){\nnextProp = true;}\n\n\nif(prevProp !== nextProp){\n\n\n\n\nisScalar = typeof nextProp !== 'object' || nextProp === null;\nshouldUpdate = isScalar || \n!prevProp || \nvalidAttributeConfig.diff && \nvalidAttributeConfig.diff(prevProp,nextProp);\n\nif(shouldUpdate){\nupdatePayload = updatePayload || {};\nupdatePayload[propKey] = nextProp;}}}}\n\n\n\n\n\n\n\n\nif(prevProps){\nfor(var propKey in prevProps) {\nvalidAttributeConfig = validAttributes[propKey];\nif(!validAttributeConfig){\ncontinue;}\n\nif(updatePayload && updatePayload[propKey] !== undefined){\ncontinue;}\n\nprevProp = prevProps[propKey];\nnextProp = nextProps && nextProps[propKey];\n\n\n\nif(typeof prevProp === 'function'){\nprevProp = true;}\n\nif(typeof nextProp === 'function'){\nnextProp = true;}\n\n\nif(prevProp !== nextProp){\nif(nextProp === undefined){\nnextProp = null;}\n\n\n\n\n\nisScalar = typeof nextProp !== 'object' || nextProp === null;\nshouldUpdate = isScalar && prevProp !== nextProp || \nvalidAttributeConfig.diff && \nvalidAttributeConfig.diff(prevProp,nextProp);\nif(shouldUpdate){\nupdatePayload = updatePayload || {};\nupdatePayload[propKey] = nextProp;}}}}\n\n\n\n\nreturn updatePayload;}\n\n\nmodule.exports = diffRawProperties;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule diffRawProperties\n * @flow\n */\n'use strict';\n\n/**\n * diffRawProperties takes two sets of props and a set of valid attributes\n * and write to updatePayload the values that changed or were deleted\n *\n * @param {?object} updatePayload Overriden with the props that changed.\n * @param {!object} prevProps Previous properties to diff against current\n * properties. These properties are as supplied to component construction.\n * @param {!object} prevProps Next \"current\" properties to diff against\n * previous. These properties are as supplied to component construction.\n * @return {?object}\n */\nfunction diffRawProperties(\n updatePayload: ?Object,\n prevProps: ?Object,\n nextProps: ?Object,\n validAttributes: Object\n): ?Object {\n var validAttributeConfig;\n var nextProp;\n var prevProp;\n var isScalar;\n var shouldUpdate;\n\n if (nextProps) {\n for (var propKey in nextProps) {\n validAttributeConfig = validAttributes[propKey];\n if (!validAttributeConfig) {\n continue; // not a valid native prop\n }\n prevProp = prevProps && prevProps[propKey];\n nextProp = nextProps[propKey];\n\n // functions are converted to booleans as markers that the associated\n // events should be sent from native.\n if (typeof prevProp === 'function') {\n prevProp = true;\n }\n if (typeof nextProp === 'function') {\n nextProp = true;\n }\n\n if (prevProp !== nextProp) {\n // If you want a property's diff to be detected, you must configure it\n // to be so - *or* it must be a scalar property. For now, we'll allow\n // creation with any attribute that is not scalar, but we should\n // eventually even reject those unless they are properly configured.\n isScalar = typeof nextProp !== 'object' || nextProp === null;\n shouldUpdate = isScalar ||\n !prevProp ||\n validAttributeConfig.diff &&\n validAttributeConfig.diff(prevProp, nextProp);\n\n if (shouldUpdate) {\n updatePayload = updatePayload || {};\n updatePayload[propKey] = nextProp;\n }\n }\n }\n }\n\n // Also iterate through all the previous props to catch any that have been\n // removed and make sure native gets the signal so it can reset them to the\n // default.\n if (prevProps) {\n for (var propKey in prevProps) {\n validAttributeConfig = validAttributes[propKey];\n if (!validAttributeConfig) {\n continue; // not a valid native prop\n }\n if (updatePayload && updatePayload[propKey] !== undefined) {\n continue; // Prop already specified\n }\n prevProp = prevProps[propKey];\n nextProp = nextProps && nextProps[propKey];\n\n // functions are converted to booleans as markers that the associated\n // events should be sent from native.\n if (typeof prevProp === 'function') {\n prevProp = true;\n }\n if (typeof nextProp === 'function') {\n nextProp = true;\n }\n\n if (prevProp !== nextProp) {\n if (nextProp === undefined) {\n nextProp = null; // null is a sentinel we explicitly send to native\n }\n // If you want a property's diff to be detected, you must configure it\n // to be so - *or* it must be a scalar property. For now, we'll allow\n // creation with any attribute that is not scalar, but we should\n // eventually even reject those unless they are properly configured.\n isScalar = typeof nextProp !== 'object' || nextProp === null;\n shouldUpdate = isScalar && prevProp !== nextProp ||\n validAttributeConfig.diff &&\n validAttributeConfig.diff(prevProp, nextProp);\n if (shouldUpdate) {\n updatePayload = updatePayload || {};\n updatePayload[propKey] = nextProp;\n }\n }\n }\n }\n return updatePayload;\n}\n\nmodule.exports = diffRawProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/diffRawProperties.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/RCTEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeEventEmitter=require('ReactNativeEventEmitter');\n\n\nmodule.exports = ReactNativeEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTEventEmitter\n * @flow\n */\n'use strict';\n\nvar ReactNativeEventEmitter = require('ReactNativeEventEmitter');\n\n// Completely locally implemented - no native hooks.\nmodule.exports = ReactNativeEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/RCTEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTLog.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar levelsMap={\nlog:'log',\ninfo:'info',\nwarn:'warn',\nerror:'error',\nmustfix:'error'};var \n\n\nRCTLog=(function(){function RCTLog(){_classCallCheck(this,RCTLog);}_createClass(RCTLog,null,[{key:'logIfNoNativeHook',value:\n\nfunction logIfNoNativeHook(){\nvar args=Array.prototype.slice.call(arguments);\nvar level=args.shift();\nvar logFn=levelsMap[level];\ninvariant(\nlogFn,\n'Level \"' + level + '\" not one of ' + Object.keys(levelsMap));\n\nif(typeof global.nativeLoggingHook === 'undefined'){\n\nconsole[logFn].apply(console,args);}\n\nreturn true;}}]);return RCTLog;})();\n\n\n\nmodule.exports = RCTLog;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTLog\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar levelsMap = {\n log: 'log',\n info: 'info',\n warn: 'warn',\n error: 'error',\n mustfix: 'error',\n};\n\nclass RCTLog {\n // level one of log, info, warn, error, mustfix\n static logIfNoNativeHook() {\n var args = Array.prototype.slice.call(arguments);\n var level = args.shift();\n var logFn = levelsMap[level];\n invariant(\n logFn,\n 'Level \"' + level + '\" not one of ' + Object.keys(levelsMap)\n );\n if (typeof global.nativeLoggingHook === 'undefined') {\n // We already printed in xcode, so only log here if using a js debugger\n console[logFn].apply(console, args);\n }\n return true;\n }\n}\n\nmodule.exports = RCTLog;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTLog.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/deprecated.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction deprecated(namespace,oldName,newName,ctx,fn){\nvar warned=false;\nif(__DEV__){\nvar newFn=function(){\nwarning(\nwarned,\n'%s.%s will be deprecated in a future version. ' + \n'Use %s.%s instead.',\nnamespace,\noldName,\nnamespace,\nnewName);\n\nwarned = true;\nreturn fn.apply(ctx,arguments);};\n\nnewFn.displayName = namespace + '_' + oldName;\n\n\nreturn assign(newFn,fn);}\n\n\nreturn fn;}\n\n\nmodule.exports = deprecated;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule deprecated\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar warning = require('warning');\n\n/**\n * This will log a single deprecation notice per function and forward the call\n * on to the new API.\n *\n * @param {string} namespace The namespace of the call, eg 'React'\n * @param {string} oldName The old function name, eg 'renderComponent'\n * @param {string} newName The new function name, eg 'render'\n * @param {*} ctx The context this forwarded call should run in\n * @param {function} fn The function to forward on to\n * @return {*} Will be the value as returned from `fn`\n */\nfunction deprecated(namespace, oldName, newName, ctx, fn) {\n var warned = false;\n if (__DEV__) {\n var newFn = function() {\n warning(\n warned,\n '%s.%s will be deprecated in a future version. ' +\n 'Use %s.%s instead.',\n namespace,\n oldName,\n namespace,\n newName\n );\n warned = true;\n return fn.apply(ctx, arguments);\n };\n newFn.displayName = `${namespace}_${oldName}`;\n // We need to make sure all properties of the original fn are copied over.\n // In particular, this is needed to support PropTypes\n return assign(newFn, fn);\n }\n\n return fn;\n}\n\nmodule.exports = deprecated;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/deprecated.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/onlyChild.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nfunction onlyChild(children){\ninvariant(\nReactElement.isValidElement(children),\n'onlyChild must be passed a children with exactly one child.');\n\nreturn children;}\n\n\nmodule.exports = onlyChild;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule onlyChild\n */\n'use strict';\n\nvar ReactElement = require('ReactElement');\n\nvar invariant = require('invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection. The current implementation of this\n * function assumes that a single child gets passed without a wrapper, but the\n * purpose of this helper function is to abstract away the particular structure\n * of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactComponent} The first and only `ReactComponent` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n invariant(\n ReactElement.isValidElement(children),\n 'onlyChild must be passed a children with exactly one child.'\n );\n return children;\n}\n\nmodule.exports = onlyChild;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/onlyChild.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js":{"data":{"code":"'use strict';function _objectWithoutProperties(obj,keys){var target={};for(var i in obj) {if(keys.indexOf(i) >= 0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i] = obj[i];}return target;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\nvar GRAY='#999999';\n\n\n\n\n\n\n\n\nvar ActivityIndicatorIOS=React.createClass({displayName:'ActivityIndicatorIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nanimating:PropTypes.bool,\n\n\n\ncolor:PropTypes.string,\n\n\n\nhidesWhenStopped:PropTypes.bool,\n\n\n\nsize:PropTypes.oneOf([\n'small',\n'large']),\n\n\n\n\n\n\nonLayout:PropTypes.func},\n\n\ngetDefaultProps:function(){\nreturn {\nanimating:true,\ncolor:GRAY,\nhidesWhenStopped:true,\nsize:'small'};},\n\n\n\nrender:function(){var _props=\nthis.props;var onLayout=_props.onLayout;var style=_props.style;var props=_objectWithoutProperties(_props,['onLayout','style']);\nvar sizeStyle=this.props.size === 'large'?styles.sizeLarge:styles.sizeSmall;\nreturn (\nReact.createElement(View,{\nonLayout:onLayout,\nstyle:[styles.container,sizeStyle,style]},\nReact.createElement(RCTActivityIndicatorView,props)));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nalignItems:'center',\njustifyContent:'center'},\n\nsizeSmall:{\nwidth:20,\nheight:20},\n\nsizeLarge:{\nwidth:36,\nheight:36}});\n\n\n\nvar RCTActivityIndicatorView=requireNativeComponent(\n'RCTActivityIndicatorView',\nnull);\n\nif(__DEV__){\nvar nativeOnlyProps={activityIndicatorViewStyle:true};\nverifyPropTypes(\nActivityIndicatorIOS,\nRCTActivityIndicatorView.viewConfig,\nnativeOnlyProps);}\n\n\n\nmodule.exports = ActivityIndicatorIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ActivityIndicatorIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\nvar GRAY = '#999999';\n\ntype DefaultProps = {\n animating: boolean;\n color: string;\n hidesWhenStopped: boolean;\n size: 'small' | 'large';\n};\n\nvar ActivityIndicatorIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * Whether to show the indicator (true, the default) or hide it (false).\n */\n animating: PropTypes.bool,\n /**\n * The foreground color of the spinner (default is gray).\n */\n color: PropTypes.string,\n /**\n * Whether the indicator should hide when not animating (true by default).\n */\n hidesWhenStopped: PropTypes.bool,\n /**\n * Size of the indicator. Small has a height of 20, large has a height of 36.\n */\n size: PropTypes.oneOf([\n 'small',\n 'large',\n ]),\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n animating: true,\n color: GRAY,\n hidesWhenStopped: true,\n size: 'small',\n };\n },\n\n render: function() {\n var {onLayout, style, ...props} = this.props;\n var sizeStyle = (this.props.size === 'large') ? styles.sizeLarge : styles.sizeSmall;\n return (\n <View\n onLayout={onLayout}\n style={[styles.container, sizeStyle, style]}>\n <RCTActivityIndicatorView {...props} />\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n },\n sizeSmall: {\n width: 20,\n height: 20,\n },\n sizeLarge: {\n width: 36,\n height: 36,\n }\n});\n\nvar RCTActivityIndicatorView = requireNativeComponent(\n 'RCTActivityIndicatorView',\n null\n);\nif (__DEV__) {\n var nativeOnlyProps = {activityIndicatorViewStyle: true};\n verifyPropTypes(\n ActivityIndicatorIOS,\n RCTActivityIndicatorView.viewConfig,\n nativeOnlyProps\n );\n}\n\nmodule.exports = ActivityIndicatorIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ActivityIndicatorIOS/ActivityIndicatorIOS.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar StyleSheetRegistry=require('StyleSheetRegistry');\nvar StyleSheetValidation=require('StyleSheetValidation');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nStyleSheet=(function(){function StyleSheet(){_classCallCheck(this,StyleSheet);}_createClass(StyleSheet,null,[{key:'create',value:\nfunction create(obj){\nvar result={};\nfor(var key in obj) {\nStyleSheetValidation.validateStyle(key,obj);\nresult[key] = StyleSheetRegistry.registerStyle(obj[key]);}\n\nreturn result;}}]);return StyleSheet;})();\n\n\n\nmodule.exports = StyleSheet;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheet\n * @flow\n */\n'use strict';\n\nvar StyleSheetRegistry = require('StyleSheetRegistry');\nvar StyleSheetValidation = require('StyleSheetValidation');\n\n/**\n * A StyleSheet is an abstraction similar to CSS StyleSheets\n *\n * Create a new StyleSheet:\n *\n * ```\n * var styles = StyleSheet.create({\n * container: {\n * borderRadius: 4,\n * borderWidth: 0.5,\n * borderColor: '#d6d7da',\n * },\n * title: {\n * fontSize: 19,\n * fontWeight: 'bold',\n * },\n * activeTitle: {\n * color: 'red',\n * },\n * });\n * ```\n *\n * Use a StyleSheet:\n *\n * ```\n * <View style={styles.container}>\n * <Text style={[styles.title, this.props.isActive && styles.activeTitle]} />\n * </View>\n * ```\n *\n * Code quality:\n *\n * - By moving styles away from the render function, you're making the code\n * easier to understand.\n * - Naming the styles is a good way to add meaning to the low level components\n * in the render function.\n *\n * Performance:\n *\n * - Making a stylesheet from a style object makes it possible to refer to it\n * by ID instead of creating a new style object every time.\n * - It also allows to send the style only once through the bridge. All\n * subsequent uses are going to refer an id (not implemented yet).\n */\nclass StyleSheet {\n static create(obj: {[key: string]: any}): {[key: string]: number} {\n var result = {};\n for (var key in obj) {\n StyleSheetValidation.validateStyle(key, obj);\n result[key] = StyleSheetRegistry.registerStyle(obj[key]);\n }\n return result;\n }\n}\n\nmodule.exports = StyleSheet;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheet.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar ReactPropTypeLocations=require('ReactPropTypeLocations');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar invariant=require('invariant');var \n\nStyleSheetValidation=(function(){function StyleSheetValidation(){_classCallCheck(this,StyleSheetValidation);}_createClass(StyleSheetValidation,null,[{key:'validateStyleProp',value:\nfunction validateStyleProp(prop,style,caller){\nif(!__DEV__){\nreturn;}\n\nif(allStylePropTypes[prop] === undefined){\nvar message1='\"' + prop + '\" is not a valid style property.';\nvar message2='\\nValid style props: ' + \nJSON.stringify(Object.keys(allStylePropTypes).sort(),null,' ');\nstyleError(message1,style,caller,message2);}\n\nvar error=allStylePropTypes[prop](\nstyle,\nprop,\ncaller,\nReactPropTypeLocations.prop);\n\nif(error){\nstyleError(error.message,style,caller);}}},{key:'validateStyle',value:\n\n\n\nfunction validateStyle(name,styles){\nif(!__DEV__){\nreturn;}\n\nfor(var prop in styles[name]) {\nStyleSheetValidation.validateStyleProp(prop,styles[name],'StyleSheet ' + name);}}},{key:'addValidStylePropTypes',value:\n\n\n\nfunction addValidStylePropTypes(stylePropTypes){\nfor(var key in stylePropTypes) {\ninvariant(\nallStylePropTypes[key] === undefined || \nallStylePropTypes[key] === stylePropTypes[key],\n'Attemped to redefine existing style prop type \"' + key + '\".');\n\nallStylePropTypes[key] = stylePropTypes[key];}}}]);return StyleSheetValidation;})();\n\n\n\n\nvar styleError=function(message1,style,caller,message2){\ninvariant(\nfalse,\nmessage1 + '\\n' + (caller || '<<unknown>>') + ': ' + \nJSON.stringify(style,null,' ') + (message2 || ''));};\n\n\n\nvar allStylePropTypes={};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports = StyleSheetValidation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheetValidation\n * @flow\n */\n'use strict';\n\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar ReactPropTypeLocations = require('ReactPropTypeLocations');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar invariant = require('invariant');\n\nclass StyleSheetValidation {\n static validateStyleProp(prop, style, caller) {\n if (!__DEV__) {\n return;\n }\n if (allStylePropTypes[prop] === undefined) {\n var message1 = '\"' + prop + '\" is not a valid style property.';\n var message2 = '\\nValid style props: ' +\n JSON.stringify(Object.keys(allStylePropTypes).sort(), null, ' ');\n styleError(message1, style, caller, message2);\n }\n var error = allStylePropTypes[prop](\n style,\n prop,\n caller,\n ReactPropTypeLocations.prop\n );\n if (error) {\n styleError(error.message, style, caller);\n }\n }\n\n static validateStyle(name, styles) {\n if (!__DEV__) {\n return;\n }\n for (var prop in styles[name]) {\n StyleSheetValidation.validateStyleProp(prop, styles[name], 'StyleSheet ' + name);\n }\n }\n\n static addValidStylePropTypes(stylePropTypes) {\n for (var key in stylePropTypes) {\n invariant(\n allStylePropTypes[key] === undefined ||\n allStylePropTypes[key] === stylePropTypes[key],\n 'Attemped to redefine existing style prop type \"' + key + '\".'\n );\n allStylePropTypes[key] = stylePropTypes[key];\n }\n }\n}\n\nvar styleError = function(message1, style, caller?, message2?) {\n invariant(\n false,\n message1 + '\\n' + (caller || '<<unknown>>') + ': ' +\n JSON.stringify(style, null, ' ') + (message2 || '')\n );\n};\n\nvar allStylePropTypes = {};\n\nStyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);\nStyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);\n\nmodule.exports = StyleSheetValidation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/View.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar React=require('React');\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\n\nvar stylePropType=StyleSheetPropType(ViewStylePropTypes);\n\nvar AccessibilityTraits=[\n'none',\n'button',\n'link',\n'header',\n'search',\n'image',\n'selected',\n'plays',\n'key',\n'text',\n'summary',\n'disabled',\n'frequentUpdates',\n'startsMedia',\n'adjustable',\n'allowsDirectInteraction',\n'pageTurn'];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar View=React.createClass({displayName:'View',\nmixins:[NativeMethodsMixin],\n\n\n\n\n\nviewConfig:{\nuiViewClassName:'RCTView',\nvalidAttributes:ReactNativeViewAttributes.RCTView},\n\n\npropTypes:{\n\n\n\n\naccessible:PropTypes.bool,\n\n\n\n\n\n\naccessibilityLabel:PropTypes.string,\n\n\n\n\n\naccessibilityTraits:PropTypes.oneOfType([\nPropTypes.oneOf(AccessibilityTraits),\nPropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits))]),\n\n\n\n\n\n\nonAcccessibilityTap:PropTypes.func,\n\n\n\n\n\nonMagicTap:PropTypes.func,\n\n\n\n\ntestID:PropTypes.string,\n\n\n\n\n\n\nonMoveShouldSetResponder:PropTypes.func,\nonResponderGrant:PropTypes.func,\nonResponderMove:PropTypes.func,\nonResponderReject:PropTypes.func,\nonResponderRelease:PropTypes.func,\nonResponderTerminate:PropTypes.func,\nonResponderTerminationRequest:PropTypes.func,\nonStartShouldSetResponder:PropTypes.func,\nonStartShouldSetResponderCapture:PropTypes.func,\n\n\n\n\n\n\nonLayout:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\npointerEvents:PropTypes.oneOf([\n'box-none',\n'none',\n'box-only',\n'auto']),\n\nstyle:stylePropType,\n\n\n\n\n\n\n\n\n\nremoveClippedSubviews:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\nrenderToHardwareTextureAndroid:PropTypes.bool},\n\n\nrender:function(){\nreturn React.createElement(RCTView,this.props);}});\n\n\n\nvar RCTView=createReactNativeComponentClass({\nvalidAttributes:ReactNativeViewAttributes.RCTView,\nuiViewClassName:'RCTView'});\n\nRCTView.propTypes = View.propTypes;\nif(__DEV__){\nvar viewConfig=RCTUIManager.viewConfigs && RCTUIManager.viewConfigs.RCTView || {};\nfor(var prop in viewConfig.nativeProps) {\nvar viewAny=View;\nif(!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]){\nthrow new Error(\n'View is missing propType for native prop `' + prop + '`');}}}\n\n\n\n\n\nvar ViewToExport=RCTView;\nif(__DEV__){\nViewToExport = View;}\n\n\nmodule.exports = ViewToExport;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule View\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar React = require('React');\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\n\nvar stylePropType = StyleSheetPropType(ViewStylePropTypes);\n\nvar AccessibilityTraits = [\n 'none',\n 'button',\n 'link',\n 'header',\n 'search',\n 'image',\n 'selected',\n 'plays',\n 'key',\n 'text',\n 'summary',\n 'disabled',\n 'frequentUpdates',\n 'startsMedia',\n 'adjustable',\n 'allowsDirectInteraction',\n 'pageTurn',\n];\n\n/**\n * The most fundamental component for building UI, `View` is a\n * container that supports layout with flexbox, style, some touch handling, and\n * accessibility controls, and is designed to be nested inside other views and\n * to have 0 to many children of any type. `View` maps directly to the native\n * view equivalent on whatever platform React is running on, whether that is a\n * `UIView`, `<div>`, `android.view`, etc. This example creates a `View` that\n * wraps two colored boxes and custom component in a row with padding.\n *\n * ```\n * <View style={{flexDirection: 'row', height: 100, padding: 20}}>\n * <View style={{backgroundColor: 'blue', flex: 0.3}} />\n * <View style={{backgroundColor: 'red', flex: 0.5}} />\n * <MyCustomComponent {...customProps} />\n * </View>\n * ```\n *\n * `View`s are designed to be used with `StyleSheet`s for clarity and\n * performance, although inline styles are also supported.\n */\nvar View = React.createClass({\n mixins: [NativeMethodsMixin],\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView\n },\n\n propTypes: {\n /**\n * When true, indicates that the view is an accessibility element. By default,\n * all the touchable elements are accessible.\n */\n accessible: PropTypes.bool,\n\n /**\n * Overrides the text that's read by the screen reader when the user interacts\n * with the element. By default, the label is constructed by traversing all the\n * children and accumulating all the Text nodes separated by space.\n */\n accessibilityLabel: PropTypes.string,\n\n /**\n * Provides additional traits to screen reader. By default no traits are\n * provided unless specified otherwise in element\n */\n accessibilityTraits: PropTypes.oneOfType([\n PropTypes.oneOf(AccessibilityTraits),\n PropTypes.arrayOf(PropTypes.oneOf(AccessibilityTraits)),\n ]),\n\n /**\n * When `accessible` is true, the system will try to invoke this function\n * when the user performs accessibility tap gesture.\n */\n onAcccessibilityTap: PropTypes.func,\n\n /**\n * When `accessible` is true, the system will invoke this function when the\n * user performs the magic tap gesture.\n */\n onMagicTap: PropTypes.func,\n\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n\n /**\n * For most touch interactions, you'll simply want to wrap your component in\n * `TouchableHighlight` or `TouchableOpacity`. Check out `Touchable.js`,\n * `ScrollResponder.js` and `ResponderEventPlugin.js` for more discussion.\n */\n onMoveShouldSetResponder: PropTypes.func,\n onResponderGrant: PropTypes.func,\n onResponderMove: PropTypes.func,\n onResponderReject: PropTypes.func,\n onResponderRelease: PropTypes.func,\n onResponderTerminate: PropTypes.func,\n onResponderTerminationRequest: PropTypes.func,\n onStartShouldSetResponder: PropTypes.func,\n onStartShouldSetResponderCapture: PropTypes.func,\n\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n\n /**\n * In the absence of `auto` property, `none` is much like `CSS`'s `none`\n * value. `box-none` is as if you had applied the `CSS` class:\n *\n * ```\n * .box-none {\n * pointer-events: none;\n * }\n * .box-none * {\n * pointer-events: all;\n * }\n * ```\n *\n * `box-only` is the equivalent of\n *\n * ```\n * .box-only {\n * pointer-events: all;\n * }\n * .box-only * {\n * pointer-events: none;\n * }\n * ```\n *\n * But since `pointerEvents` does not affect layout/appearance, and we are\n * already deviating from the spec by adding additional modes, we opt to not\n * include `pointerEvents` on `style`. On some platforms, we would need to\n * implement it as a `className` anyways. Using `style` or not is an\n * implementation detail of the platform.\n */\n pointerEvents: PropTypes.oneOf([\n 'box-none',\n 'none',\n 'box-only',\n 'auto',\n ]),\n style: stylePropType,\n\n /**\n * This is a special performance property exposed by RCTView and is useful\n * for scrolling content when there are many subviews, most of which are\n * offscreen. For this property to be effective, it must be applied to a\n * view that contains many subviews that extend outside its bound. The\n * subviews must also have overflow: hidden, as should the containing view\n * (or one of its superviews).\n */\n removeClippedSubviews: PropTypes.bool,\n\n /**\n * Whether this view should render itself (and all of its children) into a\n * single hardware texture on the GPU.\n *\n * On Android, this is useful for animations and interactions that only\n * modify opacity, rotation, translation, and/or scale: in those cases, the\n * view doesn't have to be redrawn and display lists don't need to be\n * re-executed. The texture can just be re-used and re-composited with\n * different parameters. The downside is that this can use up limited video\n * memory, so this prop should be set back to false at the end of the\n * interaction/animation.\n */\n renderToHardwareTextureAndroid: PropTypes.bool,\n },\n\n render: function() {\n return <RCTView {...this.props} />;\n },\n});\n\nvar RCTView = createReactNativeComponentClass({\n validAttributes: ReactNativeViewAttributes.RCTView,\n uiViewClassName: 'RCTView',\n});\nRCTView.propTypes = View.propTypes;\nif (__DEV__) {\n var viewConfig = RCTUIManager.viewConfigs && RCTUIManager.viewConfigs.RCTView || {};\n for (var prop in viewConfig.nativeProps) {\n var viewAny: any = View; // Appease flow\n if (!viewAny.propTypes[prop] && !ReactNativeStyleAttributes[prop]) {\n throw new Error(\n 'View is missing propType for native prop `' + prop + '`'\n );\n }\n }\n}\n\nvar ViewToExport = RCTView;\nif (__DEV__) {\n ViewToExport = View;\n}\n\nmodule.exports = ViewToExport;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/View/View.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeViewAttributes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar merge=require('merge');\n\nvar ReactNativeViewAttributes={};\n\nReactNativeViewAttributes.UIView = {\npointerEvents:true,\naccessible:true,\naccessibilityLabel:true,\naccessibilityTraits:true,\ntestID:true,\nonLayout:true,\nonAccessibilityTap:true,\nonMagicTap:true};\n\n\nReactNativeViewAttributes.RCTView = merge(\nReactNativeViewAttributes.UIView,{\n\n\n\n\n\n\nremoveClippedSubviews:true});\n\n\nmodule.exports = ReactNativeViewAttributes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactNativeViewAttributes\n * @flow\n */\n'use strict';\n\nvar merge = require('merge');\n\nvar ReactNativeViewAttributes = {};\n\nReactNativeViewAttributes.UIView = {\n pointerEvents: true,\n accessible: true,\n accessibilityLabel: true,\n accessibilityTraits: true,\n testID: true,\n onLayout: true,\n onAccessibilityTap: true,\n onMagicTap: true,\n};\n\nReactNativeViewAttributes.RCTView = merge(\n ReactNativeViewAttributes.UIView, {\n\n // This is a special performance property exposed by RCTView and useful for\n // scrolling content when there are many subviews, most of which are offscreen.\n // For this property to be effective, it must be applied to a view that contains\n // many subviews that extend outside its bound. The subviews must also have\n // overflow: hidden, as should the containing view (or one of its superviews).\n removeClippedSubviews: true,\n});\n\nmodule.exports = ReactNativeViewAttributes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactNative/ReactNativeViewAttributes.js"},"mtime":1437416998000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetPropType.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar flattenStyle=require('flattenStyle');\n\nfunction StyleSheetPropType(\nshape)\n{\nvar shapePropType=createStrictShapeTypeChecker(shape);\nreturn function(props,propName,componentName,location){\nvar newProps=props;\nif(props[propName]){\n\nnewProps = {};\nnewProps[propName] = flattenStyle(props[propName]);}\n\nreturn shapePropType(newProps,propName,componentName,location);};}\n\n\n\nmodule.exports = StyleSheetPropType;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleSheetPropType\n * @flow\n */\n'use strict';\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar flattenStyle = require('flattenStyle');\n\nfunction StyleSheetPropType(\n shape: {[key: string]: ReactPropsCheckType}\n): ReactPropsCheckType {\n var shapePropType = createStrictShapeTypeChecker(shape);\n return function(props, propName, componentName, location?) {\n var newProps = props;\n if (props[propName]) {\n // Just make a dummy prop object with only the flattened style\n newProps = {};\n newProps[propName] = flattenStyle(props[propName]);\n }\n return shapePropType(newProps, propName, componentName, location);\n };\n}\n\nmodule.exports = StyleSheetPropType;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/StyleSheetPropType.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/createStrictShapeTypeChecker.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypeLocationNames=require('ReactPropTypeLocationNames');\n\nvar invariant=require('invariant');\nvar merge=require('merge');\n\nfunction createStrictShapeTypeChecker(\nshapeTypes)\n{\nfunction checkType(isRequired,props,propName,componentName,location){\nif(!props[propName]){\nif(isRequired){\ninvariant(\nfalse,\n'Required object `' + propName + '` was not specified in ' + ('`' + \ncomponentName + '`.'));}\n\n\nreturn;}\n\nvar propValue=props[propName];\nvar propType=typeof propValue;\nvar locationName=\nlocation && ReactPropTypeLocationNames[location] || '(unknown)';\nif(propType !== 'object'){\ninvariant(\nfalse,\n'Invalid ' + locationName + ' `' + propName + '` of type `' + propType + '` ' + ('supplied to `' + \ncomponentName + '`, expected `object`.'));}\n\n\n\n\nvar allKeys=merge(props[propName],shapeTypes);\nfor(var key in allKeys) {\nvar checker=shapeTypes[key];\nif(!checker){\ninvariant(\nfalse,\n'Invalid props.' + propName + ' key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + \nJSON.stringify(props[propName],null,' ') + '\\nValid keys: ' + \nJSON.stringify(Object.keys(shapeTypes),null,' '));}\n\n\nvar error=checker(propValue,key,componentName,location);\nif(error){\ninvariant(\nfalse,\nerror.message + '\\nBad object: ' + \nJSON.stringify(props[propName],null,' '));}}}\n\n\n\n\nfunction chainedCheckType(\nprops,\npropName,\ncomponentName,\nlocation)\n{\nreturn checkType(false,props,propName,componentName,location);}\n\nchainedCheckType.isRequired = checkType.bind(null,true);\nreturn chainedCheckType;}\n\n\nmodule.exports = createStrictShapeTypeChecker;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule createStrictShapeTypeChecker\n * @flow\n */\n'use strict';\n\nvar ReactPropTypeLocationNames = require('ReactPropTypeLocationNames');\n\nvar invariant = require('invariant');\nvar merge = require('merge');\n\nfunction createStrictShapeTypeChecker(\n shapeTypes: {[key: string]: ReactPropsCheckType}\n): ReactPropsChainableTypeChecker {\n function checkType(isRequired, props, propName, componentName, location?) {\n if (!props[propName]) {\n if (isRequired) {\n invariant(\n false,\n `Required object \\`${propName}\\` was not specified in `+\n `\\`${componentName}\\`.`\n );\n }\n return;\n }\n var propValue = props[propName];\n var propType = typeof propValue;\n var locationName =\n location && ReactPropTypeLocationNames[location] || '(unknown)';\n if (propType !== 'object') {\n invariant(\n false,\n `Invalid ${locationName} \\`${propName}\\` of type \\`${propType}\\` ` +\n `supplied to \\`${componentName}\\`, expected \\`object\\`.`\n );\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = merge(props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n invariant(\n false,\n `Invalid props.${propName} key \\`${key}\\` supplied to \\`${componentName}\\`.` +\n `\\nBad object: ` + JSON.stringify(props[propName], null, ' ') +\n `\\nValid keys: ` + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location);\n if (error) {\n invariant(\n false,\n error.message +\n `\\nBad object: ` + JSON.stringify(props[propName], null, ' ')\n );\n }\n }\n }\n function chainedCheckType(\n props: {[key: string]: any},\n propName: string,\n componentName: string,\n location?: string\n ): ?Error {\n return checkType(false, props, propName, componentName, location);\n }\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n\nmodule.exports = createStrictShapeTypeChecker;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/createStrictShapeTypeChecker.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/requireNativeComponent.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTUIManager=require('NativeModules').UIManager;\nvar UnimplementedView=require('UnimplementedView');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar deepDiffer=require('deepDiffer');\nvar insetsDiffer=require('insetsDiffer');\nvar pointsDiffer=require('pointsDiffer');\nvar matricesDiffer=require('matricesDiffer');\nvar sizesDiffer=require('sizesDiffer');\nvar verifyPropTypes=require('verifyPropTypes');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requireNativeComponent(\nviewName,\nwrapperComponent)\n{\nvar viewConfig=RCTUIManager[viewName];\nif(!viewConfig || !viewConfig.NativeProps){\nwarning(false,'Native component for \"%s\" does not exist',viewName);\nreturn UnimplementedView;}\n\nvar nativeProps=_extends({},\nRCTUIManager.RCTView.NativeProps,\nviewConfig.NativeProps);\n\nviewConfig.uiViewClassName = viewName;\nviewConfig.validAttributes = {};\nfor(var key in nativeProps) {\n\nvar differ=TypeToDifferMap[nativeProps[key]] || deepDiffer;\nviewConfig.validAttributes[key] = {diff:differ};}\n\nif(__DEV__){\nwrapperComponent && verifyPropTypes(wrapperComponent,viewConfig);}\n\nreturn createReactNativeComponentClass(viewConfig);}\n\n\nvar TypeToDifferMap={\n\nCATransform3D:matricesDiffer,\nCGPoint:pointsDiffer,\nCGSize:sizesDiffer,\nUIEdgeInsets:insetsDiffer};\n\n\n\n\nmodule.exports = requireNativeComponent;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule requireNativeComponent\n * @flow\n */\n'use strict';\n\nvar RCTUIManager = require('NativeModules').UIManager;\nvar UnimplementedView = require('UnimplementedView');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar deepDiffer = require('deepDiffer');\nvar insetsDiffer = require('insetsDiffer');\nvar pointsDiffer = require('pointsDiffer');\nvar matricesDiffer = require('matricesDiffer');\nvar sizesDiffer = require('sizesDiffer');\nvar verifyPropTypes = require('verifyPropTypes');\nvar warning = require('warning');\n\n/**\n * Used to create React components that directly wrap native component\n * implementations. Config information is extracted from data exported from the\n * RCTUIManager module. You should also wrap the native component in a\n * hand-written component with full propTypes definitions and other\n * documentation - pass the hand-written component in as `wrapperComponent` to\n * verify all the native props are documented via `propTypes`.\n *\n * If some native props shouldn't be exposed in the wrapper interface, you can\n * pass null for `wrapperComponent` and call `verifyPropTypes` directly\n * with `nativePropsToIgnore`;\n *\n * Common types are lined up with the appropriate prop differs with\n * `TypeToDifferMap`. Non-scalar types not in the map default to `deepDiffer`.\n */\nfunction requireNativeComponent(\n viewName: string,\n wrapperComponent: ?Function\n): Function {\n var viewConfig = RCTUIManager[viewName];\n if (!viewConfig || !viewConfig.NativeProps) {\n warning(false, 'Native component for \"%s\" does not exist', viewName);\n return UnimplementedView;\n }\n var nativeProps = {\n ...RCTUIManager.RCTView.NativeProps,\n ...viewConfig.NativeProps,\n };\n viewConfig.uiViewClassName = viewName;\n viewConfig.validAttributes = {};\n for (var key in nativeProps) {\n // TODO: deep diff by default in diffRawProperties instead of setting it here\n var differ = TypeToDifferMap[nativeProps[key]] || deepDiffer;\n viewConfig.validAttributes[key] = {diff: differ};\n }\n if (__DEV__) {\n wrapperComponent && verifyPropTypes(wrapperComponent, viewConfig);\n }\n return createReactNativeComponentClass(viewConfig);\n}\n\nvar TypeToDifferMap = {\n // iOS Types\n CATransform3D: matricesDiffer,\n CGPoint: pointsDiffer,\n CGSize: sizesDiffer,\n UIEdgeInsets: insetsDiffer,\n // Android Types\n // (not yet implemented)\n};\n\nmodule.exports = requireNativeComponent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/requireNativeComponent.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar UnimplementedView=React.createClass({displayName:'UnimplementedView',\nsetNativeProps:function(){},\n\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:[styles.unimplementedView,this.props.style]},\nthis.props.children));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nunimplementedView:{\nborderWidth:1,\nborderColor:'red',\nalignSelf:'flex-start'}});\n\n\n\nmodule.exports = UnimplementedView;","sourceCode":"/**\n * Common implementation for a simple stubbed view. Simply applies the view's styles to the inner\n * View component and renders its children.\n *\n * @providesModule UnimplementedView\n */\n\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar UnimplementedView = React.createClass({\n setNativeProps: function() {\n // Do nothing.\n // This method is required in order to use this view as a Touchable* child.\n // See ensureComponentIsNative.js for more info\n },\n render: function() {\n return (\n <View style={[styles.unimplementedView, this.props.style]}>\n {this.props.children}\n </View>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n unimplementedView: {\n borderWidth: 1,\n borderColor: 'red',\n alignSelf: 'flex-start',\n }\n});\n\nmodule.exports = UnimplementedView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/UnimplementedViews/UnimplementedView.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dummyInsets={\ntop:undefined,\nleft:undefined,\nright:undefined,\nbottom:undefined};\n\n\nvar insetsDiffer=function(\none,\ntwo)\n{\none = one || dummyInsets;\ntwo = two || dummyInsets;\nreturn one !== two && (\none.top !== two.top || \none.left !== two.left || \none.right !== two.right || \none.bottom !== two.bottom);};\n\n\n\nmodule.exports = insetsDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule insetsDiffer\n * @flow\n */\n'use strict';\n\ntype Inset = {\n top: ?number;\n left: ?number;\n right: ?number;\n bottom: ?number;\n}\n\nvar dummyInsets = {\n\ttop: undefined,\n\tleft: undefined,\n\tright: undefined,\n\tbottom: undefined,\n};\n\nvar insetsDiffer = function(\n one: ?Inset,\n two: ?Inset\n): bool {\n one = one || dummyInsets;\n two = two || dummyInsets;\n return one !== two && (\n one.top !== two.top ||\n one.left !== two.left ||\n one.right !== two.right ||\n one.bottom !== two.bottom\n );\n};\n\nmodule.exports = insetsDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/insetsDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar dummyPoint={x:undefined,y:undefined};\n\nvar pointsDiffer=function(one,two){\none = one || dummyPoint;\ntwo = two || dummyPoint;\nreturn one !== two && (\none.x !== two.x || \none.y !== two.y);};\n\n\n\nmodule.exports = pointsDiffer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule pointsDiffer\n * @flow\n */\n'use strict';\n\ntype Point = {\n x: ?number;\n y: ?number;\n}\n\nvar dummyPoint = {x: undefined, y: undefined};\n\nvar pointsDiffer = function(one: ?Point, two: ?Point): bool {\n one = one || dummyPoint;\n two = two || dummyPoint;\n return one !== two && (\n one.x !== two.x ||\n one.y !== two.y\n );\n};\n\nmodule.exports = pointsDiffer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/differ/pointsDiffer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/verifyPropTypes.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeStyleAttributes=require('ReactNativeStyleAttributes');\nvar View=require('View');\n\nfunction verifyPropTypes(\ncomponent,\nviewConfig,\nnativePropsToIgnore)\n{\nif(!viewConfig){\nreturn;}\n\nvar componentName=component.name || component.displayName;\nif(!component.propTypes){\nthrow new Error(\n'`' + componentName + '` has no propTypes defined`');}\n\n\n\nvar nativeProps=viewConfig.NativeProps;\nfor(var prop in nativeProps) {\nif(!component.propTypes[prop] && \n!View.propTypes[prop] && \n!ReactNativeStyleAttributes[prop] && (\n!nativePropsToIgnore || !nativePropsToIgnore[prop])){\nthrow new Error(\n'`' + componentName + '` has no propType for native prop `' + \nviewConfig.uiViewClassName + '.' + prop + '` of native type `' + \nnativeProps[prop] + '`');}}}\n\n\n\n\n\nmodule.exports = verifyPropTypes;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule verifyPropTypes\n * @flow\n */\n'use strict';\n\nvar ReactNativeStyleAttributes = require('ReactNativeStyleAttributes');\nvar View = require('View');\n\nfunction verifyPropTypes(\n component: Function,\n viewConfig: Object,\n nativePropsToIgnore?: Object\n) {\n if (!viewConfig) {\n return; // This happens for UnimplementedView.\n }\n var componentName = component.name || component.displayName;\n if (!component.propTypes) {\n throw new Error(\n '`' + componentName + '` has no propTypes defined`'\n );\n }\n\n var nativeProps = viewConfig.NativeProps;\n for (var prop in nativeProps) {\n if (!component.propTypes[prop] &&\n !View.propTypes[prop] &&\n !ReactNativeStyleAttributes[prop] &&\n (!nativePropsToIgnore || !nativePropsToIgnore[prop])) {\n throw new Error(\n '`' + componentName + '` has no propType for native prop `' +\n viewConfig.uiViewClassName + '.' + prop + '` of native type `' +\n nativeProps[prop] + '`'\n );\n }\n }\n}\n\nmodule.exports = verifyPropTypes;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/verifyPropTypes.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar RCTDatePickerIOSConsts=require('NativeModules').UIManager.RCTDatePicker.Constants;\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar DATEPICKER='datepicker';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DatePickerIOS=React.createClass({displayName:'DatePickerIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\ndate:PropTypes.instanceOf(Date).isRequired,\n\n\n\n\n\n\n\n\nonDateChange:PropTypes.func.isRequired,\n\n\n\n\n\n\nmaximumDate:PropTypes.instanceOf(Date),\n\n\n\n\n\n\nminimumDate:PropTypes.instanceOf(Date),\n\n\n\n\nmode:PropTypes.oneOf(['date','time','datetime']),\n\n\n\n\nminuteInterval:PropTypes.oneOf([1,2,3,4,5,6,10,12,15,20,30]),\n\n\n\n\n\n\n\n\ntimeZoneOffsetInMinutes:PropTypes.number},\n\n\ngetDefaultProps:function(){\nreturn {\nmode:'datetime'};},\n\n\n\n_onChange:function(event){\nvar nativeTimeStamp=event.nativeEvent.timestamp;\nthis.props.onDateChange && this.props.onDateChange(\nnew Date(nativeTimeStamp));\n\nthis.props.onChange && this.props.onChange(event);\n\n\n\n\n\nvar propsTimeStamp=this.props.date.getTime();\nif(nativeTimeStamp !== propsTimeStamp){\nthis.refs[DATEPICKER].setNativeProps({\ndate:propsTimeStamp});}},\n\n\n\n\nrender:function(){\nvar props=this.props;\nreturn (\nReact.createElement(View,{style:props.style},\nReact.createElement(RCTDatePickerIOS,{\nref:DATEPICKER,\nstyle:styles.datePickerIOS,\ndate:props.date.getTime(),\nmaximumDate:\nprops.maximumDate?props.maximumDate.getTime():undefined,\n\nminimumDate:\nprops.minimumDate?props.minimumDate.getTime():undefined,\n\nmode:props.mode,\nminuteInterval:props.minuteInterval,\ntimeZoneOffsetInMinutes:props.timeZoneOffsetInMinutes,\nonChange:this._onChange})));}});\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ndatePickerIOS:{\nheight:RCTDatePickerIOSConsts.ComponentHeight,\nwidth:RCTDatePickerIOSConsts.ComponentWidth}});\n\n\n\nvar RCTDatePickerIOS=requireNativeComponent('RCTDatePicker',DatePickerIOS);\n\nmodule.exports = DatePickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DatePickerIOS\n * @flow\n *\n * This is a controlled component version of RCTDatePickerIOS\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar RCTDatePickerIOSConsts = require('NativeModules').UIManager.RCTDatePicker.Constants;\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar DATEPICKER = 'datepicker';\n\ntype DefaultProps = {\n mode: 'date' | 'time' | 'datetime';\n};\n\ntype Event = Object;\n\n/**\n * Use `DatePickerIOS` to render a date/time picker (selector) on iOS. This is\n * a controlled component, so you must hook in to the `onDateChange` callback\n * and update the `date` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.date` as the\n * source of truth.\n */\nvar DatePickerIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The currently selected date.\n */\n date: PropTypes.instanceOf(Date).isRequired,\n\n /**\n * Date change handler.\n *\n * This is called when the user changes the date or time in the UI.\n * The first and only argument is a Date object representing the new\n * date and time.\n */\n onDateChange: PropTypes.func.isRequired,\n\n /**\n * Maximum date.\n *\n * Restricts the range of possible date/time values.\n */\n maximumDate: PropTypes.instanceOf(Date),\n\n /**\n * Minimum date.\n *\n * Restricts the range of possible date/time values.\n */\n minimumDate: PropTypes.instanceOf(Date),\n\n /**\n * The date picker mode.\n */\n mode: PropTypes.oneOf(['date', 'time', 'datetime']),\n\n /**\n * The interval at which minutes can be selected.\n */\n minuteInterval: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30]),\n\n /**\n * Timezone offset in minutes.\n *\n * By default, the date picker will use the device's timezone. With this\n * parameter, it is possible to force a certain timezone offset. For\n * instance, to show times in Pacific Standard Time, pass -7 * 60.\n */\n timeZoneOffsetInMinutes: PropTypes.number,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n mode: 'datetime',\n };\n },\n\n _onChange: function(event: Event) {\n var nativeTimeStamp = event.nativeEvent.timestamp;\n this.props.onDateChange && this.props.onDateChange(\n new Date(nativeTimeStamp)\n );\n this.props.onChange && this.props.onChange(event);\n\n // We expect the onChange* handlers to be in charge of updating our `date`\n // prop. That way they can also disallow/undo/mutate the selection of\n // certain values. In other words, the embedder of this component should\n // be the source of truth, not the native component.\n var propsTimeStamp = this.props.date.getTime();\n if (nativeTimeStamp !== propsTimeStamp) {\n this.refs[DATEPICKER].setNativeProps({\n date: propsTimeStamp,\n });\n }\n },\n\n render: function() {\n var props = this.props;\n return (\n <View style={props.style}>\n <RCTDatePickerIOS\n ref={DATEPICKER}\n style={styles.datePickerIOS}\n date={props.date.getTime()}\n maximumDate={\n props.maximumDate ? props.maximumDate.getTime() : undefined\n }\n minimumDate={\n props.minimumDate ? props.minimumDate.getTime() : undefined\n }\n mode={props.mode}\n minuteInterval={props.minuteInterval}\n timeZoneOffsetInMinutes={props.timeZoneOffsetInMinutes}\n onChange={this._onChange}\n />\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n datePickerIOS: {\n height: RCTDatePickerIOSConsts.ComponentHeight,\n width: RCTDatePickerIOSConsts.ComponentWidth,\n },\n});\n\nvar RCTDatePickerIOS = requireNativeComponent('RCTDatePicker', DatePickerIOS);\n\nmodule.exports = DatePickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/DatePicker/DatePickerIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/Image.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar ImageResizeMode=require('ImageResizeMode');\nvar ImageStylePropTypes=require('ImageStylePropTypes');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\n\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('invariant');\nvar merge=require('merge');\nvar requireNativeComponent=require('requireNativeComponent');\nvar resolveAssetSource=require('resolveAssetSource');\nvar verifyPropTypes=require('verifyPropTypes');\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=React.createClass({displayName:'Image',\npropTypes:{\n\n\n\n\n\nsource:PropTypes.shape({\nuri:PropTypes.string}),\n\n\n\n\n\ndefaultSource:PropTypes.shape({\nuri:PropTypes.string}),\n\n\n\n\naccessible:PropTypes.bool,\n\n\n\naccessibilityLabel:PropTypes.string,\n\n\n\n\n\n\n\ncapInsets:EdgeInsetsPropType,\n\n\n\n\nresizeMode:PropTypes.oneOf(['cover','contain','stretch']),\nstyle:StyleSheetPropType(ImageStylePropTypes),\n\n\n\n\ntestID:PropTypes.string,\n\n\n\n\n\nonLayout:PropTypes.func,\n\n\n\nonLoadStart:PropTypes.func,\n\n\n\n\n\nonLoadProgress:PropTypes.func,\n\n\n\nonLoadAbort:PropTypes.func,\n\n\n\n\n\nonLoadError:PropTypes.func,\n\n\n\n\nonLoaded:PropTypes.func},\n\n\n\nstatics:{\nresizeMode:ImageResizeMode},\n\n\nmixins:[NativeMethodsMixin],\n\n\n\n\n\nviewConfig:{\nuiViewClassName:'UIView',\nvalidAttributes:ReactNativeViewAttributes.UIView},\n\n\nrender:function(){\nfor(var prop in nativeOnlyProps) {\nif(this.props[prop] !== undefined){\nconsole.warn('Prop `' + prop + ' = ' + this.props[prop] + '` should ' + \n'not be set directly on Image.');}}\n\n\nvar source=resolveAssetSource(this.props.source) || {};var \n\nwidth=source.width;var height=source.height;\nvar style=flattenStyle([{width:width,height:height},styles.base,this.props.style]);\ninvariant(style,'style must be initialized');\n\nvar isNetwork=source.uri && source.uri.match(/^https?:/);\ninvariant(\n!(isNetwork && source.isStatic),\n'static image uris cannot start with \"http\": \"' + source.uri + '\"');\n\nvar isStored=!source.isStatic && !isNetwork;\nvar RawImage=isNetwork?RCTNetworkImage:RCTStaticImage;\n\nif(this.props.style && this.props.style.tintColor){\nwarning(RawImage === RCTStaticImage,'tintColor style only supported on static images.');}\n\nvar resizeMode=this.props.resizeMode || style.resizeMode || 'cover';\n\nvar nativeProps=merge(this.props,{\nstyle:style,\nresizeMode:resizeMode,\ntintColor:style.tintColor});\n\nif(isStored){\nnativeProps.imageTag = source.uri;}else \n{\nnativeProps.src = source.uri;}\n\nif(this.props.defaultSource){\nnativeProps.defaultImageSrc = this.props.defaultSource.uri;}\n\nnativeProps.progressHandlerRegistered = isNetwork && this.props.onLoadProgress;\nreturn React.createElement(RawImage,nativeProps);}});\n\n\n\nvar styles=StyleSheet.create({\nbase:{\noverflow:'hidden'}});\n\n\n\nvar RCTNetworkImage=requireNativeComponent('RCTNetworkImageView',null);\nvar RCTStaticImage=requireNativeComponent('RCTStaticImage',null);\n\nvar nativeOnlyProps={\nsrc:true,\ndefaultImageSrc:true,\nimageTag:true,\nprogressHandlerRegistered:true};\n\nif(__DEV__){\nverifyPropTypes(Image,RCTStaticImage.viewConfig,nativeOnlyProps);\nverifyPropTypes(Image,RCTNetworkImage.viewConfig,nativeOnlyProps);}\n\n\nmodule.exports = Image;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Image\n * @flow\n */\n'use strict';\n\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar ImageResizeMode = require('ImageResizeMode');\nvar ImageStylePropTypes = require('ImageStylePropTypes');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\n\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('invariant');\nvar merge = require('merge');\nvar requireNativeComponent = require('requireNativeComponent');\nvar resolveAssetSource = require('resolveAssetSource');\nvar verifyPropTypes = require('verifyPropTypes');\nvar warning = require('warning');\n\n/**\n * A React component for displaying different types of images,\n * including network images, static resources, temporary local images, and\n * images from local disk, such as the camera roll.\n *\n * Example usage:\n *\n * ```\n * renderImages: function() {\n * return (\n * <View>\n * <Image\n * style={styles.icon}\n * source={require('image!myIcon')}\n * />\n * <Image\n * style={styles.logo}\n * source={{uri: 'http://facebook.github.io/react/img/logo_og.png'}}\n * />\n * </View>\n * );\n * },\n * ```\n */\n\nvar Image = React.createClass({\n propTypes: {\n /**\n * `uri` is a string representing the resource identifier for the image, which\n * could be an http address, a local file path, or the name of a static image\n * resource (which should be wrapped in the `require('image!name')` function).\n */\n source: PropTypes.shape({\n uri: PropTypes.string,\n }),\n /**\n * A static image to display while downloading the final image off the\n * network.\n */\n defaultSource: PropTypes.shape({\n uri: PropTypes.string,\n }),\n /**\n * Whether this element should be revealed as an accessible element.\n */\n accessible: PropTypes.bool,\n /**\n * Custom string to display for accessibility.\n */\n accessibilityLabel: PropTypes.string,\n /**\n * When the image is resized, the corners of the size specified\n * by capInsets will stay a fixed size, but the center content and borders\n * of the image will be stretched. This is useful for creating resizable\n * rounded buttons, shadows, and other resizable assets. More info on\n * [Apple documentation](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImage_Class/index.html#//apple_ref/occ/instm/UIImage/resizableImageWithCapInsets)\n */\n capInsets: EdgeInsetsPropType,\n /**\n * Determines how to resize the image when the frame doesn't match the raw\n * image dimensions.\n */\n resizeMode: PropTypes.oneOf(['cover', 'contain', 'stretch']),\n style: StyleSheetPropType(ImageStylePropTypes),\n /**\n * A unique identifier for this element to be used in UI Automation\n * testing scripts.\n */\n testID: PropTypes.string,\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: { layout: {x, y, width, height}}}.\n */\n onLayout: PropTypes.func,\n /**\n * Invoked on load start\n */\n onLoadStart: PropTypes.func,\n /**\n * Invoked on download progress with\n *\n * {nativeEvent: { written, total}}.\n */\n onLoadProgress: PropTypes.func,\n /**\n * Invoked on load abort\n */\n onLoadAbort: PropTypes.func,\n /**\n * Invoked on load error\n *\n * {nativeEvent: { error}}.\n */\n onLoadError: PropTypes.func,\n /**\n * Invoked on load end\n *\n */\n onLoaded: PropTypes.func\n\n },\n\n statics: {\n resizeMode: ImageResizeMode,\n },\n\n mixins: [NativeMethodsMixin],\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n viewConfig: {\n uiViewClassName: 'UIView',\n validAttributes: ReactNativeViewAttributes.UIView\n },\n\n render: function() {\n for (var prop in nativeOnlyProps) {\n if (this.props[prop] !== undefined) {\n console.warn('Prop `' + prop + ' = ' + this.props[prop] + '` should ' +\n 'not be set directly on Image.');\n }\n }\n var source = resolveAssetSource(this.props.source) || {};\n\n var {width, height} = source;\n var style = flattenStyle([{width, height}, styles.base, this.props.style]);\n invariant(style, 'style must be initialized');\n\n var isNetwork = source.uri && source.uri.match(/^https?:/);\n invariant(\n !(isNetwork && source.isStatic),\n 'static image uris cannot start with \"http\": \"' + source.uri + '\"'\n );\n var isStored = !source.isStatic && !isNetwork;\n var RawImage = isNetwork ? RCTNetworkImage : RCTStaticImage;\n\n if (this.props.style && this.props.style.tintColor) {\n warning(RawImage === RCTStaticImage, 'tintColor style only supported on static images.');\n }\n var resizeMode = this.props.resizeMode || style.resizeMode || 'cover';\n\n var nativeProps = merge(this.props, {\n style,\n resizeMode,\n tintColor: style.tintColor,\n });\n if (isStored) {\n nativeProps.imageTag = source.uri;\n } else {\n nativeProps.src = source.uri;\n }\n if (this.props.defaultSource) {\n nativeProps.defaultImageSrc = this.props.defaultSource.uri;\n }\n nativeProps.progressHandlerRegistered = isNetwork && this.props.onLoadProgress;\n return <RawImage {...nativeProps} />;\n }\n});\n\nvar styles = StyleSheet.create({\n base: {\n overflow: 'hidden',\n },\n});\n\nvar RCTNetworkImage = requireNativeComponent('RCTNetworkImageView', null);\nvar RCTStaticImage = requireNativeComponent('RCTStaticImage', null);\n\nvar nativeOnlyProps = {\n src: true,\n defaultImageSrc: true,\n imageTag: true,\n progressHandlerRegistered: true\n};\nif (__DEV__) {\n verifyPropTypes(Image, RCTStaticImage.viewConfig, nativeOnlyProps);\n verifyPropTypes(Image, RCTNetworkImage.viewConfig, nativeOnlyProps);\n}\n\nmodule.exports = Image;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/Image.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/EdgeInsetsPropType.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\n\nvar EdgeInsetsPropType=createStrictShapeTypeChecker({\ntop:PropTypes.number,\nleft:PropTypes.number,\nbottom:PropTypes.number,\nright:PropTypes.number});\n\n\nmodule.exports = EdgeInsetsPropType;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EdgeInsetsPropType\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\n\nvar EdgeInsetsPropType = createStrictShapeTypeChecker({\n top: PropTypes.number,\n left: PropTypes.number,\n bottom: PropTypes.number,\n right: PropTypes.number,\n});\n\nmodule.exports = EdgeInsetsPropType;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/EdgeInsetsPropType.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/resolveAssetSource.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AssetRegistry=require('AssetRegistry');\nvar PixelRatio=require('PixelRatio');\nvar Platform=require('Platform');\nvar SourceCode=require('NativeModules').SourceCode;\n\nvar _serverURL;\n\nfunction getDevServerURL(){\nif(!__DEV__){\n\nreturn null;}\n\nif(_serverURL === undefined){\nvar scriptURL=SourceCode.scriptURL;\nvar match=scriptURL && scriptURL.match(/^https?:\\/\\/.*?\\//);\nif(match){\n\n_serverURL = match[0];}else \n{\n\n_serverURL = null;}}\n\n\n\nreturn _serverURL;}\n\n\n\n\n\nfunction getPathInArchive(asset){\nif(Platform.OS === 'android'){\nvar assetDir=getBasePath(asset);\n\n\nreturn (assetDir + '/' + asset.name).\ntoLowerCase().\nreplace(/\\//g,'_').\nreplace(/([^a-z0-9_])/g,'').\nreplace(/^assets_/,'');}else \n{\n\nreturn getScaledAssetPath(asset);}}\n\n\n\n\n\n\n\nfunction getPathOnDevserver(devServerUrl,asset){\nreturn devServerUrl + getScaledAssetPath(asset) + '?hash=' + asset.hash;}\n\n\n\n\n\nfunction getBasePath(asset){\n\n\nvar path=asset.httpServerLocation;\nif(path[0] === '/'){\npath = path.substr(1);}\n\nreturn path;}\n\n\n\n\n\nfunction getScaledAssetPath(asset){\nvar scale=pickScale(asset.scales,PixelRatio.get());\nvar scaleSuffix=scale === 1?'':'@' + scale + 'x';\nvar assetDir=getBasePath(asset);\nreturn assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;}\n\n\nfunction pickScale(scales,deviceScale){\n\nfor(var i=0;i < scales.length;i++) {\nif(scales[i] >= deviceScale){\nreturn scales[i];}}\n\n\n\n\n\n\nreturn scales[scales.length - 1] || 1;}\n\n\nfunction resolveAssetSource(source){\nif(typeof source === 'object'){\nreturn source;}\n\n\nvar asset=AssetRegistry.getAssetByID(source);\nif(asset){\nreturn assetToImageSource(asset);}\n\n\nreturn null;}\n\n\nfunction assetToImageSource(asset){\nvar devServerURL=getDevServerURL();\nif(devServerURL){\nreturn {\nwidth:asset.width,\nheight:asset.height,\nuri:getPathOnDevserver(devServerURL,asset),\nisStatic:false};}else \n\n{\nreturn {\nwidth:asset.width,\nheight:asset.height,\nuri:getPathInArchive(asset),\nisStatic:true};}}\n\n\n\n\nmodule.exports = resolveAssetSource;\nmodule.exports.pickScale = pickScale;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule resolveAssetSource\n *\n * Resolves an asset into a `source` for `Image`.\n */\n'use strict';\n\nvar AssetRegistry = require('AssetRegistry');\nvar PixelRatio = require('PixelRatio');\nvar Platform = require('Platform');\nvar SourceCode = require('NativeModules').SourceCode;\n\nvar _serverURL;\n\nfunction getDevServerURL() {\n if (!__DEV__) {\n // In prod we want assets to be loaded from the archive\n return null;\n }\n if (_serverURL === undefined) {\n var scriptURL = SourceCode.scriptURL;\n var match = scriptURL && scriptURL.match(/^https?:\\/\\/.*?\\//);\n if (match) {\n // Bundle was loaded from network\n _serverURL = match[0];\n } else {\n // Bundle was loaded from file\n _serverURL = null;\n }\n }\n\n return _serverURL;\n}\n\n/**\n * Returns the path at which the asset can be found in the archive\n */\nfunction getPathInArchive(asset) {\n if (Platform.OS === 'android') {\n var assetDir = getBasePath(asset);\n // E.g. 'assets_awesomemodule_icon'\n // The Android resource system picks the correct scale.\n return (assetDir + '/' + asset.name)\n .toLowerCase()\n .replace(/\\//g, '_') // Encode folder structure in file name\n .replace(/([^a-z0-9_])/g, '') // Remove illegal chars\n .replace(/^assets_/, ''); // Remove \"assets_\" prefix\n } else {\n // E.g. 'assets/AwesomeModule/icon@2x.png'\n return getScaledAssetPath(asset);\n }\n}\n\n/**\n * Returns an absolute URL which can be used to fetch the asset\n * from the devserver\n */\nfunction getPathOnDevserver(devServerUrl, asset) {\n return devServerUrl + getScaledAssetPath(asset) + '?hash=' + asset.hash;\n}\n\n/**\n * Returns a path like 'assets/AwesomeModule'\n */\nfunction getBasePath(asset) {\n // TODO(frantic): currently httpServerLocation is used both as\n // path in http URL and path within IPA. Should we have zipArchiveLocation?\n var path = asset.httpServerLocation;\n if (path[0] === '/') {\n path = path.substr(1);\n }\n return path;\n}\n\n/**\n * Returns a path like 'assets/AwesomeModule/icon@2x.png'\n */\nfunction getScaledAssetPath(asset) {\n var scale = pickScale(asset.scales, PixelRatio.get());\n var scaleSuffix = scale === 1 ? '' : '@' + scale + 'x';\n var assetDir = getBasePath(asset);\n return assetDir + '/' + asset.name + scaleSuffix + '.' + asset.type;\n}\n\nfunction pickScale(scales, deviceScale) {\n // Packager guarantees that `scales` array is sorted\n for (var i = 0; i < scales.length; i++) {\n if (scales[i] >= deviceScale) {\n return scales[i];\n }\n }\n\n // If nothing matches, device scale is larger than any available\n // scales, so we return the biggest one. Unless the array is empty,\n // in which case we default to 1\n return scales[scales.length - 1] || 1;\n}\n\nfunction resolveAssetSource(source) {\n if (typeof source === 'object') {\n return source;\n }\n\n var asset = AssetRegistry.getAssetByID(source);\n if (asset) {\n return assetToImageSource(asset);\n }\n\n return null;\n}\n\nfunction assetToImageSource(asset) {\n var devServerURL = getDevServerURL();\n if (devServerURL) {\n return {\n width: asset.width,\n height: asset.height,\n uri: getPathOnDevserver(devServerURL, asset),\n isStatic: false,\n };\n } else {\n return {\n width: asset.width,\n height: asset.height,\n uri: getPathInArchive(asset),\n isStatic: true,\n };\n }\n}\n\nmodule.exports = resolveAssetSource;\nmodule.exports.pickScale = pickScale;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/resolveAssetSource.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/AssetRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nvar assets=[];\n\nfunction registerAsset(asset){\n\n\nreturn assets.push(asset);}\n\n\nfunction getAssetByID(assetId){\nreturn assets[assetId - 1];}\n\n\nmodule.exports = {registerAsset:registerAsset,getAssetByID:getAssetByID};","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule AssetRegistry\n */\n'use strict';\n\nvar assets = [];\n\nfunction registerAsset(asset) {\n // `push` returns new array length, so the first asset will\n // get id 1 (not 0) to make the value truthy\n return assets.push(asset);\n}\n\nfunction getAssetByID(assetId) {\n return assets[assetId - 1];\n}\n\nmodule.exports = { registerAsset, getAssetByID };\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/AssetRegistry.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PixelRatio.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPixelRatio=(function(){function PixelRatio(){_classCallCheck(this,PixelRatio);}_createClass(PixelRatio,null,[{key:'get',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction get(){\nreturn Dimensions.get('window').scale;}},{key:'getFontScale',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getFontScale(){\nreturn Dimensions.get('window').fontScale || PixelRatio.get();}},{key:'getPixelSizeForLayoutSize',value:\n\n\n\n\n\n\n\nfunction getPixelSizeForLayoutSize(layoutSize){\nreturn Math.round(layoutSize * PixelRatio.get());}},{key:'startDetecting',value:\n\n\n\nfunction startDetecting(){}}]);return PixelRatio;})();\n\n\nmodule.exports = PixelRatio;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PixelRatio\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\n\n/**\n * PixelRatio class gives access to the device pixel density.\n *\n * There are a few use cases for using PixelRatio:\n *\n * ### Displaying a line that's as thin as the device permits\n *\n * A width of 1 is actually pretty thick on an iPhone 4+, we can do one that's\n * thinner using a width of `1 / PixelRatio.get()`. It's a technique that works\n * on all the devices independent of their pixel density.\n *\n * ```\n * style={{ borderWidth: 1 / PixelRatio.get() }}\n * ```\n *\n * ### Fetching a correctly sized image\n *\n * You should get a higher resolution image if you are on a high pixel density\n * device. A good rule of thumb is to multiply the size of the image you display\n * by the pixel ratio.\n *\n * ```\n * var image = getImage({\n * width: PixelRatio.getPixelSizeForLayoutSize(200),\n * height: PixelRatio.getPixelSizeForLayoutSize(100),\n * });\n * <Image source={image} style={{width: 200, height: 100}} />\n * ```\n */\nclass PixelRatio {\n /**\n * Returns the device pixel density. Some examples:\n *\n * - PixelRatio.get() === 2\n * - iPhone 4, 4S\n * - iPhone 5, 5c, 5s\n * - iPhone 6\n * - PixelRatio.get() === 3\n * - iPhone 6 plus\n * - PixelRatio.get() === 3.5\n * - Nexus 6\n */\n static get(): number {\n return Dimensions.get('window').scale;\n }\n\n /**\n * Returns the scaling factor for font sizes. This is the ratio that is used to calculate the\n * absolute font size, so any elements that heavily depend on that should use this to do\n * calculations.\n *\n * If a font scale is not set, this returns the device pixel ratio.\n *\n * Currently this is only implemented on Android and reflects the user preference set in\n * Settings > Display > Font size, on iOS it will always return the default pixel ratio.\n */\n static getFontScale(): number {\n return Dimensions.get('window').fontScale || PixelRatio.get();\n }\n\n /**\n * Converts a layout size (dp) to pixel size (px).\n *\n * Guaranteed to return an integer number.\n */\n static getPixelSizeForLayoutSize(layoutSize: number): number {\n return Math.round(layoutSize * PixelRatio.get());\n }\n\n // No-op for iOS, but used on the web. Should not be documented.\n static startDetecting() {}\n}\n\nmodule.exports = PixelRatio;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/PixelRatio.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Dimensions.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\n\nvar invariant=require('invariant');\n\nvar dimensions=NativeModules.UIManager.Dimensions;\n\n\n\n\nif(dimensions && dimensions.windowPhysicalPixels){\n\ndimensions = JSON.parse(JSON.stringify(dimensions));\n\nvar windowPhysicalPixels=dimensions.windowPhysicalPixels;\ndimensions.window = {\nwidth:windowPhysicalPixels.width / windowPhysicalPixels.scale,\nheight:windowPhysicalPixels.height / windowPhysicalPixels.scale,\nscale:windowPhysicalPixels.scale,\nfontScale:windowPhysicalPixels.fontScale};\n\n\n\ndelete dimensions.windowPhysicalPixels;}var \n\n\nDimensions=(function(){function Dimensions(){_classCallCheck(this,Dimensions);}_createClass(Dimensions,null,[{key:'set',value:\n\n\n\n\n\nfunction set(dims){\nObject.assign(dimensions,dims);\nreturn true;}},{key:'get',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction get(dim){\ninvariant(dimensions[dim],'No dimension set for key ' + dim);\nreturn dimensions[dim];}}]);return Dimensions;})();\n\n\n\nmodule.exports = Dimensions;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dimensions\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\n\nvar invariant = require('invariant');\n\nvar dimensions = NativeModules.UIManager.Dimensions;\n\n// We calculate the window dimensions in JS so that we don't encounter loss of\n// precision in transferring the dimensions (which could be non-integers) over\n// the bridge.\nif (dimensions && dimensions.windowPhysicalPixels) {\n // parse/stringify => Clone hack\n dimensions = JSON.parse(JSON.stringify(dimensions));\n\n var windowPhysicalPixels = dimensions.windowPhysicalPixels;\n dimensions.window = {\n width: windowPhysicalPixels.width / windowPhysicalPixels.scale,\n height: windowPhysicalPixels.height / windowPhysicalPixels.scale,\n scale: windowPhysicalPixels.scale,\n fontScale: windowPhysicalPixels.fontScale,\n };\n\n // delete so no callers rely on this existing\n delete dimensions.windowPhysicalPixels;\n}\n\nclass Dimensions {\n /**\n * This should only be called from native code.\n *\n * @param {object} dims Simple string-keyed object of dimensions to set\n */\n static set(dims: {[key:string]: any}): bool {\n Object.assign(dimensions, dims);\n return true;\n }\n\n /**\n * Initial dimensions are set before `runApplication` is called so they should\n * be available before any other require's are run, but may be updated later.\n *\n * Note: Although dimensions are available immediately, they may change (e.g\n * due to device rotation) so any rendering logic or styles that depend on\n * these constants should try to call this function on every render, rather\n * than caching the value (for example, using inline styles rather than\n * setting a value in a `StyleSheet`).\n *\n * @param {string} dim Name of dimension as defined when calling `set`.\n * @returns {Object?} Value for the dimension.\n */\n static get(dim: string): Object {\n invariant(dimensions[dim], 'No dimension set for key ' + dim);\n return dimensions[dim];\n }\n}\n\nmodule.exports = Dimensions;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/Dimensions.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListView.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};function _objectWithoutProperties(obj,keys){var target={};for(var i in obj) {if(keys.indexOf(i) >= 0)continue;if(!Object.prototype.hasOwnProperty.call(obj,i))continue;target[i] = obj[i];}return target;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ListViewDataSource=require('ListViewDataSource');\nvar React=require('React');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar RKScrollViewManager=require('NativeModules').ScrollViewManager;\nvar ScrollView=require('ScrollView');\nvar ScrollResponder=require('ScrollResponder');\nvar StaticRenderer=require('StaticRenderer');\nvar TimerMixin=require('react-timer-mixin');\n\nvar isEmpty=require('isEmpty');\nvar logError=require('logError');\nvar merge=require('merge');\n\nvar PropTypes=React.PropTypes;\n\nvar DEFAULT_PAGE_SIZE=1;\nvar DEFAULT_INITIAL_ROWS=10;\nvar DEFAULT_SCROLL_RENDER_AHEAD=1000;\nvar DEFAULT_END_REACHED_THRESHOLD=1000;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE=50;\nvar SCROLLVIEW_REF='listviewscroll';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ListView=React.createClass({displayName:'ListView',\nmixins:[ScrollResponder.Mixin,TimerMixin],\n\nstatics:{\nDataSource:ListViewDataSource},\n\n\n\n\n\n\n\n\n\npropTypes:_extends({},\nScrollView.propTypes,{\n\ndataSource:PropTypes.instanceOf(ListViewDataSource).isRequired,\n\n\n\n\n\n\n\nrenderSeparator:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\nrenderRow:PropTypes.func.isRequired,\n\n\n\n\n\ninitialListSize:PropTypes.number,\n\n\n\n\n\nonEndReached:PropTypes.func,\n\n\n\nonEndReachedThreshold:PropTypes.number,\n\n\n\npageSize:PropTypes.number,\n\n\n\n\n\n\n\n\nrenderFooter:PropTypes.func,\nrenderHeader:PropTypes.func,\n\n\n\n\n\n\n\n\n\nrenderSectionHeader:PropTypes.func,\n\n\n\n\n\n\nrenderScrollComponent:React.PropTypes.func.isRequired,\n\n\n\n\nscrollRenderAheadDistance:React.PropTypes.number,\n\n\n\n\n\n\n\n\n\nonChangeVisibleRows:React.PropTypes.func,\n\n\n\n\n\nremoveClippedSubviews:React.PropTypes.bool}),\n\n\n\n\n\ngetMetrics:function(){\nreturn {\ncontentHeight:this.scrollProperties.contentHeight,\ntotalRows:this.props.dataSource.getRowCount(),\nrenderedRows:this.state.curRenderedRowsCount,\nvisibleRows:Object.keys(this._visibleRows).length};},\n\n\n\n\n\n\n\ngetScrollResponder:function(){\nreturn this.refs[SCROLLVIEW_REF] && \nthis.refs[SCROLLVIEW_REF].getScrollResponder && \nthis.refs[SCROLLVIEW_REF].getScrollResponder();},\n\n\nsetNativeProps:function(props){\nthis.refs[SCROLLVIEW_REF].setNativeProps(props);},\n\n\n\n\n\n\ngetDefaultProps:function(){\nreturn {\ninitialListSize:DEFAULT_INITIAL_ROWS,\npageSize:DEFAULT_PAGE_SIZE,\nrenderScrollComponent:function(props){return React.createElement(ScrollView,props);},\nscrollRenderAheadDistance:DEFAULT_SCROLL_RENDER_AHEAD,\nonEndReachedThreshold:DEFAULT_END_REACHED_THRESHOLD};},\n\n\n\ngetInitialState:function(){\nreturn {\ncurRenderedRowsCount:this.props.initialListSize,\nprevRenderedRowsCount:0,\nhighlightedRow:{}};},\n\n\n\ncomponentWillMount:function(){\n\nthis.scrollProperties = {\nvisibleHeight:null,\ncontentHeight:null,\noffsetY:0};\n\nthis._childFrames = [];\nthis._visibleRows = {};},\n\n\ncomponentDidMount:function(){var _this=this;\n\n\nthis.requestAnimationFrame(function(){\n_this._measureAndUpdateScrollProps();});},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(this.props.dataSource !== nextProps.dataSource){\nthis.setState(function(state,props){\nvar rowsToRender=Math.min(\nstate.curRenderedRowsCount + props.pageSize,\nprops.dataSource.getRowCount());\n\nreturn {\nprevRenderedRowsCount:0,\ncurRenderedRowsCount:rowsToRender};});}},\n\n\n\n\n\ncomponentDidUpdate:function(){var _this2=this;\nthis.requestAnimationFrame(function(){\n_this2._measureAndUpdateScrollProps();});},\n\n\n\nonRowHighlighted:function(sectionID,rowID){\nthis.setState({highlightedRow:{sectionID:sectionID,rowID:rowID}});},\n\n\nrender:function(){\nvar bodyComponents=[];\n\nvar dataSource=this.props.dataSource;\nvar allRowIDs=dataSource.rowIdentities;\nvar rowCount=0;\nvar sectionHeaderIndices=[];\n\nvar header=this.props.renderHeader && this.props.renderHeader();\nvar footer=this.props.renderFooter && this.props.renderFooter();\nvar totalIndex=header?1:0;\n\nfor(var sectionIdx=0;sectionIdx < allRowIDs.length;sectionIdx++) {\nvar sectionID=dataSource.sectionIdentities[sectionIdx];\nvar rowIDs=allRowIDs[sectionIdx];\nif(rowIDs.length === 0){\ncontinue;}\n\n\nif(this.props.renderSectionHeader){\nvar shouldUpdateHeader=rowCount >= this.state.prevRenderedRowsCount && \ndataSource.sectionHeaderShouldUpdate(sectionIdx);\nbodyComponents.push(\nReact.createElement(StaticRenderer,{\nkey:'s_' + sectionID,\nshouldUpdate:!!shouldUpdateHeader,\nrender:this.props.renderSectionHeader.bind(\nnull,\ndataSource.getSectionHeaderData(sectionIdx),\nsectionID)}));\n\n\n\nsectionHeaderIndices.push(totalIndex++);}\n\n\nfor(var rowIdx=0;rowIdx < rowIDs.length;rowIdx++) {\nvar rowID=rowIDs[rowIdx];\nvar comboID=sectionID + rowID;\nvar shouldUpdateRow=rowCount >= this.state.prevRenderedRowsCount && \ndataSource.rowShouldUpdate(sectionIdx,rowIdx);\nvar row=\nReact.createElement(StaticRenderer,{\nkey:'r_' + comboID,\nshouldUpdate:!!shouldUpdateRow,\nrender:this.props.renderRow.bind(\nnull,\ndataSource.getRowData(sectionIdx,rowIdx),\nsectionID,\nrowID,\nthis.onRowHighlighted)});\n\n\nbodyComponents.push(row);\ntotalIndex++;\n\nif(this.props.renderSeparator && (\nrowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)){\nvar adjacentRowHighlighted=\nthis.state.highlightedRow.sectionID === sectionID && (\nthis.state.highlightedRow.rowID === rowID || \nthis.state.highlightedRow.rowID === rowIDs[rowIdx + 1]);\n\nvar separator=this.props.renderSeparator(\nsectionID,\nrowID,\nadjacentRowHighlighted);\n\nbodyComponents.push(separator);\ntotalIndex++;}\n\nif(++rowCount === this.state.curRenderedRowsCount){\nbreak;}}\n\n\nif(rowCount >= this.state.curRenderedRowsCount){\nbreak;}}var _props=\n\n\n\n\n\n\nthis.props;var renderScrollComponent=_props.renderScrollComponent;var props=_objectWithoutProperties(_props,['renderScrollComponent']);\nif(!props.scrollEventThrottle){\nprops.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE;}\n\nObject.assign(props,{\nonScroll:this._onScroll,\nstickyHeaderIndices:sectionHeaderIndices,\nchildren:[header,bodyComponents,footer]});\n\n\n\n\nreturn React.cloneElement(renderScrollComponent(props),{\nref:SCROLLVIEW_REF});},\n\n\n\n\n\n\n\n_measureAndUpdateScrollProps:function(){\nvar scrollComponent=this.getScrollResponder();\nif(!scrollComponent || !scrollComponent.getInnerViewNode){\nreturn;}\n\nRCTUIManager.measureLayout(\nscrollComponent.getInnerViewNode(),\nReact.findNodeHandle(scrollComponent),\nlogError,\nthis._setScrollContentHeight);\n\nRCTUIManager.measureLayoutRelativeToParent(\nReact.findNodeHandle(scrollComponent),\nlogError,\nthis._setScrollVisibleHeight);\n\n\n\nRKScrollViewManager && RKScrollViewManager.calculateChildFrames && \nRKScrollViewManager.calculateChildFrames(\nReact.findNodeHandle(scrollComponent),\nthis._updateChildFrames);},\n\n\n\n_setScrollContentHeight:function(left,top,width,height){\nthis.scrollProperties.contentHeight = height;},\n\n\n_setScrollVisibleHeight:function(left,top,width,height){\nthis.scrollProperties.visibleHeight = height;\nthis._updateVisibleRows();\nthis._renderMoreRowsIfNeeded();},\n\n\n_updateChildFrames:function(childFrames){\nthis._updateVisibleRows(childFrames);},\n\n\n_renderMoreRowsIfNeeded:function(){\nif(this.scrollProperties.contentHeight === null || \nthis.scrollProperties.visibleHeight === null || \nthis.state.curRenderedRowsCount === this.props.dataSource.getRowCount()){\nreturn;}\n\n\nvar distanceFromEnd=this._getDistanceFromEnd(this.scrollProperties);\nif(distanceFromEnd < this.props.scrollRenderAheadDistance){\nthis._pageInNewRows();}},\n\n\n\n_pageInNewRows:function(){var _this3=this;\nthis.setState(function(state,props){\nvar rowsToRender=Math.min(\nstate.curRenderedRowsCount + props.pageSize,\nprops.dataSource.getRowCount());\n\nreturn {\nprevRenderedRowsCount:state.curRenderedRowsCount,\ncurRenderedRowsCount:rowsToRender};},\n\nfunction(){\n_this3._measureAndUpdateScrollProps();\n_this3.setState(function(state){return {\nprevRenderedRowsCount:state.curRenderedRowsCount};});});},\n\n\n\n\n_getDistanceFromEnd:function(scrollProperties){\nreturn scrollProperties.contentHeight - \nscrollProperties.visibleHeight - \nscrollProperties.offsetY;},\n\n\n_updateVisibleRows:function(updatedFrames){var _this4=this;\nif(!this.props.onChangeVisibleRows){\nreturn;}\n\nif(updatedFrames){\nupdatedFrames.forEach(function(newFrame){\n_this4._childFrames[newFrame.index] = merge(newFrame);});}\n\n\nvar dataSource=this.props.dataSource;\nvar visibleTop=this.scrollProperties.offsetY;\nvar visibleBottom=visibleTop + this.scrollProperties.visibleHeight;\nvar allRowIDs=dataSource.rowIdentities;\n\nvar header=this.props.renderHeader && this.props.renderHeader();\nvar totalIndex=header?1:0;\nvar visibilityChanged=false;\nvar changedRows={};\nfor(var sectionIdx=0;sectionIdx < allRowIDs.length;sectionIdx++) {\nvar rowIDs=allRowIDs[sectionIdx];\nif(rowIDs.length === 0){\ncontinue;}\n\nvar sectionID=dataSource.sectionIdentities[sectionIdx];\nif(this.props.renderSectionHeader){\ntotalIndex++;}\n\nvar visibleSection=this._visibleRows[sectionID];\nif(!visibleSection){\nvisibleSection = {};}\n\nfor(var rowIdx=0;rowIdx < rowIDs.length;rowIdx++) {\nvar rowID=rowIDs[rowIdx];\nvar frame=this._childFrames[totalIndex];\ntotalIndex++;\nif(!frame){\nbreak;}\n\nvar rowVisible=visibleSection[rowID];\nvar top=frame.y;\nvar bottom=top + frame.height;\nif(top > visibleBottom || bottom < visibleTop){\nif(rowVisible){\nvisibilityChanged = true;\ndelete visibleSection[rowID];\nif(!changedRows[sectionID]){\nchangedRows[sectionID] = {};}\n\nchangedRows[sectionID][rowID] = false;}}else \n\nif(!rowVisible){\nvisibilityChanged = true;\nvisibleSection[rowID] = true;\nif(!changedRows[sectionID]){\nchangedRows[sectionID] = {};}\n\nchangedRows[sectionID][rowID] = true;}}\n\n\nif(!isEmpty(visibleSection)){\nthis._visibleRows[sectionID] = visibleSection;}else \nif(this._visibleRows[sectionID]){\ndelete this._visibleRows[sectionID];}}\n\n\nvisibilityChanged && this.props.onChangeVisibleRows(this._visibleRows,changedRows);},\n\n\n_onScroll:function(e){\nthis.scrollProperties.visibleHeight = e.nativeEvent.layoutMeasurement.height;\nthis.scrollProperties.contentHeight = e.nativeEvent.contentSize.height;\nthis.scrollProperties.offsetY = e.nativeEvent.contentOffset.y;\nthis._updateVisibleRows(e.nativeEvent.updatedChildFrames);\nvar nearEnd=this._getDistanceFromEnd(this.scrollProperties) < this.props.onEndReachedThreshold;\nif(nearEnd && \nthis.props.onEndReached && \nthis.scrollProperties.contentHeight !== this._sentEndForContentHeight && \nthis.state.curRenderedRowsCount === this.props.dataSource.getRowCount()){\nthis._sentEndForContentHeight = this.scrollProperties.contentHeight;\nthis.props.onEndReached(e);}else \n{\nthis._renderMoreRowsIfNeeded();}\n\n\nthis.props.onScroll && this.props.onScroll(e);}});\n\n\n\nmodule.exports = ListView;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule ListView\n */\n'use strict';\n\nvar ListViewDataSource = require('ListViewDataSource');\nvar React = require('React');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar RKScrollViewManager = require('NativeModules').ScrollViewManager;\nvar ScrollView = require('ScrollView');\nvar ScrollResponder = require('ScrollResponder');\nvar StaticRenderer = require('StaticRenderer');\nvar TimerMixin = require('react-timer-mixin');\n\nvar isEmpty = require('isEmpty');\nvar logError = require('logError');\nvar merge = require('merge');\n\nvar PropTypes = React.PropTypes;\n\nvar DEFAULT_PAGE_SIZE = 1;\nvar DEFAULT_INITIAL_ROWS = 10;\nvar DEFAULT_SCROLL_RENDER_AHEAD = 1000;\nvar DEFAULT_END_REACHED_THRESHOLD = 1000;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE = 50;\nvar SCROLLVIEW_REF = 'listviewscroll';\n\n\n/**\n * ListView - A core component designed for efficient display of vertically\n * scrolling lists of changing data. The minimal API is to create a\n * `ListView.DataSource`, populate it with a simple array of data blobs, and\n * instantiate a `ListView` component with that data source and a `renderRow`\n * callback which takes a blob from the data array and returns a renderable\n * component.\n *\n * Minimal example:\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});\n * return {\n * dataSource: ds.cloneWithRows(['row 1', 'row 2']),\n * };\n * },\n *\n * render: function() {\n * return (\n * <ListView\n * dataSource={this.state.dataSource}\n * renderRow={(rowData) => <Text>{rowData}</Text>}\n * />\n * );\n * },\n * ```\n *\n * ListView also supports more advanced features, including sections with sticky\n * section headers, header and footer support, callbacks on reaching the end of\n * the available data (`onEndReached`) and on the set of rows that are visible\n * in the device viewport change (`onChangeVisibleRows`), and several\n * performance optimizations.\n *\n * There are a few performance operations designed to make ListView scroll\n * smoothly while dynamically loading potentially very large (or conceptually\n * infinite) data sets:\n *\n * * Only re-render changed rows - the rowHasChanged function provided to the\n * data source tells the ListView if it needs to re-render a row because the\n * source data has changed - see ListViewDataSource for more details.\n *\n * * Rate-limited row rendering - By default, only one row is rendered per\n * event-loop (customizable with the `pageSize` prop). This breaks up the\n * work into smaller chunks to reduce the chance of dropping frames while\n * rendering rows.\n */\n\nvar ListView = React.createClass({\n mixins: [ScrollResponder.Mixin, TimerMixin],\n\n statics: {\n DataSource: ListViewDataSource,\n },\n\n /**\n * You must provide a renderRow function. If you omit any of the other render\n * functions, ListView will simply skip rendering them.\n *\n * - renderRow(rowData, sectionID, rowID, highlightRow);\n * - renderSectionHeader(sectionData, sectionID);\n */\n propTypes: {\n ...ScrollView.propTypes,\n\n dataSource: PropTypes.instanceOf(ListViewDataSource).isRequired,\n /**\n * (sectionID, rowID, adjacentRowHighlighted) => renderable\n * If provided, a renderable component to be rendered as the separator\n * below each row but not the last row if there is a section header below.\n * Take a sectionID and rowID of the row above and whether its adjacent row\n * is highlighted.\n */\n renderSeparator: PropTypes.func,\n /**\n * (rowData, sectionID, rowID, highlightRow) => renderable\n * Takes a data entry from the data source and its ids and should return\n * a renderable component to be rendered as the row. By default the data\n * is exactly what was put into the data source, but it's also possible to\n * provide custom extractors. ListView can be notified when a row is\n * being highlighted by calling highlightRow function. The separators above and\n * below will be hidden when a row is highlighted. The highlighted state of\n * a row can be reset by calling highlightRow(null).\n */\n renderRow: PropTypes.func.isRequired,\n /**\n * How many rows to render on initial component mount. Use this to make\n * it so that the first screen worth of data apears at one time instead of\n * over the course of multiple frames.\n */\n initialListSize: PropTypes.number,\n /**\n * Called when all rows have been rendered and the list has been scrolled\n * to within onEndReachedThreshold of the bottom. The native scroll\n * event is provided.\n */\n onEndReached: PropTypes.func,\n /**\n * Threshold in pixels for onEndReached.\n */\n onEndReachedThreshold: PropTypes.number,\n /**\n * Number of rows to render per event loop.\n */\n pageSize: PropTypes.number,\n /**\n * () => renderable\n *\n * The header and footer are always rendered (if these props are provided)\n * on every render pass. If they are expensive to re-render, wrap them\n * in StaticContainer or other mechanism as appropriate. Footer is always\n * at the bottom of the list, and header at the top, on every render pass.\n */\n renderFooter: PropTypes.func,\n renderHeader: PropTypes.func,\n /**\n * (sectionData, sectionID) => renderable\n *\n * If provided, a sticky header is rendered for this section. The sticky\n * behavior means that it will scroll with the content at the top of the\n * section until it reaches the top of the screen, at which point it will\n * stick to the top until it is pushed off the screen by the next section\n * header.\n */\n renderSectionHeader: PropTypes.func,\n /**\n * (props) => renderable\n *\n * A function that returns the scrollable component in which the list rows\n * are rendered. Defaults to returning a ScrollView with the given props.\n */\n renderScrollComponent: React.PropTypes.func.isRequired,\n /**\n * How early to start rendering rows before they come on screen, in\n * pixels.\n */\n scrollRenderAheadDistance: React.PropTypes.number,\n /**\n * (visibleRows, changedRows) => void\n *\n * Called when the set of visible rows changes. `visibleRows` maps\n * { sectionID: { rowID: true }} for all the visible rows, and\n * `changedRows` maps { sectionID: { rowID: true | false }} for the rows\n * that have changed their visibility, with true indicating visible, and\n * false indicating the view has moved out of view.\n */\n onChangeVisibleRows: React.PropTypes.func,\n /**\n * An experimental performance optimization for improving scroll perf of\n * large lists, used in conjunction with overflow: 'hidden' on the row\n * containers. Use at your own risk.\n */\n removeClippedSubviews: React.PropTypes.bool,\n },\n\n /**\n * Exports some data, e.g. for perf investigations or analytics.\n */\n getMetrics: function() {\n return {\n contentHeight: this.scrollProperties.contentHeight,\n totalRows: this.props.dataSource.getRowCount(),\n renderedRows: this.state.curRenderedRowsCount,\n visibleRows: Object.keys(this._visibleRows).length,\n };\n },\n\n /**\n * Provides a handle to the underlying scroll responder to support operations\n * such as scrollTo.\n */\n getScrollResponder: function() {\n return this.refs[SCROLLVIEW_REF] &&\n this.refs[SCROLLVIEW_REF].getScrollResponder &&\n this.refs[SCROLLVIEW_REF].getScrollResponder();\n },\n\n setNativeProps: function(props) {\n this.refs[SCROLLVIEW_REF].setNativeProps(props);\n },\n\n /**\n * React life cycle hooks.\n */\n\n getDefaultProps: function() {\n return {\n initialListSize: DEFAULT_INITIAL_ROWS,\n pageSize: DEFAULT_PAGE_SIZE,\n renderScrollComponent: props => <ScrollView {...props} />,\n scrollRenderAheadDistance: DEFAULT_SCROLL_RENDER_AHEAD,\n onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD,\n };\n },\n\n getInitialState: function() {\n return {\n curRenderedRowsCount: this.props.initialListSize,\n prevRenderedRowsCount: 0,\n highlightedRow: {},\n };\n },\n\n componentWillMount: function() {\n // this data should never trigger a render pass, so don't put in state\n this.scrollProperties = {\n visibleHeight: null,\n contentHeight: null,\n offsetY: 0\n };\n this._childFrames = [];\n this._visibleRows = {};\n },\n\n componentDidMount: function() {\n // do this in animation frame until componentDidMount actually runs after\n // the component is laid out\n this.requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n componentWillReceiveProps: function(nextProps) {\n if (this.props.dataSource !== nextProps.dataSource) {\n this.setState((state, props) => {\n var rowsToRender = Math.min(\n state.curRenderedRowsCount + props.pageSize,\n props.dataSource.getRowCount()\n );\n return {\n prevRenderedRowsCount: 0,\n curRenderedRowsCount: rowsToRender,\n };\n });\n }\n },\n\n componentDidUpdate: function() {\n this.requestAnimationFrame(() => {\n this._measureAndUpdateScrollProps();\n });\n },\n\n onRowHighlighted: function(sectionID, rowID) {\n this.setState({highlightedRow: {sectionID, rowID}});\n },\n\n render: function() {\n var bodyComponents = [];\n\n var dataSource = this.props.dataSource;\n var allRowIDs = dataSource.rowIdentities;\n var rowCount = 0;\n var sectionHeaderIndices = [];\n\n var header = this.props.renderHeader && this.props.renderHeader();\n var footer = this.props.renderFooter && this.props.renderFooter();\n var totalIndex = header ? 1 : 0;\n\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var sectionID = dataSource.sectionIdentities[sectionIdx];\n var rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n continue;\n }\n\n if (this.props.renderSectionHeader) {\n var shouldUpdateHeader = rowCount >= this.state.prevRenderedRowsCount &&\n dataSource.sectionHeaderShouldUpdate(sectionIdx);\n bodyComponents.push(\n <StaticRenderer\n key={'s_' + sectionID}\n shouldUpdate={!!shouldUpdateHeader}\n render={this.props.renderSectionHeader.bind(\n null,\n dataSource.getSectionHeaderData(sectionIdx),\n sectionID\n )}\n />\n );\n sectionHeaderIndices.push(totalIndex++);\n }\n\n for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n var rowID = rowIDs[rowIdx];\n var comboID = sectionID + rowID;\n var shouldUpdateRow = rowCount >= this.state.prevRenderedRowsCount &&\n dataSource.rowShouldUpdate(sectionIdx, rowIdx);\n var row =\n <StaticRenderer\n key={'r_' + comboID}\n shouldUpdate={!!shouldUpdateRow}\n render={this.props.renderRow.bind(\n null,\n dataSource.getRowData(sectionIdx, rowIdx),\n sectionID,\n rowID,\n this.onRowHighlighted\n )}\n />;\n bodyComponents.push(row);\n totalIndex++;\n\n if (this.props.renderSeparator &&\n (rowIdx !== rowIDs.length - 1 || sectionIdx === allRowIDs.length - 1)) {\n var adjacentRowHighlighted =\n this.state.highlightedRow.sectionID === sectionID && (\n this.state.highlightedRow.rowID === rowID ||\n this.state.highlightedRow.rowID === rowIDs[rowIdx + 1]\n );\n var separator = this.props.renderSeparator(\n sectionID,\n rowID,\n adjacentRowHighlighted\n );\n bodyComponents.push(separator);\n totalIndex++;\n }\n if (++rowCount === this.state.curRenderedRowsCount) {\n break;\n }\n }\n if (rowCount >= this.state.curRenderedRowsCount) {\n break;\n }\n }\n\n var {\n renderScrollComponent,\n ...props,\n } = this.props;\n if (!props.scrollEventThrottle) {\n props.scrollEventThrottle = DEFAULT_SCROLL_CALLBACK_THROTTLE;\n }\n Object.assign(props, {\n onScroll: this._onScroll,\n stickyHeaderIndices: sectionHeaderIndices,\n children: [header, bodyComponents, footer],\n });\n\n // TODO(ide): Use function refs so we can compose with the scroll\n // component's original ref instead of clobbering it\n return React.cloneElement(renderScrollComponent(props), {\n ref: SCROLLVIEW_REF,\n });\n },\n\n /**\n * Private methods\n */\n\n _measureAndUpdateScrollProps: function() {\n var scrollComponent = this.getScrollResponder();\n if (!scrollComponent || !scrollComponent.getInnerViewNode) {\n return;\n }\n RCTUIManager.measureLayout(\n scrollComponent.getInnerViewNode(),\n React.findNodeHandle(scrollComponent),\n logError,\n this._setScrollContentHeight\n );\n RCTUIManager.measureLayoutRelativeToParent(\n React.findNodeHandle(scrollComponent),\n logError,\n this._setScrollVisibleHeight\n );\n\n // RKScrollViewManager.calculateChildFrames not available on every platform\n RKScrollViewManager && RKScrollViewManager.calculateChildFrames &&\n RKScrollViewManager.calculateChildFrames(\n React.findNodeHandle(scrollComponent),\n this._updateChildFrames,\n );\n },\n\n _setScrollContentHeight: function(left, top, width, height) {\n this.scrollProperties.contentHeight = height;\n },\n\n _setScrollVisibleHeight: function(left, top, width, height) {\n this.scrollProperties.visibleHeight = height;\n this._updateVisibleRows();\n this._renderMoreRowsIfNeeded();\n },\n\n _updateChildFrames: function(childFrames) {\n this._updateVisibleRows(childFrames);\n },\n\n _renderMoreRowsIfNeeded: function() {\n if (this.scrollProperties.contentHeight === null ||\n this.scrollProperties.visibleHeight === null ||\n this.state.curRenderedRowsCount === this.props.dataSource.getRowCount()) {\n return;\n }\n\n var distanceFromEnd = this._getDistanceFromEnd(this.scrollProperties);\n if (distanceFromEnd < this.props.scrollRenderAheadDistance) {\n this._pageInNewRows();\n }\n },\n\n _pageInNewRows: function() {\n this.setState((state, props) => {\n var rowsToRender = Math.min(\n state.curRenderedRowsCount + props.pageSize,\n props.dataSource.getRowCount()\n );\n return {\n prevRenderedRowsCount: state.curRenderedRowsCount,\n curRenderedRowsCount: rowsToRender\n };\n }, () => {\n this._measureAndUpdateScrollProps();\n this.setState(state => ({\n prevRenderedRowsCount: state.curRenderedRowsCount,\n }));\n });\n },\n\n _getDistanceFromEnd: function(scrollProperties) {\n return scrollProperties.contentHeight -\n scrollProperties.visibleHeight -\n scrollProperties.offsetY;\n },\n\n _updateVisibleRows: function(updatedFrames) {\n if (!this.props.onChangeVisibleRows) {\n return; // No need to compute visible rows if there is no callback\n }\n if (updatedFrames) {\n updatedFrames.forEach((newFrame) => {\n this._childFrames[newFrame.index] = merge(newFrame);\n });\n }\n var dataSource = this.props.dataSource;\n var visibleTop = this.scrollProperties.offsetY;\n var visibleBottom = visibleTop + this.scrollProperties.visibleHeight;\n var allRowIDs = dataSource.rowIdentities;\n\n var header = this.props.renderHeader && this.props.renderHeader();\n var totalIndex = header ? 1 : 0;\n var visibilityChanged = false;\n var changedRows = {};\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var rowIDs = allRowIDs[sectionIdx];\n if (rowIDs.length === 0) {\n continue;\n }\n var sectionID = dataSource.sectionIdentities[sectionIdx];\n if (this.props.renderSectionHeader) {\n totalIndex++;\n }\n var visibleSection = this._visibleRows[sectionID];\n if (!visibleSection) {\n visibleSection = {};\n }\n for (var rowIdx = 0; rowIdx < rowIDs.length; rowIdx++) {\n var rowID = rowIDs[rowIdx];\n var frame = this._childFrames[totalIndex];\n totalIndex++;\n if (!frame) {\n break;\n }\n var rowVisible = visibleSection[rowID];\n var top = frame.y;\n var bottom = top + frame.height;\n if (top > visibleBottom || bottom < visibleTop) {\n if (rowVisible) {\n visibilityChanged = true;\n delete visibleSection[rowID];\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = false;\n }\n } else if (!rowVisible) {\n visibilityChanged = true;\n visibleSection[rowID] = true;\n if (!changedRows[sectionID]) {\n changedRows[sectionID] = {};\n }\n changedRows[sectionID][rowID] = true;\n }\n }\n if (!isEmpty(visibleSection)) {\n this._visibleRows[sectionID] = visibleSection;\n } else if (this._visibleRows[sectionID]) {\n delete this._visibleRows[sectionID];\n }\n }\n visibilityChanged && this.props.onChangeVisibleRows(this._visibleRows, changedRows);\n },\n\n _onScroll: function(e) {\n this.scrollProperties.visibleHeight = e.nativeEvent.layoutMeasurement.height;\n this.scrollProperties.contentHeight = e.nativeEvent.contentSize.height;\n this.scrollProperties.offsetY = e.nativeEvent.contentOffset.y;\n this._updateVisibleRows(e.nativeEvent.updatedChildFrames);\n var nearEnd = this._getDistanceFromEnd(this.scrollProperties) < this.props.onEndReachedThreshold;\n if (nearEnd &&\n this.props.onEndReached &&\n this.scrollProperties.contentHeight !== this._sentEndForContentHeight &&\n this.state.curRenderedRowsCount === this.props.dataSource.getRowCount()) {\n this._sentEndForContentHeight = this.scrollProperties.contentHeight;\n this.props.onEndReached(e);\n } else {\n this._renderMoreRowsIfNeeded();\n }\n\n this.props.onScroll && this.props.onScroll(e);\n },\n});\n\nmodule.exports = ListView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListView.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListViewDataSource.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar isEmpty=require('isEmpty');\nvar warning=require('warning');\n\nfunction defaultGetRowData(\ndataBlob,\nsectionID,\nrowID)\n{\nreturn dataBlob[sectionID][rowID];}\n\n\nfunction defaultGetSectionHeaderData(\ndataBlob,\nsectionID)\n{\nreturn dataBlob[sectionID];}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nListViewDataSource=(function(){\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction ListViewDataSource(params){_classCallCheck(this,ListViewDataSource);\ninvariant(\nparams && typeof params.rowHasChanged === 'function',\n'Must provide a rowHasChanged function.');\n\nthis._rowHasChanged = params.rowHasChanged;\nthis._getRowData = params.getRowData || defaultGetRowData;\nthis._sectionHeaderHasChanged = params.sectionHeaderHasChanged;\nthis._getSectionHeaderData = \nparams.getSectionHeaderData || defaultGetSectionHeaderData;\n\nthis._dataBlob = null;\nthis._dirtyRows = [];\nthis._dirtySections = [];\nthis._cachedRowCount = 0;\n\n\n\nthis.rowIdentities = [];\nthis.sectionIdentities = [];}_createClass(ListViewDataSource,[{key:'cloneWithRows',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithRows(\ndataBlob,\nrowIdentities)\n{\nvar rowIds=rowIdentities?[rowIdentities]:null;\nif(!this._sectionHeaderHasChanged){\nthis._sectionHeaderHasChanged = function(){return false;};}\n\nreturn this.cloneWithRowsAndSections({s1:dataBlob},['s1'],rowIds);}},{key:'cloneWithRowsAndSections',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithRowsAndSections(\ndataBlob,\nsectionIdentities,\nrowIdentities)\n{\ninvariant(\ntypeof this._sectionHeaderHasChanged === 'function',\n'Must provide a sectionHeaderHasChanged function with section data.');\n\nvar newSource=new ListViewDataSource({\ngetRowData:this._getRowData,\ngetSectionHeaderData:this._getSectionHeaderData,\nrowHasChanged:this._rowHasChanged,\nsectionHeaderHasChanged:this._sectionHeaderHasChanged});\n\nnewSource._dataBlob = dataBlob;\nif(sectionIdentities){\nnewSource.sectionIdentities = sectionIdentities;}else \n{\nnewSource.sectionIdentities = Object.keys(dataBlob);}\n\nif(rowIdentities){\nnewSource.rowIdentities = rowIdentities;}else \n{\nnewSource.rowIdentities = [];\nnewSource.sectionIdentities.forEach(function(sectionID){\nnewSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));});}\n\n\nnewSource._cachedRowCount = countRows(newSource.rowIdentities);\n\nnewSource._calculateDirtyArrays(\nthis._dataBlob,\nthis.sectionIdentities,\nthis.rowIdentities);\n\n\nreturn newSource;}},{key:'getRowCount',value:\n\n\nfunction getRowCount(){\nreturn this._cachedRowCount;}},{key:'rowShouldUpdate',value:\n\n\n\n\n\nfunction rowShouldUpdate(sectionIndex,rowIndex){\nvar needsUpdate=this._dirtyRows[sectionIndex][rowIndex];\nwarning(needsUpdate !== undefined,\n'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex);\nreturn needsUpdate;}},{key:'getRowData',value:\n\n\n\n\n\nfunction getRowData(sectionIndex,rowIndex){\nvar sectionID=this.sectionIdentities[sectionIndex];\nvar rowID=this.rowIdentities[sectionIndex][rowIndex];\nwarning(\nsectionID !== undefined && rowID !== undefined,\n'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex);\n\nreturn this._getRowData(this._dataBlob,sectionID,rowID);}},{key:'getRowIDForFlatIndex',value:\n\n\n\n\n\n\nfunction getRowIDForFlatIndex(index){\nvar accessIndex=index;\nfor(var ii=0;ii < this.sectionIdentities.length;ii++) {\nif(accessIndex >= this.rowIdentities[ii].length){\naccessIndex -= this.rowIdentities[ii].length;}else \n{\nreturn this.rowIdentities[ii][accessIndex];}}\n\n\nreturn null;}},{key:'getSectionIDForFlatIndex',value:\n\n\n\n\n\n\nfunction getSectionIDForFlatIndex(index){\nvar accessIndex=index;\nfor(var ii=0;ii < this.sectionIdentities.length;ii++) {\nif(accessIndex >= this.rowIdentities[ii].length){\naccessIndex -= this.rowIdentities[ii].length;}else \n{\nreturn this.sectionIdentities[ii];}}\n\n\nreturn null;}},{key:'getSectionLengths',value:\n\n\n\n\n\nfunction getSectionLengths(){\nvar results=[];\nfor(var ii=0;ii < this.sectionIdentities.length;ii++) {\nresults.push(this.rowIdentities[ii].length);}\n\nreturn results;}},{key:'sectionHeaderShouldUpdate',value:\n\n\n\n\n\nfunction sectionHeaderShouldUpdate(sectionIndex){\nvar needsUpdate=this._dirtySections[sectionIndex];\nwarning(needsUpdate !== undefined,\n'missing dirtyBit for section: ' + sectionIndex);\nreturn needsUpdate;}},{key:'getSectionHeaderData',value:\n\n\n\n\n\nfunction getSectionHeaderData(sectionIndex){\nif(!this._getSectionHeaderData){\nreturn null;}\n\nvar sectionID=this.sectionIdentities[sectionIndex];\nwarning(sectionID !== undefined,\n'renderSection called on invalid section: ' + sectionIndex);\nreturn this._getSectionHeaderData(this._dataBlob,sectionID);}},{key:'_calculateDirtyArrays',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _calculateDirtyArrays(\nprevDataBlob,\nprevSectionIDs,\nprevRowIDs)\n{\n\nvar prevSectionsHash=keyedDictionaryFromArray(prevSectionIDs);\nvar prevRowsHash={};\nfor(var ii=0;ii < prevRowIDs.length;ii++) {\nvar sectionID=prevSectionIDs[ii];\nwarning(\n!prevRowsHash[sectionID],\n'SectionID appears more than once: ' + sectionID);\n\nprevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]);}\n\n\n\nthis._dirtySections = [];\nthis._dirtyRows = [];\n\nvar dirty;\nfor(var sIndex=0;sIndex < this.sectionIdentities.length;sIndex++) {\nvar sectionID=this.sectionIdentities[sIndex];\n\ndirty = !prevSectionsHash[sectionID];\nvar sectionHeaderHasChanged=this._sectionHeaderHasChanged;\nif(!dirty && sectionHeaderHasChanged){\ndirty = sectionHeaderHasChanged(\nthis._getSectionHeaderData(prevDataBlob,sectionID),\nthis._getSectionHeaderData(this._dataBlob,sectionID));}\n\n\nthis._dirtySections.push(!!dirty);\n\nthis._dirtyRows[sIndex] = [];\nfor(var rIndex=0;rIndex < this.rowIdentities[sIndex].length;rIndex++) {\nvar rowID=this.rowIdentities[sIndex][rIndex];\n\ndirty = \n!prevSectionsHash[sectionID] || \n!prevRowsHash[sectionID][rowID] || \nthis._rowHasChanged(\nthis._getRowData(prevDataBlob,sectionID,rowID),\nthis._getRowData(this._dataBlob,sectionID,rowID));\n\nthis._dirtyRows[sIndex].push(!!dirty);}}}}]);return ListViewDataSource;})();\n\n\n\n\n\nfunction countRows(allRowIDs){\nvar totalRows=0;\nfor(var sectionIdx=0;sectionIdx < allRowIDs.length;sectionIdx++) {\nvar rowIDs=allRowIDs[sectionIdx];\ntotalRows += rowIDs.length;}\n\nreturn totalRows;}\n\n\nfunction keyedDictionaryFromArray(arr){\nif(isEmpty(arr)){\nreturn {};}\n\nvar result={};\nfor(var ii=0;ii < arr.length;ii++) {\nvar key=arr[ii];\nwarning(!result[key],'Value appears more than once in array: ' + key);\nresult[key] = true;}\n\nreturn result;}\n\n\n\nmodule.exports = ListViewDataSource;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule ListViewDataSource\n * @typechecks\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar isEmpty = require('isEmpty');\nvar warning = require('warning');\n\nfunction defaultGetRowData(\n dataBlob: any,\n sectionID: number | string,\n rowID: number | string\n): any {\n return dataBlob[sectionID][rowID];\n}\n\nfunction defaultGetSectionHeaderData(\n dataBlob: any,\n sectionID: number | string\n): any {\n return dataBlob[sectionID];\n}\n\ntype differType = (data1: any, data2: any) => bool;\n\ntype ParamType = {\n rowHasChanged: differType;\n getRowData: ?typeof defaultGetRowData;\n sectionHeaderHasChanged: ?differType;\n getSectionHeaderData: ?typeof defaultGetSectionHeaderData;\n}\n\n/**\n * Provides efficient data processing and access to the\n * `ListView` component. A `ListViewDataSource` is created with functions for\n * extracting data from the input blob, and comparing elements (with default\n * implementations for convenience). The input blob can be as simple as an\n * array of strings, or an object with rows nested inside section objects.\n *\n * To update the data in the datasource, use `cloneWithRows` (or\n * `cloneWithRowsAndSections` if you care about sections). The data in the\n * data source is immutable, so you can't modify it directly. The clone methods\n * suck in the new data and compute a diff for each row so ListView knows\n * whether to re-render it or not.\n *\n * In this example, a component receives data in chunks, handled by\n * `_onDataArrived`, which concats the new data onto the old data and updates the\n * data source. We use `concat` to create a new array - mutating `this._data`,\n * e.g. with `this._data.push(newRowData)`, would be an error. `_rowHasChanged`\n * understands the shape of the row data and knows how to efficiently compare\n * it.\n *\n * ```\n * getInitialState: function() {\n * var ds = new ListViewDataSource({rowHasChanged: this._rowHasChanged});\n * return {ds};\n * },\n * _onDataArrived(newData) {\n * this._data = this._data.concat(newData);\n * this.setState({\n * ds: this.state.ds.cloneWithRows(this._data)\n * });\n * }\n * ```\n */\n\nclass ListViewDataSource {\n\n /**\n * You can provide custom extraction and `hasChanged` functions for section\n * headers and rows. If absent, data will be extracted with the\n * `defaultGetRowData` and `defaultGetSectionHeaderData` functions.\n *\n * The default extractor expects data of one of the following forms:\n *\n * { sectionID_1: { rowID_1: <rowData1>, ... }, ... }\n *\n * or\n *\n * { sectionID_1: [ <rowData1>, <rowData2>, ... ], ... }\n *\n * or\n *\n * [ [ <rowData1>, <rowData2>, ... ], ... ]\n *\n * The constructor takes in a params argument that can contain any of the\n * following:\n *\n * - getRowData(dataBlob, sectionID, rowID);\n * - getSectionHeaderData(dataBlob, sectionID);\n * - rowHasChanged(prevRowData, nextRowData);\n * - sectionHeaderHasChanged(prevSectionData, nextSectionData);\n */\n constructor(params: ParamType) {\n invariant(\n params && typeof params.rowHasChanged === 'function',\n 'Must provide a rowHasChanged function.'\n );\n this._rowHasChanged = params.rowHasChanged;\n this._getRowData = params.getRowData || defaultGetRowData;\n this._sectionHeaderHasChanged = params.sectionHeaderHasChanged;\n this._getSectionHeaderData =\n params.getSectionHeaderData || defaultGetSectionHeaderData;\n\n this._dataBlob = null;\n this._dirtyRows = [];\n this._dirtySections = [];\n this._cachedRowCount = 0;\n\n // These two private variables are accessed by outsiders because ListView\n // uses them to iterate over the data in this class.\n this.rowIdentities = [];\n this.sectionIdentities = [];\n }\n\n /**\n * Clones this `ListViewDataSource` with the specified `dataBlob` and\n * `rowIdentities`. The `dataBlob` is just an aribitrary blob of data. At\n * construction an extractor to get the interesting informatoin was defined\n * (or the default was used).\n *\n * The `rowIdentities` is is a 2D array of identifiers for rows.\n * ie. [['a1', 'a2'], ['b1', 'b2', 'b3'], ...]. If not provided, it's\n * assumed that the keys of the section data are the row identities.\n *\n * Note: This function does NOT clone the data in this data source. It simply\n * passes the functions defined at construction to a new data source with\n * the data specified. If you wish to maintain the existing data you must\n * handle merging of old and new data separately and then pass that into\n * this function as the `dataBlob`.\n */\n cloneWithRows(\n dataBlob: Array<any> | {[key: string]: any},\n rowIdentities: ?Array<string>\n ): ListViewDataSource {\n var rowIds = rowIdentities ? [rowIdentities] : null;\n if (!this._sectionHeaderHasChanged) {\n this._sectionHeaderHasChanged = () => false;\n }\n return this.cloneWithRowsAndSections({s1: dataBlob}, ['s1'], rowIds);\n }\n\n /**\n * This performs the same function as the `cloneWithRows` function but here\n * you also specify what your `sectionIdentities` are. If you don't care\n * about sections you should safely be able to use `cloneWithRows`.\n *\n * `sectionIdentities` is an array of identifiers for sections.\n * ie. ['s1', 's2', ...]. If not provided, it's assumed that the\n * keys of dataBlob are the section identities.\n *\n * Note: this returns a new object!\n */\n cloneWithRowsAndSections(\n dataBlob: any,\n sectionIdentities: ?Array<string>,\n rowIdentities: ?Array<Array<string>>\n ): ListViewDataSource {\n invariant(\n typeof this._sectionHeaderHasChanged === 'function',\n 'Must provide a sectionHeaderHasChanged function with section data.'\n );\n var newSource = new ListViewDataSource({\n getRowData: this._getRowData,\n getSectionHeaderData: this._getSectionHeaderData,\n rowHasChanged: this._rowHasChanged,\n sectionHeaderHasChanged: this._sectionHeaderHasChanged,\n });\n newSource._dataBlob = dataBlob;\n if (sectionIdentities) {\n newSource.sectionIdentities = sectionIdentities;\n } else {\n newSource.sectionIdentities = Object.keys(dataBlob);\n }\n if (rowIdentities) {\n newSource.rowIdentities = rowIdentities;\n } else {\n newSource.rowIdentities = [];\n newSource.sectionIdentities.forEach((sectionID) => {\n newSource.rowIdentities.push(Object.keys(dataBlob[sectionID]));\n });\n }\n newSource._cachedRowCount = countRows(newSource.rowIdentities);\n\n newSource._calculateDirtyArrays(\n this._dataBlob,\n this.sectionIdentities,\n this.rowIdentities\n );\n\n return newSource;\n }\n\n getRowCount(): number {\n return this._cachedRowCount;\n }\n\n /**\n * Returns if the row is dirtied and needs to be rerendered\n */\n rowShouldUpdate(sectionIndex: number, rowIndex: number): bool {\n var needsUpdate = this._dirtyRows[sectionIndex][rowIndex];\n warning(needsUpdate !== undefined,\n 'missing dirtyBit for section, row: ' + sectionIndex + ', ' + rowIndex);\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the row.\n */\n getRowData(sectionIndex: number, rowIndex: number): any {\n var sectionID = this.sectionIdentities[sectionIndex];\n var rowID = this.rowIdentities[sectionIndex][rowIndex];\n warning(\n sectionID !== undefined && rowID !== undefined,\n 'rendering invalid section, row: ' + sectionIndex + ', ' + rowIndex\n );\n return this._getRowData(this._dataBlob, sectionID, rowID);\n }\n\n /**\n * Gets the rowID at index provided if the dataSource arrays were flattened,\n * or null of out of range indexes.\n */\n getRowIDForFlatIndex(index: number): ?string {\n var accessIndex = index;\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.rowIdentities[ii][accessIndex];\n }\n }\n return null;\n }\n\n /**\n * Gets the sectionID at index provided if the dataSource arrays were flattened,\n * or null for out of range indexes.\n */\n getSectionIDForFlatIndex(index: number): ?string {\n var accessIndex = index;\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n if (accessIndex >= this.rowIdentities[ii].length) {\n accessIndex -= this.rowIdentities[ii].length;\n } else {\n return this.sectionIdentities[ii];\n }\n }\n return null;\n }\n\n /**\n * Returns an array containing the number of rows in each section\n */\n getSectionLengths(): Array<number> {\n var results = [];\n for (var ii = 0; ii < this.sectionIdentities.length; ii++) {\n results.push(this.rowIdentities[ii].length);\n }\n return results;\n }\n\n /**\n * Returns if the section header is dirtied and needs to be rerendered\n */\n sectionHeaderShouldUpdate(sectionIndex: number): bool {\n var needsUpdate = this._dirtySections[sectionIndex];\n warning(needsUpdate !== undefined,\n 'missing dirtyBit for section: ' + sectionIndex);\n return needsUpdate;\n }\n\n /**\n * Gets the data required to render the section header\n */\n getSectionHeaderData(sectionIndex: number): any {\n if (!this._getSectionHeaderData) {\n return null;\n }\n var sectionID = this.sectionIdentities[sectionIndex];\n warning(sectionID !== undefined,\n 'renderSection called on invalid section: ' + sectionIndex);\n return this._getSectionHeaderData(this._dataBlob, sectionID);\n }\n\n /**\n * Private members and methods.\n */\n\n _getRowData: typeof defaultGetRowData;\n _getSectionHeaderData: typeof defaultGetSectionHeaderData;\n _rowHasChanged: differType;\n _sectionHeaderHasChanged: ?differType;\n\n _dataBlob: any;\n _dirtyRows: Array<Array<bool>>;\n _dirtySections: Array<bool>;\n _cachedRowCount: number;\n\n // These two 'protected' variables are accessed by ListView to iterate over\n // the data in this class.\n rowIdentities: Array<Array<string>>;\n sectionIdentities: Array<string>;\n\n _calculateDirtyArrays(\n prevDataBlob: any,\n prevSectionIDs: Array<string>,\n prevRowIDs: Array<Array<string>>\n ): void {\n // construct a hashmap of the existing (old) id arrays\n var prevSectionsHash = keyedDictionaryFromArray(prevSectionIDs);\n var prevRowsHash = {};\n for (var ii = 0; ii < prevRowIDs.length; ii++) {\n var sectionID = prevSectionIDs[ii];\n warning(\n !prevRowsHash[sectionID],\n 'SectionID appears more than once: ' + sectionID\n );\n prevRowsHash[sectionID] = keyedDictionaryFromArray(prevRowIDs[ii]);\n }\n\n // compare the 2 identity array and get the dirtied rows\n this._dirtySections = [];\n this._dirtyRows = [];\n\n var dirty;\n for (var sIndex = 0; sIndex < this.sectionIdentities.length; sIndex++) {\n var sectionID = this.sectionIdentities[sIndex];\n // dirty if the sectionHeader is new or _sectionHasChanged is true\n dirty = !prevSectionsHash[sectionID];\n var sectionHeaderHasChanged = this._sectionHeaderHasChanged;\n if (!dirty && sectionHeaderHasChanged) {\n dirty = sectionHeaderHasChanged(\n this._getSectionHeaderData(prevDataBlob, sectionID),\n this._getSectionHeaderData(this._dataBlob, sectionID)\n );\n }\n this._dirtySections.push(!!dirty);\n\n this._dirtyRows[sIndex] = [];\n for (var rIndex = 0; rIndex < this.rowIdentities[sIndex].length; rIndex++) {\n var rowID = this.rowIdentities[sIndex][rIndex];\n // dirty if the section is new, row is new or _rowHasChanged is true\n dirty =\n !prevSectionsHash[sectionID] ||\n !prevRowsHash[sectionID][rowID] ||\n this._rowHasChanged(\n this._getRowData(prevDataBlob, sectionID, rowID),\n this._getRowData(this._dataBlob, sectionID, rowID)\n );\n this._dirtyRows[sIndex].push(!!dirty);\n }\n }\n }\n}\n\nfunction countRows(allRowIDs) {\n var totalRows = 0;\n for (var sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx++) {\n var rowIDs = allRowIDs[sectionIdx];\n totalRows += rowIDs.length;\n }\n return totalRows;\n}\n\nfunction keyedDictionaryFromArray(arr) {\n if (isEmpty(arr)) {\n return {};\n }\n var result = {};\n for (var ii = 0; ii < arr.length; ii++) {\n var key = arr[ii];\n warning(!result[key], 'Value appears more than once in array: ' + key);\n result[key] = true;\n }\n return result;\n}\n\n\nmodule.exports = ListViewDataSource;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/ListView/ListViewDataSource.js"},"mtime":1435359323000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/isEmpty.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nisEmpty(obj){\nif(Array.isArray(obj)){\nreturn obj.length === 0;}else \nif(typeof obj === 'object'){\nfor(var i in obj) {\nreturn false;}\n\nreturn true;}else \n{\nreturn !obj;}}\n\n\n\nmodule.exports = isEmpty;","sourceCode":"/**\n * @generated SignedSource<<97ffcebc9ae390e734026a4f3964bff6>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule isEmpty\n */\n\n/**\n * Mimics empty from PHP.\n */\nfunction isEmpty(obj) {\n if (Array.isArray(obj)) {\n return obj.length === 0;\n } else if (typeof obj === 'object') {\n for (var i in obj) {\n return false;\n }\n return true;\n } else {\n return !obj;\n }\n}\n\nmodule.exports = isEmpty;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/isEmpty.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar Platform=require('Platform');\nvar PointPropType=require('PointPropType');\nvar RCTScrollView=require('NativeModules').UIManager.RCTScrollView;\nvar RCTScrollViewConsts=RCTScrollView.Constants;\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar ScrollResponder=require('ScrollResponder');\nvar StyleSheet=require('StyleSheet');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar View=require('View');\nvar ViewStylePropTypes=require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar deepDiffer=require('deepDiffer');\nvar flattenStyle=require('flattenStyle');\nvar insetsDiffer=require('insetsDiffer');\nvar invariant=require('invariant');\nvar pointsDiffer=require('pointsDiffer');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar PropTypes=React.PropTypes;\n\nvar SCROLLVIEW='ScrollView';\nvar INNERVIEW='InnerScrollView';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ScrollView=React.createClass({displayName:'ScrollView',\npropTypes:{\nautomaticallyAdjustContentInsets:PropTypes.bool,\ncontentInset:EdgeInsetsPropType,\ncontentOffset:PointPropType,\nonScroll:PropTypes.func,\nonScrollAnimationEnd:PropTypes.func,\nscrollEnabled:PropTypes.bool,\nscrollIndicatorInsets:EdgeInsetsPropType,\nshowsHorizontalScrollIndicator:PropTypes.bool,\nshowsVerticalScrollIndicator:PropTypes.bool,\nstyle:StyleSheetPropType(ViewStylePropTypes),\nscrollEventThrottle:PropTypes.number,\n\n\n\n\n\n\n\nbounces:PropTypes.bool,\n\n\n\n\n\nbouncesZoom:PropTypes.bool,\n\n\n\n\n\nalwaysBounceHorizontal:PropTypes.bool,\n\n\n\n\n\nalwaysBounceVertical:PropTypes.bool,\n\n\n\n\n\n\ncenterContent:PropTypes.bool,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncontentContainerStyle:StyleSheetPropType(ViewStylePropTypes),\n\n\n\n\n\n\ndecelerationRate:PropTypes.number,\n\n\n\n\nhorizontal:PropTypes.bool,\n\n\n\n\ndirectionalLockEnabled:PropTypes.bool,\n\n\n\n\ncanCancelContentTouches:PropTypes.bool,\n\n\n\n\n\n\n\n\nkeyboardDismissMode:PropTypes.oneOf([\n'none',\n'interactive',\n'on-drag']),\n\n\n\n\n\n\n\nkeyboardShouldPersistTaps:PropTypes.bool,\n\n\n\nmaximumZoomScale:PropTypes.number,\n\n\n\nminimumZoomScale:PropTypes.number,\n\n\n\n\n\npagingEnabled:PropTypes.bool,\n\n\n\n\nscrollsToTop:PropTypes.bool,\n\n\n\n\n\n\n\nstickyHeaderIndices:PropTypes.arrayOf(PropTypes.number),\n\n\n\n\n\n\nremoveClippedSubviews:PropTypes.bool,\n\n\n\nzoomScale:PropTypes.number},\n\n\nmixins:[ScrollResponder.Mixin],\n\ngetInitialState:function(){\nreturn this.scrollResponderMixinGetInitialState();},\n\n\nsetNativeProps:function(props){\nthis.refs[SCROLLVIEW].setNativeProps(props);},\n\n\n\n\n\n\n\n\ngetScrollResponder:function(){\nreturn this;},\n\n\ngetInnerViewNode:function(){\nreturn React.findNodeHandle(this.refs[INNERVIEW]);},\n\n\nscrollTo:function(destY,destX){\nif(Platform.OS === 'android'){\nRCTUIManager.dispatchViewManagerCommand(\nReact.findNodeHandle(this),\nRCTUIManager.RCTScrollView.Commands.scrollTo,\n[destX || 0,destY || 0]);}else \n\n{\nRCTUIManager.scrollTo(\nReact.findNodeHandle(this),\ndestX || 0,\ndestY || 0);}},\n\n\n\n\nscrollWithoutAnimationTo:function(destY,destX){\nRCTUIManager.scrollWithoutAnimationTo(\nReact.findNodeHandle(this),\ndestX || 0,\ndestY || 0);},\n\n\n\nrender:function(){\nvar contentContainerStyle=[\nthis.props.horizontal && styles.contentContainerHorizontal,\nthis.props.contentContainerStyle];\n\nif(__DEV__ && this.props.style){\nvar style=flattenStyle(this.props.style);\nvar childLayoutProps=['alignItems','justifyContent'].\nfilter(function(prop){return style && style[prop] !== undefined;});\ninvariant(\nchildLayoutProps.length === 0,\n'ScrollView child layout (' + JSON.stringify(childLayoutProps) + \n') must by applied through the contentContainerStyle prop.');}\n\n\nif(__DEV__){\nif(this.props.onScroll && !this.props.scrollEventThrottle){\nvar onScroll=this.props.onScroll;\nthis.props.onScroll = function(){\nconsole.log(\n'You specified `onScroll` on a <ScrollView> but not ' + \n'`scrollEventThrottle`. You will only receive one event. ' + \n'Using `16` you get all the events but be aware that it may ' + \n'cause frame drops, use a bigger number if you don\\'t need as ' + \n'much precision.');\n\nonScroll.apply(this,arguments);};}}\n\n\n\n\nvar contentContainer=\nReact.createElement(View,{\nref:INNERVIEW,\nstyle:contentContainerStyle,\nremoveClippedSubviews:this.props.removeClippedSubviews},\nthis.props.children);\n\n\nvar alwaysBounceHorizontal=\nthis.props.alwaysBounceHorizontal !== undefined?\nthis.props.alwaysBounceHorizontal:\nthis.props.horizontal;\n\nvar alwaysBounceVertical=\nthis.props.alwaysBounceVertical !== undefined?\nthis.props.alwaysBounceVertical:\n!this.props.horizontal;\n\nvar props=_extends({},\nthis.props,{\nalwaysBounceHorizontal:alwaysBounceHorizontal,\nalwaysBounceVertical:alwaysBounceVertical,\nstyle:[styles.base,this.props.style],\nonTouchStart:this.scrollResponderHandleTouchStart,\nonTouchMove:this.scrollResponderHandleTouchMove,\nonTouchEnd:this.scrollResponderHandleTouchEnd,\nonScrollBeginDrag:this.scrollResponderHandleScrollBeginDrag,\nonScrollEndDrag:this.scrollResponderHandleScrollEndDrag,\nonMomentumScrollBegin:this.scrollResponderHandleMomentumScrollBegin,\nonMomentumScrollEnd:this.scrollResponderHandleMomentumScrollEnd,\nonStartShouldSetResponder:this.scrollResponderHandleStartShouldSetResponder,\nonStartShouldSetResponderCapture:this.scrollResponderHandleStartShouldSetResponderCapture,\nonScrollShouldSetResponder:this.scrollResponderHandleScrollShouldSetResponder,\nonScroll:this.scrollResponderHandleScroll,\nonResponderGrant:this.scrollResponderHandleResponderGrant,\nonResponderTerminationRequest:this.scrollResponderHandleTerminationRequest,\nonResponderTerminate:this.scrollResponderHandleTerminate,\nonResponderRelease:this.scrollResponderHandleResponderRelease,\nonResponderReject:this.scrollResponderHandleResponderReject});\n\n\nvar ScrollViewClass;\nif(Platform.OS === 'ios'){\nScrollViewClass = RCTScrollView;}else \nif(Platform.OS === 'android'){\nif(this.props.horizontal){\nScrollViewClass = AndroidHorizontalScrollView;}else \n{\nScrollViewClass = AndroidScrollView;}\n\nvar keyboardDismissModeConstants={\n'none':RCTScrollViewConsts.KeyboardDismissMode.None,\n'interactive':RCTScrollViewConsts.KeyboardDismissMode.Interactive,\n'on-drag':RCTScrollViewConsts.KeyboardDismissMode.OnDrag};\n\nprops.keyboardDismissMode = props.keyboardDismissMode?\nkeyboardDismissModeConstants[props.keyboardDismissMode]:undefined;}\n\ninvariant(\nScrollViewClass !== undefined,\n'ScrollViewClass must not be undefined');\n\n\nreturn (\nReact.createElement(ScrollViewClass,_extends({},props,{ref:SCROLLVIEW}),\ncontentContainer));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nbase:{\nflex:1},\n\ncontentContainerHorizontal:{\nalignSelf:'flex-start',\nflexDirection:'row'}});\n\n\n\nvar validAttributes=_extends({},\nReactNativeViewAttributes.UIView,{\nalwaysBounceHorizontal:true,\nalwaysBounceVertical:true,\nautomaticallyAdjustContentInsets:true,\nbounces:true,\ncenterContent:true,\ncontentInset:{diff:insetsDiffer},\ncontentOffset:{diff:pointsDiffer},\ndecelerationRate:true,\nhorizontal:true,\nkeyboardDismissMode:true,\nkeyboardShouldPersistTaps:true,\nmaximumZoomScale:true,\nminimumZoomScale:true,\npagingEnabled:true,\nremoveClippedSubviews:true,\nscrollEnabled:true,\nscrollIndicatorInsets:{diff:insetsDiffer},\nscrollsToTop:true,\nshowsHorizontalScrollIndicator:true,\nshowsVerticalScrollIndicator:true,\nstickyHeaderIndices:{diff:deepDiffer},\nscrollEventThrottle:true,\nzoomScale:true});\n\n\nif(Platform.OS === 'android'){\nvar AndroidScrollView=createReactNativeComponentClass({\nvalidAttributes:validAttributes,\nuiViewClassName:'RCTScrollView'});\n\nvar AndroidHorizontalScrollView=createReactNativeComponentClass({\nvalidAttributes:validAttributes,\nuiViewClassName:'AndroidHorizontalScrollView'});}else \n\nif(Platform.OS === 'ios'){\nvar RCTScrollView=requireNativeComponent('RCTScrollView',ScrollView);}\n\n\nmodule.exports = ScrollView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ScrollView\n * @flow\n */\n'use strict';\n\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar Platform = require('Platform');\nvar PointPropType = require('PointPropType');\nvar RCTScrollView = require('NativeModules').UIManager.RCTScrollView;\nvar RCTScrollViewConsts = RCTScrollView.Constants;\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar ScrollResponder = require('ScrollResponder');\nvar StyleSheet = require('StyleSheet');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar View = require('View');\nvar ViewStylePropTypes = require('ViewStylePropTypes');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar deepDiffer = require('deepDiffer');\nvar flattenStyle = require('flattenStyle');\nvar insetsDiffer = require('insetsDiffer');\nvar invariant = require('invariant');\nvar pointsDiffer = require('pointsDiffer');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar PropTypes = React.PropTypes;\n\nvar SCROLLVIEW = 'ScrollView';\nvar INNERVIEW = 'InnerScrollView';\n\n/**\n * Component that wraps platform ScrollView while providing\n * integration with touch locking \"responder\" system.\n *\n * Keep in mind that ScrollViews must have a bounded height in order to work,\n * since they contain unbounded-height children into a bounded container (via\n * a scroll interaction). In order to bound the height of a ScrollView, either\n * set the height of the view directly (discouraged) or make sure all parent\n * views have bounded height. Forgetting to transfer `{flex: 1}` down the\n * view stack can lead to errors here, which the element inspector makes\n * easy to debug.\n *\n * Doesn't yet support other contained responders from blocking this scroll\n * view from becoming the responder.\n */\n\nvar ScrollView = React.createClass({\n propTypes: {\n automaticallyAdjustContentInsets: PropTypes.bool, // true\n contentInset: EdgeInsetsPropType, // zeros\n contentOffset: PointPropType, // zeros\n onScroll: PropTypes.func,\n onScrollAnimationEnd: PropTypes.func,\n scrollEnabled: PropTypes.bool, // true\n scrollIndicatorInsets: EdgeInsetsPropType, // zeros\n showsHorizontalScrollIndicator: PropTypes.bool,\n showsVerticalScrollIndicator: PropTypes.bool,\n style: StyleSheetPropType(ViewStylePropTypes),\n scrollEventThrottle: PropTypes.number, // null\n\n /**\n * When true, the scroll view bounces when it reaches the end of the\n * content if the content is larger then the scroll view along the axis of\n * the scroll direction. When false, it disables all bouncing even if\n * the `alwaysBounce*` props are true. The default value is true.\n */\n bounces: PropTypes.bool,\n /**\n * When true, gestures can drive zoom past min/max and the zoom will animate\n * to the min/max value at gesture end, otherwise the zoom will not exceed\n * the limits.\n */\n bouncesZoom: PropTypes.bool,\n /**\n * When true, the scroll view bounces horizontally when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is true when `horizontal={true}` and false otherwise.\n */\n alwaysBounceHorizontal: PropTypes.bool,\n /**\n * When true, the scroll view bounces vertically when it reaches the end\n * even if the content is smaller than the scroll view itself. The default\n * value is false when `horizontal={true}` and true otherwise.\n */\n alwaysBounceVertical: PropTypes.bool,\n /**\n * When true, the scroll view automatically centers the content when the\n * content is smaller than the scroll view bounds; when the content is\n * larger than the scroll view, this property has no effect. The default\n * value is false.\n */\n centerContent: PropTypes.bool,\n /**\n * These styles will be applied to the scroll view content container which\n * wraps all of the child views. Example:\n *\n * return (\n * <ScrollView contentContainerStyle={styles.contentContainer}>\n * </ScrollView>\n * );\n * ...\n * var styles = StyleSheet.create({\n * contentContainer: {\n * paddingVertical: 20\n * }\n * });\n */\n contentContainerStyle: StyleSheetPropType(ViewStylePropTypes),\n /**\n * A floating-point number that determines how quickly the scroll view\n * decelerates after the user lifts their finger. Reasonable choices include\n * - Normal: 0.998 (the default)\n * - Fast: 0.9\n */\n decelerationRate: PropTypes.number,\n /**\n * When true, the scroll view's children are arranged horizontally in a row\n * instead of vertically in a column. The default value is false.\n */\n horizontal: PropTypes.bool,\n /**\n * When true, the ScrollView will try to lock to only vertical or horizontal\n * scrolling while dragging. The default value is false.\n */\n directionalLockEnabled: PropTypes.bool,\n /**\n * When false, once tracking starts, won't try to drag if the touch moves.\n * The default value is true.\n */\n canCancelContentTouches: PropTypes.bool,\n /**\n * Determines whether the keyboard gets dismissed in response to a drag.\n * - 'none' (the default), drags do not dismiss the keyboard.\n * - 'onDrag', the keyboard is dismissed when a drag begins.\n * - 'interactive', the keyboard is dismissed interactively with the drag\n * and moves in synchrony with the touch; dragging upwards cancels the\n * dismissal.\n */\n keyboardDismissMode: PropTypes.oneOf([\n 'none', // default\n 'interactive',\n 'on-drag',\n ]),\n /**\n * When false, tapping outside of the focused text input when the keyboard\n * is up dismisses the keyboard. When true, the scroll view will not catch\n * taps, and the keyboard will not dismiss automatically. The default value\n * is false.\n */\n keyboardShouldPersistTaps: PropTypes.bool,\n /**\n * The maximum allowed zoom scale. The default value is 1.0.\n */\n maximumZoomScale: PropTypes.number,\n /**\n * The minimum allowed zoom scale. The default value is 1.0.\n */\n minimumZoomScale: PropTypes.number,\n /**\n * When true, the scroll view stops on multiples of the scroll view's size\n * when scrolling. This can be used for horizontal pagination. The default\n * value is false.\n */\n pagingEnabled: PropTypes.bool,\n /**\n * When true, the scroll view scrolls to top when the status bar is tapped.\n * The default value is true.\n */\n scrollsToTop: PropTypes.bool,\n /**\n * An array of child indices determining which children get docked to the\n * top of the screen when scrolling. For example, passing\n * `stickyHeaderIndices={[0]}` will cause the first child to be fixed to the\n * top of the scroll view. This property is not supported in conjunction\n * with `horizontal={true}`.\n */\n stickyHeaderIndices: PropTypes.arrayOf(PropTypes.number),\n /**\n * Experimental: When true, offscreen child views (whose `overflow` value is\n * `hidden`) are removed from their native backing superview when offscreen.\n * This can improve scrolling performance on long lists. The default value is\n * false.\n */\n removeClippedSubviews: PropTypes.bool,\n /**\n * The current scale of the scroll view content. The default value is 1.0.\n */\n zoomScale: PropTypes.number,\n },\n\n mixins: [ScrollResponder.Mixin],\n\n getInitialState: function() {\n return this.scrollResponderMixinGetInitialState();\n },\n\n setNativeProps: function(props: Object) {\n this.refs[SCROLLVIEW].setNativeProps(props);\n },\n\n /**\n * Returns a reference to the underlying scroll responder, which supports\n * operations like `scrollTo`. All ScrollView-like components should\n * implement this method so that they can be composed while providing access\n * to the underlying scroll responder's methods.\n */\n getScrollResponder: function(): ReactComponent {\n return this;\n },\n\n getInnerViewNode: function(): any {\n return React.findNodeHandle(this.refs[INNERVIEW]);\n },\n\n scrollTo: function(destY?: number, destX?: number) {\n if (Platform.OS === 'android') {\n RCTUIManager.dispatchViewManagerCommand(\n React.findNodeHandle(this),\n RCTUIManager.RCTScrollView.Commands.scrollTo,\n [destX || 0, destY || 0]\n );\n } else {\n RCTUIManager.scrollTo(\n React.findNodeHandle(this),\n destX || 0,\n destY || 0\n );\n }\n },\n\n scrollWithoutAnimationTo: function(destY?: number, destX?: number) {\n RCTUIManager.scrollWithoutAnimationTo(\n React.findNodeHandle(this),\n destX || 0,\n destY || 0\n );\n },\n\n render: function() {\n var contentContainerStyle = [\n this.props.horizontal && styles.contentContainerHorizontal,\n this.props.contentContainerStyle,\n ];\n if (__DEV__ && this.props.style) {\n var style = flattenStyle(this.props.style);\n var childLayoutProps = ['alignItems', 'justifyContent']\n .filter((prop) => style && style[prop] !== undefined);\n invariant(\n childLayoutProps.length === 0,\n 'ScrollView child layout (' + JSON.stringify(childLayoutProps) +\n ') must by applied through the contentContainerStyle prop.'\n );\n }\n if (__DEV__) {\n if (this.props.onScroll && !this.props.scrollEventThrottle) {\n var onScroll = this.props.onScroll;\n this.props.onScroll = function() {\n console.log(\n 'You specified `onScroll` on a <ScrollView> but not ' +\n '`scrollEventThrottle`. You will only receive one event. ' +\n 'Using `16` you get all the events but be aware that it may ' +\n 'cause frame drops, use a bigger number if you don\\'t need as ' +\n 'much precision.'\n );\n onScroll.apply(this, arguments);\n };\n }\n }\n\n var contentContainer =\n <View\n ref={INNERVIEW}\n style={contentContainerStyle}\n removeClippedSubviews={this.props.removeClippedSubviews}>\n {this.props.children}\n </View>;\n\n var alwaysBounceHorizontal =\n this.props.alwaysBounceHorizontal !== undefined ?\n this.props.alwaysBounceHorizontal :\n this.props.horizontal;\n\n var alwaysBounceVertical =\n this.props.alwaysBounceVertical !== undefined ?\n this.props.alwaysBounceVertical :\n !this.props.horizontal;\n\n var props = {\n ...this.props,\n alwaysBounceHorizontal,\n alwaysBounceVertical,\n style: ([styles.base, this.props.style]: ?Array<any>),\n onTouchStart: this.scrollResponderHandleTouchStart,\n onTouchMove: this.scrollResponderHandleTouchMove,\n onTouchEnd: this.scrollResponderHandleTouchEnd,\n onScrollBeginDrag: this.scrollResponderHandleScrollBeginDrag,\n onScrollEndDrag: this.scrollResponderHandleScrollEndDrag,\n onMomentumScrollBegin: this.scrollResponderHandleMomentumScrollBegin,\n onMomentumScrollEnd: this.scrollResponderHandleMomentumScrollEnd,\n onStartShouldSetResponder: this.scrollResponderHandleStartShouldSetResponder,\n onStartShouldSetResponderCapture: this.scrollResponderHandleStartShouldSetResponderCapture,\n onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder,\n onScroll: this.scrollResponderHandleScroll,\n onResponderGrant: this.scrollResponderHandleResponderGrant,\n onResponderTerminationRequest: this.scrollResponderHandleTerminationRequest,\n onResponderTerminate: this.scrollResponderHandleTerminate,\n onResponderRelease: this.scrollResponderHandleResponderRelease,\n onResponderReject: this.scrollResponderHandleResponderReject,\n };\n\n var ScrollViewClass;\n if (Platform.OS === 'ios') {\n ScrollViewClass = RCTScrollView;\n } else if (Platform.OS === 'android') {\n if (this.props.horizontal) {\n ScrollViewClass = AndroidHorizontalScrollView;\n } else {\n ScrollViewClass = AndroidScrollView;\n }\n var keyboardDismissModeConstants = {\n 'none': RCTScrollViewConsts.KeyboardDismissMode.None, // default\n 'interactive': RCTScrollViewConsts.KeyboardDismissMode.Interactive,\n 'on-drag': RCTScrollViewConsts.KeyboardDismissMode.OnDrag,\n };\n props.keyboardDismissMode = props.keyboardDismissMode ?\n keyboardDismissModeConstants[props.keyboardDismissMode] : undefined;\n }\n invariant(\n ScrollViewClass !== undefined,\n 'ScrollViewClass must not be undefined'\n );\n\n return (\n <ScrollViewClass {...props} ref={SCROLLVIEW}>\n {contentContainer}\n </ScrollViewClass>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n base: {\n flex: 1,\n },\n contentContainerHorizontal: {\n alignSelf: 'flex-start',\n flexDirection: 'row',\n },\n});\n\nvar validAttributes = {\n ...ReactNativeViewAttributes.UIView,\n alwaysBounceHorizontal: true,\n alwaysBounceVertical: true,\n automaticallyAdjustContentInsets: true,\n bounces: true,\n centerContent: true,\n contentInset: {diff: insetsDiffer},\n contentOffset: {diff: pointsDiffer},\n decelerationRate: true,\n horizontal: true,\n keyboardDismissMode: true,\n keyboardShouldPersistTaps: true,\n maximumZoomScale: true,\n minimumZoomScale: true,\n pagingEnabled: true,\n removeClippedSubviews: true,\n scrollEnabled: true,\n scrollIndicatorInsets: {diff: insetsDiffer},\n scrollsToTop: true,\n showsHorizontalScrollIndicator: true,\n showsVerticalScrollIndicator: true,\n stickyHeaderIndices: {diff: deepDiffer},\n scrollEventThrottle: true,\n zoomScale: true,\n};\n\nif (Platform.OS === 'android') {\n var AndroidScrollView = createReactNativeComponentClass({\n validAttributes: validAttributes,\n uiViewClassName: 'RCTScrollView',\n });\n var AndroidHorizontalScrollView = createReactNativeComponentClass({\n validAttributes: validAttributes,\n uiViewClassName: 'AndroidHorizontalScrollView',\n });\n} else if (Platform.OS === 'ios') {\n var RCTScrollView = requireNativeComponent('RCTScrollView', ScrollView);\n}\n\nmodule.exports = ScrollView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/PointPropType.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\n\nvar PointPropType=createStrictShapeTypeChecker({\nx:PropTypes.number,\ny:PropTypes.number});\n\n\nmodule.exports = PointPropType;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PointPropType\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\n\nvar PointPropType = createStrictShapeTypeChecker({\n x: PropTypes.number,\n y: PropTypes.number,\n});\n\nmodule.exports = PointPropType;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/StyleSheet/PointPropType.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollResponder.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar React=require('React');\nvar Subscribable=require('Subscribable');\nvar TextInputState=require('TextInputState');\n\nvar RCTUIManager=NativeModules.UIManager;\nvar RCTUIManagerDeprecated=NativeModules.UIManager;\nvar RCTScrollViewConsts=RCTUIManager.RCTScrollView.Constants;\n\nvar warning=require('warning');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar IS_ANIMATING_TOUCH_START_THRESHOLD_MS=16;\n\n\n\n\n\n\n\n\n\n\nvar ScrollResponderMixin={\nmixins:[Subscribable.Mixin],\nstatics:RCTScrollViewConsts,\nscrollResponderMixinGetInitialState:function(){\nreturn {\nisTouching:false,\nlastMomentumScrollBeginTime:0,\nlastMomentumScrollEndTime:0,\n\n\n\n\n\n\nobservedScrollSinceBecomingResponder:false,\nbecameResponderWhileAnimating:false};},\n\n\n\n\n\n\nscrollResponderHandleScrollShouldSetResponder:function(){\nreturn this.state.isTouching;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleStartShouldSetResponder:function(){\nreturn false;},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleStartShouldSetResponderCapture:function(e){\n\nvar currentlyFocusedTextInput=TextInputState.currentlyFocusedField();\nif(!this.props.keyboardShouldPersistTaps && \ncurrentlyFocusedTextInput != null && \ne.target !== currentlyFocusedTextInput){\nreturn true;}\n\nreturn this.scrollResponderIsAnimating();},\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleResponderReject:function(){\nwarning(false,\"ScrollView doesn't take rejection well - scrolls anyway\");},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleTerminationRequest:function(){\nreturn !this.state.observedScrollSinceBecomingResponder;},\n\n\n\n\n\n\n\nscrollResponderHandleTouchEnd:function(e){\nvar nativeEvent=e.nativeEvent;\nthis.state.isTouching = nativeEvent.touches.length !== 0;\nthis.props.onTouchEnd && this.props.onTouchEnd(e);},\n\n\n\n\n\nscrollResponderHandleResponderRelease:function(e){\nthis.props.onResponderRelease && this.props.onResponderRelease(e);\n\n\n\nvar currentlyFocusedTextInput=TextInputState.currentlyFocusedField();\nif(!this.props.keyboardShouldPersistTaps && \ncurrentlyFocusedTextInput != null && \ne.target !== currentlyFocusedTextInput && \n!this.state.observedScrollSinceBecomingResponder && \n!this.state.becameResponderWhileAnimating){\nthis.props.onScrollResponderKeyboardDismissed && \nthis.props.onScrollResponderKeyboardDismissed(e);\nTextInputState.blurTextInput(currentlyFocusedTextInput);}},\n\n\n\nscrollResponderHandleScroll:function(e){\nthis.state.observedScrollSinceBecomingResponder = true;\nthis.props.onScroll && this.props.onScroll(e);},\n\n\n\n\n\nscrollResponderHandleResponderGrant:function(e){\nthis.state.observedScrollSinceBecomingResponder = false;\nthis.props.onResponderGrant && this.props.onResponderGrant(e);\nthis.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();},\n\n\n\n\n\n\n\n\n\nscrollResponderHandleScrollBeginDrag:function(e){\nthis.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);},\n\n\n\n\n\nscrollResponderHandleScrollEndDrag:function(e){\nthis.props.onScrollEndDrag && this.props.onScrollEndDrag(e);},\n\n\n\n\n\nscrollResponderHandleMomentumScrollBegin:function(e){\nthis.state.lastMomentumScrollBeginTime = Date.now();\nthis.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);},\n\n\n\n\n\nscrollResponderHandleMomentumScrollEnd:function(e){\nthis.state.lastMomentumScrollEndTime = Date.now();\nthis.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleTouchStart:function(e){\nthis.state.isTouching = true;\nthis.props.onTouchStart && this.props.onTouchStart(e);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderHandleTouchMove:function(e){\nthis.props.onTouchMove && this.props.onTouchMove(e);},\n\n\n\n\n\n\n\nscrollResponderIsAnimating:function(){\nvar now=Date.now();\nvar timeSinceLastMomentumScrollEnd=now - this.state.lastMomentumScrollEndTime;\nvar isAnimating=timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS || \nthis.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime;\nreturn isAnimating;},\n\n\n\n\n\n\n\nscrollResponderScrollTo:function(offsetX,offsetY){\nRCTUIManagerDeprecated.scrollTo(React.findNodeHandle(this),offsetX,offsetY);},\n\n\n\n\n\n\nscrollResponderZoomTo:function(rect){\nRCTUIManagerDeprecated.zoomToRect(React.findNodeHandle(this),rect);},\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderScrollNativeHandleToKeyboard:function(nodeHandle,additionalOffset,preventNegativeScrollOffset){\nthis.additionalScrollOffset = additionalOffset || 0;\nthis.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\nRCTUIManager.measureLayout(\nnodeHandle,\nReact.findNodeHandle(this),\nthis.scrollResponderTextInputFocusError,\nthis.scrollResponderInputMeasureAndScrollToKeyboard);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderInputMeasureAndScrollToKeyboard:function(left,top,width,height){\nif(this.keyboardWillOpenTo){\nvar scrollOffsetY=\ntop - this.keyboardWillOpenTo.endCoordinates.screenY + height + \nthis.additionalScrollOffset;\n\n\n\n\n\nif(this.preventNegativeScrollOffset){\nscrollOffsetY = Math.max(0,scrollOffsetY);}\n\nthis.scrollResponderScrollTo(0,scrollOffsetY);}\n\nthis.additionalOffset = 0;\nthis.preventNegativeScrollOffset = false;},\n\n\nscrollResponderTextInputFocusError:function(e){\nconsole.error('Error measuring text field: ',e);},\n\n\n\n\n\n\n\n\ncomponentWillMount:function(){\nthis.keyboardWillOpenTo = null;\nthis.additionalScrollOffset = 0;\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardWillShow',this.scrollResponderKeyboardWillShow);\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardWillHide',this.scrollResponderKeyboardWillHide);\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardDidShow',this.scrollResponderKeyboardDidShow);\nthis.addListenerOn(RCTDeviceEventEmitter,'keyboardDidHide',this.scrollResponderKeyboardDidHide);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nscrollResponderKeyboardWillShow:function(e){\nthis.keyboardWillOpenTo = e;\nthis.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);},\n\n\nscrollResponderKeyboardWillHide:function(e){\nthis.keyboardWillOpenTo = null;\nthis.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);},\n\n\nscrollResponderKeyboardDidShow:function(){\nthis.keyboardWillOpenTo = null;\nthis.props.onKeyboardDidShow && this.props.onKeyboardDidShow();},\n\n\nscrollResponderKeyboardDidHide:function(){\nthis.keyboardWillOpenTo = null;\nthis.props.onKeyboardDidHide && this.props.onKeyboardDidHide();}};\n\n\n\n\nvar ScrollResponder={\nMixin:ScrollResponderMixin};\n\n\nmodule.exports = ScrollResponder;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ScrollResponder\n * @flow\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar React = require('React');\nvar Subscribable = require('Subscribable');\nvar TextInputState = require('TextInputState');\n\nvar RCTUIManager = NativeModules.UIManager;\nvar RCTUIManagerDeprecated = NativeModules.UIManager;\nvar RCTScrollViewConsts = RCTUIManager.RCTScrollView.Constants;\n\nvar warning = require('warning');\n\n/**\n * Mixin that can be integrated in order to handle scrolling that plays well\n * with `ResponderEventPlugin`. Integrate with your platform specific scroll\n * views, or even your custom built (every-frame animating) scroll views so that\n * all of these systems play well with the `ResponderEventPlugin`.\n *\n * iOS scroll event timing nuances:\n * ===============================\n *\n *\n * Scrolling without bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... physical touch starts ...\n * 2. `onTouchStartCapture` (when you press down to stop the scroll)\n * 3. `onTouchStart` (same, but bubble phase)\n * 4. `onResponderRelease` (when lifting up - you could pause forever before * lifting)\n * 5. `onMomentumScrollEnd`\n *\n *\n * Scrolling with bouncing, if you touch down:\n * -------------------------------\n *\n * 1. `onMomentumScrollBegin` (when animation begins after letting up)\n * ... bounce begins ...\n * ... some time elapses ...\n * ... physical touch during bounce ...\n * 2. `onMomentumScrollEnd` (Makes no sense why this occurs first during bounce)\n * 3. `onTouchStartCapture` (immediately after `onMomentumScrollEnd`)\n * 4. `onTouchStart` (same, but bubble phase)\n * 5. `onTouchEnd` (You could hold the touch start for a long time)\n * 6. `onMomentumScrollBegin` (When releasing the view starts bouncing back)\n *\n * So when we receive an `onTouchStart`, how can we tell if we are touching\n * *during* an animation (which then causes the animation to stop)? The only way\n * to tell is if the `touchStart` occurred immediately after the\n * `onMomentumScrollEnd`.\n *\n * This is abstracted out for you, so you can just call this.scrollResponderIsAnimating() if\n * necessary\n *\n * `ScrollResponder` also includes logic for blurring a currently focused input\n * if one is focused while scrolling. The `ScrollResponder` is a natural place\n * to put this logic since it can support not dismissing the keyboard while\n * scrolling, unless a recognized \"tap\"-like gesture has occurred.\n *\n * The public lifecycle API includes events for keyboard interaction, responder\n * interaction, and scrolling (among others). The keyboard callbacks\n * `onKeyboardWill/Did/*` are *global* events, but are invoked on scroll\n * responder's props so that you can guarantee that the scroll responder's\n * internal state has been updated accordingly (and deterministically) by\n * the time the props callbacks are invoke. Otherwise, you would always wonder\n * if the scroll responder is currently in a state where it recognizes new\n * keyboard positions etc. If coordinating scrolling with keyboard movement,\n * *always* use these hooks instead of listening to your own global keyboard\n * events.\n *\n * Public keyboard lifecycle API: (props callbacks)\n *\n * Standard Keyboard Appearance Sequence:\n *\n * this.props.onKeyboardWillShow\n * this.props.onKeyboardDidShow\n *\n * `onScrollResponderKeyboardDismissed` will be invoked if an appropriate\n * tap inside the scroll responder's scrollable region was responsible\n * for the dismissal of the keyboard. There are other reasons why the\n * keyboard could be dismissed.\n *\n * this.props.onScrollResponderKeyboardDismissed\n *\n * Standard Keyboard Hide Sequence:\n *\n * this.props.onKeyboardWillHide\n * this.props.onKeyboardDidHide\n */\n\nvar IS_ANIMATING_TOUCH_START_THRESHOLD_MS = 16;\n\ntype State = {\n isTouching: boolean;\n lastMomentumScrollBeginTime: number;\n lastMomentumScrollEndTime: number;\n observedScrollSinceBecomingResponder: boolean;\n becameResponderWhileAnimating: boolean;\n};\ntype Event = Object;\n\nvar ScrollResponderMixin = {\n mixins: [Subscribable.Mixin],\n statics: RCTScrollViewConsts,\n scrollResponderMixinGetInitialState: function(): State {\n return {\n isTouching: false,\n lastMomentumScrollBeginTime: 0,\n lastMomentumScrollEndTime: 0,\n\n // Reset to false every time becomes responder. This is used to:\n // - Determine if the scroll view has been scrolled and therefore should\n // refuse to give up its responder lock.\n // - Determine if releasing should dismiss the keyboard when we are in\n // tap-to-dismiss mode (!this.props.keyboardShouldPersistTaps).\n observedScrollSinceBecomingResponder: false,\n becameResponderWhileAnimating: false,\n };\n },\n\n /**\n * Invoke this from an `onScroll` event.\n */\n scrollResponderHandleScrollShouldSetResponder: function(): boolean {\n return this.state.isTouching;\n },\n\n /**\n * Merely touch starting is not sufficient for a scroll view to become the\n * responder. Being the \"responder\" means that the very next touch move/end\n * event will result in an action/movement.\n *\n * Invoke this from an `onStartShouldSetResponder` event.\n *\n * `onStartShouldSetResponder` is used when the next move/end will trigger\n * some UI movement/action, but when you want to yield priority to views\n * nested inside of the view.\n *\n * There may be some cases where scroll views actually should return `true`\n * from `onStartShouldSetResponder`: Any time we are detecting a standard tap\n * that gives priority to nested views.\n *\n * - If a single tap on the scroll view triggers an action such as\n * recentering a map style view yet wants to give priority to interaction\n * views inside (such as dropped pins or labels), then we would return true\n * from this method when there is a single touch.\n *\n * - Similar to the previous case, if a two finger \"tap\" should trigger a\n * zoom, we would check the `touches` count, and if `>= 2`, we would return\n * true.\n *\n */\n scrollResponderHandleStartShouldSetResponder: function(): boolean {\n return false;\n },\n\n /**\n * There are times when the scroll view wants to become the responder\n * (meaning respond to the next immediate `touchStart/touchEnd`), in a way\n * that *doesn't* give priority to nested views (hence the capture phase):\n *\n * - Currently animating.\n * - Tapping anywhere that is not the focused input, while the keyboard is\n * up (which should dismiss the keyboard).\n *\n * Invoke this from an `onStartShouldSetResponderCapture` event.\n */\n scrollResponderHandleStartShouldSetResponderCapture: function(e: Event): boolean {\n // First see if we want to eat taps while the keyboard is up\n var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n if (!this.props.keyboardShouldPersistTaps &&\n currentlyFocusedTextInput != null &&\n e.target !== currentlyFocusedTextInput) {\n return true;\n }\n return this.scrollResponderIsAnimating();\n },\n\n /**\n * Invoke this from an `onResponderReject` event.\n *\n * Some other element is not yielding its role as responder. Normally, we'd\n * just disable the `UIScrollView`, but a touch has already began on it, the\n * `UIScrollView` will not accept being disabled after that. The easiest\n * solution for now is to accept the limitation of disallowing this\n * altogether. To improve this, find a way to disable the `UIScrollView` after\n * a touch has already started.\n */\n scrollResponderHandleResponderReject: function() {\n warning(false, \"ScrollView doesn't take rejection well - scrolls anyway\");\n },\n\n /**\n * We will allow the scroll view to give up its lock iff it acquired the lock\n * during an animation. This is a very useful default that happens to satisfy\n * many common user experiences.\n *\n * - Stop a scroll on the left edge, then turn that into an outer view's\n * backswipe.\n * - Stop a scroll mid-bounce at the top, continue pulling to have the outer\n * view dismiss.\n * - However, without catching the scroll view mid-bounce (while it is\n * motionless), if you drag far enough for the scroll view to become\n * responder (and therefore drag the scroll view a bit), any backswipe\n * navigation of a swipe gesture higher in the view hierarchy, should be\n * rejected.\n */\n scrollResponderHandleTerminationRequest: function(): boolean {\n return !this.state.observedScrollSinceBecomingResponder;\n },\n\n /**\n * Invoke this from an `onTouchEnd` event.\n *\n * @param {SyntheticEvent} e Event.\n */\n scrollResponderHandleTouchEnd: function(e: Event) {\n var nativeEvent = e.nativeEvent;\n this.state.isTouching = nativeEvent.touches.length !== 0;\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n },\n\n /**\n * Invoke this from an `onResponderRelease` event.\n */\n scrollResponderHandleResponderRelease: function(e: Event) {\n this.props.onResponderRelease && this.props.onResponderRelease(e);\n\n // By default scroll views will unfocus a textField\n // if another touch occurs outside of it\n var currentlyFocusedTextInput = TextInputState.currentlyFocusedField();\n if (!this.props.keyboardShouldPersistTaps &&\n currentlyFocusedTextInput != null &&\n e.target !== currentlyFocusedTextInput &&\n !this.state.observedScrollSinceBecomingResponder &&\n !this.state.becameResponderWhileAnimating) {\n this.props.onScrollResponderKeyboardDismissed &&\n this.props.onScrollResponderKeyboardDismissed(e);\n TextInputState.blurTextInput(currentlyFocusedTextInput);\n }\n },\n\n scrollResponderHandleScroll: function(e: Event) {\n this.state.observedScrollSinceBecomingResponder = true;\n this.props.onScroll && this.props.onScroll(e);\n },\n\n /**\n * Invoke this from an `onResponderGrant` event.\n */\n scrollResponderHandleResponderGrant: function(e: Event) {\n this.state.observedScrollSinceBecomingResponder = false;\n this.props.onResponderGrant && this.props.onResponderGrant(e);\n this.state.becameResponderWhileAnimating = this.scrollResponderIsAnimating();\n },\n\n /**\n * Unfortunately, `onScrollBeginDrag` also fires when *stopping* the scroll\n * animation, and there's not an easy way to distinguish a drag vs. stopping\n * momentum.\n *\n * Invoke this from an `onScrollBeginDrag` event.\n */\n scrollResponderHandleScrollBeginDrag: function(e: Event) {\n this.props.onScrollBeginDrag && this.props.onScrollBeginDrag(e);\n },\n\n /**\n * Invoke this from an `onScrollEndDrag` event.\n */\n scrollResponderHandleScrollEndDrag: function(e: Event) {\n this.props.onScrollEndDrag && this.props.onScrollEndDrag(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollBegin` event.\n */\n scrollResponderHandleMomentumScrollBegin: function(e: Event) {\n this.state.lastMomentumScrollBeginTime = Date.now();\n this.props.onMomentumScrollBegin && this.props.onMomentumScrollBegin(e);\n },\n\n /**\n * Invoke this from an `onMomentumScrollEnd` event.\n */\n scrollResponderHandleMomentumScrollEnd: function(e: Event) {\n this.state.lastMomentumScrollEndTime = Date.now();\n this.props.onMomentumScrollEnd && this.props.onMomentumScrollEnd(e);\n },\n\n /**\n * Invoke this from an `onTouchStart` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchStart: function(e: Event) {\n this.state.isTouching = true;\n this.props.onTouchStart && this.props.onTouchStart(e);\n },\n\n /**\n * Invoke this from an `onTouchMove` event.\n *\n * Since we know that the `SimpleEventPlugin` occurs later in the plugin\n * order, after `ResponderEventPlugin`, we can detect that we were *not*\n * permitted to be the responder (presumably because a contained view became\n * responder). The `onResponderReject` won't fire in that case - it only\n * fires when a *current* responder rejects our request.\n *\n * @param {SyntheticEvent} e Touch Start event.\n */\n scrollResponderHandleTouchMove: function(e: Event) {\n this.props.onTouchMove && this.props.onTouchMove(e);\n },\n\n /**\n * A helper function for this class that lets us quickly determine if the\n * view is currently animating. This is particularly useful to know when\n * a touch has just started or ended.\n */\n scrollResponderIsAnimating: function(): boolean {\n var now = Date.now();\n var timeSinceLastMomentumScrollEnd = now - this.state.lastMomentumScrollEndTime;\n var isAnimating = timeSinceLastMomentumScrollEnd < IS_ANIMATING_TOUCH_START_THRESHOLD_MS ||\n this.state.lastMomentumScrollEndTime < this.state.lastMomentumScrollBeginTime;\n return isAnimating;\n },\n\n /**\n * A helper function to scroll to a specific point in the scrollview.\n * This is currently used to help focus on child textview's, but this\n * can also be used to quickly scroll to any element we want to focus\n */\n scrollResponderScrollTo: function(offsetX: number, offsetY: number) {\n RCTUIManagerDeprecated.scrollTo(React.findNodeHandle(this), offsetX, offsetY);\n },\n\n /**\n * A helper function to zoom to a specific rect in the scrollview.\n * @param {object} rect Should have shape {x, y, width, height}\n */\n scrollResponderZoomTo: function(rect: { x: number; y: number; width: number; height: number; }) {\n RCTUIManagerDeprecated.zoomToRect(React.findNodeHandle(this), rect);\n },\n\n /**\n * This method should be used as the callback to onFocus in a TextInputs'\n * parent view. Note that any module using this mixin needs to return\n * the parent view's ref in getScrollViewRef() in order to use this method.\n * @param {any} nodeHandle The TextInput node handle\n * @param {number} additionalOffset The scroll view's top \"contentInset\".\n * Default is 0.\n * @param {bool} preventNegativeScrolling Whether to allow pulling the content\n * down to make it meet the keyboard's top. Default is false.\n */\n scrollResponderScrollNativeHandleToKeyboard: function(nodeHandle: any, additionalOffset?: number, preventNegativeScrollOffset?: bool) {\n this.additionalScrollOffset = additionalOffset || 0;\n this.preventNegativeScrollOffset = !!preventNegativeScrollOffset;\n RCTUIManager.measureLayout(\n nodeHandle,\n React.findNodeHandle(this),\n this.scrollResponderTextInputFocusError,\n this.scrollResponderInputMeasureAndScrollToKeyboard\n );\n },\n\n /**\n * The calculations performed here assume the scroll view takes up the entire\n * screen - even if has some content inset. We then measure the offsets of the\n * keyboard, and compensate both for the scroll view's \"contentInset\".\n *\n * @param {number} left Position of input w.r.t. table view.\n * @param {number} top Position of input w.r.t. table view.\n * @param {number} width Width of the text input.\n * @param {number} height Height of the text input.\n */\n scrollResponderInputMeasureAndScrollToKeyboard: function(left: number, top: number, width: number, height: number) {\n if (this.keyboardWillOpenTo) {\n var scrollOffsetY =\n top - this.keyboardWillOpenTo.endCoordinates.screenY + height +\n this.additionalScrollOffset;\n\n // By default, this can scroll with negative offset, pulling the content\n // down so that the target component's bottom meets the keyboard's top.\n // If requested otherwise, cap the offset at 0 minimum to avoid content\n // shifting down.\n if (this.preventNegativeScrollOffset) {\n scrollOffsetY = Math.max(0, scrollOffsetY);\n }\n this.scrollResponderScrollTo(0, scrollOffsetY);\n }\n this.additionalOffset = 0;\n this.preventNegativeScrollOffset = false;\n },\n\n scrollResponderTextInputFocusError: function(e: Event) {\n console.error('Error measuring text field: ', e);\n },\n\n /**\n * `componentWillMount` is the closest thing to a standard \"constructor\" for\n * React components.\n *\n * The `keyboardWillShow` is called before input focus.\n */\n componentWillMount: function() {\n this.keyboardWillOpenTo = null;\n this.additionalScrollOffset = 0;\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillShow', this.scrollResponderKeyboardWillShow);\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardWillHide', this.scrollResponderKeyboardWillHide);\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidShow', this.scrollResponderKeyboardDidShow);\n this.addListenerOn(RCTDeviceEventEmitter, 'keyboardDidHide', this.scrollResponderKeyboardDidHide);\n },\n\n /**\n * Warning, this may be called several times for a single keyboard opening.\n * It's best to store the information in this method and then take any action\n * at a later point (either in `keyboardDidShow` or other).\n *\n * Here's the order that events occur in:\n * - focus\n * - willShow {startCoordinates, endCoordinates} several times\n * - didShow several times\n * - blur\n * - willHide {startCoordinates, endCoordinates} several times\n * - didHide several times\n *\n * The `ScrollResponder` providesModule callbacks for each of these events.\n * Even though any user could have easily listened to keyboard events\n * themselves, using these `props` callbacks ensures that ordering of events\n * is consistent - and not dependent on the order that the keyboard events are\n * subscribed to. This matters when telling the scroll view to scroll to where\n * the keyboard is headed - the scroll responder better have been notified of\n * the keyboard destination before being instructed to scroll to where the\n * keyboard will be. Stick to the `ScrollResponder` callbacks, and everything\n * will work.\n *\n * WARNING: These callbacks will fire even if a keyboard is displayed in a\n * different navigation pane. Filter out the events to determine if they are\n * relevant to you. (For example, only if you receive these callbacks after\n * you had explicitly focused a node etc).\n */\n scrollResponderKeyboardWillShow: function(e: Event) {\n this.keyboardWillOpenTo = e;\n this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);\n },\n\n scrollResponderKeyboardWillHide: function(e: Event) {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardWillHide && this.props.onKeyboardWillHide(e);\n },\n\n scrollResponderKeyboardDidShow: function() {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidShow && this.props.onKeyboardDidShow();\n },\n\n scrollResponderKeyboardDidHide: function() {\n this.keyboardWillOpenTo = null;\n this.props.onKeyboardDidHide && this.props.onKeyboardDidHide();\n }\n\n};\n\nvar ScrollResponder = {\n Mixin: ScrollResponderMixin,\n};\n\nmodule.exports = ScrollResponder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ScrollResponder.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Subscribable.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Subscribable={};\n\nSubscribable.Mixin = {\n\ncomponentWillMount:function(){\nthis._subscribableSubscriptions = [];},\n\n\ncomponentWillUnmount:function(){\nthis._subscribableSubscriptions.forEach(\nfunction(subscription){return subscription.remove();});\n\nthis._subscribableSubscriptions = null;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\naddListenerOn:function(\neventEmitter,\neventType,\nlistener,\ncontext)\n{\nthis._subscribableSubscriptions.push(\neventEmitter.addListener(eventType,listener,context));}};\n\n\n\n\nmodule.exports = Subscribable;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Subscribable\n * @flow\n */\n'use strict';\n\nimport type EventEmitter from 'EventEmitter';\n\n/**\n * Subscribable provides a mixin for safely subscribing a component to an\n * eventEmitter\n *\n * This will be replaced with the observe interface that will be coming soon to\n * React Core\n */\n\nvar Subscribable = {};\n\nSubscribable.Mixin = {\n\n componentWillMount: function() {\n this._subscribableSubscriptions = [];\n },\n\n componentWillUnmount: function() {\n this._subscribableSubscriptions.forEach(\n (subscription) => subscription.remove()\n );\n this._subscribableSubscriptions = null;\n },\n\n /**\n * Special form of calling `addListener` that *guarantees* that a\n * subscription *must* be tied to a component instance, and therefore will\n * be cleaned up when the component is unmounted. It is impossible to create\n * the subscription and pass it in - this method must be the one to create\n * the subscription and therefore can guarantee it is retained in a way that\n * will be cleaned up.\n *\n * @param {EventEmitter} eventEmitter emitter to subscribe to.\n * @param {string} eventType Type of event to listen to.\n * @param {function} listener Function to invoke when event occurs.\n * @param {object} context Object to use as listener context.\n */\n addListenerOn: function(\n eventEmitter: EventEmitter,\n eventType: string,\n listener: Function,\n context: Object\n ) {\n this._subscribableSubscriptions.push(\n eventEmitter.addListener(eventType, listener, context)\n );\n }\n};\n\nmodule.exports = Subscribable;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Subscribable.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StaticRenderer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\n\nvar StaticRenderer=React.createClass({displayName:'StaticRenderer',\npropTypes:{\nshouldUpdate:React.PropTypes.bool.isRequired,\nrender:React.PropTypes.func.isRequired},\n\n\nshouldComponentUpdate:function(nextProps){\nreturn nextProps.shouldUpdate;},\n\n\nrender:function(){\nreturn this.props.render();}});\n\n\n\nmodule.exports = StaticRenderer;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StaticRenderer\n * @flow\n */\n'use strict';\n\nvar React = require('React');\n\nvar StaticRenderer = React.createClass({\n propTypes: {\n shouldUpdate: React.PropTypes.bool.isRequired,\n render: React.PropTypes.func.isRequired,\n },\n\n shouldComponentUpdate: function(nextProps: { shouldUpdate: boolean }): boolean {\n return nextProps.shouldUpdate;\n },\n\n render: function(): ReactElement {\n return this.props.render();\n },\n});\n\nmodule.exports = StaticRenderer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StaticRenderer.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-timer-mixin/TimerMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\nvar GLOBAL=typeof window === 'undefined'?global:window;\n\nvar setter=function(_setter,_clearer,array){\nreturn function(callback,delta){\nvar id=_setter((function(){\n_clearer.call(this,id);\ncallback.apply(this,arguments);}).\nbind(this),delta);\n\nif(!this[array]){\nthis[array] = [id];}else \n{\nthis[array].push(id);}\n\nreturn id;};};\n\n\n\nvar clearer=function(_clearer,array){\nreturn function(id){\nif(this[array]){\nvar index=this[array].indexOf(id);\nif(index !== -1){\nthis[array].splice(index,1);}}\n\n\n_clearer(id);};};\n\n\n\nvar _timeouts='TimerMixin_timeouts';\nvar _clearTimeout=clearer(GLOBAL.clearTimeout,_timeouts);\nvar _setTimeout=setter(GLOBAL.setTimeout,_clearTimeout,_timeouts);\n\nvar _intervals='TimerMixin_intervals';\nvar _clearInterval=clearer(GLOBAL.clearInterval,_intervals);\nvar _setInterval=setter(GLOBAL.setInterval,function(){},_intervals);\n\nvar _immediates='TimerMixin_immediates';\nvar _clearImmediate=clearer(GLOBAL.clearImmediate,_immediates);\nvar _setImmediate=setter(GLOBAL.setImmediate,_clearImmediate,_immediates);\n\nvar _rafs='TimerMixin_rafs';\nvar _cancelAnimationFrame=clearer(GLOBAL.cancelAnimationFrame,_rafs);\nvar _requestAnimationFrame=setter(GLOBAL.requestAnimationFrame,_cancelAnimationFrame,_rafs);\n\nvar TimerMixin={\ncomponentWillUnmount:function(){\nthis[_timeouts] && this[_timeouts].forEach(this.clearTimeout);\nthis[_intervals] && this[_intervals].forEach(this.clearInterval);\nthis[_immediates] && this[_immediates].forEach(this.clearImmediate);\nthis[_rafs] && this[_rafs].forEach(this.cancelAnimationFrame);},\n\n\nsetTimeout:_setTimeout,\nclearTimeout:_clearTimeout,\n\nsetInterval:_setInterval,\nclearInterval:_clearInterval,\n\nsetImmediate:_setImmediate,\nclearImmediate:_clearImmediate,\n\nrequestAnimationFrame:_requestAnimationFrame,\ncancelAnimationFrame:_cancelAnimationFrame};\n\n\nmodule.exports = TimerMixin;","sourceCode":"/*\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar GLOBAL = typeof window === 'undefined' ? global : window;\n\nvar setter = function(_setter, _clearer, array) {\n return function(callback, delta) {\n var id = _setter(function() {\n _clearer.call(this, id);\n callback.apply(this, arguments);\n }.bind(this), delta);\n\n if (!this[array]) {\n this[array] = [id];\n } else {\n this[array].push(id);\n }\n return id;\n };\n};\n\nvar clearer = function(_clearer, array) {\n return function(id) {\n if (this[array]) {\n var index = this[array].indexOf(id);\n if (index !== -1) {\n this[array].splice(index, 1);\n }\n }\n _clearer(id);\n };\n};\n\nvar _timeouts = 'TimerMixin_timeouts';\nvar _clearTimeout = clearer(GLOBAL.clearTimeout, _timeouts);\nvar _setTimeout = setter(GLOBAL.setTimeout, _clearTimeout, _timeouts);\n\nvar _intervals = 'TimerMixin_intervals';\nvar _clearInterval = clearer(GLOBAL.clearInterval, _intervals);\nvar _setInterval = setter(GLOBAL.setInterval, function() {/* noop */}, _intervals);\n\nvar _immediates = 'TimerMixin_immediates';\nvar _clearImmediate = clearer(GLOBAL.clearImmediate, _immediates);\nvar _setImmediate = setter(GLOBAL.setImmediate, _clearImmediate, _immediates);\n\nvar _rafs = 'TimerMixin_rafs';\nvar _cancelAnimationFrame = clearer(GLOBAL.cancelAnimationFrame, _rafs);\nvar _requestAnimationFrame = setter(GLOBAL.requestAnimationFrame, _cancelAnimationFrame, _rafs);\n\nvar TimerMixin = {\n componentWillUnmount: function() {\n this[_timeouts] && this[_timeouts].forEach(this.clearTimeout);\n this[_intervals] && this[_intervals].forEach(this.clearInterval);\n this[_immediates] && this[_immediates].forEach(this.clearImmediate);\n this[_rafs] && this[_rafs].forEach(this.cancelAnimationFrame);\n },\n\n setTimeout: _setTimeout,\n clearTimeout: _clearTimeout,\n\n setInterval: _setInterval,\n clearInterval: _clearInterval,\n\n setImmediate: _setImmediate,\n clearImmediate: _clearImmediate,\n\n requestAnimationFrame: _requestAnimationFrame,\n cancelAnimationFrame: _cancelAnimationFrame,\n};\n\nmodule.exports = TimerMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-timer-mixin/TimerMixin.js"},"mtime":1435958530000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/MapView/MapView.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar View=require('View');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar deepDiffer=require('deepDiffer');\nvar insetsDiffer=require('insetsDiffer');\nvar merge=require('merge');\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\n\n\n\n\n\n\nvar MapView=React.createClass({displayName:'MapView',\nmixins:[NativeMethodsMixin],\n\ncheckAnnotationIds:function(annotations){\n\nvar newAnnotations=annotations.map(function(annotation){\nif(!annotation.id){\n\nannotation.id = encodeURIComponent(JSON.stringify(annotation));}\n\n\nreturn annotation;});\n\n\nthis.setState({\nannotations:newAnnotations});},\n\n\n\ncomponentWillMount:function(){\nif(this.props.annotations){\nthis.checkAnnotationIds(this.props.annotations);}},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(nextProps.annotations){\nthis.checkAnnotationIds(nextProps.annotations);}},\n\n\n\npropTypes:{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nshowsUserLocation:React.PropTypes.bool,\n\n\n\n\n\nzoomEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nrotateEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\npitchEnabled:React.PropTypes.bool,\n\n\n\n\n\nscrollEnabled:React.PropTypes.bool,\n\n\n\n\n\n\n\n\nmapType:React.PropTypes.oneOf([\n'standard',\n'satellite',\n'hybrid']),\n\n\n\n\n\n\n\n\nregion:React.PropTypes.shape({\n\n\n\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired,\n\n\n\n\n\nlatitudeDelta:React.PropTypes.number.isRequired,\nlongitudeDelta:React.PropTypes.number.isRequired}),\n\n\n\n\n\nannotations:React.PropTypes.arrayOf(React.PropTypes.shape({\n\n\n\nlatitude:React.PropTypes.number.isRequired,\nlongitude:React.PropTypes.number.isRequired,\n\n\n\n\nanimateDrop:React.PropTypes.bool,\n\n\n\n\ntitle:React.PropTypes.string,\nsubtitle:React.PropTypes.string,\n\n\n\n\nhasLeftCallout:React.PropTypes.bool,\nhasRightCallout:React.PropTypes.bool,\n\n\n\n\nonLeftCalloutPress:React.PropTypes.func,\nonRightCalloutPress:React.PropTypes.func,\n\n\n\n\nid:React.PropTypes.string})),\n\n\n\n\n\n\nmaxDelta:React.PropTypes.number,\n\n\n\n\nminDelta:React.PropTypes.number,\n\n\n\n\n\nlegalLabelInsets:EdgeInsetsPropType,\n\n\n\n\nonRegionChange:React.PropTypes.func,\n\n\n\n\nonRegionChangeComplete:React.PropTypes.func,\n\n\n\n\nonAnnotationPress:React.PropTypes.func},\n\n\n_onChange:function(event){\nif(event.nativeEvent.continuous){\nthis.props.onRegionChange && \nthis.props.onRegionChange(event.nativeEvent.region);}else \n{\nthis.props.onRegionChangeComplete && \nthis.props.onRegionChangeComplete(event.nativeEvent.region);}},\n\n\n\n_onPress:function(event){\nif(event.nativeEvent.action === 'annotation-click'){\nthis.props.onAnnotationPress && this.props.onAnnotationPress(event.nativeEvent.annotation);}\n\n\nif(event.nativeEvent.action === 'callout-click'){\nif(!this.props.annotations){\nreturn;}\n\n\n\nfor(var i=0;i < this.props.annotations.length;i++) {\nvar annotation=this.props.annotations[i];\nif(annotation.id === event.nativeEvent.annotationId){\n\nif(event.nativeEvent.side === 'left'){\nannotation.onLeftCalloutPress && annotation.onLeftCalloutPress(event.nativeEvent);}else \nif(event.nativeEvent.side === 'right'){\nannotation.onRightCalloutPress && annotation.onRightCalloutPress(event.nativeEvent);}}}}},\n\n\n\n\n\n\n\nrender:function(){\nreturn React.createElement(RCTMap,_extends({},this.props,{onPress:this._onPress,onChange:this._onChange}));}});\n\n\n\nif(Platform.OS === 'android'){\nvar RCTMap=createReactNativeComponentClass({\nvalidAttributes:merge(\nReactNativeViewAttributes.UIView,{\nactive:true,\nshowsUserLocation:true,\nzoomEnabled:true,\nrotateEnabled:true,\npitchEnabled:true,\nscrollEnabled:true,\nregion:{diff:deepDiffer},\nannotations:{diff:deepDiffer},\nmaxDelta:true,\nminDelta:true,\nlegalLabelInsets:{diff:insetsDiffer}}),\n\n\nuiViewClassName:'RCTMap'});}else \n\n{\nvar RCTMap=requireNativeComponent('RCTMap',MapView);}\n\n\nmodule.exports = MapView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule MapView\n * @flow\n */\n'use strict';\n\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar View = require('View');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar deepDiffer = require('deepDiffer');\nvar insetsDiffer = require('insetsDiffer');\nvar merge = require('merge');\nvar requireNativeComponent = require('requireNativeComponent');\n\ntype Event = Object;\ntype MapRegion = {\n latitude: number;\n longitude: number;\n latitudeDelta: number;\n longitudeDelta: number;\n};\n\nvar MapView = React.createClass({\n mixins: [NativeMethodsMixin],\n\n checkAnnotationIds: function (annotations: Array<Object>) {\n\n var newAnnotations = annotations.map(function (annotation) {\n if (!annotation.id) {\n // TODO: add a base64 (or similar) encoder here\n annotation.id = encodeURIComponent(JSON.stringify(annotation));\n }\n\n return annotation;\n });\n\n this.setState({\n annotations: newAnnotations\n });\n },\n\n componentWillMount: function() {\n if (this.props.annotations) {\n this.checkAnnotationIds(this.props.annotations);\n }\n },\n\n componentWillReceiveProps: function(nextProps: Object) {\n if (nextProps.annotations) {\n this.checkAnnotationIds(nextProps.annotations);\n }\n },\n\n propTypes: {\n /**\n * Used to style and layout the `MapView`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style: View.propTypes.style,\n\n /**\n * If `true` the app will ask for the user's location and focus on it.\n * Default value is `false`.\n *\n * **NOTE**: You need to add NSLocationWhenInUseUsageDescription key in\n * Info.plist to enable geolocation, otherwise it is going\n * to *fail silently*!\n */\n showsUserLocation: React.PropTypes.bool,\n\n /**\n * If `false` the user won't be able to pinch/zoom the map.\n * Default `value` is true.\n */\n zoomEnabled: React.PropTypes.bool,\n\n /**\n * When this property is set to `true` and a valid camera is associated with\n * the map, the camera’s heading angle is used to rotate the plane of the\n * map around its center point. When this property is set to `false`, the\n * camera’s heading angle is ignored and the map is always oriented so\n * that true north is situated at the top of the map view\n */\n rotateEnabled: React.PropTypes.bool,\n\n /**\n * When this property is set to `true` and a valid camera is associated\n * with the map, the camera’s pitch angle is used to tilt the plane\n * of the map. When this property is set to `false`, the camera’s pitch\n * angle is ignored and the map is always displayed as if the user\n * is looking straight down onto it.\n */\n pitchEnabled: React.PropTypes.bool,\n\n /**\n * If `false` the user won't be able to change the map region being displayed.\n * Default value is `true`.\n */\n scrollEnabled: React.PropTypes.bool,\n\n /**\n * The map type to be displayed.\n *\n * - standard: standard road map (default)\n * - satellite: satellite view\n * - hybrid: satellite view with roads and points of interest overlayed\n */\n mapType: React.PropTypes.oneOf([\n 'standard',\n 'satellite',\n 'hybrid',\n ]),\n\n /**\n * The region to be displayed by the map.\n *\n * The region is defined by the center coordinates and the span of\n * coordinates to display.\n */\n region: React.PropTypes.shape({\n /**\n * Coordinates for the center of the map.\n */\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired,\n\n /**\n * Distance between the minimun and the maximum latitude/longitude\n * to be displayed.\n */\n latitudeDelta: React.PropTypes.number.isRequired,\n longitudeDelta: React.PropTypes.number.isRequired,\n }),\n\n /**\n * Map annotations with title/subtitle.\n */\n annotations: React.PropTypes.arrayOf(React.PropTypes.shape({\n /**\n * The location of the annotation.\n */\n latitude: React.PropTypes.number.isRequired,\n longitude: React.PropTypes.number.isRequired,\n\n /**\n * Whether the pin drop should be animated or not\n */\n animateDrop: React.PropTypes.bool,\n\n /**\n * Annotation title/subtile.\n */\n title: React.PropTypes.string,\n subtitle: React.PropTypes.string,\n\n /**\n * Whether the Annotation has callout buttons.\n */\n hasLeftCallout: React.PropTypes.bool,\n hasRightCallout: React.PropTypes.bool,\n\n /**\n * Event handlers for callout buttons.\n */\n onLeftCalloutPress: React.PropTypes.func,\n onRightCalloutPress: React.PropTypes.func,\n\n /**\n * annotation id\n */\n id: React.PropTypes.string\n\n })),\n\n /**\n * Maximum size of area that can be displayed.\n */\n maxDelta: React.PropTypes.number,\n\n /**\n * Minimum size of area that can be displayed.\n */\n minDelta: React.PropTypes.number,\n\n /**\n * Insets for the map's legal label, originally at bottom left of the map.\n * See `EdgeInsetsPropType.js` for more information.\n */\n legalLabelInsets: EdgeInsetsPropType,\n\n /**\n * Callback that is called continuously when the user is dragging the map.\n */\n onRegionChange: React.PropTypes.func,\n\n /**\n * Callback that is called once, when the user is done moving the map.\n */\n onRegionChangeComplete: React.PropTypes.func,\n\n /**\n * Callback that is called once, when the user is clicked on a annotation.\n */\n onAnnotationPress: React.PropTypes.func,\n },\n\n _onChange: function(event: Event) {\n if (event.nativeEvent.continuous) {\n this.props.onRegionChange &&\n this.props.onRegionChange(event.nativeEvent.region);\n } else {\n this.props.onRegionChangeComplete &&\n this.props.onRegionChangeComplete(event.nativeEvent.region);\n }\n },\n\n _onPress: function(event: Event) {\n if (event.nativeEvent.action === 'annotation-click') {\n this.props.onAnnotationPress && this.props.onAnnotationPress(event.nativeEvent.annotation);\n }\n\n if (event.nativeEvent.action === 'callout-click') {\n if (!this.props.annotations) {\n return;\n }\n\n // Find the annotation with the id of what has been pressed\n for (var i = 0; i < this.props.annotations.length; i++) {\n var annotation = this.props.annotations[i];\n if (annotation.id === event.nativeEvent.annotationId) {\n // Pass the right function\n if (event.nativeEvent.side === 'left') {\n annotation.onLeftCalloutPress && annotation.onLeftCalloutPress(event.nativeEvent);\n } else if (event.nativeEvent.side === 'right') {\n annotation.onRightCalloutPress && annotation.onRightCalloutPress(event.nativeEvent);\n }\n }\n }\n\n }\n },\n\n render: function() {\n return <RCTMap {...this.props} onPress={this._onPress} onChange={this._onChange} />;\n },\n});\n\nif (Platform.OS === 'android') {\n var RCTMap = createReactNativeComponentClass({\n validAttributes: merge(\n ReactNativeViewAttributes.UIView, {\n active: true,\n showsUserLocation: true,\n zoomEnabled: true,\n rotateEnabled: true,\n pitchEnabled: true,\n scrollEnabled: true,\n region: {diff: deepDiffer},\n annotations: {diff: deepDiffer},\n maxDelta: true,\n minDelta: true,\n legalLabelInsets: {diff: insetsDiffer},\n }\n ),\n uiViewClassName: 'RCTMap',\n });\n} else {\n var RCTMap = requireNativeComponent('RCTMap', MapView);\n}\n\nmodule.exports = MapView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/MapView/MapView.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AnimationsDebugModule=require('NativeModules').AnimationsDebugModule;\nvar Dimensions=require('Dimensions');\nvar InteractionMixin=require('InteractionMixin');\nvar Map=require('Map');\nvar NavigationContext=require('NavigationContext');\nvar NavigatorBreadcrumbNavigationBar=require('NavigatorBreadcrumbNavigationBar');\nvar NavigatorNavigationBar=require('NavigatorNavigationBar');\nvar NavigatorSceneConfigs=require('NavigatorSceneConfigs');\nvar PanResponder=require('PanResponder');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar TimerMixin=require('react-timer-mixin');\nvar View=require('View');\n\nvar clamp=require('clamp');\nvar flattenStyle=require('flattenStyle');\nvar invariant=require('invariant');\nvar rebound=require('rebound');\n\nvar PropTypes=React.PropTypes;\n\n\n\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar SCREEN_HEIGHT=Dimensions.get('window').height;\nvar SCENE_DISABLED_NATIVE_PROPS={\nstyle:{\nleft:SCREEN_WIDTH,\nopacity:0}};\n\n\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1,\noverflow:'hidden'},\n\ndefaultSceneStyle:{\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0,\ntop:0},\n\nbaseScene:{\nposition:'absolute',\noverflow:'hidden',\nleft:0,\nright:0,\nbottom:0,\ntop:0},\n\ndisabledScene:{\nleft:SCREEN_WIDTH},\n\ntransitioner:{\nflex:1,\nbackgroundColor:'transparent',\noverflow:'hidden'}});\n\n\n\nvar GESTURE_ACTIONS=[\n'pop',\n'jumpBack',\n'jumpForward'];\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Navigator=React.createClass({displayName:'Navigator',\n\npropTypes:{\n\n\n\n\n\n\n\n\n\nconfigureScene:PropTypes.func,\n\n\n\n\n\n\n\n\n\n\nrenderScene:PropTypes.func.isRequired,\n\n\n\n\n\n\n\ninitialRoute:PropTypes.object,\n\n\n\n\n\n\ninitialRouteStack:PropTypes.arrayOf(PropTypes.object),\n\n\n\n\n\n\n\nonWillFocus:PropTypes.func,\n\n\n\n\n\n\n\n\nonDidFocus:PropTypes.func,\n\n\n\n\nonItemRef:PropTypes.func,\n\n\n\n\n\nnavigationBar:PropTypes.node,\n\n\n\n\nnavigator:PropTypes.object,\n\n\n\n\nsceneStyle:View.propTypes.style},\n\n\nstatics:{\nBreadcrumbNavigationBar:NavigatorBreadcrumbNavigationBar,\nNavigationBar:NavigatorNavigationBar,\nSceneConfigs:NavigatorSceneConfigs},\n\n\nmixins:[TimerMixin,InteractionMixin,Subscribable.Mixin],\n\ngetDefaultProps:function(){\nreturn {\nconfigureScene:function(){return NavigatorSceneConfigs.PushFromRight;},\nsceneStyle:styles.defaultSceneStyle};},\n\n\n\ngetInitialState:function(){var _this=this;\nthis._renderedSceneMap = new Map();\n\nvar routeStack=this.props.initialRouteStack || [this.props.initialRoute];\ninvariant(\nrouteStack.length >= 1,\n'Navigator requires props.initialRoute or props.initialRouteStack.');\n\nvar initialRouteIndex=routeStack.length - 1;\nif(this.props.initialRoute){\ninitialRouteIndex = routeStack.indexOf(this.props.initialRoute);\ninvariant(\ninitialRouteIndex !== -1,\n'initialRoute is not in initialRouteStack.');}\n\n\nreturn {\nsceneConfigStack:routeStack.map(\nfunction(route){return _this.props.configureScene(route);}),\n\nidStack:routeStack.map(function(){return getuid();}),\nrouteStack:routeStack,\npresentedIndex:initialRouteIndex,\ntransitionFromIndex:null,\nactiveGesture:null,\npendingGestureProgress:null,\ntransitionQueue:[]};},\n\n\n\ncomponentWillMount:function(){var _this2=this;\n\nthis.__defineGetter__('navigationContext',this._getNavigationContext);\n\nthis._subRouteFocus = [];\nthis.parentNavigator = this.props.navigator;\nthis._handlers = {};\nthis.springSystem = new rebound.SpringSystem();\nthis.spring = this.springSystem.createSpring();\nthis.spring.setRestSpeedThreshold(0.05);\nthis.spring.setCurrentValue(0).setAtRest();\nthis.spring.addListener({\nonSpringEndStateChange:function(){\nif(!_this2._interactionHandle){\n_this2._interactionHandle = _this2.createInteractionHandle();}},\n\n\nonSpringUpdate:function(){\n_this2._handleSpringUpdate();},\n\nonSpringAtRest:function(){\n_this2._completeTransition();}});\n\n\nthis.panGesture = PanResponder.create({\nonMoveShouldSetPanResponder:this._handleMoveShouldSetPanResponder,\nonPanResponderGrant:this._handlePanResponderGrant,\nonPanResponderRelease:this._handlePanResponderRelease,\nonPanResponderMove:this._handlePanResponderMove,\nonPanResponderTerminate:this._handlePanResponderTerminate});\n\nthis._itemRefs = {};\nthis._interactionHandle = null;\nthis._emitWillFocus(this.state.routeStack[this.state.presentedIndex]);},\n\n\ncomponentDidMount:function(){\nthis._handleSpringUpdate();\nthis._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);},\n\n\ncomponentWillUnmount:function(){\nif(this._navigationContext){\nthis._navigationContext.dispose();\nthis._navigationContext = null;}},\n\n\n\n\n\n\n\n\n\n\nimmediatelyResetRouteStack:function(nextRouteStack){var _this3=this;\nvar destIndex=nextRouteStack.length - 1;\nthis.setState({\nidStack:nextRouteStack.map(getuid),\nrouteStack:nextRouteStack,\nsceneConfigStack:nextRouteStack.map(\nthis.props.configureScene),\n\npresentedIndex:destIndex,\nactiveGesture:null,\ntransitionFromIndex:null,\ntransitionQueue:[]},\nfunction(){\n_this3._handleSpringUpdate();});},\n\n\n\n_transitionTo:function(destIndex,velocity,jumpSpringTo,cb){\nif(destIndex === this.state.presentedIndex){\nreturn;}\n\nif(this.state.transitionFromIndex !== null){\nthis.state.transitionQueue.push({\ndestIndex:destIndex,\nvelocity:velocity,\ncb:cb});\n\nreturn;}\n\nthis.state.transitionFromIndex = this.state.presentedIndex;\nthis.state.presentedIndex = destIndex;\nthis.state.transitionCb = cb;\nthis._onAnimationStart();\nif(AnimationsDebugModule){\nAnimationsDebugModule.startRecordingFps();}\n\nvar sceneConfig=this.state.sceneConfigStack[this.state.transitionFromIndex] || \nthis.state.sceneConfigStack[this.state.presentedIndex];\ninvariant(\nsceneConfig,\n'Cannot configure scene at index ' + this.state.transitionFromIndex);\n\nif(jumpSpringTo != null){\nthis.spring.setCurrentValue(jumpSpringTo);}\n\nthis.spring.setOvershootClampingEnabled(true);\nthis.spring.getSpringConfig().friction = sceneConfig.springFriction;\nthis.spring.getSpringConfig().tension = sceneConfig.springTension;\nthis.spring.setVelocity(velocity || sceneConfig.defaultTransitionVelocity);\nthis.spring.setEndValue(1);},\n\n\n\n\n\n\n_handleSpringUpdate:function(){\n\nif(this.state.transitionFromIndex != null){\nthis._transitionBetween(\nthis.state.transitionFromIndex,\nthis.state.presentedIndex,\nthis.spring.getCurrentValue());}else \n\nif(this.state.activeGesture != null){\nvar presentedToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._transitionBetween(\nthis.state.presentedIndex,\npresentedToIndex,\nthis.spring.getCurrentValue());}},\n\n\n\n\n\n\n\n_completeTransition:function(){\nif(this.spring.getCurrentValue() !== 1 && this.spring.getCurrentValue() !== 0){\n\n\nif(this.state.pendingGestureProgress){\nthis.state.pendingGestureProgress = null;}\n\nreturn;}\n\nthis._onAnimationEnd();\nvar presentedIndex=this.state.presentedIndex;\nvar didFocusRoute=this._subRouteFocus[presentedIndex] || this.state.routeStack[presentedIndex];\nthis._emitDidFocus(didFocusRoute);\nif(AnimationsDebugModule){\nAnimationsDebugModule.stopRecordingFps(Date.now());}\n\nthis.state.transitionFromIndex = null;\nthis.spring.setCurrentValue(0).setAtRest();\nthis._hideScenes();\nif(this.state.transitionCb){\nthis.state.transitionCb();\nthis.state.transitionCb = null;}\n\nif(this._interactionHandle){\nthis.clearInteractionHandle(this._interactionHandle);\nthis._interactionHandle = null;}\n\nif(this.state.pendingGestureProgress){\n\n\nvar gestureToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._enableScene(gestureToIndex);\nthis.spring.setEndValue(this.state.pendingGestureProgress);\nreturn;}\n\nif(this.state.transitionQueue.length){\nvar queuedTransition=this.state.transitionQueue.shift();\nthis._enableScene(queuedTransition.destIndex);\nthis._emitWillFocus(this.state.routeStack[queuedTransition.destIndex]);\nthis._transitionTo(\nqueuedTransition.destIndex,\nqueuedTransition.velocity,\nnull,\nqueuedTransition.cb);}},\n\n\n\n\n_emitDidFocus:function(route){\nthis.navigationContext.emit('didfocus',{route:route});\n\nif(this.props.onDidFocus){\nthis.props.onDidFocus(route);}},\n\n\n\n_emitWillFocus:function(route){\nthis.navigationContext.emit('willfocus',{route:route});\n\nvar navBar=this._navBar;\nif(navBar && navBar.handleWillFocus){\nnavBar.handleWillFocus(route);}\n\nif(this.props.onWillFocus){\nthis.props.onWillFocus(route);}},\n\n\n\n\n\n\n_hideScenes:function(){\nvar gesturingToIndex=null;\nif(this.state.activeGesture){\ngesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);}\n\nfor(var i=0;i < this.state.routeStack.length;i++) {\nif(i === this.state.presentedIndex || \ni === this.state.transitionFromIndex || \ni === gesturingToIndex){\ncontinue;}\n\nthis._disableScene(i);}},\n\n\n\n\n\n\n_disableScene:function(sceneIndex){\nthis.refs['scene_' + sceneIndex] && \nthis.refs['scene_' + sceneIndex].setNativeProps(SCENE_DISABLED_NATIVE_PROPS);},\n\n\n\n\n\n_enableScene:function(sceneIndex){\n\nvar sceneStyle=flattenStyle([styles.baseScene,this.props.sceneStyle]);\n\nvar enabledSceneNativeProps={\nleft:sceneStyle.left};\n\nif(sceneIndex !== this.state.transitionFromIndex && \nsceneIndex !== this.state.presentedIndex){\n\n\nenabledSceneNativeProps.opacity = 0;}\n\nthis.refs['scene_' + sceneIndex] && \nthis.refs['scene_' + sceneIndex].setNativeProps(enabledSceneNativeProps);},\n\n\n_onAnimationStart:function(){\nvar fromIndex=this.state.presentedIndex;\nvar toIndex=this.state.presentedIndex;\nif(this.state.transitionFromIndex != null){\nfromIndex = this.state.transitionFromIndex;}else \nif(this.state.activeGesture){\ntoIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);}\n\nthis._setRenderSceneToHarwareTextureAndroid(fromIndex,true);\nthis._setRenderSceneToHarwareTextureAndroid(toIndex,true);\nvar navBar=this._navBar;\nif(navBar && navBar.onAnimationStart){\nnavBar.onAnimationStart(fromIndex,toIndex);}},\n\n\n\n_onAnimationEnd:function(){\nvar max=this.state.routeStack.length - 1;\nfor(var index=0;index <= max;index++) {\nthis._setRenderSceneToHarwareTextureAndroid(index,false);}\n\n\nvar navBar=this._navBar;\nif(navBar && navBar.onAnimationEnd){\nnavBar.onAnimationEnd();}},\n\n\n\n_setRenderSceneToHarwareTextureAndroid:function(sceneIndex,shouldRenderToHardwareTexture){\nvar viewAtIndex=this.refs['scene_' + sceneIndex];\nif(viewAtIndex === null || viewAtIndex === undefined){\nreturn;}\n\nviewAtIndex.setNativeProps({renderToHardwareTextureAndroid:shouldRenderToHardwareTexture});},\n\n\n_handleTouchStart:function(){\nthis._eligibleGestures = GESTURE_ACTIONS;},\n\n\n_handleMoveShouldSetPanResponder:function(e,gestureState){\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nthis._expectingGestureGrant = this._matchGestureAction(this._eligibleGestures,sceneConfig.gestures,gestureState);\nreturn !!this._expectingGestureGrant;},\n\n\n_doesGestureOverswipe:function(gestureName){\nvar wouldOverswipeBack=this.state.presentedIndex <= 0 && (\ngestureName === 'pop' || gestureName === 'jumpBack');\nvar wouldOverswipeForward=this.state.presentedIndex >= this.state.routeStack.length - 1 && \ngestureName === 'jumpForward';\nreturn wouldOverswipeForward || wouldOverswipeBack;},\n\n\n_handlePanResponderGrant:function(e,gestureState){\ninvariant(\nthis._expectingGestureGrant,\n'Responder granted unexpectedly.');\n\nthis._attachGesture(this._expectingGestureGrant);\nthis._onAnimationStart();\nthis._expectingGestureGrant = null;},\n\n\n_deltaForGestureAction:function(gestureAction){\nswitch(gestureAction){\ncase 'pop':\ncase 'jumpBack':\nreturn -1;\ncase 'jumpForward':\nreturn 1;\ndefault:\ninvariant(false,'Unsupported gesture action ' + gestureAction);\nreturn;}},\n\n\n\n_handlePanResponderRelease:function(e,gestureState){var _this4=this;\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nvar releaseGestureAction=this.state.activeGesture;\nif(!releaseGestureAction){\n\nreturn;}\n\nvar releaseGesture=sceneConfig.gestures[releaseGestureAction];\nvar destIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nif(this.spring.getCurrentValue() === 0){\n\nthis.spring.setCurrentValue(0).setAtRest();\nthis._completeTransition();\nreturn;}\n\nvar isTravelVertical=releaseGesture.direction === 'top-to-bottom' || releaseGesture.direction === 'bottom-to-top';\nvar isTravelInverted=releaseGesture.direction === 'right-to-left' || releaseGesture.direction === 'bottom-to-top';\nvar velocity,gestureDistance;\nif(isTravelVertical){\nvelocity = isTravelInverted?-gestureState.vy:gestureState.vy;\ngestureDistance = isTravelInverted?-gestureState.dy:gestureState.dy;}else \n{\nvelocity = isTravelInverted?-gestureState.vx:gestureState.vx;\ngestureDistance = isTravelInverted?-gestureState.dx:gestureState.dx;}\n\nvar transitionVelocity=clamp(-10,velocity,10);\nif(Math.abs(velocity) < releaseGesture.notMoving){\n\nvar hasGesturedEnoughToComplete=gestureDistance > releaseGesture.fullDistance * releaseGesture.stillCompletionRatio;\ntransitionVelocity = hasGesturedEnoughToComplete?releaseGesture.snapVelocity:-releaseGesture.snapVelocity;}\n\nif(transitionVelocity < 0 || this._doesGestureOverswipe(releaseGestureAction)){\n\n\nif(this.state.transitionFromIndex == null){\n\nvar transitionBackToPresentedIndex=this.state.presentedIndex;\n\nthis.state.presentedIndex = destIndex;\nthis._transitionTo(\ntransitionBackToPresentedIndex,\n-transitionVelocity,\n1 - this.spring.getCurrentValue());}}else \n\n\n{\n\nthis._emitWillFocus(this.state.routeStack[destIndex]);\nthis._transitionTo(\ndestIndex,\ntransitionVelocity,\nnull,\nfunction(){\nif(releaseGestureAction === 'pop'){\n_this4._cleanScenesPastIndex(destIndex);}});}\n\n\n\n\nthis._detachGesture();},\n\n\n_handlePanResponderTerminate:function(e,gestureState){\nvar destIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._detachGesture();\nvar transitionBackToPresentedIndex=this.state.presentedIndex;\n\nthis.state.presentedIndex = destIndex;\nthis._transitionTo(\ntransitionBackToPresentedIndex,\nnull,\n1 - this.spring.getCurrentValue());},\n\n\n\n_attachGesture:function(gestureId){\nthis.state.activeGesture = gestureId;\nvar gesturingToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._enableScene(gesturingToIndex);},\n\n\n_detachGesture:function(){\nthis.state.activeGesture = null;\nthis.state.pendingGestureProgress = null;\nthis._hideScenes();},\n\n\n_handlePanResponderMove:function(e,gestureState){\nvar sceneConfig=this.state.sceneConfigStack[this.state.presentedIndex];\nif(this.state.activeGesture){\nvar gesture=sceneConfig.gestures[this.state.activeGesture];\nreturn this._moveAttachedGesture(gesture,gestureState);}\n\nvar matchedGesture=this._matchGestureAction(GESTURE_ACTIONS,sceneConfig.gestures,gestureState);\nif(matchedGesture){\nthis._attachGesture(matchedGesture);}},\n\n\n\n_moveAttachedGesture:function(gesture,gestureState){\nvar isTravelVertical=gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\nvar isTravelInverted=gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\nvar distance=isTravelVertical?gestureState.dy:gestureState.dx;\ndistance = isTravelInverted?-distance:distance;\nvar gestureDetectMovement=gesture.gestureDetectMovement;\nvar nextProgress=(distance - gestureDetectMovement) / (\ngesture.fullDistance - gestureDetectMovement);\nif(nextProgress < 0 && gesture.isDetachable){\nvar gesturingToIndex=this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\nthis._transitionBetween(this.state.presentedIndex,gesturingToIndex,0);\nthis._detachGesture();\nif(this.state.pendingGestureProgress != null){\nthis.spring.setCurrentValue(0);}\n\nreturn;}\n\nif(this._doesGestureOverswipe(this.state.activeGesture)){\nvar frictionConstant=gesture.overswipe.frictionConstant;\nvar frictionByDistance=gesture.overswipe.frictionByDistance;\nvar frictionRatio=1 / (frictionConstant + Math.abs(nextProgress) * frictionByDistance);\nnextProgress *= frictionRatio;}\n\nnextProgress = clamp(0,nextProgress,1);\nif(this.state.transitionFromIndex != null){\nthis.state.pendingGestureProgress = nextProgress;}else \nif(this.state.pendingGestureProgress){\nthis.spring.setEndValue(nextProgress);}else \n{\nthis.spring.setCurrentValue(nextProgress);}},\n\n\n\n_matchGestureAction:function(eligibleGestures,gestures,gestureState){var _this5=this;\nif(!gestures){\nreturn null;}\n\nvar matchedGesture=null;\neligibleGestures.some(function(gestureName,gestureIndex){\nvar gesture=gestures[gestureName];\nif(!gesture){\nreturn;}\n\nif(gesture.overswipe == null && _this5._doesGestureOverswipe(gestureName)){\n\nreturn false;}\n\nvar isTravelVertical=gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\nvar isTravelInverted=gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\nvar currentLoc=isTravelVertical?gestureState.moveY:gestureState.moveX;\nvar travelDist=isTravelVertical?gestureState.dy:gestureState.dx;\nvar oppositeAxisTravelDist=\nisTravelVertical?gestureState.dx:gestureState.dy;\nvar edgeHitWidth=gesture.edgeHitWidth;\nif(isTravelInverted){\ncurrentLoc = -currentLoc;\ntravelDist = -travelDist;\noppositeAxisTravelDist = -oppositeAxisTravelDist;\nedgeHitWidth = isTravelVertical?\n-(SCREEN_HEIGHT - edgeHitWidth):\n-(SCREEN_WIDTH - edgeHitWidth);}\n\nvar moveStartedInRegion=gesture.edgeHitWidth == null || \ncurrentLoc < edgeHitWidth;\nif(!moveStartedInRegion){\nreturn false;}\n\nvar moveTravelledFarEnough=travelDist >= gesture.gestureDetectMovement;\nif(!moveTravelledFarEnough){\nreturn false;}\n\nvar directionIsCorrect=Math.abs(travelDist) > Math.abs(oppositeAxisTravelDist) * gesture.directionRatio;\nif(directionIsCorrect){\nmatchedGesture = gestureName;\nreturn true;}else \n{\n_this5._eligibleGestures = _this5._eligibleGestures.slice().splice(gestureIndex,1);}});\n\n\nreturn matchedGesture;},\n\n\n_transitionSceneStyle:function(fromIndex,toIndex,progress,index){\nvar viewAtIndex=this.refs['scene_' + index];\nif(viewAtIndex === null || viewAtIndex === undefined){\nreturn;}\n\n\nvar sceneConfigIndex=fromIndex < toIndex?toIndex:fromIndex;\nvar sceneConfig=this.state.sceneConfigStack[sceneConfigIndex];\n\nif(!sceneConfig){\nsceneConfig = this.state.sceneConfigStack[sceneConfigIndex - 1];}\n\nvar styleToUse={};\nvar useFn=index < fromIndex || index < toIndex?\nsceneConfig.animationInterpolators.out:\nsceneConfig.animationInterpolators.into;\nvar directionAdjustedProgress=fromIndex < toIndex?progress:1 - progress;\nvar didChange=useFn(styleToUse,directionAdjustedProgress);\nif(didChange){\nviewAtIndex.setNativeProps({style:styleToUse});}},\n\n\n\n_transitionBetween:function(fromIndex,toIndex,progress){\nthis._transitionSceneStyle(fromIndex,toIndex,progress,fromIndex);\nthis._transitionSceneStyle(fromIndex,toIndex,progress,toIndex);\nvar navBar=this._navBar;\nif(navBar && navBar.updateProgress && toIndex >= 0 && fromIndex >= 0){\nnavBar.updateProgress(progress,fromIndex,toIndex);}},\n\n\n\n_handleResponderTerminationRequest:function(){\nreturn false;},\n\n\n_getDestIndexWithinBounds:function(n){\nvar currentIndex=this.state.presentedIndex;\nvar destIndex=currentIndex + n;\ninvariant(\ndestIndex >= 0,\n'Cannot jump before the first route.');\n\nvar maxIndex=this.state.routeStack.length - 1;\ninvariant(\nmaxIndex >= destIndex,\n'Cannot jump past the last route.');\n\nreturn destIndex;},\n\n\n_jumpN:function(n){\nvar destIndex=this._getDestIndexWithinBounds(n);\nthis._enableScene(destIndex);\nthis._emitWillFocus(this.state.routeStack[destIndex]);\nthis._transitionTo(destIndex);},\n\n\njumpTo:function(route){\nvar destIndex=this.state.routeStack.indexOf(route);\ninvariant(\ndestIndex !== -1,\n'Cannot jump to route that is not in the route stack');\n\nthis._jumpN(destIndex - this.state.presentedIndex);},\n\n\njumpForward:function(){\nthis._jumpN(1);},\n\n\njumpBack:function(){\nthis._jumpN(-1);},\n\n\npush:function(route){var _this6=this;\ninvariant(!!route,'Must supply route to push');\nvar activeLength=this.state.presentedIndex + 1;\nvar activeStack=this.state.routeStack.slice(0,activeLength);\nvar activeIDStack=this.state.idStack.slice(0,activeLength);\nvar activeAnimationConfigStack=this.state.sceneConfigStack.slice(0,activeLength);\nvar nextStack=activeStack.concat([route]);\nvar destIndex=nextStack.length - 1;\nvar nextIDStack=activeIDStack.concat([getuid()]);\nvar nextAnimationConfigStack=activeAnimationConfigStack.concat([\nthis.props.configureScene(route)]);\n\nthis._emitWillFocus(nextStack[destIndex]);\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextStack,\nsceneConfigStack:nextAnimationConfigStack},\nfunction(){\n_this6._enableScene(destIndex);\n_this6._transitionTo(destIndex);});},\n\n\n\n_popN:function(n){var _this7=this;\nif(n === 0){\nreturn;}\n\ninvariant(\nthis.state.presentedIndex - n >= 0,\n'Cannot pop below zero');\n\nvar popIndex=this.state.presentedIndex - n;\nthis._enableScene(popIndex);\nthis._emitWillFocus(this.state.routeStack[popIndex]);\nthis._transitionTo(\npopIndex,\nnull,\nnull,\nfunction(){\n_this7._cleanScenesPastIndex(popIndex);});},\n\n\n\n\npop:function(){\nthis._popN(1);},\n\n\n\n\n\n\n\n\nreplaceAtIndex:function(route,index,cb){var _this8=this;\ninvariant(!!route,'Must supply route to replace');\nif(index < 0){\nindex += this.state.routeStack.length;}\n\n\nif(this.state.routeStack.length <= index){\nreturn;}\n\n\n\n\nvar nextIDStack=this.state.idStack.slice();\nvar nextRouteStack=this.state.routeStack.slice();\nvar nextAnimationModeStack=this.state.sceneConfigStack.slice();\nnextIDStack[index] = getuid();\nnextRouteStack[index] = route;\nnextAnimationModeStack[index] = this.props.configureScene(route);\n\nif(index === this.state.presentedIndex){\nthis._emitWillFocus(route);}\n\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextRouteStack,\nsceneConfigStack:nextAnimationModeStack},\nfunction(){\nif(index === _this8.state.presentedIndex){\n_this8._emitDidFocus(route);}\n\ncb && cb();});},\n\n\n\n\n\n\nreplace:function(route){\nthis.replaceAtIndex(route,this.state.presentedIndex);},\n\n\n\n\n\nreplacePrevious:function(route){\nthis.replaceAtIndex(route,this.state.presentedIndex - 1);},\n\n\npopToTop:function(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\npopToRoute:function(route){\nvar indexOfRoute=this.state.routeStack.indexOf(route);\ninvariant(\nindexOfRoute !== -1,\n'Calling popToRoute for a route that doesn\\'t exist!');\n\nvar numToPop=this.state.presentedIndex - indexOfRoute;\nthis._popN(numToPop);},\n\n\nreplacePreviousAndPop:function(route){\nif(this.state.routeStack.length < 2){\nreturn;}\n\nthis.replacePrevious(route);\nthis.pop();},\n\n\nresetTo:function(route){var _this9=this;\ninvariant(!!route,'Must supply route to push');\nthis.replaceAtIndex(route,0,function(){\n\n\nif(_this9.state.presentedIndex > 0){\n_this9._popN(_this9.state.presentedIndex);}});},\n\n\n\n\ngetCurrentRoutes:function(){\n\nreturn this.state.routeStack.slice();},\n\n\n_handleItemRef:function(itemId,route,ref){\nthis._itemRefs[itemId] = ref;\nvar itemIndex=this.state.idStack.indexOf(itemId);\nif(itemIndex === -1){\nreturn;}\n\nthis.props.onItemRef && this.props.onItemRef(ref,itemIndex,route);},\n\n\n_cleanScenesPastIndex:function(index){var _this10=this;\nvar newStackLength=index + 1;\n\nif(newStackLength < this.state.routeStack.length){\nthis.state.idStack.slice(newStackLength).map(function(removingId){\n_this10._itemRefs[removingId] = null;});\n\nthis.setState({\nsceneConfigStack:this.state.sceneConfigStack.slice(0,newStackLength),\nidStack:this.state.idStack.slice(0,newStackLength),\nrouteStack:this.state.routeStack.slice(0,newStackLength)});}},\n\n\n\n\n_renderScene:function(route,i){var _this11=this;\nvar child=this.props.renderScene(\nroute,\nthis);\n\nvar disabledSceneStyle=null;\nif(i !== this.state.presentedIndex){\ndisabledSceneStyle = styles.disabledScene;}\n\nvar originalRef=child.ref;\nif(originalRef != null && typeof originalRef !== 'function'){\nconsole.warn(\n'String refs are not supported for navigator scenes. Use a callback ' + \n'ref instead. Ignoring ref: ' + originalRef);\n\noriginalRef = null;}\n\nreturn (\nReact.createElement(View,{\nkey:this.state.idStack[i],\nref:'scene_' + i,\nonStartShouldSetResponderCapture:function(){\nreturn _this11.state.transitionFromIndex != null || _this11.state.transitionFromIndex != null;},\n\nstyle:[styles.baseScene,this.props.sceneStyle,disabledSceneStyle]},\nReact.cloneElement(child,{\nref:function(component){\n_this11._handleItemRef(_this11.state.idStack[i],route,component);\nif(originalRef){\noriginalRef(component);}}})));},\n\n\n\n\n\n\n\n_renderNavigationBar:function(){var _this12=this;\nif(!this.props.navigationBar){\nreturn null;}\n\nreturn React.cloneElement(this.props.navigationBar,{\nref:function(navBar){_this12._navBar = navBar;},\nnavigator:this,\nnavState:this.state});},\n\n\n\nrender:function(){var _this13=this;\nvar newRenderedSceneMap=new Map();\nvar scenes=this.state.routeStack.map(function(route,index){\nvar renderedScene;\nif(_this13._renderedSceneMap.has(route) && \nindex !== _this13.state.presentedIndex){\nrenderedScene = _this13._renderedSceneMap.get(route);}else \n{\nrenderedScene = _this13._renderScene(route,index);}\n\nnewRenderedSceneMap.set(route,renderedScene);\nreturn renderedScene;});\n\nthis._renderedSceneMap = newRenderedSceneMap;\nreturn (\nReact.createElement(View,{style:[styles.container,this.props.style]},\nReact.createElement(View,_extends({\nstyle:styles.transitioner},\nthis.panGesture.panHandlers,{\nonTouchStart:this._handleTouchStart,\nonResponderTerminationRequest:\nthis._handleResponderTerminationRequest}),\n\nscenes),\n\nthis._renderNavigationBar()));},\n\n\n\n\n_getNavigationContext:function(){\nif(!this._navigationContext){\nthis._navigationContext = new NavigationContext();}\n\nreturn this._navigationContext;}});\n\n\n\nmodule.exports = Navigator;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule Navigator\n */\n /* eslint-disable no-extra-boolean-cast*/\n'use strict';\n\nvar AnimationsDebugModule = require('NativeModules').AnimationsDebugModule;\nvar Dimensions = require('Dimensions');\nvar InteractionMixin = require('InteractionMixin');\nvar Map = require('Map');\nvar NavigationContext = require('NavigationContext');\nvar NavigatorBreadcrumbNavigationBar = require('NavigatorBreadcrumbNavigationBar');\nvar NavigatorNavigationBar = require('NavigatorNavigationBar');\nvar NavigatorSceneConfigs = require('NavigatorSceneConfigs');\nvar PanResponder = require('PanResponder');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar Subscribable = require('Subscribable');\nvar TimerMixin = require('react-timer-mixin');\nvar View = require('View');\n\nvar clamp = require('clamp');\nvar flattenStyle = require('flattenStyle');\nvar invariant = require('invariant');\nvar rebound = require('rebound');\n\nvar PropTypes = React.PropTypes;\n\n// TODO: this is not ideal because there is no guarantee that the navigator\n// is full screen, hwoever we don't have a good way to measure the actual\n// size of the navigator right now, so this is the next best thing.\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar SCREEN_HEIGHT = Dimensions.get('window').height;\nvar SCENE_DISABLED_NATIVE_PROPS = {\n style: {\n left: SCREEN_WIDTH,\n opacity: 0,\n },\n};\n\nvar __uid = 0;\nfunction getuid() {\n return __uid++;\n}\n\n// styles moved to the top of the file so getDefaultProps can refer to it\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n defaultSceneStyle: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n baseScene: {\n position: 'absolute',\n overflow: 'hidden',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n disabledScene: {\n left: SCREEN_WIDTH,\n },\n transitioner: {\n flex: 1,\n backgroundColor: 'transparent',\n overflow: 'hidden',\n }\n});\n\nvar GESTURE_ACTIONS = [\n 'pop',\n 'jumpBack',\n 'jumpForward',\n];\n\n/**\n * Use `Navigator` to transition between different scenes in your app. To\n * accomplish this, provide route objects to the navigator to identify each\n * scene, and also a `renderScene` function that the navigator can use to\n * render the scene for a given route.\n *\n * To change the animation or gesture properties of the scene, provide a\n * `configureScene` prop to get the config object for a given route. See\n * `Navigator.SceneConfigs` for default animations and more info on\n * scene config options.\n *\n * ### Basic Usage\n *\n * ```\n * <Navigator\n * initialRoute={{name: 'My First Scene', index: 0}}\n * renderScene={(route, navigator) =>\n * <MySceneComponent\n * name={route.name}\n * onForward={() => {\n * var nextIndex = route.index + 1;\n * navigator.push({\n * name: 'Scene ' + nextIndex,\n * index: nextIndex,\n * });\n * }}\n * onBack={() => {\n * if (route.index > 0) {\n * navigator.pop();\n * }\n * }}\n * />\n * }\n * />\n * ```\n *\n * ### Navigator Methods\n *\n * If you have a ref to the Navigator element, you can invoke several methods\n * on it to trigger navigation:\n *\n * - `getCurrentRoutes()` - returns the current list of routes\n * - `jumpBack()` - Jump backward without unmounting the current scene\n * - `jumpForward()` - Jump forward to the next scene in the route stack\n * - `jumpTo(route)` - Transition to an existing scene without unmounting\n * - `push(route)` - Navigate forward to a new scene, squashing any scenes\n * that you could `jumpForward` to\n * - `pop()` - Transition back and unmount the current scene\n * - `replace(route)` - Replace the current scene with a new route\n * - `replaceAtIndex(route, index)` - Replace a scene as specified by an index\n * - `replacePrevious(route)` - Replace the previous scene\n * - `immediatelyResetRouteStack(routeStack)` - Reset every scene with an\n * array of routes\n * - `popToRoute(route)` - Pop to a particular scene, as specified by it's\n * route. All scenes after it will be unmounted\n * - `popToTop()` - Pop to the first scene in the stack, unmounting every\n * other scene\n *\n */\nvar Navigator = React.createClass({\n\n propTypes: {\n /**\n * Optional function that allows configuration about scene animations and\n * gestures. Will be invoked with the route and should return a scene\n * configuration object\n *\n * ```\n * (route) => Navigator.SceneConfigs.FloatFromRight\n * ```\n */\n configureScene: PropTypes.func,\n\n /**\n * Required function which renders the scene for a given route. Will be\n * invoked with the route and the navigator object\n *\n * ```\n * (route, navigator) =>\n * <MySceneComponent title={route.title} />\n * ```\n */\n renderScene: PropTypes.func.isRequired,\n\n /**\n * Specify a route to start on. A route is an object that the navigator\n * will use to identify each scene to render. `initialRoute` must be\n * a route in the `initialRouteStack` if both props are provided. The\n * `initialRoute` will default to the last item in the `initialRouteStack`.\n */\n initialRoute: PropTypes.object,\n\n /**\n * Provide a set of routes to initially mount. Required if no initialRoute\n * is provided. Otherwise, it will default to an array containing only the\n * `initialRoute`\n */\n initialRouteStack: PropTypes.arrayOf(PropTypes.object),\n\n /**\n * @deprecated\n * Use `navigationContext.addListener('willfocus', callback)` instead.\n *\n * Will emit the target route upon mounting and before each nav transition\n */\n onWillFocus: PropTypes.func,\n\n /**\n * @deprecated\n * Use `navigationContext.addListener('didfocus', callback)` instead.\n *\n * Will be called with the new route of each scene after the transition is\n * complete or after the initial mounting\n */\n onDidFocus: PropTypes.func,\n\n /**\n * Will be called with (ref, indexInStack, route) when the scene ref changes\n */\n onItemRef: PropTypes.func,\n\n /**\n * Optionally provide a navigation bar that persists across scene\n * transitions\n */\n navigationBar: PropTypes.node,\n\n /**\n * Optionally provide the navigator object from a parent Navigator\n */\n navigator: PropTypes.object,\n\n /**\n * Styles to apply to the container of each scene\n */\n sceneStyle: View.propTypes.style,\n },\n\n statics: {\n BreadcrumbNavigationBar: NavigatorBreadcrumbNavigationBar,\n NavigationBar: NavigatorNavigationBar,\n SceneConfigs: NavigatorSceneConfigs,\n },\n\n mixins: [TimerMixin, InteractionMixin, Subscribable.Mixin],\n\n getDefaultProps: function() {\n return {\n configureScene: () => NavigatorSceneConfigs.PushFromRight,\n sceneStyle: styles.defaultSceneStyle,\n };\n },\n\n getInitialState: function() {\n this._renderedSceneMap = new Map();\n\n var routeStack = this.props.initialRouteStack || [this.props.initialRoute];\n invariant(\n routeStack.length >= 1,\n 'Navigator requires props.initialRoute or props.initialRouteStack.'\n );\n var initialRouteIndex = routeStack.length - 1;\n if (this.props.initialRoute) {\n initialRouteIndex = routeStack.indexOf(this.props.initialRoute);\n invariant(\n initialRouteIndex !== -1,\n 'initialRoute is not in initialRouteStack.'\n );\n }\n return {\n sceneConfigStack: routeStack.map(\n (route) => this.props.configureScene(route)\n ),\n idStack: routeStack.map(() => getuid()),\n routeStack,\n presentedIndex: initialRouteIndex,\n transitionFromIndex: null,\n activeGesture: null,\n pendingGestureProgress: null,\n transitionQueue: [],\n };\n },\n\n componentWillMount: function() {\n // TODO(t7489503): Don't need this once ES6 Class landed.\n this.__defineGetter__('navigationContext', this._getNavigationContext);\n\n this._subRouteFocus = [];\n this.parentNavigator = this.props.navigator;\n this._handlers = {};\n this.springSystem = new rebound.SpringSystem();\n this.spring = this.springSystem.createSpring();\n this.spring.setRestSpeedThreshold(0.05);\n this.spring.setCurrentValue(0).setAtRest();\n this.spring.addListener({\n onSpringEndStateChange: () => {\n if (!this._interactionHandle) {\n this._interactionHandle = this.createInteractionHandle();\n }\n },\n onSpringUpdate: () => {\n this._handleSpringUpdate();\n },\n onSpringAtRest: () => {\n this._completeTransition();\n },\n });\n this.panGesture = PanResponder.create({\n onMoveShouldSetPanResponder: this._handleMoveShouldSetPanResponder,\n onPanResponderGrant: this._handlePanResponderGrant,\n onPanResponderRelease: this._handlePanResponderRelease,\n onPanResponderMove: this._handlePanResponderMove,\n onPanResponderTerminate: this._handlePanResponderTerminate,\n });\n this._itemRefs = {};\n this._interactionHandle = null;\n this._emitWillFocus(this.state.routeStack[this.state.presentedIndex]);\n },\n\n componentDidMount: function() {\n this._handleSpringUpdate();\n this._emitDidFocus(this.state.routeStack[this.state.presentedIndex]);\n },\n\n componentWillUnmount: function() {\n if (this._navigationContext) {\n this._navigationContext.dispose();\n this._navigationContext = null;\n }\n },\n\n /**\n * @param {RouteStack} nextRouteStack Next route stack to reinitialize. This\n * doesn't accept stack item `id`s, which implies that all existing items are\n * destroyed, and then potentially recreated according to `routeStack`. Does\n * not animate, immediately replaces and rerenders navigation bar and stack\n * items.\n */\n immediatelyResetRouteStack: function(nextRouteStack) {\n var destIndex = nextRouteStack.length - 1;\n this.setState({\n idStack: nextRouteStack.map(getuid),\n routeStack: nextRouteStack,\n sceneConfigStack: nextRouteStack.map(\n this.props.configureScene\n ),\n presentedIndex: destIndex,\n activeGesture: null,\n transitionFromIndex: null,\n transitionQueue: [],\n }, () => {\n this._handleSpringUpdate();\n });\n },\n\n _transitionTo: function(destIndex, velocity, jumpSpringTo, cb) {\n if (destIndex === this.state.presentedIndex) {\n return;\n }\n if (this.state.transitionFromIndex !== null) {\n this.state.transitionQueue.push({\n destIndex,\n velocity,\n cb,\n });\n return;\n }\n this.state.transitionFromIndex = this.state.presentedIndex;\n this.state.presentedIndex = destIndex;\n this.state.transitionCb = cb;\n this._onAnimationStart();\n if (AnimationsDebugModule) {\n AnimationsDebugModule.startRecordingFps();\n }\n var sceneConfig = this.state.sceneConfigStack[this.state.transitionFromIndex] ||\n this.state.sceneConfigStack[this.state.presentedIndex];\n invariant(\n sceneConfig,\n 'Cannot configure scene at index ' + this.state.transitionFromIndex\n );\n if (jumpSpringTo != null) {\n this.spring.setCurrentValue(jumpSpringTo);\n }\n this.spring.setOvershootClampingEnabled(true);\n this.spring.getSpringConfig().friction = sceneConfig.springFriction;\n this.spring.getSpringConfig().tension = sceneConfig.springTension;\n this.spring.setVelocity(velocity || sceneConfig.defaultTransitionVelocity);\n this.spring.setEndValue(1);\n },\n\n /**\n * This happens for each frame of either a gesture or a transition. If both are\n * happening, we only set values for the transition and the gesture will catch up later\n */\n _handleSpringUpdate: function() {\n // Prioritize handling transition in progress over a gesture:\n if (this.state.transitionFromIndex != null) {\n this._transitionBetween(\n this.state.transitionFromIndex,\n this.state.presentedIndex,\n this.spring.getCurrentValue()\n );\n } else if (this.state.activeGesture != null) {\n var presentedToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._transitionBetween(\n this.state.presentedIndex,\n presentedToIndex,\n this.spring.getCurrentValue()\n );\n }\n },\n\n /**\n * This happens at the end of a transition started by transitionTo, and when the spring catches up to a pending gesture\n */\n _completeTransition: function() {\n if (this.spring.getCurrentValue() !== 1 && this.spring.getCurrentValue() !== 0) {\n // The spring has finished catching up to a gesture in progress. Remove the pending progress\n // and we will be in a normal activeGesture state\n if (this.state.pendingGestureProgress) {\n this.state.pendingGestureProgress = null;\n }\n return;\n }\n this._onAnimationEnd();\n var presentedIndex = this.state.presentedIndex;\n var didFocusRoute = this._subRouteFocus[presentedIndex] || this.state.routeStack[presentedIndex];\n this._emitDidFocus(didFocusRoute);\n if (AnimationsDebugModule) {\n AnimationsDebugModule.stopRecordingFps(Date.now());\n }\n this.state.transitionFromIndex = null;\n this.spring.setCurrentValue(0).setAtRest();\n this._hideScenes();\n if (this.state.transitionCb) {\n this.state.transitionCb();\n this.state.transitionCb = null;\n }\n if (this._interactionHandle) {\n this.clearInteractionHandle(this._interactionHandle);\n this._interactionHandle = null;\n }\n if (this.state.pendingGestureProgress) {\n // A transition completed, but there is already another gesture happening.\n // Enable the scene and set the spring to catch up with the new gesture\n var gestureToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._enableScene(gestureToIndex);\n this.spring.setEndValue(this.state.pendingGestureProgress);\n return;\n }\n if (this.state.transitionQueue.length) {\n var queuedTransition = this.state.transitionQueue.shift();\n this._enableScene(queuedTransition.destIndex);\n this._emitWillFocus(this.state.routeStack[queuedTransition.destIndex]);\n this._transitionTo(\n queuedTransition.destIndex,\n queuedTransition.velocity,\n null,\n queuedTransition.cb\n );\n }\n },\n\n _emitDidFocus: function(route) {\n this.navigationContext.emit('didfocus', {route: route});\n\n if (this.props.onDidFocus) {\n this.props.onDidFocus(route);\n }\n },\n\n _emitWillFocus: function(route) {\n this.navigationContext.emit('willfocus', {route: route});\n\n var navBar = this._navBar;\n if (navBar && navBar.handleWillFocus) {\n navBar.handleWillFocus(route);\n }\n if (this.props.onWillFocus) {\n this.props.onWillFocus(route);\n }\n },\n\n /**\n * Hides all scenes that we are not currently on, gesturing to, or transitioning from\n */\n _hideScenes: function() {\n var gesturingToIndex = null;\n if (this.state.activeGesture) {\n gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n }\n for (var i = 0; i < this.state.routeStack.length; i++) {\n if (i === this.state.presentedIndex ||\n i === this.state.transitionFromIndex ||\n i === gesturingToIndex) {\n continue;\n }\n this._disableScene(i);\n }\n },\n\n /**\n * Push a scene off the screen, so that opacity:0 scenes will not block touches sent to the presented scenes\n */\n _disableScene: function(sceneIndex) {\n this.refs['scene_' + sceneIndex] &&\n this.refs['scene_' + sceneIndex].setNativeProps(SCENE_DISABLED_NATIVE_PROPS);\n },\n\n /**\n * Put the scene back into the state as defined by props.sceneStyle, so transitions can happen normally\n */\n _enableScene: function(sceneIndex) {\n // First, determine what the defined styles are for scenes in this navigator\n var sceneStyle = flattenStyle([styles.baseScene, this.props.sceneStyle]);\n // Then restore the left value for this scene\n var enabledSceneNativeProps = {\n left: sceneStyle.left,\n };\n if (sceneIndex !== this.state.transitionFromIndex &&\n sceneIndex !== this.state.presentedIndex) {\n // If we are not in a transition from this index, make sure opacity is 0\n // to prevent the enabled scene from flashing over the presented scene\n enabledSceneNativeProps.opacity = 0;\n }\n this.refs['scene_' + sceneIndex] &&\n this.refs['scene_' + sceneIndex].setNativeProps(enabledSceneNativeProps);\n },\n\n _onAnimationStart: function() {\n var fromIndex = this.state.presentedIndex;\n var toIndex = this.state.presentedIndex;\n if (this.state.transitionFromIndex != null) {\n fromIndex = this.state.transitionFromIndex;\n } else if (this.state.activeGesture) {\n toIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n }\n this._setRenderSceneToHarwareTextureAndroid(fromIndex, true);\n this._setRenderSceneToHarwareTextureAndroid(toIndex, true);\n var navBar = this._navBar;\n if (navBar && navBar.onAnimationStart) {\n navBar.onAnimationStart(fromIndex, toIndex);\n }\n },\n\n _onAnimationEnd: function() {\n var max = this.state.routeStack.length - 1;\n for (var index = 0; index <= max; index++) {\n this._setRenderSceneToHarwareTextureAndroid(index, false);\n }\n\n var navBar = this._navBar;\n if (navBar && navBar.onAnimationEnd) {\n navBar.onAnimationEnd();\n }\n },\n\n _setRenderSceneToHarwareTextureAndroid: function(sceneIndex, shouldRenderToHardwareTexture) {\n var viewAtIndex = this.refs['scene_' + sceneIndex];\n if (viewAtIndex === null || viewAtIndex === undefined) {\n return;\n }\n viewAtIndex.setNativeProps({renderToHardwareTextureAndroid: shouldRenderToHardwareTexture});\n },\n\n _handleTouchStart: function() {\n this._eligibleGestures = GESTURE_ACTIONS;\n },\n\n _handleMoveShouldSetPanResponder: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n this._expectingGestureGrant = this._matchGestureAction(this._eligibleGestures, sceneConfig.gestures, gestureState);\n return !! this._expectingGestureGrant;\n },\n\n _doesGestureOverswipe: function(gestureName) {\n var wouldOverswipeBack = this.state.presentedIndex <= 0 &&\n (gestureName === 'pop' || gestureName === 'jumpBack');\n var wouldOverswipeForward = this.state.presentedIndex >= this.state.routeStack.length - 1 &&\n gestureName === 'jumpForward';\n return wouldOverswipeForward || wouldOverswipeBack;\n },\n\n _handlePanResponderGrant: function(e, gestureState) {\n invariant(\n this._expectingGestureGrant,\n 'Responder granted unexpectedly.'\n );\n this._attachGesture(this._expectingGestureGrant);\n this._onAnimationStart();\n this._expectingGestureGrant = null;\n },\n\n _deltaForGestureAction: function(gestureAction) {\n switch (gestureAction) {\n case 'pop':\n case 'jumpBack':\n return -1;\n case 'jumpForward':\n return 1;\n default:\n invariant(false, 'Unsupported gesture action ' + gestureAction);\n return;\n }\n },\n\n _handlePanResponderRelease: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n var releaseGestureAction = this.state.activeGesture;\n if (!releaseGestureAction) {\n // The gesture may have been detached while responder, so there is no action here\n return;\n }\n var releaseGesture = sceneConfig.gestures[releaseGestureAction];\n var destIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n if (this.spring.getCurrentValue() === 0) {\n // The spring is at zero, so the gesture is already complete\n this.spring.setCurrentValue(0).setAtRest();\n this._completeTransition();\n return;\n }\n var isTravelVertical = releaseGesture.direction === 'top-to-bottom' || releaseGesture.direction === 'bottom-to-top';\n var isTravelInverted = releaseGesture.direction === 'right-to-left' || releaseGesture.direction === 'bottom-to-top';\n var velocity, gestureDistance;\n if (isTravelVertical) {\n velocity = isTravelInverted ? -gestureState.vy : gestureState.vy;\n gestureDistance = isTravelInverted ? -gestureState.dy : gestureState.dy;\n } else {\n velocity = isTravelInverted ? -gestureState.vx : gestureState.vx;\n gestureDistance = isTravelInverted ? -gestureState.dx : gestureState.dx;\n }\n var transitionVelocity = clamp(-10, velocity, 10);\n if (Math.abs(velocity) < releaseGesture.notMoving) {\n // The gesture velocity is so slow, is \"not moving\"\n var hasGesturedEnoughToComplete = gestureDistance > releaseGesture.fullDistance * releaseGesture.stillCompletionRatio;\n transitionVelocity = hasGesturedEnoughToComplete ? releaseGesture.snapVelocity : -releaseGesture.snapVelocity;\n }\n if (transitionVelocity < 0 || this._doesGestureOverswipe(releaseGestureAction)) {\n // This gesture is to an overswiped region or does not have enough velocity to complete\n // If we are currently mid-transition, then this gesture was a pending gesture. Because this gesture takes no action, we can stop here\n if (this.state.transitionFromIndex == null) {\n // There is no current transition, so we need to transition back to the presented index\n var transitionBackToPresentedIndex = this.state.presentedIndex;\n // slight hack: change the presented index for a moment in order to transitionTo correctly\n this.state.presentedIndex = destIndex;\n this._transitionTo(\n transitionBackToPresentedIndex,\n - transitionVelocity,\n 1 - this.spring.getCurrentValue()\n );\n }\n } else {\n // The gesture has enough velocity to complete, so we transition to the gesture's destination\n this._emitWillFocus(this.state.routeStack[destIndex]);\n this._transitionTo(\n destIndex,\n transitionVelocity,\n null,\n () => {\n if (releaseGestureAction === 'pop') {\n this._cleanScenesPastIndex(destIndex);\n }\n }\n );\n }\n this._detachGesture();\n },\n\n _handlePanResponderTerminate: function(e, gestureState) {\n var destIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._detachGesture();\n var transitionBackToPresentedIndex = this.state.presentedIndex;\n // slight hack: change the presented index for a moment in order to transitionTo correctly\n this.state.presentedIndex = destIndex;\n this._transitionTo(\n transitionBackToPresentedIndex,\n null,\n 1 - this.spring.getCurrentValue()\n );\n },\n\n _attachGesture: function(gestureId) {\n this.state.activeGesture = gestureId;\n var gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._enableScene(gesturingToIndex);\n },\n\n _detachGesture: function() {\n this.state.activeGesture = null;\n this.state.pendingGestureProgress = null;\n this._hideScenes();\n },\n\n _handlePanResponderMove: function(e, gestureState) {\n var sceneConfig = this.state.sceneConfigStack[this.state.presentedIndex];\n if (this.state.activeGesture) {\n var gesture = sceneConfig.gestures[this.state.activeGesture];\n return this._moveAttachedGesture(gesture, gestureState);\n }\n var matchedGesture = this._matchGestureAction(GESTURE_ACTIONS, sceneConfig.gestures, gestureState);\n if (matchedGesture) {\n this._attachGesture(matchedGesture);\n }\n },\n\n _moveAttachedGesture: function(gesture, gestureState) {\n var isTravelVertical = gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\n var isTravelInverted = gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\n var distance = isTravelVertical ? gestureState.dy : gestureState.dx;\n distance = isTravelInverted ? - distance : distance;\n var gestureDetectMovement = gesture.gestureDetectMovement;\n var nextProgress = (distance - gestureDetectMovement) /\n (gesture.fullDistance - gestureDetectMovement);\n if (nextProgress < 0 && gesture.isDetachable) {\n var gesturingToIndex = this.state.presentedIndex + this._deltaForGestureAction(this.state.activeGesture);\n this._transitionBetween(this.state.presentedIndex, gesturingToIndex, 0);\n this._detachGesture();\n if (this.state.pendingGestureProgress != null) {\n this.spring.setCurrentValue(0);\n }\n return;\n }\n if (this._doesGestureOverswipe(this.state.activeGesture)) {\n var frictionConstant = gesture.overswipe.frictionConstant;\n var frictionByDistance = gesture.overswipe.frictionByDistance;\n var frictionRatio = 1 / ((frictionConstant) + (Math.abs(nextProgress) * frictionByDistance));\n nextProgress *= frictionRatio;\n }\n nextProgress = clamp(0, nextProgress, 1);\n if (this.state.transitionFromIndex != null) {\n this.state.pendingGestureProgress = nextProgress;\n } else if (this.state.pendingGestureProgress) {\n this.spring.setEndValue(nextProgress);\n } else {\n this.spring.setCurrentValue(nextProgress);\n }\n },\n\n _matchGestureAction: function(eligibleGestures, gestures, gestureState) {\n if (!gestures) {\n return null;\n }\n var matchedGesture = null;\n eligibleGestures.some((gestureName, gestureIndex) => {\n var gesture = gestures[gestureName];\n if (!gesture) {\n return;\n }\n if (gesture.overswipe == null && this._doesGestureOverswipe(gestureName)) {\n // cannot swipe past first or last scene without overswiping\n return false;\n }\n var isTravelVertical = gesture.direction === 'top-to-bottom' || gesture.direction === 'bottom-to-top';\n var isTravelInverted = gesture.direction === 'right-to-left' || gesture.direction === 'bottom-to-top';\n var currentLoc = isTravelVertical ? gestureState.moveY : gestureState.moveX;\n var travelDist = isTravelVertical ? gestureState.dy : gestureState.dx;\n var oppositeAxisTravelDist =\n isTravelVertical ? gestureState.dx : gestureState.dy;\n var edgeHitWidth = gesture.edgeHitWidth;\n if (isTravelInverted) {\n currentLoc = -currentLoc;\n travelDist = -travelDist;\n oppositeAxisTravelDist = -oppositeAxisTravelDist;\n edgeHitWidth = isTravelVertical ?\n -(SCREEN_HEIGHT - edgeHitWidth) :\n -(SCREEN_WIDTH - edgeHitWidth);\n }\n var moveStartedInRegion = gesture.edgeHitWidth == null ||\n currentLoc < edgeHitWidth;\n if (!moveStartedInRegion) {\n return false;\n }\n var moveTravelledFarEnough = travelDist >= gesture.gestureDetectMovement;\n if (!moveTravelledFarEnough) {\n return false;\n }\n var directionIsCorrect = Math.abs(travelDist) > Math.abs(oppositeAxisTravelDist) * gesture.directionRatio;\n if (directionIsCorrect) {\n matchedGesture = gestureName;\n return true;\n } else {\n this._eligibleGestures = this._eligibleGestures.slice().splice(gestureIndex, 1);\n }\n });\n return matchedGesture;\n },\n\n _transitionSceneStyle: function(fromIndex, toIndex, progress, index) {\n var viewAtIndex = this.refs['scene_' + index];\n if (viewAtIndex === null || viewAtIndex === undefined) {\n return;\n }\n // Use toIndex animation when we move forwards. Use fromIndex when we move back\n var sceneConfigIndex = fromIndex < toIndex ? toIndex : fromIndex;\n var sceneConfig = this.state.sceneConfigStack[sceneConfigIndex];\n // this happens for overswiping when there is no scene at toIndex\n if (!sceneConfig) {\n sceneConfig = this.state.sceneConfigStack[sceneConfigIndex - 1];\n }\n var styleToUse = {};\n var useFn = index < fromIndex || index < toIndex ?\n sceneConfig.animationInterpolators.out :\n sceneConfig.animationInterpolators.into;\n var directionAdjustedProgress = fromIndex < toIndex ? progress : 1 - progress;\n var didChange = useFn(styleToUse, directionAdjustedProgress);\n if (didChange) {\n viewAtIndex.setNativeProps({style: styleToUse});\n }\n },\n\n _transitionBetween: function(fromIndex, toIndex, progress) {\n this._transitionSceneStyle(fromIndex, toIndex, progress, fromIndex);\n this._transitionSceneStyle(fromIndex, toIndex, progress, toIndex);\n var navBar = this._navBar;\n if (navBar && navBar.updateProgress && toIndex >= 0 && fromIndex >= 0) {\n navBar.updateProgress(progress, fromIndex, toIndex);\n }\n },\n\n _handleResponderTerminationRequest: function() {\n return false;\n },\n\n _getDestIndexWithinBounds: function(n) {\n var currentIndex = this.state.presentedIndex;\n var destIndex = currentIndex + n;\n invariant(\n destIndex >= 0,\n 'Cannot jump before the first route.'\n );\n var maxIndex = this.state.routeStack.length - 1;\n invariant(\n maxIndex >= destIndex,\n 'Cannot jump past the last route.'\n );\n return destIndex;\n },\n\n _jumpN: function(n) {\n var destIndex = this._getDestIndexWithinBounds(n);\n this._enableScene(destIndex);\n this._emitWillFocus(this.state.routeStack[destIndex]);\n this._transitionTo(destIndex);\n },\n\n jumpTo: function(route) {\n var destIndex = this.state.routeStack.indexOf(route);\n invariant(\n destIndex !== -1,\n 'Cannot jump to route that is not in the route stack'\n );\n this._jumpN(destIndex - this.state.presentedIndex);\n },\n\n jumpForward: function() {\n this._jumpN(1);\n },\n\n jumpBack: function() {\n this._jumpN(-1);\n },\n\n push: function(route) {\n invariant(!!route, 'Must supply route to push');\n var activeLength = this.state.presentedIndex + 1;\n var activeStack = this.state.routeStack.slice(0, activeLength);\n var activeIDStack = this.state.idStack.slice(0, activeLength);\n var activeAnimationConfigStack = this.state.sceneConfigStack.slice(0, activeLength);\n var nextStack = activeStack.concat([route]);\n var destIndex = nextStack.length - 1;\n var nextIDStack = activeIDStack.concat([getuid()]);\n var nextAnimationConfigStack = activeAnimationConfigStack.concat([\n this.props.configureScene(route),\n ]);\n this._emitWillFocus(nextStack[destIndex]);\n this.setState({\n idStack: nextIDStack,\n routeStack: nextStack,\n sceneConfigStack: nextAnimationConfigStack,\n }, () => {\n this._enableScene(destIndex);\n this._transitionTo(destIndex);\n });\n },\n\n _popN: function(n) {\n if (n === 0) {\n return;\n }\n invariant(\n this.state.presentedIndex - n >= 0,\n 'Cannot pop below zero'\n );\n var popIndex = this.state.presentedIndex - n;\n this._enableScene(popIndex);\n this._emitWillFocus(this.state.routeStack[popIndex]);\n this._transitionTo(\n popIndex,\n null, // default velocity\n null, // no spring jumping\n () => {\n this._cleanScenesPastIndex(popIndex);\n }\n );\n },\n\n pop: function() {\n this._popN(1);\n },\n\n /**\n * Replace a route in the navigation stack.\n *\n * `index` specifies the route in the stack that should be replaced.\n * If it's negative, it counts from the back.\n */\n replaceAtIndex: function(route, index, cb) {\n invariant(!!route, 'Must supply route to replace');\n if (index < 0) {\n index += this.state.routeStack.length;\n }\n\n if (this.state.routeStack.length <= index) {\n return;\n }\n\n // I don't believe we need to lock for a replace since there's no\n // navigation actually happening\n var nextIDStack = this.state.idStack.slice();\n var nextRouteStack = this.state.routeStack.slice();\n var nextAnimationModeStack = this.state.sceneConfigStack.slice();\n nextIDStack[index] = getuid();\n nextRouteStack[index] = route;\n nextAnimationModeStack[index] = this.props.configureScene(route);\n\n if (index === this.state.presentedIndex) {\n this._emitWillFocus(route);\n }\n this.setState({\n idStack: nextIDStack,\n routeStack: nextRouteStack,\n sceneConfigStack: nextAnimationModeStack,\n }, () => {\n if (index === this.state.presentedIndex) {\n this._emitDidFocus(route);\n }\n cb && cb();\n });\n },\n\n /**\n * Replaces the current scene in the stack.\n */\n replace: function(route) {\n this.replaceAtIndex(route, this.state.presentedIndex);\n },\n\n /**\n * Replace the current route's parent.\n */\n replacePrevious: function(route) {\n this.replaceAtIndex(route, this.state.presentedIndex - 1);\n },\n\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n popToRoute: function(route) {\n var indexOfRoute = this.state.routeStack.indexOf(route);\n invariant(\n indexOfRoute !== -1,\n 'Calling popToRoute for a route that doesn\\'t exist!'\n );\n var numToPop = this.state.presentedIndex - indexOfRoute;\n this._popN(numToPop);\n },\n\n replacePreviousAndPop: function(route) {\n if (this.state.routeStack.length < 2) {\n return;\n }\n this.replacePrevious(route);\n this.pop();\n },\n\n resetTo: function(route) {\n invariant(!!route, 'Must supply route to push');\n this.replaceAtIndex(route, 0, () => {\n // Do not use popToRoute here, because race conditions could prevent the\n // route from existing at this time. Instead, just go to index 0\n if (this.state.presentedIndex > 0) {\n this._popN(this.state.presentedIndex);\n }\n });\n },\n\n getCurrentRoutes: function() {\n // Clone before returning to avoid caller mutating the stack\n return this.state.routeStack.slice();\n },\n\n _handleItemRef: function(itemId, route, ref) {\n this._itemRefs[itemId] = ref;\n var itemIndex = this.state.idStack.indexOf(itemId);\n if (itemIndex === -1) {\n return;\n }\n this.props.onItemRef && this.props.onItemRef(ref, itemIndex, route);\n },\n\n _cleanScenesPastIndex: function(index) {\n var newStackLength = index + 1;\n // Remove any unneeded rendered routes.\n if (newStackLength < this.state.routeStack.length) {\n this.state.idStack.slice(newStackLength).map((removingId) => {\n this._itemRefs[removingId] = null;\n });\n this.setState({\n sceneConfigStack: this.state.sceneConfigStack.slice(0, newStackLength),\n idStack: this.state.idStack.slice(0, newStackLength),\n routeStack: this.state.routeStack.slice(0, newStackLength),\n });\n }\n },\n\n _renderScene: function(route, i) {\n var child = this.props.renderScene(\n route,\n this\n );\n var disabledSceneStyle = null;\n if (i !== this.state.presentedIndex) {\n disabledSceneStyle = styles.disabledScene;\n }\n var originalRef = child.ref;\n if (originalRef != null && typeof originalRef !== 'function') {\n console.warn(\n 'String refs are not supported for navigator scenes. Use a callback ' +\n 'ref instead. Ignoring ref: ' + originalRef\n );\n originalRef = null;\n }\n return (\n <View\n key={this.state.idStack[i]}\n ref={'scene_' + i}\n onStartShouldSetResponderCapture={() => {\n return (this.state.transitionFromIndex != null) || (this.state.transitionFromIndex != null);\n }}\n style={[styles.baseScene, this.props.sceneStyle, disabledSceneStyle]}>\n {React.cloneElement(child, {\n ref: component => {\n this._handleItemRef(this.state.idStack[i], route, component);\n if (originalRef) {\n originalRef(component);\n }\n }\n })}\n </View>\n );\n },\n\n _renderNavigationBar: function() {\n if (!this.props.navigationBar) {\n return null;\n }\n return React.cloneElement(this.props.navigationBar, {\n ref: (navBar) => { this._navBar = navBar; },\n navigator: this,\n navState: this.state,\n });\n },\n\n render: function() {\n var newRenderedSceneMap = new Map();\n var scenes = this.state.routeStack.map((route, index) => {\n var renderedScene;\n if (this._renderedSceneMap.has(route) &&\n index !== this.state.presentedIndex) {\n renderedScene = this._renderedSceneMap.get(route);\n } else {\n renderedScene = this._renderScene(route, index);\n }\n newRenderedSceneMap.set(route, renderedScene);\n return renderedScene;\n });\n this._renderedSceneMap = newRenderedSceneMap;\n return (\n <View style={[styles.container, this.props.style]}>\n <View\n style={styles.transitioner}\n {...this.panGesture.panHandlers}\n onTouchStart={this._handleTouchStart}\n onResponderTerminationRequest={\n this._handleResponderTerminationRequest\n }>\n {scenes}\n </View>\n {this._renderNavigationBar()}\n </View>\n );\n },\n\n _getNavigationContext: function() {\n if (!this._navigationContext) {\n this._navigationContext = new NavigationContext();\n }\n return this._navigationContext;\n }\n});\n\nmodule.exports = Navigator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigator.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\nvar InteractionManager=require('InteractionManager');\n\n\n\n\n\n\nvar InteractionMixin={\ncomponentWillUnmount:function(){\nwhile(this._interactionMixinHandles.length) {\nInteractionManager.clearInteractionHandle(\nthis._interactionMixinHandles.pop());}},\n\n\n\n\n_interactionMixinHandles:[],\n\ncreateInteractionHandle:function(){\nvar handle=InteractionManager.createInteractionHandle();\nthis._interactionMixinHandles.push(handle);\nreturn handle;},\n\n\nclearInteractionHandle:function(clearHandle){\nInteractionManager.clearInteractionHandle(clearHandle);\nthis._interactionMixinHandles = this._interactionMixinHandles.filter(\nfunction(handle){return handle !== clearHandle;});},\n\n\n\n\n\n\n\n\nrunAfterInteractions:function(callback){\nInteractionManager.runAfterInteractions(callback);}};\n\n\n\nmodule.exports = InteractionMixin;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule InteractionMixin\n * @flow\n */\n'use strict';\n\nvar InteractionManager = require('InteractionManager');\n\n/**\n * This mixin provides safe versions of InteractionManager start/end methods\n * that ensures `clearInteractionHandle` is always called\n * once per start, even if the component is unmounted.\n */\nvar InteractionMixin = {\n componentWillUnmount: function() {\n while (this._interactionMixinHandles.length) {\n InteractionManager.clearInteractionHandle(\n this._interactionMixinHandles.pop()\n );\n }\n },\n\n _interactionMixinHandles: ([]: Array<number>),\n\n createInteractionHandle: function() {\n var handle = InteractionManager.createInteractionHandle();\n this._interactionMixinHandles.push(handle);\n return handle;\n },\n\n clearInteractionHandle: function(clearHandle: number) {\n InteractionManager.clearInteractionHandle(clearHandle);\n this._interactionMixinHandles = this._interactionMixinHandles.filter(\n handle => handle !== clearHandle\n );\n },\n\n /**\n * Schedule work for after all interactions have completed.\n *\n * @param {function} callback\n */\n runAfterInteractions: function(callback: Function) {\n InteractionManager.runAfterInteractions(callback);\n },\n};\n\nmodule.exports = InteractionMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Interaction/InteractionMixin.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationContext.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'use strict';\n\nvar NavigationEventEmitter=require('NavigationEventEmitter');\n\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');var \n\n\n\n\n\n\n\nNavigationContext=(function(){\n\n\n\nfunction NavigationContext(){_classCallCheck(this,NavigationContext);\nthis._eventEmitter = new NavigationEventEmitter(this);\nthis._currentRoute = null;\nthis.addListener('willfocus',this._onFocus,this);\nthis.addListener('didfocus',this._onFocus,this);}_createClass(NavigationContext,[{key:'addListener',value:\n\n\n\n\n\n\n\n\nfunction addListener(\neventType,\nlistener,\ncontext)\n{\nvar emitter=this._eventEmitter;\nif(emitter){\nreturn emitter.addListener(eventType,listener,context);}else \n{\nreturn {remove:emptyFunction};}}},{key:'emit',value:\n\n\n\nfunction emit(eventType,data){\nvar emitter=this._eventEmitter;\nif(emitter){\nemitter.emit(eventType,data);}}},{key:'dispose',value:\n\n\n\nfunction dispose(){\nvar emitter=this._eventEmitter;\nif(emitter){\n\nemitter.removeAllListeners();\nthis._eventEmitter = null;\nthis._currentRoute = null;}}},{key:'_onFocus',value:\n\n\n\nfunction _onFocus(event){\ninvariant(\nevent.data && event.data.hasOwnProperty('route'),\n'didfocus event should provide route');\n\nthis._currentRoute = event.data.route;}},{key:'currentRoute',get:function(){return this._currentRoute;}}]);return NavigationContext;})();\n\n\n\nmodule.exports = NavigationContext;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationContext\n */\n'use strict';\n\nvar NavigationEventEmitter = require('NavigationEventEmitter');\n\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\n\nimport type * as NavigationEvent from 'NavigationEvent';\nimport type * as EventSubscription from 'EventSubscription';\n\n/**\n * Class that contains the info and methods for app navigation.\n */\nclass NavigationContext {\n _eventEmitter: ?NavigationEventEmitter;\n _currentRoute: any;\n\n constructor() {\n this._eventEmitter = new NavigationEventEmitter(this);\n this._currentRoute = null;\n this.addListener('willfocus', this._onFocus, this);\n this.addListener('didfocus', this._onFocus, this);\n }\n\n // TODO: @flow does not like this getter. Will add @flow check back once\n // getter/setter is supported.\n get currentRoute(): any {\n return this._currentRoute;\n }\n\n addListener(\n eventType: string,\n listener: Function,\n context: ?Object\n ): EventSubscription {\n var emitter = this._eventEmitter;\n if (emitter) {\n return emitter.addListener(eventType, listener, context);\n } else {\n return {remove: emptyFunction};\n }\n }\n\n emit(eventType: String, data: any): void {\n var emitter = this._eventEmitter;\n if (emitter) {\n emitter.emit(eventType, data);\n }\n }\n\n dispose(): void {\n var emitter = this._eventEmitter;\n if (emitter) {\n // clean up everything.\n emitter.removeAllListeners();\n this._eventEmitter = null;\n this._currentRoute = null;\n }\n }\n\n _onFocus(event: NavigationEvent): void {\n invariant(\n event.data && event.data.hasOwnProperty('route'),\n 'didfocus event should provide route'\n );\n this._currentRoute = event.data.route;\n }\n}\n\nmodule.exports = NavigationContext;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationContext.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEvent.js":{"data":{"code":"'use strict';function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\nNavigationEvent=\n\n\n\n\nfunction NavigationEvent(type,target,data){_classCallCheck(this,NavigationEvent);\nthis.type = type;\nthis.target = target;\nthis.data = data;};\n\n\n\nmodule.exports = NavigationEvent;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule NavigationEvent\n * @flow\n */\n'use strict';\n\nclass NavigationEvent {\n type: String;\n target: Object;\n data: any;\n\n constructor(type: String, target: Object, data: any) {\n this.type = type;\n this.target = target;\n this.data = data;\n }\n}\n\nmodule.exports = NavigationEvent;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEvent.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEventEmitter.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\nvar NavigationEvent=require('NavigationEvent');var \n\n\n\n\n\n\nNavigationEventEmitter=(function(_EventEmitter){_inherits(NavigationEventEmitter,_EventEmitter);\n\n\n\n\nfunction NavigationEventEmitter(target){_classCallCheck(this,NavigationEventEmitter);\n_get(Object.getPrototypeOf(NavigationEventEmitter.prototype),'constructor',this).call(this);\nthis._emitting = false;\nthis._emitQueue = [];\nthis._target = target;}_createClass(NavigationEventEmitter,[{key:'emit',value:\n\n\nfunction emit(eventType,data){\nif(this._emitting){\n\n\nthis._emitQueue.push({eventType:eventType,data:data});\nreturn;}\n\n\nthis._emitting = true;\nvar event=new NavigationEvent(eventType,this._target,data);\n_get(Object.getPrototypeOf(NavigationEventEmitter.prototype),'emit',this).call(this,eventType,event);\nthis._emitting = false;\n\nwhile(this._emitQueue.length) {\nvar arg=this._emitQueue.shift();\nthis.emit(arg.eventType,arg.data);}}}]);return NavigationEventEmitter;})(EventEmitter);\n\n\n\n\nmodule.exports = NavigationEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigationEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\nvar NavigationEvent = require('NavigationEvent');\n\ntype EventParams = {\n eventType: String;\n data: any;\n};\n\nclass NavigationEventEmitter extends EventEmitter {\n _emitQueue: Array<EventParams>;\n _emitting: boolean;\n _target: Object;\n\n constructor(target: Object) {\n super();\n this._emitting = false;\n this._emitQueue = [];\n this._target = target;\n }\n\n emit(eventType: String, data: any): void {\n if (this._emitting) {\n // An event cycle that was previously created hasn't finished yet.\n // Put this event cycle into the queue and will finish them later.\n this._emitQueue.push({eventType, data});\n return;\n }\n\n this._emitting = true;\n var event = new NavigationEvent(eventType, this._target, data);\n super.emit(eventType, event);\n this._emitting = false;\n\n while (this._emitQueue.length) {\n var arg = this._emitQueue.shift();\n this.emit(arg.eventType, arg.data);\n }\n }\n}\n\nmodule.exports = NavigationEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/Navigation/NavigationEventEmitter.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigatorBreadcrumbNavigationBarStyles=require('NavigatorBreadcrumbNavigationBarStyles');\nvar NavigatorNavigationBarStyles=require('NavigatorNavigationBarStyles');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar invariant=require('invariant');\n\nvar Interpolators=NavigatorBreadcrumbNavigationBarStyles.Interpolators;\nvar PropTypes=React.PropTypes;\n\n\n\n\nvar CRUMB_PROPS=Interpolators.map(function(){return {style:{}};});\nvar ICON_PROPS=Interpolators.map(function(){return {style:{}};});\nvar SEPARATOR_PROPS=Interpolators.map(function(){return {style:{}};});\nvar TITLE_PROPS=Interpolators.map(function(){return {style:{}};});\nvar RIGHT_BUTTON_PROPS=Interpolators.map(function(){return {style:{}};});\n\n\nvar navStatePresentedIndex=function(navState){\nif(navState.presentedIndex !== undefined){\nreturn navState.presentedIndex;}\n\n\nreturn navState.observedTopOfStack;};\n\n\n\n\n\n\n\n\n\n\nvar initStyle=function(index,presentedIndex){\nreturn index === presentedIndex?NavigatorBreadcrumbNavigationBarStyles.Center[index]:\nindex < presentedIndex?NavigatorBreadcrumbNavigationBarStyles.Left[index]:\nNavigatorBreadcrumbNavigationBarStyles.Right[index];};\n\n\nvar NavigatorBreadcrumbNavigationBar=React.createClass({displayName:'NavigatorBreadcrumbNavigationBar',\npropTypes:{\nnavigator:PropTypes.shape({\npush:PropTypes.func,\npop:PropTypes.func,\nreplace:PropTypes.func,\npopToRoute:PropTypes.func,\npopToTop:PropTypes.func}),\n\nrouteMapper:PropTypes.shape({\nrightContentForRoute:PropTypes.func,\ntitleContentForRoute:PropTypes.func,\niconForRoute:PropTypes.func}),\n\nnavState:React.PropTypes.shape({\nrouteStack:React.PropTypes.arrayOf(React.PropTypes.object),\nidStack:React.PropTypes.arrayOf(React.PropTypes.number),\npresentedIndex:React.PropTypes.number}),\n\nstyle:View.propTypes.style},\n\n\nstatics:{\nStyles:NavigatorBreadcrumbNavigationBarStyles},\n\n\n_updateIndexProgress:function(progress,index,fromIndex,toIndex){\nvar amount=toIndex > fromIndex?progress:1 - progress;\nvar oldDistToCenter=index - fromIndex;\nvar newDistToCenter=index - toIndex;\nvar interpolate;\ninvariant(\nInterpolators[index],\n'Cannot find breadcrumb interpolators for ' + index);\n\nif(oldDistToCenter > 0 && newDistToCenter === 0 || \nnewDistToCenter > 0 && oldDistToCenter === 0){\ninterpolate = Interpolators[index].RightToCenter;}else \nif(oldDistToCenter < 0 && newDistToCenter === 0 || \nnewDistToCenter < 0 && oldDistToCenter === 0){\ninterpolate = Interpolators[index].CenterToLeft;}else \nif(oldDistToCenter === newDistToCenter){\ninterpolate = Interpolators[index].RightToCenter;}else \n{\ninterpolate = Interpolators[index].RightToLeft;}\n\n\nif(interpolate.Crumb(CRUMB_PROPS[index].style,amount)){\nthis.refs['crumb_' + index].setNativeProps(CRUMB_PROPS[index]);}\n\nif(interpolate.Icon(ICON_PROPS[index].style,amount)){\nthis.refs['icon_' + index].setNativeProps(ICON_PROPS[index]);}\n\nif(interpolate.Separator(SEPARATOR_PROPS[index].style,amount)){\nthis.refs['separator_' + index].setNativeProps(SEPARATOR_PROPS[index]);}\n\nif(interpolate.Title(TITLE_PROPS[index].style,amount)){\nthis.refs['title_' + index].setNativeProps(TITLE_PROPS[index]);}\n\nvar right=this.refs['right_' + index];\nif(right && \ninterpolate.RightItem(RIGHT_BUTTON_PROPS[index].style,amount)){\nright.setNativeProps(RIGHT_BUTTON_PROPS[index]);}},\n\n\n\nupdateProgress:function(progress,fromIndex,toIndex){\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index <= max;index++) {\nthis._updateIndexProgress(progress,index,fromIndex,toIndex);}},\n\n\n\nonAnimationStart:function(fromIndex,toIndex){\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index <= max;index++) {\nthis._setRenderViewsToHardwareTextureAndroid(index,true);}},\n\n\n\nonAnimationEnd:function(){\nvar max=this.props.navState.routeStack.length - 1;\nfor(var index=0;index <= max;index++) {\nthis._setRenderViewsToHardwareTextureAndroid(index,false);}},\n\n\n\n_setRenderViewsToHardwareTextureAndroid:function(index,renderToHardwareTexture){\nvar props={\nrenderToHardwareTextureAndroid:renderToHardwareTexture};\n\n\nthis.refs['icon_' + index].setNativeProps(props);\nthis.refs['separator_' + index].setNativeProps(props);\nthis.refs['title_' + index].setNativeProps(props);\nvar right=this.refs['right_' + index];\nif(right){\nright.setNativeProps(props);}},\n\n\n\nrender:function(){\nvar navState=this.props.navState;\nvar icons=navState && navState.routeStack.map(this._renderOrReturnBreadcrumb);\nvar titles=navState.routeStack.map(this._renderOrReturnTitle);\nvar buttons=navState.routeStack.map(this._renderOrReturnRightButton);\nreturn (\nReact.createElement(View,{style:[styles.breadCrumbContainer,this.props.style]},\ntitles,\nicons,\nbuttons));},\n\n\n\n\n_renderOrReturnBreadcrumb:function(route,index){\nvar uid=this.props.navState.idStack[index];\nvar navBarRouteMapper=this.props.routeMapper;\nvar navOps=this.props.navigator;\nvar alreadyRendered=this.refs['crumbContainer' + uid];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:'crumbContainer' + uid,\nkey:'crumbContainer' + uid,\nshouldUpdate:false}));}\n\n\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nreturn (\nReact.createElement(StaticContainer,{\nref:'crumbContainer' + uid,\nkey:'crumbContainer' + uid,\nshouldUpdate:false},\nReact.createElement(View,{ref:'crumb_' + index,style:firstStyles.Crumb},\nReact.createElement(View,{ref:'icon_' + index,style:firstStyles.Icon},\nnavBarRouteMapper.iconForRoute(route,navOps)),\n\nReact.createElement(View,{ref:'separator_' + index,style:firstStyles.Separator},\nnavBarRouteMapper.separatorForRoute(route,navOps)))));},\n\n\n\n\n\n\n_renderOrReturnTitle:function(route,index){\nvar navState=this.props.navState;\nvar uid=navState.idStack[index];\nvar alreadyRendered=this.refs['titleContainer' + uid];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:'titleContainer' + uid,\nkey:'titleContainer' + uid,\nshouldUpdate:false}));}\n\n\n\nvar navBarRouteMapper=this.props.routeMapper;\nvar titleContent=navBarRouteMapper.titleContentForRoute(\nnavState.routeStack[index],\nthis.props.navigator);\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nreturn (\nReact.createElement(StaticContainer,{\nref:'titleContainer' + uid,\nkey:'titleContainer' + uid,\nshouldUpdate:false},\nReact.createElement(View,{ref:'title_' + index,style:firstStyles.Title},\ntitleContent)));},\n\n\n\n\n\n_renderOrReturnRightButton:function(route,index){\nvar navState=this.props.navState;\nvar navBarRouteMapper=this.props.routeMapper;\nvar uid=navState.idStack[index];\nvar alreadyRendered=this.refs['rightContainer' + uid];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:'rightContainer' + uid,\nkey:'rightContainer' + uid,\nshouldUpdate:false}));}\n\n\n\nvar rightContent=navBarRouteMapper.rightContentForRoute(\nnavState.routeStack[index],\nthis.props.navigator);\n\nif(!rightContent){\nreturn null;}\n\nvar firstStyles=initStyle(index,navStatePresentedIndex(this.props.navState));\nreturn (\nReact.createElement(StaticContainer,{\nref:'rightContainer' + uid,\nkey:'rightContainer' + uid,\nshouldUpdate:false},\nReact.createElement(View,{ref:'right_' + index,style:firstStyles.RightItem},\nrightContent)));}});\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nbreadCrumbContainer:{\noverflow:'hidden',\nposition:'absolute',\nheight:NavigatorNavigationBarStyles.General.TotalNavHeight,\ntop:0,\nleft:0,\nright:0}});\n\n\n\nmodule.exports = NavigatorBreadcrumbNavigationBar;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorBreadcrumbNavigationBar\n */\n'use strict';\n\nvar NavigatorBreadcrumbNavigationBarStyles = require('NavigatorBreadcrumbNavigationBarStyles');\nvar NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar invariant = require('invariant');\n\nvar Interpolators = NavigatorBreadcrumbNavigationBarStyles.Interpolators;\nvar PropTypes = React.PropTypes;\n\n/**\n * Reusable props objects.\n */\nvar CRUMB_PROPS = Interpolators.map(() => {return {style: {}};});\nvar ICON_PROPS = Interpolators.map(() => {return {style: {}};});\nvar SEPARATOR_PROPS = Interpolators.map(() => {return {style: {}};});\nvar TITLE_PROPS = Interpolators.map(() => {return {style: {}};});\nvar RIGHT_BUTTON_PROPS = Interpolators.map(() => {return {style: {}};});\n\n\nvar navStatePresentedIndex = function(navState) {\n if (navState.presentedIndex !== undefined) {\n return navState.presentedIndex;\n }\n // TODO: rename `observedTopOfStack` to `presentedIndex` in `NavigatorIOS`\n return navState.observedTopOfStack;\n};\n\n\n/**\n * The first route is initially rendered using a different style than all\n * future routes.\n *\n * @param {number} index Index of breadcrumb.\n * @return {object} Style config for initial rendering of index.\n */\nvar initStyle = function(index, presentedIndex) {\n return index === presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Center[index] :\n index < presentedIndex ? NavigatorBreadcrumbNavigationBarStyles.Left[index] :\n NavigatorBreadcrumbNavigationBarStyles.Right[index];\n};\n\nvar NavigatorBreadcrumbNavigationBar = React.createClass({\n propTypes: {\n navigator: PropTypes.shape({\n push: PropTypes.func,\n pop: PropTypes.func,\n replace: PropTypes.func,\n popToRoute: PropTypes.func,\n popToTop: PropTypes.func,\n }),\n routeMapper: PropTypes.shape({\n rightContentForRoute: PropTypes.func,\n titleContentForRoute: PropTypes.func,\n iconForRoute: PropTypes.func,\n }),\n navState: React.PropTypes.shape({\n routeStack: React.PropTypes.arrayOf(React.PropTypes.object),\n idStack: React.PropTypes.arrayOf(React.PropTypes.number),\n presentedIndex: React.PropTypes.number,\n }),\n style: View.propTypes.style,\n },\n\n statics: {\n Styles: NavigatorBreadcrumbNavigationBarStyles,\n },\n\n _updateIndexProgress: function(progress, index, fromIndex, toIndex) {\n var amount = toIndex > fromIndex ? progress : (1 - progress);\n var oldDistToCenter = index - fromIndex;\n var newDistToCenter = index - toIndex;\n var interpolate;\n invariant(\n Interpolators[index],\n 'Cannot find breadcrumb interpolators for ' + index\n );\n if (oldDistToCenter > 0 && newDistToCenter === 0 ||\n newDistToCenter > 0 && oldDistToCenter === 0) {\n interpolate = Interpolators[index].RightToCenter;\n } else if (oldDistToCenter < 0 && newDistToCenter === 0 ||\n newDistToCenter < 0 && oldDistToCenter === 0) {\n interpolate = Interpolators[index].CenterToLeft;\n } else if (oldDistToCenter === newDistToCenter) {\n interpolate = Interpolators[index].RightToCenter;\n } else {\n interpolate = Interpolators[index].RightToLeft;\n }\n\n if (interpolate.Crumb(CRUMB_PROPS[index].style, amount)) {\n this.refs['crumb_' + index].setNativeProps(CRUMB_PROPS[index]);\n }\n if (interpolate.Icon(ICON_PROPS[index].style, amount)) {\n this.refs['icon_' + index].setNativeProps(ICON_PROPS[index]);\n }\n if (interpolate.Separator(SEPARATOR_PROPS[index].style, amount)) {\n this.refs['separator_' + index].setNativeProps(SEPARATOR_PROPS[index]);\n }\n if (interpolate.Title(TITLE_PROPS[index].style, amount)) {\n this.refs['title_' + index].setNativeProps(TITLE_PROPS[index]);\n }\n var right = this.refs['right_' + index];\n if (right &&\n interpolate.RightItem(RIGHT_BUTTON_PROPS[index].style, amount)) {\n right.setNativeProps(RIGHT_BUTTON_PROPS[index]);\n }\n },\n\n updateProgress: function(progress, fromIndex, toIndex) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._updateIndexProgress(progress, index, fromIndex, toIndex);\n }\n },\n\n onAnimationStart: function(fromIndex, toIndex) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._setRenderViewsToHardwareTextureAndroid(index, true);\n }\n },\n\n onAnimationEnd: function() {\n var max = this.props.navState.routeStack.length - 1;\n for (var index = 0; index <= max; index++) {\n this._setRenderViewsToHardwareTextureAndroid(index, false);\n }\n },\n\n _setRenderViewsToHardwareTextureAndroid: function(index, renderToHardwareTexture) {\n var props = {\n renderToHardwareTextureAndroid: renderToHardwareTexture,\n };\n\n this.refs['icon_' + index].setNativeProps(props);\n this.refs['separator_' + index].setNativeProps(props);\n this.refs['title_' + index].setNativeProps(props);\n var right = this.refs['right_' + index];\n if (right) {\n right.setNativeProps(props);\n }\n },\n\n render: function() {\n var navState = this.props.navState;\n var icons = navState && navState.routeStack.map(this._renderOrReturnBreadcrumb);\n var titles = navState.routeStack.map(this._renderOrReturnTitle);\n var buttons = navState.routeStack.map(this._renderOrReturnRightButton);\n return (\n <View style={[styles.breadCrumbContainer, this.props.style]}>\n {titles}\n {icons}\n {buttons}\n </View>\n );\n },\n\n _renderOrReturnBreadcrumb: function(route, index) {\n var uid = this.props.navState.idStack[index];\n var navBarRouteMapper = this.props.routeMapper;\n var navOps = this.props.navigator;\n var alreadyRendered = this.refs['crumbContainer' + uid];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={'crumbContainer' + uid}\n key={'crumbContainer' + uid}\n shouldUpdate={false}\n />\n );\n }\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n return (\n <StaticContainer\n ref={'crumbContainer' + uid}\n key={'crumbContainer' + uid}\n shouldUpdate={false}>\n <View ref={'crumb_' + index} style={firstStyles.Crumb}>\n <View ref={'icon_' + index} style={firstStyles.Icon}>\n {navBarRouteMapper.iconForRoute(route, navOps)}\n </View>\n <View ref={'separator_' + index} style={firstStyles.Separator}>\n {navBarRouteMapper.separatorForRoute(route, navOps)}\n </View>\n </View>\n </StaticContainer>\n );\n },\n\n _renderOrReturnTitle: function(route, index) {\n var navState = this.props.navState;\n var uid = navState.idStack[index];\n var alreadyRendered = this.refs['titleContainer' + uid];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={'titleContainer' + uid}\n key={'titleContainer' + uid}\n shouldUpdate={false}\n />\n );\n }\n var navBarRouteMapper = this.props.routeMapper;\n var titleContent = navBarRouteMapper.titleContentForRoute(\n navState.routeStack[index],\n this.props.navigator\n );\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n return (\n <StaticContainer\n ref={'titleContainer' + uid}\n key={'titleContainer' + uid}\n shouldUpdate={false}>\n <View ref={'title_' + index} style={firstStyles.Title}>\n {titleContent}\n </View>\n </StaticContainer>\n );\n },\n\n _renderOrReturnRightButton: function(route, index) {\n var navState = this.props.navState;\n var navBarRouteMapper = this.props.routeMapper;\n var uid = navState.idStack[index];\n var alreadyRendered = this.refs['rightContainer' + uid];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={'rightContainer' + uid}\n key={'rightContainer' + uid}\n shouldUpdate={false}\n />\n );\n }\n var rightContent = navBarRouteMapper.rightContentForRoute(\n navState.routeStack[index],\n this.props.navigator\n );\n if (!rightContent) {\n return null;\n }\n var firstStyles = initStyle(index, navStatePresentedIndex(this.props.navState));\n return (\n <StaticContainer\n ref={'rightContainer' + uid}\n key={'rightContainer' + uid}\n shouldUpdate={false}>\n <View ref={'right_' + index} style={firstStyles.RightItem}>\n {rightContent}\n </View>\n </StaticContainer>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n breadCrumbContainer: {\n overflow: 'hidden',\n position: 'absolute',\n height: NavigatorNavigationBarStyles.General.TotalNavHeight,\n top: 0,\n left: 0,\n right: 0,\n },\n});\n\nmodule.exports = NavigatorBreadcrumbNavigationBar;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBar.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar NavigatorNavigationBarStyles=require('NavigatorNavigationBarStyles');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar STATUS_BAR_HEIGHT=NavigatorNavigationBarStyles.General.StatusBarHeight;\nvar NAV_BAR_HEIGHT=NavigatorNavigationBarStyles.General.NavBarHeight;\n\nvar SPACING=4;\nvar ICON_WIDTH=40;\nvar SEPARATOR_WIDTH=9;\nvar CRUMB_WIDTH=ICON_WIDTH + SEPARATOR_WIDTH;\n\nvar OPACITY_RATIO=100;\nvar ICON_INACTIVE_OPACITY=0.6;\nvar MAX_BREADCRUMBS=10;\n\nvar CRUMB_BASE={\nposition:'absolute',\nflexDirection:'row',\ntop:STATUS_BAR_HEIGHT,\nwidth:CRUMB_WIDTH,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\nvar ICON_BASE={\nwidth:ICON_WIDTH,\nheight:NAV_BAR_HEIGHT};\n\n\nvar SEPARATOR_BASE={\nwidth:SEPARATOR_WIDTH,\nheight:NAV_BAR_HEIGHT};\n\n\nvar TITLE_BASE={\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\n\nvar FIRST_TITLE_BASE=merge(TITLE_BASE,{\nleft:0,\nright:0,\nalignItems:'center',\nheight:NAV_BAR_HEIGHT});\n\n\nvar RIGHT_BUTTON_BASE={\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nright:SPACING,\noverflow:'hidden',\nopacity:1,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'};\n\n\n\n\n\n\nvar LEFT=[];\nvar CENTER=[];\nvar RIGHT=[];\nfor(var i=0;i < MAX_BREADCRUMBS;i++) {\nvar crumbLeft=CRUMB_WIDTH * i + SPACING;\nLEFT[i] = {\nCrumb:merge(CRUMB_BASE,{left:crumbLeft}),\nIcon:merge(ICON_BASE,{opacity:ICON_INACTIVE_OPACITY}),\nSeparator:merge(SEPARATOR_BASE,{opacity:1}),\nTitle:merge(TITLE_BASE,{left:crumbLeft,opacity:0}),\nRightItem:merge(RIGHT_BUTTON_BASE,{opacity:0})};\n\nCENTER[i] = {\nCrumb:merge(CRUMB_BASE,{left:crumbLeft}),\nIcon:merge(ICON_BASE,{opacity:1}),\nSeparator:merge(SEPARATOR_BASE,{opacity:0}),\nTitle:merge(TITLE_BASE,{\nleft:crumbLeft + ICON_WIDTH,\nopacity:1}),\n\nRightItem:merge(RIGHT_BUTTON_BASE,{opacity:1})};\n\nvar crumbRight=SCREEN_WIDTH - 100;\nRIGHT[i] = {\nCrumb:merge(CRUMB_BASE,{left:crumbRight}),\nIcon:merge(ICON_BASE,{opacity:0}),\nSeparator:merge(SEPARATOR_BASE,{opacity:0}),\nTitle:merge(TITLE_BASE,{\nleft:crumbRight + ICON_WIDTH,\nopacity:0}),\n\nRightItem:merge(RIGHT_BUTTON_BASE,{opacity:0})};}\n\n\n\n\nCENTER[0] = {\nCrumb:merge(CRUMB_BASE,{left:SCREEN_WIDTH / 4}),\nIcon:merge(ICON_BASE,{opacity:0}),\nSeparator:merge(SEPARATOR_BASE,{opacity:0}),\nTitle:merge(FIRST_TITLE_BASE,{opacity:1}),\nRightItem:CENTER[0].RightItem};\n\nLEFT[0].Title = merge(FIRST_TITLE_BASE,{left:-SCREEN_WIDTH / 4,opacity:0});\nRIGHT[0].Title = merge(FIRST_TITLE_BASE,{opacity:0});\n\n\nvar buildIndexSceneInterpolator=function(startStyles,endStyles){\nreturn {\nCrumb:buildStyleInterpolator({\nleft:{\ntype:'linear',\nfrom:startStyles.Crumb.left,\nto:endStyles.Crumb.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nIcon:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Icon.opacity,\nto:endStyles.Icon.opacity,\nmin:0,\nmax:1}}),\n\n\nSeparator:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Separator.opacity,\nto:endStyles.Separator.opacity,\nmin:0,\nmax:1}}),\n\n\nTitle:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Title.opacity,\nto:endStyles.Title.opacity,\nmin:0,\nmax:1},\n\nleft:{\ntype:'linear',\nfrom:startStyles.Title.left,\nto:endStyles.Title.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nRightItem:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.RightItem.opacity,\nto:endStyles.RightItem.opacity,\nmin:0,\nmax:1,\nround:OPACITY_RATIO}})};};\n\n\n\n\n\nvar Interpolators=CENTER.map(function(_,ii){\nreturn {\n\nRightToCenter:buildIndexSceneInterpolator(RIGHT[ii],CENTER[ii]),\n\nCenterToLeft:buildIndexSceneInterpolator(CENTER[ii],LEFT[ii]),\n\nRightToLeft:buildIndexSceneInterpolator(RIGHT[ii],LEFT[ii])};});\n\n\n\n\n\n\n\nmodule.exports = {\nInterpolators:Interpolators,\nLeft:LEFT,\nCenter:CENTER,\nRight:RIGHT,\nIconWidth:ICON_WIDTH,\nIconHeight:NAV_BAR_HEIGHT,\nSeparatorWidth:SEPARATOR_WIDTH,\nSeparatorHeight:NAV_BAR_HEIGHT};","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorBreadcrumbNavigationBarStyles\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\nvar merge = require('merge');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar STATUS_BAR_HEIGHT = NavigatorNavigationBarStyles.General.StatusBarHeight;\nvar NAV_BAR_HEIGHT = NavigatorNavigationBarStyles.General.NavBarHeight;\n\nvar SPACING = 4;\nvar ICON_WIDTH = 40;\nvar SEPARATOR_WIDTH = 9;\nvar CRUMB_WIDTH = ICON_WIDTH + SEPARATOR_WIDTH;\n\nvar OPACITY_RATIO = 100;\nvar ICON_INACTIVE_OPACITY = 0.6;\nvar MAX_BREADCRUMBS = 10;\n\nvar CRUMB_BASE = {\n position: 'absolute',\n flexDirection: 'row',\n top: STATUS_BAR_HEIGHT,\n width: CRUMB_WIDTH,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n};\n\nvar ICON_BASE = {\n width: ICON_WIDTH,\n height: NAV_BAR_HEIGHT,\n};\n\nvar SEPARATOR_BASE = {\n width: SEPARATOR_WIDTH,\n height: NAV_BAR_HEIGHT,\n};\n\nvar TITLE_BASE = {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n};\n\n// For first title styles, make sure first title is centered\nvar FIRST_TITLE_BASE = merge(TITLE_BASE, {\n left: 0,\n right: 0,\n alignItems: 'center',\n height: NAV_BAR_HEIGHT,\n});\n\nvar RIGHT_BUTTON_BASE = {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n right: SPACING,\n overflow: 'hidden',\n opacity: 1,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n};\n\n/**\n * Precompute crumb styles so that they don't need to be recomputed on every\n * interaction.\n */\nvar LEFT = [];\nvar CENTER = [];\nvar RIGHT = [];\nfor (var i = 0; i < MAX_BREADCRUMBS; i++) {\n var crumbLeft = CRUMB_WIDTH * i + SPACING;\n LEFT[i] = {\n Crumb: merge(CRUMB_BASE, { left: crumbLeft }),\n Icon: merge(ICON_BASE, { opacity: ICON_INACTIVE_OPACITY }),\n Separator: merge(SEPARATOR_BASE, { opacity: 1 }),\n Title: merge(TITLE_BASE, { left: crumbLeft, opacity: 0 }),\n RightItem: merge(RIGHT_BUTTON_BASE, { opacity: 0 }),\n };\n CENTER[i] = {\n Crumb: merge(CRUMB_BASE, { left: crumbLeft }),\n Icon: merge(ICON_BASE, { opacity: 1 }),\n Separator: merge(SEPARATOR_BASE, { opacity: 0 }),\n Title: merge(TITLE_BASE, {\n left: crumbLeft + ICON_WIDTH,\n opacity: 1,\n }),\n RightItem: merge(RIGHT_BUTTON_BASE, { opacity: 1 }),\n };\n var crumbRight = SCREEN_WIDTH - 100;\n RIGHT[i] = {\n Crumb: merge(CRUMB_BASE, { left: crumbRight}),\n Icon: merge(ICON_BASE, { opacity: 0 }),\n Separator: merge(SEPARATOR_BASE, { opacity: 0 }),\n Title: merge(TITLE_BASE, {\n left: crumbRight + ICON_WIDTH,\n opacity: 0,\n }),\n RightItem: merge(RIGHT_BUTTON_BASE, { opacity: 0 }),\n };\n}\n\n// Special case the CENTER state of the first scene.\nCENTER[0] = {\n Crumb: merge(CRUMB_BASE, {left: SCREEN_WIDTH / 4}),\n Icon: merge(ICON_BASE, {opacity: 0}),\n Separator: merge(SEPARATOR_BASE, {opacity: 0}),\n Title: merge(FIRST_TITLE_BASE, {opacity: 1}),\n RightItem: CENTER[0].RightItem,\n};\nLEFT[0].Title = merge(FIRST_TITLE_BASE, {left: - SCREEN_WIDTH / 4, opacity: 0});\nRIGHT[0].Title = merge(FIRST_TITLE_BASE, {opacity: 0});\n\n\nvar buildIndexSceneInterpolator = function(startStyles, endStyles) {\n return {\n Crumb: buildStyleInterpolator({\n left: {\n type: 'linear',\n from: startStyles.Crumb.left,\n to: endStyles.Crumb.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n Icon: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Icon.opacity,\n to: endStyles.Icon.opacity,\n min: 0,\n max: 1,\n },\n }),\n Separator: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Separator.opacity,\n to: endStyles.Separator.opacity,\n min: 0,\n max: 1,\n },\n }),\n Title: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Title.opacity,\n to: endStyles.Title.opacity,\n min: 0,\n max: 1,\n },\n left: {\n type: 'linear',\n from: startStyles.Title.left,\n to: endStyles.Title.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n RightItem: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.RightItem.opacity,\n to: endStyles.RightItem.opacity,\n min: 0,\n max: 1,\n round: OPACITY_RATIO,\n },\n }),\n };\n};\n\nvar Interpolators = CENTER.map(function(_, ii) {\n return {\n // Animating *into* the center stage from the right\n RightToCenter: buildIndexSceneInterpolator(RIGHT[ii], CENTER[ii]),\n // Animating out of the center stage, to the left\n CenterToLeft: buildIndexSceneInterpolator(CENTER[ii], LEFT[ii]),\n // Both stages (animating *past* the center stage)\n RightToLeft: buildIndexSceneInterpolator(RIGHT[ii], LEFT[ii]),\n };\n});\n\n/**\n * Contains constants that are used in constructing both `StyleSheet`s and\n * inline styles during transitions.\n */\nmodule.exports = {\n Interpolators,\n Left: LEFT,\n Center: CENTER,\n Right: RIGHT,\n IconWidth: ICON_WIDTH,\n IconHeight: NAV_BAR_HEIGHT,\n SeparatorWidth: SEPARATOR_WIDTH,\n SeparatorHeight: NAV_BAR_HEIGHT,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorBreadcrumbNavigationBarStyles.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBarStyles.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\nvar merge=require('merge');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar NAV_BAR_HEIGHT=44;\nvar STATUS_BAR_HEIGHT=20;\nvar NAV_HEIGHT=NAV_BAR_HEIGHT + STATUS_BAR_HEIGHT;\n\nvar BASE_STYLES={\nTitle:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:0,\nalignItems:'center',\nwidth:SCREEN_WIDTH,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'},\n\nLeftButton:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:0,\noverflow:'hidden',\nopacity:1,\nwidth:SCREEN_WIDTH / 3,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'},\n\nRightButton:{\nposition:'absolute',\ntop:STATUS_BAR_HEIGHT,\nleft:2 * SCREEN_WIDTH / 3,\noverflow:'hidden',\nopacity:1,\nalignItems:'flex-end',\nwidth:SCREEN_WIDTH / 3,\nheight:NAV_BAR_HEIGHT,\nbackgroundColor:'transparent'}};\n\n\n\n\n\n\n\n\n\n\nvar Stages={\nLeft:{\nTitle:merge(BASE_STYLES.Title,{left:-SCREEN_WIDTH / 2,opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:-SCREEN_WIDTH / 3,opacity:1}),\nRightButton:merge(BASE_STYLES.RightButton,{left:SCREEN_WIDTH / 3,opacity:0})},\n\nCenter:{\nTitle:merge(BASE_STYLES.Title,{left:0,opacity:1}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:0,opacity:1}),\nRightButton:merge(BASE_STYLES.RightButton,{left:2 * SCREEN_WIDTH / 3 - 0,opacity:1})},\n\nRight:{\nTitle:merge(BASE_STYLES.Title,{left:SCREEN_WIDTH / 2,opacity:0}),\nLeftButton:merge(BASE_STYLES.LeftButton,{left:0,opacity:0}),\nRightButton:merge(BASE_STYLES.RightButton,{left:SCREEN_WIDTH,opacity:0})}};\n\n\n\n\nvar opacityRatio=100;\n\nfunction buildSceneInterpolators(startStyles,endStyles){\nreturn {\nTitle:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.Title.opacity,\nto:endStyles.Title.opacity,\nmin:0,\nmax:1},\n\nleft:{\ntype:'linear',\nfrom:startStyles.Title.left,\nto:endStyles.Title.left,\nmin:0,\nmax:1,\nextrapolate:true}}),\n\n\nLeftButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.LeftButton.opacity,\nto:endStyles.LeftButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.LeftButton.left,\nto:endStyles.LeftButton.left,\nmin:0,\nmax:1}}),\n\n\nRightButton:buildStyleInterpolator({\nopacity:{\ntype:'linear',\nfrom:startStyles.RightButton.opacity,\nto:endStyles.RightButton.opacity,\nmin:0,\nmax:1,\nround:opacityRatio},\n\nleft:{\ntype:'linear',\nfrom:startStyles.RightButton.left,\nto:endStyles.RightButton.left,\nmin:0,\nmax:1,\nextrapolate:true}})};}\n\n\n\n\n\nvar Interpolators={\n\nRightToCenter:buildSceneInterpolators(Stages.Right,Stages.Center),\n\nCenterToLeft:buildSceneInterpolators(Stages.Center,Stages.Left),\n\nRightToLeft:buildSceneInterpolators(Stages.Right,Stages.Left)};\n\n\n\nmodule.exports = {\nGeneral:{\nNavBarHeight:NAV_BAR_HEIGHT,\nStatusBarHeight:STATUS_BAR_HEIGHT,\nTotalNavHeight:NAV_HEIGHT},\n\nInterpolators:Interpolators,\nStages:Stages};","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBarStyles\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\nvar merge = require('merge');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar NAV_BAR_HEIGHT = 44;\nvar STATUS_BAR_HEIGHT = 20;\nvar NAV_HEIGHT = NAV_BAR_HEIGHT + STATUS_BAR_HEIGHT;\n\nvar BASE_STYLES = {\n Title: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 0,\n alignItems: 'center',\n width: SCREEN_WIDTH,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n LeftButton: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 0,\n overflow: 'hidden',\n opacity: 1,\n width: SCREEN_WIDTH / 3,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n RightButton: {\n position: 'absolute',\n top: STATUS_BAR_HEIGHT,\n left: 2 * SCREEN_WIDTH / 3,\n overflow: 'hidden',\n opacity: 1,\n alignItems: 'flex-end',\n width: SCREEN_WIDTH / 3,\n height: NAV_BAR_HEIGHT,\n backgroundColor: 'transparent',\n },\n};\n\n// There are 3 stages: left, center, right. All previous navigation\n// items are in the left stage. The current navigation item is in the\n// center stage. All upcoming navigation items are in the right stage.\n// Another way to think of the stages is in terms of transitions. When\n// we move forward in the navigation stack, we perform a\n// right-to-center transition on the new navigation item and a\n// center-to-left transition on the current navigation item.\nvar Stages = {\n Left: {\n Title: merge(BASE_STYLES.Title, { left: - SCREEN_WIDTH / 2, opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: - SCREEN_WIDTH / 3, opacity: 1 }),\n RightButton: merge(BASE_STYLES.RightButton, { left: SCREEN_WIDTH / 3, opacity: 0 }),\n },\n Center: {\n Title: merge(BASE_STYLES.Title, { left: 0, opacity: 1 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: 0, opacity: 1 }),\n RightButton: merge(BASE_STYLES.RightButton, { left: 2 * SCREEN_WIDTH / 3 - 0, opacity: 1 }),\n },\n Right: {\n Title: merge(BASE_STYLES.Title, { left: SCREEN_WIDTH / 2, opacity: 0 }),\n LeftButton: merge(BASE_STYLES.LeftButton, { left: 0, opacity: 0 }),\n RightButton: merge(BASE_STYLES.RightButton, { left: SCREEN_WIDTH, opacity: 0 }),\n },\n};\n\n\nvar opacityRatio = 100;\n\nfunction buildSceneInterpolators(startStyles, endStyles) {\n return {\n Title: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.Title.opacity,\n to: endStyles.Title.opacity,\n min: 0,\n max: 1,\n },\n left: {\n type: 'linear',\n from: startStyles.Title.left,\n to: endStyles.Title.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n LeftButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.LeftButton.opacity,\n to: endStyles.LeftButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.LeftButton.left,\n to: endStyles.LeftButton.left,\n min: 0,\n max: 1,\n },\n }),\n RightButton: buildStyleInterpolator({\n opacity: {\n type: 'linear',\n from: startStyles.RightButton.opacity,\n to: endStyles.RightButton.opacity,\n min: 0,\n max: 1,\n round: opacityRatio,\n },\n left: {\n type: 'linear',\n from: startStyles.RightButton.left,\n to: endStyles.RightButton.left,\n min: 0,\n max: 1,\n extrapolate: true,\n },\n }),\n };\n}\n\nvar Interpolators = {\n // Animating *into* the center stage from the right\n RightToCenter: buildSceneInterpolators(Stages.Right, Stages.Center),\n // Animating out of the center stage, to the left\n CenterToLeft: buildSceneInterpolators(Stages.Center, Stages.Left),\n // Both stages (animating *past* the center stage)\n RightToLeft: buildSceneInterpolators(Stages.Right, Stages.Left),\n};\n\n\nmodule.exports = {\n General: {\n NavBarHeight: NAV_BAR_HEIGHT,\n StatusBarHeight: STATUS_BAR_HEIGHT,\n TotalNavHeight: NAV_HEIGHT,\n },\n Interpolators,\n Stages,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBarStyles.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/buildStyleInterpolator.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nkeyOf=require('keyOf');\n\nvar X_DIM=keyOf({x:null});\nvar Y_DIM=keyOf({y:null});\nvar Z_DIM=keyOf({z:null});\nvar W_DIM=keyOf({w:null});\n\nvar TRANSFORM_ROTATE_NAME=keyOf({transformRotateRadians:null});\n\nvar ShouldAllocateReusableOperationVars={\ntransformRotateRadians:true,\ntransformScale:true,\ntransformTranslate:true};\n\n\nvar InitialOperationField={\ntransformRotateRadians:[0,0,0,1],\ntransformTranslate:[0,0,0],\ntransformScale:[1,1,1]};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ARGUMENT_NAMES_RE=/([^\\s,]+)/g;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar inline=function(func,replaceWithArgs){\nvar fnStr=func.toString();\nvar parameterNames=fnStr.slice(fnStr.indexOf('(') + 1,fnStr.indexOf(')')).\nmatch(ARGUMENT_NAMES_RE) || \n[];\nvar replaceRegexStr=parameterNames.map(function(paramName){\nreturn '\\\\b' + paramName + '\\\\b';}).\njoin('|');\nvar replaceRegex=new RegExp(replaceRegexStr,'g');\nvar fnBody=fnStr.substring(fnStr.indexOf('{') + 1,fnStr.lastIndexOf('}'));\nvar newFnBody=fnBody.replace(replaceRegex,function(parameterName){\nvar indexInParameterNames=parameterNames.indexOf(parameterName);\nvar replacementName=replaceWithArgs[indexInParameterNames];\nreturn replacementName;});\n\nreturn newFnBody.split('\\n');};\n\n\n\n\n\n\nvar MatrixOps={\nunroll:function(matVar,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15){\nm0 = matVar[0];\nm1 = matVar[1];\nm2 = matVar[2];\nm3 = matVar[3];\nm4 = matVar[4];\nm5 = matVar[5];\nm6 = matVar[6];\nm7 = matVar[7];\nm8 = matVar[8];\nm9 = matVar[9];\nm10 = matVar[10];\nm11 = matVar[11];\nm12 = matVar[12];\nm13 = matVar[13];\nm14 = matVar[14];\nm15 = matVar[15];},\n\n\nmatrixDiffers:function(retVar,matVar,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15){\nretVar = retVar || \nm0 !== matVar[0] || \nm1 !== matVar[1] || \nm2 !== matVar[2] || \nm3 !== matVar[3] || \nm4 !== matVar[4] || \nm5 !== matVar[5] || \nm6 !== matVar[6] || \nm7 !== matVar[7] || \nm8 !== matVar[8] || \nm9 !== matVar[9] || \nm10 !== matVar[10] || \nm11 !== matVar[11] || \nm12 !== matVar[12] || \nm13 !== matVar[13] || \nm14 !== matVar[14] || \nm15 !== matVar[15];},\n\n\ntransformScale:function(matVar,opVar){\n\nvar x=opVar[0];\nvar y=opVar[1];\nvar z=opVar[2];\nmatVar[0] = matVar[0] * x;\nmatVar[1] = matVar[1] * x;\nmatVar[2] = matVar[2] * x;\nmatVar[3] = matVar[3] * x;\nmatVar[4] = matVar[4] * y;\nmatVar[5] = matVar[5] * y;\nmatVar[6] = matVar[6] * y;\nmatVar[7] = matVar[7] * y;\nmatVar[8] = matVar[8] * z;\nmatVar[9] = matVar[9] * z;\nmatVar[10] = matVar[10] * z;\nmatVar[11] = matVar[11] * z;\nmatVar[12] = matVar[12];\nmatVar[13] = matVar[13];\nmatVar[14] = matVar[14];\nmatVar[15] = matVar[15];},\n\n\n\n\n\n\ntransformTranslate:function(matVar,opVar){\n\nvar x=opVar[0];\nvar y=opVar[1];\nvar z=opVar[2];\nmatVar[12] = matVar[0] * x + matVar[4] * y + matVar[8] * z + matVar[12];\nmatVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13];\nmatVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14];\nmatVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15];},\n\n\n\n\n\n\ntransformRotateRadians:function(matVar,q){\n\nvar xQuat=q[0],yQuat=q[1],zQuat=q[2],wQuat=q[3];\nvar x2Quat=xQuat + xQuat;\nvar y2Quat=yQuat + yQuat;\nvar z2Quat=zQuat + zQuat;\nvar xxQuat=xQuat * x2Quat;\nvar xyQuat=xQuat * y2Quat;\nvar xzQuat=xQuat * z2Quat;\nvar yyQuat=yQuat * y2Quat;\nvar yzQuat=yQuat * z2Quat;\nvar zzQuat=zQuat * z2Quat;\nvar wxQuat=wQuat * x2Quat;\nvar wyQuat=wQuat * y2Quat;\nvar wzQuat=wQuat * z2Quat;\n\nvar quatMat0=1 - (yyQuat + zzQuat);\nvar quatMat1=xyQuat + wzQuat;\nvar quatMat2=xzQuat - wyQuat;\nvar quatMat4=xyQuat - wzQuat;\nvar quatMat5=1 - (xxQuat + zzQuat);\nvar quatMat6=yzQuat + wxQuat;\nvar quatMat8=xzQuat + wyQuat;\nvar quatMat9=yzQuat - wxQuat;\nvar quatMat10=1 - (xxQuat + yyQuat);\n\n\n\nvar a00=matVar[0];\nvar a01=matVar[1];\nvar a02=matVar[2];\nvar a03=matVar[3];\nvar a10=matVar[4];\nvar a11=matVar[5];\nvar a12=matVar[6];\nvar a13=matVar[7];\nvar a20=matVar[8];\nvar a21=matVar[9];\nvar a22=matVar[10];\nvar a23=matVar[11];\n\nvar b0=quatMat0,b1=quatMat1,b2=quatMat2;\nmatVar[0] = b0 * a00 + b1 * a10 + b2 * a20;\nmatVar[1] = b0 * a01 + b1 * a11 + b2 * a21;\nmatVar[2] = b0 * a02 + b1 * a12 + b2 * a22;\nmatVar[3] = b0 * a03 + b1 * a13 + b2 * a23;\nb0 = quatMat4;b1 = quatMat5;b2 = quatMat6;\nmatVar[4] = b0 * a00 + b1 * a10 + b2 * a20;\nmatVar[5] = b0 * a01 + b1 * a11 + b2 * a21;\nmatVar[6] = b0 * a02 + b1 * a12 + b2 * a22;\nmatVar[7] = b0 * a03 + b1 * a13 + b2 * a23;\nb0 = quatMat8;b1 = quatMat9;b2 = quatMat10;\nmatVar[8] = b0 * a00 + b1 * a10 + b2 * a20;\nmatVar[9] = b0 * a01 + b1 * a11 + b2 * a21;\nmatVar[10] = b0 * a02 + b1 * a12 + b2 * a22;\nmatVar[11] = b0 * a03 + b1 * a13 + b2 * a23;}};\n\n\n\n\n\nvar MatrixOpsInitial={\ntransformScale:function(matVar,opVar){\n\nmatVar[0] = opVar[0];\nmatVar[1] = 0;\nmatVar[2] = 0;\nmatVar[3] = 0;\nmatVar[4] = 0;\nmatVar[5] = opVar[1];\nmatVar[6] = 0;\nmatVar[7] = 0;\nmatVar[8] = 0;\nmatVar[9] = 0;\nmatVar[10] = opVar[2];\nmatVar[11] = 0;\nmatVar[12] = 0;\nmatVar[13] = 0;\nmatVar[14] = 0;\nmatVar[15] = 1;},\n\n\ntransformTranslate:function(matVar,opVar){\n\nmatVar[0] = 1;\nmatVar[1] = 0;\nmatVar[2] = 0;\nmatVar[3] = 0;\nmatVar[4] = 0;\nmatVar[5] = 1;\nmatVar[6] = 0;\nmatVar[7] = 0;\nmatVar[8] = 0;\nmatVar[9] = 0;\nmatVar[10] = 1;\nmatVar[11] = 0;\nmatVar[12] = opVar[0];\nmatVar[13] = opVar[1];\nmatVar[14] = opVar[2];\nmatVar[15] = 1;},\n\n\n\n\n\n\n\ntransformRotateRadians:function(matVar,q){\n\n\nvar xQuat=q[0],yQuat=q[1],zQuat=q[2],wQuat=q[3];\nvar x2Quat=xQuat + xQuat;\nvar y2Quat=yQuat + yQuat;\nvar z2Quat=zQuat + zQuat;\nvar xxQuat=xQuat * x2Quat;\nvar xyQuat=xQuat * y2Quat;\nvar xzQuat=xQuat * z2Quat;\nvar yyQuat=yQuat * y2Quat;\nvar yzQuat=yQuat * z2Quat;\nvar zzQuat=zQuat * z2Quat;\nvar wxQuat=wQuat * x2Quat;\nvar wyQuat=wQuat * y2Quat;\nvar wzQuat=wQuat * z2Quat;\n\nvar quatMat0=1 - (yyQuat + zzQuat);\nvar quatMat1=xyQuat + wzQuat;\nvar quatMat2=xzQuat - wyQuat;\nvar quatMat4=xyQuat - wzQuat;\nvar quatMat5=1 - (xxQuat + zzQuat);\nvar quatMat6=yzQuat + wxQuat;\nvar quatMat8=xzQuat + wyQuat;\nvar quatMat9=yzQuat - wxQuat;\nvar quatMat10=1 - (xxQuat + yyQuat);\n\n\n\nvar b0=quatMat0,b1=quatMat1,b2=quatMat2;\nmatVar[0] = b0;\nmatVar[1] = b1;\nmatVar[2] = b2;\nmatVar[3] = 0;\nb0 = quatMat4;b1 = quatMat5;b2 = quatMat6;\nmatVar[4] = b0;\nmatVar[5] = b1;\nmatVar[6] = b2;\nmatVar[7] = 0;\nb0 = quatMat8;b1 = quatMat9;b2 = quatMat10;\nmatVar[8] = b0;\nmatVar[9] = b1;\nmatVar[10] = b2;\nmatVar[11] = 0;\nmatVar[12] = 0;\nmatVar[13] = 0;\nmatVar[14] = 0;\nmatVar[15] = 1;}};\n\n\n\n\nvar setNextValAndDetectChange=function(name,tmpVarName){\nreturn (\n' if (!didChange) {\\n' + \n' var prevVal = result.' + name + ';\\n' + \n' result.' + name + ' = ' + tmpVarName + ';\\n' + \n' didChange = didChange || (' + tmpVarName + ' !== prevVal);\\n' + \n' } else {\\n' + \n' result.' + name + ' = ' + tmpVarName + ';\\n' + \n' }\\n');};\n\n\n\nvar computeNextValLinear=function(anim,from,to,tmpVarName){\nvar hasRoundRatio=('round' in anim);\nvar roundRatio=anim.round;\nvar fn=' ratio = (value - ' + anim.min + ') / ' + (anim.max - anim.min) + ';\\n';\nif(!anim.extrapolate){\nfn += ' ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\\n';}\n\n\nvar roundOpen=hasRoundRatio?'Math.round(' + roundRatio + ' * ':'';\nvar roundClose=hasRoundRatio?') / ' + roundRatio:'';\nfn += \n' ' + tmpVarName + ' = ' + \nroundOpen + \n'(' + from + ' * (1 - ratio) + ' + to + ' * ratio)' + \nroundClose + ';\\n';\nreturn fn;};\n\n\nvar computeNextValLinearScalar=function(anim){\nreturn computeNextValLinear(anim,anim.from,anim.to,'nextScalarVal');};\n\n\nvar computeNextValConstant=function(anim){\nvar constantExpression=JSON.stringify(anim.value);\nreturn ' nextScalarVal = ' + constantExpression + ';\\n';};\n\n\nvar computeNextValStep=function(anim){\nreturn (\n' nextScalarVal = value >= ' + (\nanim.threshold + ' ? ' + anim.to + ' : ' + anim.from) + ';\\n');};\n\n\n\nvar computeNextValIdentity=function(anim){\nreturn ' nextScalarVal = value;\\n';};\n\n\nvar operationVar=function(name){\nreturn name + 'ReuseOp';};\n\n\nvar createReusableOperationVars=function(anims){\nvar ret='';\nfor(var name in anims) {\nif(ShouldAllocateReusableOperationVars[name]){\nret += 'var ' + operationVar(name) + ' = [];\\n';}}\n\n\nreturn ret;};\n\n\nvar newlines=function(statements){\nreturn '\\n' + statements.join('\\n') + '\\n';};\n\n\n\n\n\n\n\n\nvar computeNextMatrixOperationField=function(anim,name,dimension,index){\nvar fieldAccess=operationVar(name) + '[' + index + ']';\nif(anim.from[dimension] !== undefined && anim.to[dimension] !== undefined){\nreturn ' ' + anim.from[dimension] !== anim.to[dimension]?\ncomputeNextValLinear(anim,anim.from[dimension],anim.to[dimension],fieldAccess):\nfieldAccess + ' = ' + anim.from[dimension] + ';';}else \n{\nreturn ' ' + fieldAccess + ' = ' + InitialOperationField[name][index] + ';';}};\n\n\n\nvar unrolledVars=[];\nfor(var varIndex=0;varIndex < 16;varIndex++) {\nunrolledVars.push('m' + varIndex);}\n\nvar setNextMatrixAndDetectChange=function(orderedMatrixOperations){\nvar fn=[\n' var transformMatrix = result.transformMatrix !== undefined ? ' + \n'result.transformMatrix : (result.transformMatrix = []);'];\n\nfn.push.apply(\nfn,\ninline(MatrixOps.unroll,['transformMatrix'].concat(unrolledVars)));\n\nfor(var i=0;i < orderedMatrixOperations.length;i++) {\nvar opName=orderedMatrixOperations[i];\nif(i === 0){\nfn.push.apply(\nfn,\ninline(MatrixOpsInitial[opName],['transformMatrix',operationVar(opName)]));}else \n\n{\nfn.push.apply(\nfn,\ninline(MatrixOps[opName],['transformMatrix',operationVar(opName)]));}}\n\n\n\nfn.push.apply(\nfn,\ninline(MatrixOps.matrixDiffers,['didChange','transformMatrix'].concat(unrolledVars)));\n\nreturn fn;};\n\n\nvar InterpolateMatrix={\ntransformTranslate:true,\ntransformRotateRadians:true,\ntransformScale:true};\n\n\nvar createFunctionString=function(anims){\n\n\nvar orderedMatrixOperations=[];\n\n\n\nvar fn='return (function() {\\n';\nfn += createReusableOperationVars(anims);\nfn += 'return function(result, value) {\\n';\nfn += ' var didChange = false;\\n';\nfn += ' var nextScalarVal;\\n';\nfn += ' var ratio;\\n';\n\nfor(var name in anims) {\nvar anim=anims[name];\nif(anim.type === 'linear'){\nif(InterpolateMatrix[name]){\norderedMatrixOperations.push(name);\nvar setOperations=[\ncomputeNextMatrixOperationField(anim,name,X_DIM,0),\ncomputeNextMatrixOperationField(anim,name,Y_DIM,1),\ncomputeNextMatrixOperationField(anim,name,Z_DIM,2)];\n\nif(name === TRANSFORM_ROTATE_NAME){\nsetOperations.push(computeNextMatrixOperationField(anim,name,W_DIM,3));}\n\nfn += newlines(setOperations);}else \n{\nfn += computeNextValLinearScalar(anim,'nextScalarVal');\nfn += setNextValAndDetectChange(name,'nextScalarVal');}}else \n\nif(anim.type === 'constant'){\nfn += computeNextValConstant(anim);\nfn += setNextValAndDetectChange(name,'nextScalarVal');}else \nif(anim.type === 'step'){\nfn += computeNextValStep(anim);\nfn += setNextValAndDetectChange(name,'nextScalarVal');}else \nif(anim.type === 'identity'){\nfn += computeNextValIdentity(anim);\nfn += setNextValAndDetectChange(name,'nextScalarVal');}}\n\n\nif(orderedMatrixOperations.length){\nfn += newlines(setNextMatrixAndDetectChange(orderedMatrixOperations));}\n\nfn += ' return didChange;\\n';\nfn += '};\\n';\nfn += '})()';\nreturn fn;};\n\n\n\n\n\n\n\nvar buildStyleInterpolator=function(anims){\nreturn Function(createFunctionString(anims))();};\n\n\n\nmodule.exports = buildStyleInterpolator;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule buildStyleInterpolator\n */\n\n/**\n * Cannot \"use strict\" because we must use eval in this file.\n */\n/* eslint-disable global-strict */\n\nvar keyOf = require('keyOf');\n\nvar X_DIM = keyOf({x: null});\nvar Y_DIM = keyOf({y: null});\nvar Z_DIM = keyOf({z: null});\nvar W_DIM = keyOf({w: null});\n\nvar TRANSFORM_ROTATE_NAME = keyOf({transformRotateRadians: null});\n\nvar ShouldAllocateReusableOperationVars = {\n transformRotateRadians: true,\n transformScale: true,\n transformTranslate: true,\n};\n\nvar InitialOperationField = {\n transformRotateRadians: [0, 0, 0, 1],\n transformTranslate: [0, 0, 0],\n transformScale: [1, 1, 1],\n};\n\n\n/**\n * Creates a highly specialized animation function that may be evaluated every\n * frame. For example:\n *\n * var ToTheLeft = {\n * opacity: {\n * from: 1,\n * to: 0.7,\n * min: 0,\n * max: 1,\n * type: 'linear',\n * extrapolate: false,\n * round: 100,\n * },\n * left: {\n * from: 0,\n * to: -SCREEN_WIDTH * 0.3,\n * min: 0,\n * max: 1,\n * type: 'linear',\n * extrapolate: true,\n * round: PixelRatio.get(),\n * },\n * };\n *\n * var toTheLeft = buildStyleInterpolator(ToTheLeft);\n *\n * Would returns a specialized function of the form:\n *\n * function(result, value) {\n * var didChange = false;\n * var nextScalarVal;\n * var ratio;\n * ratio = (value - 0) / 1;\n * ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\n * nextScalarVal = Math.round(100 * (1 * (1 - ratio) + 0.7 * ratio)) / 100;\n * if (!didChange) {\n * var prevVal = result.opacity;\n * result.opacity = nextScalarVal;\n * didChange = didChange || (nextScalarVal !== prevVal);\n * } else {\n * result.opacity = nextScalarVal;\n * }\n * ratio = (value - 0) / 1;\n * nextScalarVal = Math.round(2 * (0 * (1 - ratio) + -30 * ratio)) / 2;\n * if (!didChange) {\n * var prevVal = result.left;\n * result.left = nextScalarVal;\n * didChange = didChange || (nextScalarVal !== prevVal);\n * } else {\n * result.left = nextScalarVal;\n * }\n * return didChange;\n * }\n */\n\nvar ARGUMENT_NAMES_RE = /([^\\s,]+)/g;\n/**\n * This is obviously a huge hack. Proper tooling would allow actual inlining.\n * This only works in a few limited cases (where there is no function return\n * value, and the function operates mutatively on parameters).\n *\n * Example:\n *\n *\n * var inlineMe(a, b) {\n * a = b + b;\n * };\n *\n * inline(inlineMe, ['hi', 'bye']); // \"hi = bye + bye;\"\n *\n * @param {function} func Any simple function whos arguments can be replaced via a regex.\n * @param {array<string>} replaceWithArgs Corresponding names of variables\n * within an environment, to replace `func` args with.\n * @return {string} Resulting function body string.\n */\nvar inline = function(func, replaceWithArgs) {\n var fnStr = func.toString();\n var parameterNames = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\n .match(ARGUMENT_NAMES_RE) ||\n [];\n var replaceRegexStr = parameterNames.map(function(paramName) {\n return '\\\\b' + paramName + '\\\\b';\n }).join('|');\n var replaceRegex = new RegExp(replaceRegexStr, 'g');\n var fnBody = fnStr.substring(fnStr.indexOf('{') + 1, fnStr.lastIndexOf('}'));\n var newFnBody = fnBody.replace(replaceRegex, function(parameterName) {\n var indexInParameterNames = parameterNames.indexOf(parameterName);\n var replacementName = replaceWithArgs[indexInParameterNames];\n return replacementName;\n });\n return newFnBody.split('\\n');\n};\n\n/**\n * Simply a convenient way to inline functions using the function's toString\n * method.\n */\nvar MatrixOps = {\n unroll: function(matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n m0 = matVar[0];\n m1 = matVar[1];\n m2 = matVar[2];\n m3 = matVar[3];\n m4 = matVar[4];\n m5 = matVar[5];\n m6 = matVar[6];\n m7 = matVar[7];\n m8 = matVar[8];\n m9 = matVar[9];\n m10 = matVar[10];\n m11 = matVar[11];\n m12 = matVar[12];\n m13 = matVar[13];\n m14 = matVar[14];\n m15 = matVar[15];\n },\n\n matrixDiffers: function(retVar, matVar, m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13, m14, m15) {\n retVar = retVar ||\n m0 !== matVar[0] ||\n m1 !== matVar[1] ||\n m2 !== matVar[2] ||\n m3 !== matVar[3] ||\n m4 !== matVar[4] ||\n m5 !== matVar[5] ||\n m6 !== matVar[6] ||\n m7 !== matVar[7] ||\n m8 !== matVar[8] ||\n m9 !== matVar[9] ||\n m10 !== matVar[10] ||\n m11 !== matVar[11] ||\n m12 !== matVar[12] ||\n m13 !== matVar[13] ||\n m14 !== matVar[14] ||\n m15 !== matVar[15];\n },\n\n transformScale: function(matVar, opVar) {\n // Scaling matVar by opVar\n var x = opVar[0];\n var y = opVar[1];\n var z = opVar[2];\n matVar[0] = matVar[0] * x;\n matVar[1] = matVar[1] * x;\n matVar[2] = matVar[2] * x;\n matVar[3] = matVar[3] * x;\n matVar[4] = matVar[4] * y;\n matVar[5] = matVar[5] * y;\n matVar[6] = matVar[6] * y;\n matVar[7] = matVar[7] * y;\n matVar[8] = matVar[8] * z;\n matVar[9] = matVar[9] * z;\n matVar[10] = matVar[10] * z;\n matVar[11] = matVar[11] * z;\n matVar[12] = matVar[12];\n matVar[13] = matVar[13];\n matVar[14] = matVar[14];\n matVar[15] = matVar[15];\n },\n\n /**\n * All of these matrix transforms are not general purpose utilities, and are\n * only suitable for being inlined for the use of building up interpolators.\n */\n transformTranslate: function(matVar, opVar) {\n // Translating matVar by opVar\n var x = opVar[0];\n var y = opVar[1];\n var z = opVar[2];\n matVar[12] = matVar[0] * x + matVar[4] * y + matVar[8] * z + matVar[12];\n matVar[13] = matVar[1] * x + matVar[5] * y + matVar[9] * z + matVar[13];\n matVar[14] = matVar[2] * x + matVar[6] * y + matVar[10] * z + matVar[14];\n matVar[15] = matVar[3] * x + matVar[7] * y + matVar[11] * z + matVar[15];\n },\n\n /**\n * @param {array} matVar Both the input, and the output matrix.\n * @param {quaternion specification} q Four element array describing rotation.\n */\n transformRotateRadians: function(matVar, q) {\n // Rotating matVar by q\n var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];\n var x2Quat = xQuat + xQuat;\n var y2Quat = yQuat + yQuat;\n var z2Quat = zQuat + zQuat;\n var xxQuat = xQuat * x2Quat;\n var xyQuat = xQuat * y2Quat;\n var xzQuat = xQuat * z2Quat;\n var yyQuat = yQuat * y2Quat;\n var yzQuat = yQuat * z2Quat;\n var zzQuat = zQuat * z2Quat;\n var wxQuat = wQuat * x2Quat;\n var wyQuat = wQuat * y2Quat;\n var wzQuat = wQuat * z2Quat;\n // Step 1: Inlines the construction of a quaternion matrix (`quatMat`)\n var quatMat0 = 1 - (yyQuat + zzQuat);\n var quatMat1 = xyQuat + wzQuat;\n var quatMat2 = xzQuat - wyQuat;\n var quatMat4 = xyQuat - wzQuat;\n var quatMat5 = 1 - (xxQuat + zzQuat);\n var quatMat6 = yzQuat + wxQuat;\n var quatMat8 = xzQuat + wyQuat;\n var quatMat9 = yzQuat - wxQuat;\n var quatMat10 = 1 - (xxQuat + yyQuat);\n // quatMat3/7/11/12/13/14 = 0, quatMat15 = 1\n\n // Step 2: Inlines multiplication, takes advantage of constant quatMat cells\n var a00 = matVar[0];\n var a01 = matVar[1];\n var a02 = matVar[2];\n var a03 = matVar[3];\n var a10 = matVar[4];\n var a11 = matVar[5];\n var a12 = matVar[6];\n var a13 = matVar[7];\n var a20 = matVar[8];\n var a21 = matVar[9];\n var a22 = matVar[10];\n var a23 = matVar[11];\n\n var b0 = quatMat0, b1 = quatMat1, b2 = quatMat2;\n matVar[0] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[1] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[2] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[3] = b0 * a03 + b1 * a13 + b2 * a23;\n b0 = quatMat4; b1 = quatMat5; b2 = quatMat6;\n matVar[4] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[5] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[6] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[7] = b0 * a03 + b1 * a13 + b2 * a23;\n b0 = quatMat8; b1 = quatMat9; b2 = quatMat10;\n matVar[8] = b0 * a00 + b1 * a10 + b2 * a20;\n matVar[9] = b0 * a01 + b1 * a11 + b2 * a21;\n matVar[10] = b0 * a02 + b1 * a12 + b2 * a22;\n matVar[11] = b0 * a03 + b1 * a13 + b2 * a23;\n }\n};\n\n// Optimized version of general operation applications that can be used when\n// the target matrix is known to be the identity matrix.\nvar MatrixOpsInitial = {\n transformScale: function(matVar, opVar) {\n // Scaling matVar known to be identity by opVar\n matVar[0] = opVar[0];\n matVar[1] = 0;\n matVar[2] = 0;\n matVar[3] = 0;\n matVar[4] = 0;\n matVar[5] = opVar[1];\n matVar[6] = 0;\n matVar[7] = 0;\n matVar[8] = 0;\n matVar[9] = 0;\n matVar[10] = opVar[2];\n matVar[11] = 0;\n matVar[12] = 0;\n matVar[13] = 0;\n matVar[14] = 0;\n matVar[15] = 1;\n },\n\n transformTranslate: function(matVar, opVar) {\n // Translating matVar known to be identity by opVar';\n matVar[0] = 1;\n matVar[1] = 0;\n matVar[2] = 0;\n matVar[3] = 0;\n matVar[4] = 0;\n matVar[5] = 1;\n matVar[6] = 0;\n matVar[7] = 0;\n matVar[8] = 0;\n matVar[9] = 0;\n matVar[10] = 1;\n matVar[11] = 0;\n matVar[12] = opVar[0];\n matVar[13] = opVar[1];\n matVar[14] = opVar[2];\n matVar[15] = 1;\n },\n\n /**\n * @param {array} matVar Both the input, and the output matrix - assumed to be\n * identity.\n * @param {quaternion specification} q Four element array describing rotation.\n */\n transformRotateRadians: function(matVar, q) {\n\n // Rotating matVar which is known to be identity by q\n var xQuat = q[0], yQuat = q[1], zQuat = q[2], wQuat = q[3];\n var x2Quat = xQuat + xQuat;\n var y2Quat = yQuat + yQuat;\n var z2Quat = zQuat + zQuat;\n var xxQuat = xQuat * x2Quat;\n var xyQuat = xQuat * y2Quat;\n var xzQuat = xQuat * z2Quat;\n var yyQuat = yQuat * y2Quat;\n var yzQuat = yQuat * z2Quat;\n var zzQuat = zQuat * z2Quat;\n var wxQuat = wQuat * x2Quat;\n var wyQuat = wQuat * y2Quat;\n var wzQuat = wQuat * z2Quat;\n // Step 1: Inlines the construction of a quaternion matrix (`quatMat`)\n var quatMat0 = 1 - (yyQuat + zzQuat);\n var quatMat1 = xyQuat + wzQuat;\n var quatMat2 = xzQuat - wyQuat;\n var quatMat4 = xyQuat - wzQuat;\n var quatMat5 = 1 - (xxQuat + zzQuat);\n var quatMat6 = yzQuat + wxQuat;\n var quatMat8 = xzQuat + wyQuat;\n var quatMat9 = yzQuat - wxQuat;\n var quatMat10 = 1 - (xxQuat + yyQuat);\n // quatMat3/7/11/12/13/14 = 0, quatMat15 = 1\n\n // Step 2: Inlines the multiplication with identity matrix.\n var b0 = quatMat0, b1 = quatMat1, b2 = quatMat2;\n matVar[0] = b0;\n matVar[1] = b1;\n matVar[2] = b2;\n matVar[3] = 0;\n b0 = quatMat4; b1 = quatMat5; b2 = quatMat6;\n matVar[4] = b0;\n matVar[5] = b1;\n matVar[6] = b2;\n matVar[7] = 0;\n b0 = quatMat8; b1 = quatMat9; b2 = quatMat10;\n matVar[8] = b0;\n matVar[9] = b1;\n matVar[10] = b2;\n matVar[11] = 0;\n matVar[12] = 0;\n matVar[13] = 0;\n matVar[14] = 0;\n matVar[15] = 1;\n }\n};\n\n\nvar setNextValAndDetectChange = function(name, tmpVarName) {\n return (\n ' if (!didChange) {\\n' +\n ' var prevVal = result.' + name + ';\\n' +\n ' result.' + name + ' = ' + tmpVarName + ';\\n' +\n ' didChange = didChange || (' + tmpVarName + ' !== prevVal);\\n' +\n ' } else {\\n' +\n ' result.' + name + ' = ' + tmpVarName + ';\\n' +\n ' }\\n'\n );\n};\n\nvar computeNextValLinear = function(anim, from, to, tmpVarName) {\n var hasRoundRatio = 'round' in anim;\n var roundRatio = anim.round;\n var fn = ' ratio = (value - ' + anim.min + ') / ' + (anim.max - anim.min) + ';\\n';\n if (!anim.extrapolate) {\n fn += ' ratio = ratio > 1 ? 1 : (ratio < 0 ? 0 : ratio);\\n';\n }\n\n var roundOpen = (hasRoundRatio ? 'Math.round(' + roundRatio + ' * ' : '' );\n var roundClose = (hasRoundRatio ? ') / ' + roundRatio : '' );\n fn +=\n ' ' + tmpVarName + ' = ' +\n roundOpen +\n '(' + from + ' * (1 - ratio) + ' + to + ' * ratio)' +\n roundClose + ';\\n';\n return fn;\n};\n\nvar computeNextValLinearScalar = function(anim) {\n return computeNextValLinear(anim, anim.from, anim.to, 'nextScalarVal');\n};\n\nvar computeNextValConstant = function(anim) {\n var constantExpression = JSON.stringify(anim.value);\n return ' nextScalarVal = ' + constantExpression + ';\\n';\n};\n\nvar computeNextValStep = function(anim) {\n return (\n ' nextScalarVal = value >= ' +\n (anim.threshold + ' ? ' + anim.to + ' : ' + anim.from) + ';\\n'\n );\n};\n\nvar computeNextValIdentity = function(anim) {\n return ' nextScalarVal = value;\\n';\n};\n\nvar operationVar = function(name) {\n return name + 'ReuseOp';\n};\n\nvar createReusableOperationVars = function(anims) {\n var ret = '';\n for (var name in anims) {\n if (ShouldAllocateReusableOperationVars[name]) {\n ret += 'var ' + operationVar(name) + ' = [];\\n';\n }\n }\n return ret;\n};\n\nvar newlines = function(statements) {\n return '\\n' + statements.join('\\n') + '\\n';\n};\n\n/**\n * @param {Animation} anim Configuration entry.\n * @param {key} dimension Key to examine in `from`/`to`.\n * @param {number} index Field in operationVar to set.\n * @return {string} Code that sets the operation variable's field.\n */\nvar computeNextMatrixOperationField = function(anim, name, dimension, index) {\n var fieldAccess = operationVar(name) + '[' + index + ']';\n if (anim.from[dimension] !== undefined && anim.to[dimension] !== undefined) {\n return ' ' + anim.from[dimension] !== anim.to[dimension] ?\n computeNextValLinear(anim, anim.from[dimension], anim.to[dimension], fieldAccess) :\n fieldAccess + ' = ' + anim.from[dimension] + ';';\n } else {\n return ' ' + fieldAccess + ' = ' + InitialOperationField[name][index] + ';';\n }\n};\n\nvar unrolledVars = [];\nfor (var varIndex = 0; varIndex < 16; varIndex++) {\n unrolledVars.push('m' + varIndex);\n}\nvar setNextMatrixAndDetectChange = function(orderedMatrixOperations) {\n var fn = [\n ' var transformMatrix = result.transformMatrix !== undefined ? ' +\n 'result.transformMatrix : (result.transformMatrix = []);'\n ];\n fn.push.apply(\n fn,\n inline(MatrixOps.unroll, ['transformMatrix'].concat(unrolledVars))\n );\n for (var i = 0; i < orderedMatrixOperations.length; i++) {\n var opName = orderedMatrixOperations[i];\n if (i === 0) {\n fn.push.apply(\n fn,\n inline(MatrixOpsInitial[opName], ['transformMatrix', operationVar(opName)])\n );\n } else {\n fn.push.apply(\n fn,\n inline(MatrixOps[opName], ['transformMatrix', operationVar(opName)])\n );\n }\n }\n fn.push.apply(\n fn,\n inline(MatrixOps.matrixDiffers, ['didChange', 'transformMatrix'].concat(unrolledVars))\n );\n return fn;\n};\n\nvar InterpolateMatrix = {\n transformTranslate: true,\n transformRotateRadians: true,\n transformScale: true,\n};\n\nvar createFunctionString = function(anims) {\n // We must track the order they appear in so transforms are applied in the\n // correct order.\n var orderedMatrixOperations = [];\n\n // Wrapping function allows the final function to contain state (for\n // caching).\n var fn = 'return (function() {\\n';\n fn += createReusableOperationVars(anims);\n fn += 'return function(result, value) {\\n';\n fn += ' var didChange = false;\\n';\n fn += ' var nextScalarVal;\\n';\n fn += ' var ratio;\\n';\n\n for (var name in anims) {\n var anim = anims[name];\n if (anim.type === 'linear') {\n if (InterpolateMatrix[name]) {\n orderedMatrixOperations.push(name);\n var setOperations = [\n computeNextMatrixOperationField(anim, name, X_DIM, 0),\n computeNextMatrixOperationField(anim, name, Y_DIM, 1),\n computeNextMatrixOperationField(anim, name, Z_DIM, 2)\n ];\n if (name === TRANSFORM_ROTATE_NAME) {\n setOperations.push(computeNextMatrixOperationField(anim, name, W_DIM, 3));\n }\n fn += newlines(setOperations);\n } else {\n fn += computeNextValLinearScalar(anim, 'nextScalarVal');\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n }\n } else if (anim.type === 'constant') {\n fn += computeNextValConstant(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n } else if (anim.type === 'step') {\n fn += computeNextValStep(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n } else if (anim.type === 'identity') {\n fn += computeNextValIdentity(anim);\n fn += setNextValAndDetectChange(name, 'nextScalarVal');\n }\n }\n if (orderedMatrixOperations.length) {\n fn += newlines(setNextMatrixAndDetectChange(orderedMatrixOperations));\n }\n fn += ' return didChange;\\n';\n fn += '};\\n';\n fn += '})()';\n return fn;\n};\n\n/**\n * @param {object} anims Animation configuration by style property name.\n * @return {function} Function accepting style object, that mutates that style\n * object and returns a boolean describing if any update was actually applied.\n */\nvar buildStyleInterpolator = function(anims) {\n return Function(createFunctionString(anims))();\n};\n\n\nmodule.exports = buildStyleInterpolator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/buildStyleInterpolator.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/StaticContainer/StaticContainer.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\n\nvar onlyChild=require('onlyChild');var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nStaticContainer=(function(_React$Component){_inherits(StaticContainer,_React$Component);function StaticContainer(){_classCallCheck(this,StaticContainer);_get(Object.getPrototypeOf(StaticContainer.prototype),'constructor',this).apply(this,arguments);}_createClass(StaticContainer,[{key:'shouldComponentUpdate',value:\n\nfunction shouldComponentUpdate(nextProps){\nreturn !!nextProps.shouldUpdate;}},{key:'render',value:\n\n\nfunction render(){\nvar child=this.props.children;\nreturn child === null || child === false?null:onlyChild(child);}}]);return StaticContainer;})(React.Component);\n\n\n\n\nmodule.exports = StaticContainer;","sourceCode":"/**\n * @generated SignedSource<<2a163cdb088fb963f941e627fd89ce11>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule StaticContainer.react\n * @typechecks\n * @flow\n */\n\nvar React = require('React');\n\nvar onlyChild = require('onlyChild');\n\n/**\n * Renders static content efficiently by allowing React to short-circuit the\n * reconciliation process. This component should be used when you know that a\n * subtree of components will never need to be updated.\n *\n * var someValue = ...; // We know for certain this value will never change.\n * return (\n * <StaticContainer>\n * <MyComponent value={someValue} />\n * </StaticContainer>\n * );\n *\n * Typically, you will not need to use this component and should opt for normal\n * React reconciliation.\n */\nclass StaticContainer extends React.Component {\n\n shouldComponentUpdate(nextProps: Object): boolean {\n return !!nextProps.shouldUpdate;\n }\n\n render() {\n var child = this.props.children;\n return (child === null || child === false) ? null : onlyChild(child);\n }\n\n}\n\nmodule.exports = StaticContainer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/StaticContainer/StaticContainer.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar NavigatorNavigationBarStyles=require('NavigatorNavigationBarStyles');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar COMPONENT_NAMES=['Title','LeftButton','RightButton'];\n\nvar navStatePresentedIndex=function(navState){\nif(navState.presentedIndex !== undefined){\nreturn navState.presentedIndex;}\n\n\nreturn navState.observedTopOfStack;};\n\n\nvar NavigatorNavigationBar=React.createClass({displayName:'NavigatorNavigationBar',\n\npropTypes:{\nnavigator:React.PropTypes.object,\nrouteMapper:React.PropTypes.shape({\nTitle:React.PropTypes.func.isRequired,\nLeftButton:React.PropTypes.func.isRequired,\nRightButton:React.PropTypes.func.isRequired}),\n\nnavState:React.PropTypes.shape({\nrouteStack:React.PropTypes.arrayOf(React.PropTypes.object),\nidStack:React.PropTypes.arrayOf(React.PropTypes.number),\npresentedIndex:React.PropTypes.number}),\n\nstyle:View.propTypes.style},\n\n\nstatics:{\nStyles:NavigatorNavigationBarStyles},\n\n\n_getReusableProps:function(\ncomponentName,\nindex)\n{\nif(!this._reusableProps){\nthis._reusableProps = {};}\n\nvar propStack=this._reusableProps[componentName];\nif(!propStack){\npropStack = this._reusableProps[componentName] = [];}\n\nvar props=propStack[index];\nif(!props){\nprops = propStack[index] = {style:{}};}\n\nreturn props;},\n\n\n_updateIndexProgress:function(\nprogress,\nindex,\nfromIndex,\ntoIndex)\n{\nvar amount=toIndex > fromIndex?progress:1 - progress;\nvar oldDistToCenter=index - fromIndex;\nvar newDistToCenter=index - toIndex;\nvar interpolate;\nif(oldDistToCenter > 0 && newDistToCenter === 0 || \nnewDistToCenter > 0 && oldDistToCenter === 0){\ninterpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;}else \nif(oldDistToCenter < 0 && newDistToCenter === 0 || \nnewDistToCenter < 0 && oldDistToCenter === 0){\ninterpolate = NavigatorNavigationBarStyles.Interpolators.CenterToLeft;}else \nif(oldDistToCenter === newDistToCenter){\ninterpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;}else \n{\ninterpolate = NavigatorNavigationBarStyles.Interpolators.RightToLeft;}\n\n\nCOMPONENT_NAMES.forEach(function(componentName){\nvar component=this.refs[componentName + index];\nvar props=this._getReusableProps(componentName,index);\nif(component && interpolate[componentName](props.style,amount)){\ncomponent.setNativeProps(props);}},\n\nthis);},\n\n\nupdateProgress:function(\nprogress,\nfromIndex,\ntoIndex)\n{\nvar max=Math.max(fromIndex,toIndex);\nvar min=Math.min(fromIndex,toIndex);\nfor(var index=min;index <= max;index++) {\nthis._updateIndexProgress(progress,index,fromIndex,toIndex);}},\n\n\n\nrender:function(){\nvar navState=this.props.navState;\nvar components=COMPONENT_NAMES.map(function(componentName){\nreturn navState.routeStack.map(\nthis._renderOrReturnComponent.bind(this,componentName));},\n\nthis);\n\nreturn (\nReact.createElement(View,{style:[styles.navBarContainer,this.props.style]},\ncomponents));},\n\n\n\n\n_renderOrReturnComponent:function(\ncomponentName,\nroute,\nindex)\n{\nvar navState=this.props.navState;\nvar uid=navState.idStack[index];\nvar containerRef=componentName + 'Container' + uid;\nvar alreadyRendered=this.refs[containerRef];\nif(alreadyRendered){\n\nreturn (\nReact.createElement(StaticContainer,{\nref:containerRef,\nkey:containerRef,\nshouldUpdate:false}));}\n\n\n\n\nvar content=this.props.routeMapper[componentName](\nnavState.routeStack[index],\nthis.props.navigator,\nindex,\nthis.props.navState);\n\nif(!content){\nreturn null;}\n\n\nvar initialStage=index === navStatePresentedIndex(this.props.navState)?\nNavigatorNavigationBarStyles.Stages.Center:NavigatorNavigationBarStyles.Stages.Left;\nreturn (\nReact.createElement(StaticContainer,{\nref:containerRef,\nkey:containerRef,\nshouldUpdate:false},\nReact.createElement(View,{ref:componentName + index,style:initialStage[componentName]},\ncontent)));}});\n\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nnavBarContainer:{\nposition:'absolute',\nheight:NavigatorNavigationBarStyles.General.TotalNavHeight,\ntop:0,\nleft:0,\nright:0,\nbackgroundColor:'transparent'}});\n\n\n\nmodule.exports = NavigatorNavigationBar;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorNavigationBar\n */\n'use strict';\n\nvar React = require('React');\nvar NavigatorNavigationBarStyles = require('NavigatorNavigationBarStyles');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar COMPONENT_NAMES = ['Title', 'LeftButton', 'RightButton'];\n\nvar navStatePresentedIndex = function(navState) {\n if (navState.presentedIndex !== undefined) {\n return navState.presentedIndex;\n }\n // TODO: rename `observedTopOfStack` to `presentedIndex` in `NavigatorIOS`\n return navState.observedTopOfStack;\n};\n\nvar NavigatorNavigationBar = React.createClass({\n\n propTypes: {\n navigator: React.PropTypes.object,\n routeMapper: React.PropTypes.shape({\n Title: React.PropTypes.func.isRequired,\n LeftButton: React.PropTypes.func.isRequired,\n RightButton: React.PropTypes.func.isRequired,\n }),\n navState: React.PropTypes.shape({\n routeStack: React.PropTypes.arrayOf(React.PropTypes.object),\n idStack: React.PropTypes.arrayOf(React.PropTypes.number),\n presentedIndex: React.PropTypes.number,\n }),\n style: View.propTypes.style,\n },\n\n statics: {\n Styles: NavigatorNavigationBarStyles,\n },\n\n _getReusableProps: function(\n /*string*/componentName,\n /*number*/index\n ) /*object*/ {\n if (!this._reusableProps) {\n this._reusableProps = {};\n }\n var propStack = this._reusableProps[componentName];\n if (!propStack) {\n propStack = this._reusableProps[componentName] = [];\n }\n var props = propStack[index];\n if (!props) {\n props = propStack[index] = {style:{}};\n }\n return props;\n },\n\n _updateIndexProgress: function(\n /*number*/progress,\n /*number*/index,\n /*number*/fromIndex,\n /*number*/toIndex\n ) {\n var amount = toIndex > fromIndex ? progress : (1 - progress);\n var oldDistToCenter = index - fromIndex;\n var newDistToCenter = index - toIndex;\n var interpolate;\n if (oldDistToCenter > 0 && newDistToCenter === 0 ||\n newDistToCenter > 0 && oldDistToCenter === 0) {\n interpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;\n } else if (oldDistToCenter < 0 && newDistToCenter === 0 ||\n newDistToCenter < 0 && oldDistToCenter === 0) {\n interpolate = NavigatorNavigationBarStyles.Interpolators.CenterToLeft;\n } else if (oldDistToCenter === newDistToCenter) {\n interpolate = NavigatorNavigationBarStyles.Interpolators.RightToCenter;\n } else {\n interpolate = NavigatorNavigationBarStyles.Interpolators.RightToLeft;\n }\n\n COMPONENT_NAMES.forEach(function (componentName) {\n var component = this.refs[componentName + index];\n var props = this._getReusableProps(componentName, index);\n if (component && interpolate[componentName](props.style, amount)) {\n component.setNativeProps(props);\n }\n }, this);\n },\n\n updateProgress: function(\n /*number*/progress,\n /*number*/fromIndex,\n /*number*/toIndex\n ) {\n var max = Math.max(fromIndex, toIndex);\n var min = Math.min(fromIndex, toIndex);\n for (var index = min; index <= max; index++) {\n this._updateIndexProgress(progress, index, fromIndex, toIndex);\n }\n },\n\n render: function() {\n var navState = this.props.navState;\n var components = COMPONENT_NAMES.map(function (componentName) {\n return navState.routeStack.map(\n this._renderOrReturnComponent.bind(this, componentName)\n );\n }, this);\n\n return (\n <View style={[styles.navBarContainer, this.props.style]}>\n {components}\n </View>\n );\n },\n\n _renderOrReturnComponent: function(\n /*string*/componentName,\n /*object*/route,\n /*number*/index\n ) /*object*/ {\n var navState = this.props.navState;\n var uid = navState.idStack[index];\n var containerRef = componentName + 'Container' + uid;\n var alreadyRendered = this.refs[containerRef];\n if (alreadyRendered) {\n // Don't bother re-calculating the children\n return (\n <StaticContainer\n ref={containerRef}\n key={containerRef}\n shouldUpdate={false}\n />\n );\n }\n\n var content = this.props.routeMapper[componentName](\n navState.routeStack[index],\n this.props.navigator,\n index,\n this.props.navState\n );\n if (!content) {\n return null;\n }\n\n var initialStage = index === navStatePresentedIndex(this.props.navState) ?\n NavigatorNavigationBarStyles.Stages.Center : NavigatorNavigationBarStyles.Stages.Left;\n return (\n <StaticContainer\n ref={containerRef}\n key={containerRef}\n shouldUpdate={false}>\n <View ref={componentName + index} style={initialStage[componentName]}>\n {content}\n </View>\n </StaticContainer>\n );\n },\n\n});\n\n\nvar styles = StyleSheet.create({\n navBarContainer: {\n position: 'absolute',\n height: NavigatorNavigationBarStyles.General.TotalNavHeight,\n top: 0,\n left: 0,\n right: 0,\n backgroundColor: 'transparent',\n },\n});\n\nmodule.exports = NavigatorNavigationBar;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorNavigationBar.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorSceneConfigs.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar PixelRatio=require('PixelRatio');\n\nvar buildStyleInterpolator=require('buildStyleInterpolator');\n\nvar SCREEN_WIDTH=Dimensions.get('window').width;\nvar SCREEN_HEIGHT=Dimensions.get('window').height;\n\nvar FadeToTheLeft={\n\n\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-Math.round(Dimensions.get('window').width * 0.3),y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\n\n\n\n\n\n\n\n\n\n\ntransformScale:{\nfrom:{x:1,y:1,z:1},\nto:{x:0.95,y:0.95,z:1},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nopacity:{\nfrom:1,\nto:0.3,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\ntranslateX:{\nfrom:0,\nto:-Math.round(Dimensions.get('window').width * 0.3),\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nscaleX:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nscaleY:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true}};\n\n\n\nvar FadeToTheRight=_extends({},\nFadeToTheLeft,{\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:Math.round(SCREEN_WIDTH * 0.3),y:0,z:0}},\n\ntranslateX:{\nfrom:0,\nto:Math.round(SCREEN_WIDTH * 0.3)}});\n\n\n\nvar FadeIn={\nopacity:{\nfrom:0,\nto:1,\nmin:0.5,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100}};\n\n\n\nvar FadeOut={\nopacity:{\nfrom:1,\nto:0,\nmin:0,\nmax:0.5,\ntype:'linear',\nextrapolate:false,\nround:100}};\n\n\n\nvar ToTheLeft={\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:-Dimensions.get('window').width,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntranslateX:{\nfrom:0,\nto:-Dimensions.get('window').width,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar FromTheRight={\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntransformTranslate:{\nfrom:{x:Dimensions.get('window').width,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\ntranslateX:{\nfrom:Dimensions.get('window').width,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\n\nscaleX:{\nvalue:1,\ntype:'constant'},\n\nscaleY:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar FromTheLeft=_extends({},\nFromTheRight,{\ntransformTranslate:{\nfrom:{x:-SCREEN_WIDTH,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateX:{\nfrom:-SCREEN_WIDTH,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}});\n\n\n\nvar ToTheBack={\n\n\ntransformTranslate:{\nfrom:{x:0,y:0,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntransformScale:{\nfrom:{x:1,y:1,z:1},\nto:{x:0.95,y:0.95,z:1},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nopacity:{\nfrom:1,\nto:0.3,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\nscaleX:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true},\n\nscaleY:{\nfrom:1,\nto:0.95,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true}};\n\n\n\nvar FromTheFront={\nopacity:{\nvalue:1.0,\ntype:'constant'},\n\n\ntransformTranslate:{\nfrom:{x:0,y:Dimensions.get('window').height,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:Dimensions.get('window').height,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\nscaleX:{\nvalue:1,\ntype:'constant'},\n\nscaleY:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar ToTheBackAndroid={\nopacity:{\nvalue:1,\ntype:'constant'}};\n\n\n\nvar FromTheFrontAndroid={\nopacity:{\nfrom:0,\nto:1,\nmin:0.5,\nmax:1,\ntype:'linear',\nextrapolate:false,\nround:100},\n\ntransformTranslate:{\nfrom:{x:0,y:100,z:0},\nto:{x:0,y:0,z:0},\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()},\n\ntranslateY:{\nfrom:100,\nto:0,\nmin:0,\nmax:1,\ntype:'linear',\nextrapolate:true,\nround:PixelRatio.get()}};\n\n\n\nvar BaseOverswipeConfig={\nfrictionConstant:1,\nfrictionByDistance:1.5};\n\n\nvar BaseLeftToRightGesture={\n\n\nisDetachable:false,\n\n\ngestureDetectMovement:2,\n\n\nnotMoving:0.3,\n\n\ndirectionRatio:0.66,\n\n\nsnapVelocity:2,\n\n\nedgeHitWidth:30,\n\n\nstillCompletionRatio:3 / 5,\n\nfullDistance:SCREEN_WIDTH,\n\ndirection:'left-to-right'};\n\n\n\nvar BaseRightToLeftGesture=_extends({},\nBaseLeftToRightGesture,{\ndirection:'right-to-left'});\n\n\nvar BaseConfig={\n\ngestures:{\npop:BaseLeftToRightGesture},\n\n\n\nspringFriction:26,\nspringTension:200,\n\n\ndefaultTransitionVelocity:1.5,\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(FadeToTheLeft)}};\n\n\n\nvar NavigatorSceneConfigs={\nPushFromRight:_extends({},\nBaseConfig),\n\n\nFloatFromRight:_extends({},\nBaseConfig),\n\n\nFloatFromLeft:_extends({},\nBaseConfig,{\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheLeft),\nout:buildStyleInterpolator(FadeToTheRight)}}),\n\n\nFloatFromBottom:_extends({},\nBaseConfig,{\ngestures:{\npop:_extends({},\nBaseLeftToRightGesture,{\nedgeHitWidth:150,\ndirection:'top-to-bottom',\nfullDistance:SCREEN_HEIGHT})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheFront),\nout:buildStyleInterpolator(ToTheBack)}}),\n\n\nFloatFromBottomAndroid:_extends({},\nBaseConfig,{\ngestures:null,\ndefaultTransitionVelocity:3,\nspringFriction:20,\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheFrontAndroid),\nout:buildStyleInterpolator(ToTheBackAndroid)}}),\n\n\nFadeAndroid:_extends({},\nBaseConfig,{\ngestures:null,\nanimationInterpolators:{\ninto:buildStyleInterpolator(FadeIn),\nout:buildStyleInterpolator(FadeOut)}}),\n\n\nHorizontalSwipeJump:_extends({},\nBaseConfig,{\ngestures:{\njumpBack:_extends({},\nBaseLeftToRightGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true}),\n\njumpForward:_extends({},\nBaseRightToLeftGesture,{\noverswipe:BaseOverswipeConfig,\nedgeHitWidth:null,\nisDetachable:true})},\n\n\nanimationInterpolators:{\ninto:buildStyleInterpolator(FromTheRight),\nout:buildStyleInterpolator(ToTheLeft)}})};\n\n\n\n\nmodule.exports = NavigatorSceneConfigs;","sourceCode":"/**\n * Copyright (c) 2015, Facebook, Inc. All rights reserved.\n *\n * Facebook, Inc. (“Facebook”) owns all right, title and interest, including\n * all intellectual property and other proprietary rights, in and to the React\n * Native CustomComponents software (the “Software”). Subject to your\n * compliance with these terms, you are hereby granted a non-exclusive,\n * worldwide, royalty-free copyright license to (1) use and copy the Software;\n * and (2) reproduce and distribute the Software as part of your own software\n * (“Your Software”). Facebook reserves all rights not expressly granted to\n * you in this license agreement.\n *\n * THE SOFTWARE AND DOCUMENTATION, IF ANY, ARE PROVIDED \"AS IS\" AND ANY EXPRESS\n * OR IMPLIED WARRANTIES (INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE) ARE DISCLAIMED.\n * IN NO EVENT SHALL FACEBOOK OR ITS AFFILIATES, OFFICERS, DIRECTORS OR\n * EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * @providesModule NavigatorSceneConfigs\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar PixelRatio = require('PixelRatio');\n\nvar buildStyleInterpolator = require('buildStyleInterpolator');\n\nvar SCREEN_WIDTH = Dimensions.get('window').width;\nvar SCREEN_HEIGHT = Dimensions.get('window').height;\n\nvar FadeToTheLeft = {\n // Rotate *requires* you to break out each individual component of\n // rotation (x, y, z, w)\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -Math.round(Dimensions.get('window').width * 0.3), y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n // Uncomment to try rotation:\n // Quick guide to reasoning about rotations:\n // http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/#Quaternions\n // transformRotateRadians: {\n // from: {x: 0, y: 0, z: 0, w: 1},\n // to: {x: 0, y: 0, z: -0.47, w: 0.87},\n // min: 0,\n // max: 1,\n // type: 'linear',\n // extrapolate: true\n // },\n transformScale: {\n from: {x: 1, y: 1, z: 1},\n to: {x: 0.95, y: 0.95, z: 1},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n opacity: {\n from: 1,\n to: 0.3,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n translateX: {\n from: 0,\n to: -Math.round(Dimensions.get('window').width * 0.3),\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n scaleX: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n scaleY: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n};\n\nvar FadeToTheRight = {\n ...FadeToTheLeft,\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: Math.round(SCREEN_WIDTH * 0.3), y: 0, z: 0},\n },\n translateX: {\n from: 0,\n to: Math.round(SCREEN_WIDTH * 0.3),\n }\n};\n\nvar FadeIn = {\n opacity: {\n from: 0,\n to: 1,\n min: 0.5,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n};\n\nvar FadeOut = {\n opacity: {\n from: 1,\n to: 0,\n min: 0,\n max: 0.5,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n};\n\nvar ToTheLeft = {\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: -Dimensions.get('window').width, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n translateX: {\n from: 0,\n to: -Dimensions.get('window').width,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar FromTheRight = {\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n transformTranslate: {\n from: {x: Dimensions.get('window').width, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n\n translateX: {\n from: Dimensions.get('window').width,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n\n scaleX: {\n value: 1,\n type: 'constant',\n },\n scaleY: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar FromTheLeft = {\n ...FromTheRight,\n transformTranslate: {\n from: {x: -SCREEN_WIDTH, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateX: {\n from: -SCREEN_WIDTH,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar ToTheBack = {\n // Rotate *requires* you to break out each individual component of\n // rotation (x, y, z, w)\n transformTranslate: {\n from: {x: 0, y: 0, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n transformScale: {\n from: {x: 1, y: 1, z: 1},\n to: {x: 0.95, y: 0.95, z: 1},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n opacity: {\n from: 1,\n to: 0.3,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n scaleX: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n scaleY: {\n from: 1,\n to: 0.95,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true\n },\n};\n\nvar FromTheFront = {\n opacity: {\n value: 1.0,\n type: 'constant',\n },\n\n transformTranslate: {\n from: {x: 0, y: Dimensions.get('window').height, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: Dimensions.get('window').height,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n scaleX: {\n value: 1,\n type: 'constant',\n },\n scaleY: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar ToTheBackAndroid = {\n opacity: {\n value: 1,\n type: 'constant',\n },\n};\n\nvar FromTheFrontAndroid = {\n opacity: {\n from: 0,\n to: 1,\n min: 0.5,\n max: 1,\n type: 'linear',\n extrapolate: false,\n round: 100,\n },\n transformTranslate: {\n from: {x: 0, y: 100, z: 0},\n to: {x: 0, y: 0, z: 0},\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n translateY: {\n from: 100,\n to: 0,\n min: 0,\n max: 1,\n type: 'linear',\n extrapolate: true,\n round: PixelRatio.get(),\n },\n};\n\nvar BaseOverswipeConfig = {\n frictionConstant: 1,\n frictionByDistance: 1.5,\n};\n\nvar BaseLeftToRightGesture = {\n\n // If the gesture can end and restart during one continuous touch\n isDetachable: false,\n\n // How far the swipe must drag to start transitioning\n gestureDetectMovement: 2,\n\n // Amplitude of release velocity that is considered still\n notMoving: 0.3,\n\n // Fraction of directional move required.\n directionRatio: 0.66,\n\n // Velocity to transition with when the gesture release was \"not moving\"\n snapVelocity: 2,\n\n // Region that can trigger swipe. iOS default is 30px from the left edge\n edgeHitWidth: 30,\n\n // Ratio of gesture completion when non-velocity release will cause action\n stillCompletionRatio: 3 / 5,\n\n fullDistance: SCREEN_WIDTH,\n\n direction: 'left-to-right',\n\n};\n\nvar BaseRightToLeftGesture = {\n ...BaseLeftToRightGesture,\n direction: 'right-to-left',\n};\n\nvar BaseConfig = {\n // A list of all gestures that are enabled on this scene\n gestures: {\n pop: BaseLeftToRightGesture,\n },\n\n // Rebound spring parameters when transitioning FROM this scene\n springFriction: 26,\n springTension: 200,\n\n // Velocity to start at when transitioning without gesture\n defaultTransitionVelocity: 1.5,\n\n // Animation interpolators for horizontal transitioning:\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(FadeToTheLeft),\n },\n};\n\nvar NavigatorSceneConfigs = {\n PushFromRight: {\n ...BaseConfig,\n // We will want to customize this soon\n },\n FloatFromRight: {\n ...BaseConfig,\n // We will want to customize this soon\n },\n FloatFromLeft: {\n ...BaseConfig,\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheLeft),\n out: buildStyleInterpolator(FadeToTheRight),\n },\n },\n FloatFromBottom: {\n ...BaseConfig,\n gestures: {\n pop: {\n ...BaseLeftToRightGesture,\n edgeHitWidth: 150,\n direction: 'top-to-bottom',\n fullDistance: SCREEN_HEIGHT,\n }\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheFront),\n out: buildStyleInterpolator(ToTheBack),\n },\n },\n FloatFromBottomAndroid: {\n ...BaseConfig,\n gestures: null,\n defaultTransitionVelocity: 3,\n springFriction: 20,\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheFrontAndroid),\n out: buildStyleInterpolator(ToTheBackAndroid),\n },\n },\n FadeAndroid: {\n ...BaseConfig,\n gestures: null,\n animationInterpolators: {\n into: buildStyleInterpolator(FadeIn),\n out: buildStyleInterpolator(FadeOut),\n },\n },\n HorizontalSwipeJump: {\n ...BaseConfig,\n gestures: {\n jumpBack: {\n ...BaseLeftToRightGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n jumpForward: {\n ...BaseRightToLeftGesture,\n overswipe: BaseOverswipeConfig,\n edgeHitWidth: null,\n isDetachable: true,\n },\n },\n animationInterpolators: {\n into: buildStyleInterpolator(FromTheRight),\n out: buildStyleInterpolator(ToTheLeft),\n },\n },\n};\n\nmodule.exports = NavigatorSceneConfigs;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CustomComponents/Navigator/NavigatorSceneConfigs.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/PanResponder.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar TouchHistoryMath=require('TouchHistoryMath');\n\nvar currentCentroidXOfTouchesChangedAfter=\nTouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nvar currentCentroidYOfTouchesChangedAfter=\nTouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nvar previousCentroidXOfTouchesChangedAfter=\nTouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nvar previousCentroidYOfTouchesChangedAfter=\nTouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nvar currentCentroidX=TouchHistoryMath.currentCentroidX;\nvar currentCentroidY=TouchHistoryMath.currentCentroidY;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar PanResponder={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_initializeGestureState:function(gestureState){\ngestureState.moveX = 0;\ngestureState.moveY = 0;\ngestureState.x0 = 0;\ngestureState.y0 = 0;\ngestureState.dx = 0;\ngestureState.dy = 0;\ngestureState.vx = 0;\ngestureState.vy = 0;\ngestureState.numberActiveTouches = 0;\n\ngestureState._accountsForMovesUpTo = 0;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_updateGestureStateOnMove:function(gestureState,touchHistory){\ngestureState.numberActiveTouches = touchHistory.numberActiveTouches;\ngestureState.moveX = currentCentroidXOfTouchesChangedAfter(\ntouchHistory,\ngestureState._accountsForMovesUpTo);\n\ngestureState.moveY = currentCentroidYOfTouchesChangedAfter(\ntouchHistory,\ngestureState._accountsForMovesUpTo);\n\nvar movedAfter=gestureState._accountsForMovesUpTo;\nvar prevX=previousCentroidXOfTouchesChangedAfter(touchHistory,movedAfter);\nvar x=currentCentroidXOfTouchesChangedAfter(touchHistory,movedAfter);\nvar prevY=previousCentroidYOfTouchesChangedAfter(touchHistory,movedAfter);\nvar y=currentCentroidYOfTouchesChangedAfter(touchHistory,movedAfter);\nvar nextDX=gestureState.dx + (x - prevX);\nvar nextDY=gestureState.dy + (y - prevY);\n\n\nvar dt=\ntouchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;\ngestureState.vx = (nextDX - gestureState.dx) / dt;\ngestureState.vy = (nextDY - gestureState.dy) / dt;\n\ngestureState.dx = nextDX;\ngestureState.dy = nextDY;\ngestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreate:function(config){\nvar gestureState={\n\nstateID:Math.random()};\n\nPanResponder._initializeGestureState(gestureState);\nvar panHandlers={\nonStartShouldSetResponder:function(e){\nreturn config.onStartShouldSetPanResponder === undefined?false:\nconfig.onStartShouldSetPanResponder(e,gestureState);},\n\nonMoveShouldSetResponder:function(e){\nreturn config.onMoveShouldSetPanResponder === undefined?false:\nconfig.onMoveShouldSetPanResponder(e,gestureState);},\n\nonStartShouldSetResponderCapture:function(e){\n\n\nif(e.nativeEvent.touches.length === 1){\nPanResponder._initializeGestureState(gestureState);}\n\ngestureState.numberActiveTouches = e.touchHistory.numberActiveTouches;\nreturn config.onStartShouldSetPanResponderCapture !== undefined?\nconfig.onStartShouldSetPanResponderCapture(e,gestureState):false;},\n\n\nonMoveShouldSetResponderCapture:function(e){\nvar touchHistory=e.touchHistory;\n\n\n\nif(gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp){\nreturn false;}\n\nPanResponder._updateGestureStateOnMove(gestureState,touchHistory);\nreturn config.onMoveShouldSetResponderCapture?\nconfig.onMoveShouldSetPanResponderCapture(e,gestureState):false;},\n\n\nonResponderGrant:function(e){\ngestureState.x0 = currentCentroidX(e.touchHistory);\ngestureState.y0 = currentCentroidY(e.touchHistory);\ngestureState.dx = 0;\ngestureState.dy = 0;\nconfig.onPanResponderGrant && config.onPanResponderGrant(e,gestureState);\n\nreturn config.onShouldBlockNativeResponder === undefined?true:\nconfig.onShouldBlockNativeResponder();},\n\n\nonResponderReject:function(e){\nconfig.onPanResponderReject && config.onPanResponderReject(e,gestureState);},\n\n\nonResponderRelease:function(e){\nconfig.onPanResponderRelease && config.onPanResponderRelease(e,gestureState);\nPanResponder._initializeGestureState(gestureState);},\n\n\nonResponderStart:function(e){\nvar touchHistory=e.touchHistory;\ngestureState.numberActiveTouches = touchHistory.numberActiveTouches;\nconfig.onPanResponderStart && config.onPanResponderStart(e,gestureState);},\n\n\nonResponderMove:function(e){\nvar touchHistory=e.touchHistory;\n\n\nif(gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp){\nreturn;}\n\n\n\nPanResponder._updateGestureStateOnMove(gestureState,touchHistory);\nconfig.onPanResponderMove && config.onPanResponderMove(e,gestureState);},\n\n\nonResponderEnd:function(e){\nvar touchHistory=e.touchHistory;\ngestureState.numberActiveTouches = touchHistory.numberActiveTouches;\nconfig.onPanResponderEnd && config.onPanResponderEnd(e,gestureState);},\n\n\nonResponderTerminate:function(e){\nconfig.onPanResponderTerminate && \nconfig.onPanResponderTerminate(e,gestureState);\nPanResponder._initializeGestureState(gestureState);},\n\n\nonResponderTerminationRequest:function(e){\nreturn config.onPanResponderTerminationRequest === undefined?true:\nconfig.onPanResponderTerminationRequest(e,gestureState);}};\n\n\nreturn {panHandlers:panHandlers};}};\n\n\n\nmodule.exports = PanResponder;","sourceCode":"/**\n * @providesModule PanResponder\n */\n\n\"use strict\";\n\nvar TouchHistoryMath = require('TouchHistoryMath');\n\nvar currentCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidXOfTouchesChangedAfter;\nvar currentCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.currentCentroidYOfTouchesChangedAfter;\nvar previousCentroidXOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidXOfTouchesChangedAfter;\nvar previousCentroidYOfTouchesChangedAfter =\n TouchHistoryMath.previousCentroidYOfTouchesChangedAfter;\nvar currentCentroidX = TouchHistoryMath.currentCentroidX;\nvar currentCentroidY = TouchHistoryMath.currentCentroidY;\n\n/**\n * `PanResponder` reconciles several touches into a single gesture. It makes\n * single-touch gestures resilient to extra touches, and can be used to\n * recognize simple multi-touch gestures.\n *\n * It provides a predictable wrapper of the responder handlers provided by the\n * [gesture responder system](/react-native/docs/gesture-responder-system.html).\n * For each handler, it provides a new `gestureState` object alongside the\n * normal event.\n *\n * A `gestureState` object has the following:\n *\n * - `stateID` - ID of the gestureState- persisted as long as there at least\n * one touch on screen\n * - `moveX` - the latest screen coordinates of the recently-moved touch\n * - `moveY` - the latest screen coordinates of the recently-moved touch\n * - `x0` - the screen coordinates of the responder grant\n * - `y0` - the screen coordinates of the responder grant\n * - `dx` - accumulated distance of the gesture since the touch started\n * - `dy` - accumulated distance of the gesture since the touch started\n * - `vx` - current velocity of the gesture\n * - `vy` - current velocity of the gesture\n * - `numberActiveTouches` - Number of touches currently on screeen\n *\n * ### Basic Usage\n *\n * ```\n * componentWillMount: function() {\n * this._panGesture = PanResponder.create({\n * // Ask to be the responder:\n * onStartShouldSetPanResponder: (evt, gestureState) => true,\n * onStartShouldSetPanResponderCapture: (evt, gestureState) => true,\n * onMoveShouldSetPanResponder: (evt, gestureState) => true,\n * onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,\n *\n * onPanResponderGrant: (evt, gestureState) => {\n * // The guesture has started. Show visual feedback so the user knows\n * // what is happening!\n *\n * // gestureState.{x,y}0 will be set to zero now\n * },\n * onPanResponderMove: (evt, gestureState) => {\n * // The most recent move distance is gestureState.move{X,Y}\n *\n * // The accumulated gesture distance since becoming responder is\n * // gestureState.d{x,y}\n * },\n * onPanResponderTerminationRequest: (evt, gestureState) => true,\n * onPanResponderRelease: (evt, gestureState) => {\n * // The user has released all touches while this view is the\n * // responder. This typically means a gesture has succeeded\n * },\n * onPanResponderTerminate: (evt, gestureState) => {\n * // Another component has become the responder, so this gesture\n * // should be cancelled\n * },\n * onShouldBlockNativeResponder: (evt, gestureState) => {\n * // Returns whether this component should block native components from becoming the JS\n * // responder. Returns true by default. Is currently only supported on android.\n * return true;\n * },\n * });\n * },\n *\n * render: function() {\n * return (\n * <View {...this._panResponder.panHandlers} />\n * );\n * },\n *\n * ```\n *\n * ### Working Example\n *\n * To see it in action, try the\n * [PanResponder example in UIExplorer](https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/ResponderExample.js)\n */\n\nvar PanResponder = {\n\n /**\n *\n * A graphical explanation of the touch data flow:\n *\n * +----------------------------+ +--------------------------------+\n * | ResponderTouchHistoryStore | |TouchHistoryMath |\n * +----------------------------+ +----------+---------------------+\n * |Global store of touchHistory| |Allocation-less math util |\n * |including activeness, start | |on touch history (centroids |\n * |position, prev/cur position.| |and multitouch movement etc) |\n * | | | |\n * +----^-----------------------+ +----^---------------------------+\n * | |\n * | (records relevant history |\n * | of touches relevant for |\n * | implementing higher level |\n * | gestures) |\n * | |\n * +----+-----------------------+ +----|---------------------------+\n * | ResponderEventPlugin | | | Your App/Component |\n * +----------------------------+ +----|---------------------------+\n * |Negotiates which view gets | Low level | | High level |\n * |onResponderMove events. | events w/ | +-+-------+ events w/ |\n * |Also records history into | touchHistory| | Pan | multitouch + |\n * |ResponderTouchHistoryStore. +---------------->Responder+-----> accumulative|\n * +----------------------------+ attached to | | | distance and |\n * each event | +---------+ velocity. |\n * | |\n * | |\n * +--------------------------------+\n *\n *\n *\n * Gesture that calculates cumulative movement over time in a way that just\n * \"does the right thing\" for multiple touches. The \"right thing\" is very\n * nuanced. When moving two touches in opposite directions, the cumulative\n * distance is zero in each dimension. When two touches move in parallel five\n * pixels in the same direction, the cumulative distance is five, not ten. If\n * two touches start, one moves five in a direction, then stops and the other\n * touch moves fives in the same direction, the cumulative distance is ten.\n *\n * This logic requires a kind of processing of time \"clusters\" of touch events\n * so that two touch moves that essentially occur in parallel but move every\n * other frame respectively, are considered part of the same movement.\n *\n * Explanation of some of the non-obvious fields:\n *\n * - moveX/moveY: If no move event has been observed, then `(moveX, moveY)` is\n * invalid. If a move event has been observed, `(moveX, moveY)` is the\n * centroid of the most recently moved \"cluster\" of active touches.\n * (Currently all move have the same timeStamp, but later we should add some\n * threshold for what is considered to be \"moving\"). If a palm is\n * accidentally counted as a touch, but a finger is moving greatly, the palm\n * will move slightly, but we only want to count the single moving touch.\n * - x0/y0: Centroid location (non-cumulative) at the time of becoming\n * responder.\n * - dx/dy: Cumulative touch distance - not the same thing as sum of each touch\n * distance. Accounts for touch moves that are clustered together in time,\n * moving the same direction. Only valid when currently responder (otherwise,\n * it only represents the drag distance below the threshold).\n * - vx/vy: Velocity.\n */\n\n _initializeGestureState: function(gestureState) {\n gestureState.moveX = 0;\n gestureState.moveY = 0;\n gestureState.x0 = 0;\n gestureState.y0 = 0;\n gestureState.dx = 0;\n gestureState.dy = 0;\n gestureState.vx = 0;\n gestureState.vy = 0;\n gestureState.numberActiveTouches = 0;\n // All `gestureState` accounts for timeStamps up until:\n gestureState._accountsForMovesUpTo = 0;\n },\n\n /**\n * This is nuanced and is necessary. It is incorrect to continuously take all\n * active *and* recently moved touches, find the centroid, and track how that\n * result changes over time. Instead, we must take all recently moved\n * touches, and calculate how the centroid has changed just for those\n * recently moved touches, and append that change to an accumulator. This is\n * to (at least) handle the case where the user is moving three fingers, and\n * then one of the fingers stops but the other two continue.\n *\n * This is very different than taking all of the recently moved touches and\n * storing their centroid as `dx/dy`. For correctness, we must *accumulate\n * changes* in the centroid of recently moved touches.\n *\n * There is also some nuance with how we handle multiple moved touches in a\n * single event. With the way `ReactNativeEventEmitter` dispatches touches as\n * individual events, multiple touches generate two 'move' events, each of\n * them triggering `onResponderMove`. But with the way `PanResponder` works,\n * all of the gesture inference is performed on the first dispatch, since it\n * looks at all of the touches (even the ones for which there hasn't been a\n * native dispatch yet). Therefore, `PanResponder` does not call\n * `onResponderMove` passed the first dispatch. This diverges from the\n * typical responder callback pattern (without using `PanResponder`), but\n * avoids more dispatches than necessary.\n */\n _updateGestureStateOnMove: function(gestureState, touchHistory) {\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n gestureState.moveX = currentCentroidXOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo\n );\n gestureState.moveY = currentCentroidYOfTouchesChangedAfter(\n touchHistory,\n gestureState._accountsForMovesUpTo\n );\n var movedAfter = gestureState._accountsForMovesUpTo;\n var prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n var x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);\n var prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n var y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);\n var nextDX = gestureState.dx + (x - prevX);\n var nextDY = gestureState.dy + (y - prevY);\n\n // TODO: This must be filtered intelligently.\n var dt =\n (touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo);\n gestureState.vx = (nextDX - gestureState.dx) / dt;\n gestureState.vy = (nextDY - gestureState.dy) / dt;\n\n gestureState.dx = nextDX;\n gestureState.dy = nextDY;\n gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;\n },\n\n /**\n * @param {object} config Enhanced versions of all of the responder callbacks\n * that provide not only the typical `ResponderSyntheticEvent`, but also the\n * `PanResponder` gesture state. Simply replace the word `Responder` with\n * `PanResponder` in each of the typical `onResponder*` callbacks. For\n * example, the `config` object would look like:\n *\n * - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponder: (e, gestureState) => {...}`\n * - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`\n * - `onPanResponderReject: (e, gestureState) => {...}`\n * - `onPanResponderGrant: (e, gestureState) => {...}`\n * - `onPanResponderStart: (e, gestureState) => {...}`\n * - `onPanResponderEnd: (e, gestureState) => {...}`\n * - `onPanResponderRelease: (e, gestureState) => {...}`\n * - `onPanResponderMove: (e, gestureState) => {...}`\n * - `onPanResponderTerminate: (e, gestureState) => {...}`\n * - `onPanResponderTerminationRequest: (e, gestureState) => {...}`\n * - 'onShouldBlockNativeResponder: (e, gestureState) => {...}'\n *\n * In general, for events that have capture equivalents, we update the\n * gestureState once in the capture phase and can use it in the bubble phase\n * as well.\n *\n * Be careful with onStartShould* callbacks. They only reflect updated\n * `gestureState` for start/end events that bubble/capture to the Node.\n * Once the node is the responder, you can rely on every start/end event\n * being processed by the gesture and `gestureState` being updated\n * accordingly. (numberActiveTouches) may not be totally accurate unless you\n * are the responder.\n */\n create: function(config) {\n var gestureState = {\n // Useful for debugging\n stateID: Math.random(),\n };\n PanResponder._initializeGestureState(gestureState);\n var panHandlers = {\n onStartShouldSetResponder: function(e) {\n return config.onStartShouldSetPanResponder === undefined ? false :\n config.onStartShouldSetPanResponder(e, gestureState);\n },\n onMoveShouldSetResponder: function(e) {\n return config.onMoveShouldSetPanResponder === undefined ? false :\n config.onMoveShouldSetPanResponder(e, gestureState);\n },\n onStartShouldSetResponderCapture: function(e) {\n // TODO: Actually, we should reinitialize the state any time\n // touches.length increases from 0 active to > 0 active.\n if (e.nativeEvent.touches.length === 1) {\n PanResponder._initializeGestureState(gestureState);\n }\n gestureState.numberActiveTouches = e.touchHistory.numberActiveTouches;\n return config.onStartShouldSetPanResponderCapture !== undefined ?\n config.onStartShouldSetPanResponderCapture(e, gestureState) : false;\n },\n\n onMoveShouldSetResponderCapture: function(e) {\n var touchHistory = e.touchHistory;\n // Responder system incorrectly dispatches should* to current responder\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return false;\n }\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n return config.onMoveShouldSetResponderCapture ?\n config.onMoveShouldSetPanResponderCapture(e, gestureState) : false;\n },\n\n onResponderGrant: function(e) {\n gestureState.x0 = currentCentroidX(e.touchHistory);\n gestureState.y0 = currentCentroidY(e.touchHistory);\n gestureState.dx = 0;\n gestureState.dy = 0;\n config.onPanResponderGrant && config.onPanResponderGrant(e, gestureState);\n // TODO: t7467124 investigate if this can be removed\n return config.onShouldBlockNativeResponder === undefined ? true :\n config.onShouldBlockNativeResponder();\n },\n\n onResponderReject: function(e) {\n config.onPanResponderReject && config.onPanResponderReject(e, gestureState);\n },\n\n onResponderRelease: function(e) {\n config.onPanResponderRelease && config.onPanResponderRelease(e, gestureState);\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderStart: function(e) {\n var touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n config.onPanResponderStart && config.onPanResponderStart(e, gestureState);\n },\n\n onResponderMove: function(e) {\n var touchHistory = e.touchHistory;\n // Guard against the dispatch of two touch moves when there are two\n // simultaneously changed touches.\n if (gestureState._accountsForMovesUpTo === touchHistory.mostRecentTimeStamp) {\n return;\n }\n // Filter out any touch moves past the first one - we would have\n // already processed multi-touch geometry during the first event.\n PanResponder._updateGestureStateOnMove(gestureState, touchHistory);\n config.onPanResponderMove && config.onPanResponderMove(e, gestureState);\n },\n\n onResponderEnd: function(e) {\n var touchHistory = e.touchHistory;\n gestureState.numberActiveTouches = touchHistory.numberActiveTouches;\n config.onPanResponderEnd && config.onPanResponderEnd(e, gestureState);\n },\n\n onResponderTerminate: function(e) {\n config.onPanResponderTerminate &&\n config.onPanResponderTerminate(e, gestureState);\n PanResponder._initializeGestureState(gestureState);\n },\n\n onResponderTerminationRequest: function(e) {\n return config.onPanResponderTerminationRequest === undefined ? true :\n config.onPanResponderTerminationRequest(e, gestureState);\n },\n };\n return {panHandlers: panHandlers};\n },\n};\n\nmodule.exports = PanResponder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/PanResponder.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/TouchHistoryMath.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar TouchHistoryMath={\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncentroidDimension:function(touchHistory,touchesChangedAfter,isXAxis,ofCurrent){\nvar touchBank=touchHistory.touchBank;\nvar total=0;\nvar count=0;\n\nvar oneTouchData=touchHistory.numberActiveTouches === 1?\ntouchHistory.touchBank[touchHistory.indexOfSingleActiveTouch]:null;\n\nif(oneTouchData !== null){\nif(oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter){\ntotal += ofCurrent && isXAxis?oneTouchData.currentPageX:\nofCurrent && !isXAxis?oneTouchData.currentPageY:\n!ofCurrent && isXAxis?oneTouchData.previousPageX:\noneTouchData.previousPageY;\ncount = 1;}}else \n\n{\nfor(var i=0;i < touchBank.length;i++) {\nvar touchTrack=touchBank[i];\nif(touchTrack !== null && \ntouchTrack !== undefined && \ntouchTrack.touchActive && \ntouchTrack.currentTimeStamp >= touchesChangedAfter){\nvar toAdd;\nif(ofCurrent && isXAxis){\ntoAdd = touchTrack.currentPageX;}else \nif(ofCurrent && !isXAxis){\ntoAdd = touchTrack.currentPageY;}else \nif(!ofCurrent && isXAxis){\ntoAdd = touchTrack.previousPageX;}else \n{\ntoAdd = touchTrack.previousPageY;}\n\ntotal += toAdd;\ncount++;}}}\n\n\n\nreturn count > 0?total / count:TouchHistoryMath.noCentroid;},\n\n\ncurrentCentroidXOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\ntrue,\ntrue);},\n\n\n\ncurrentCentroidYOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\nfalse,\ntrue);},\n\n\n\npreviousCentroidXOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\ntrue,\nfalse);},\n\n\n\npreviousCentroidYOfTouchesChangedAfter:function(touchHistory,touchesChangedAfter){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\ntouchesChangedAfter,\nfalse,\nfalse);},\n\n\n\ncurrentCentroidX:function(touchHistory){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\n0,\ntrue,\ntrue);},\n\n\n\ncurrentCentroidY:function(touchHistory){\nreturn TouchHistoryMath.centroidDimension(\ntouchHistory,\n0,\nfalse,\ntrue);},\n\n\n\nnoCentroid:-1};\n\n\nmodule.exports = TouchHistoryMath;","sourceCode":"/**\n * @providesModule TouchHistoryMath\n */\n\n\"use strict\";\n\nvar TouchHistoryMath = {\n /**\n * This code is optimized and not intended to look beautiful. This allows\n * computing of touch centroids that have moved after `touchesChangedAfter`\n * timeStamp. You can compute the current centroid involving all touches\n * moves after `touchesChangedAfter`, or you can compute the previous\n * centroid of all touches that were moved after `touchesChangedAfter`.\n *\n * @param {TouchHistoryMath} touchHistory Standard Responder touch track\n * data.\n * @param {number} touchesChangedAfter timeStamp after which moved touches\n * are considered \"actively moving\" - not just \"active\".\n * @param {boolean} isXAxis Consider `x` dimension vs. `y` dimension.\n * @param {boolean} ofCurrent Compute current centroid for actively moving\n * touches vs. previous centroid of now actively moving touches.\n * @return {number} value of centroid in specified dimension.\n */\n centroidDimension: function(touchHistory, touchesChangedAfter, isXAxis, ofCurrent) {\n var touchBank = touchHistory.touchBank;\n var total = 0;\n var count = 0;\n\n var oneTouchData = touchHistory.numberActiveTouches === 1 ?\n touchHistory.touchBank[touchHistory.indexOfSingleActiveTouch] : null;\n\n if (oneTouchData !== null) {\n if (oneTouchData.touchActive && oneTouchData.currentTimeStamp > touchesChangedAfter) {\n total += ofCurrent && isXAxis ? oneTouchData.currentPageX :\n ofCurrent && !isXAxis ? oneTouchData.currentPageY :\n !ofCurrent && isXAxis ? oneTouchData.previousPageX :\n oneTouchData.previousPageY;\n count = 1;\n }\n } else {\n for (var i = 0; i < touchBank.length; i++) {\n var touchTrack = touchBank[i];\n if (touchTrack !== null &&\n touchTrack !== undefined &&\n touchTrack.touchActive &&\n touchTrack.currentTimeStamp >= touchesChangedAfter) {\n var toAdd; // Yuck, program temporarily in invalid state.\n if (ofCurrent && isXAxis) {\n toAdd = touchTrack.currentPageX;\n } else if (ofCurrent && !isXAxis) {\n toAdd = touchTrack.currentPageY;\n } else if (!ofCurrent && isXAxis) {\n toAdd = touchTrack.previousPageX;\n } else {\n toAdd = touchTrack.previousPageY;\n }\n total += toAdd;\n count++;\n }\n }\n }\n return count > 0 ? total / count : TouchHistoryMath.noCentroid;\n },\n\n currentCentroidXOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n true // ofCurrent\n );\n },\n\n currentCentroidYOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n true // ofCurrent\n );\n },\n\n previousCentroidXOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n true, // isXAxis\n false // ofCurrent\n );\n },\n\n previousCentroidYOfTouchesChangedAfter: function(touchHistory, touchesChangedAfter) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n touchesChangedAfter,\n false, // isXAxis\n false // ofCurrent\n );\n },\n\n currentCentroidX: function(touchHistory) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n true, // isXAxis\n true // ofCurrent\n );\n },\n\n currentCentroidY: function(touchHistory) {\n return TouchHistoryMath.centroidDimension(\n touchHistory,\n 0, // touchesChangedAfter\n false, // isXAxis\n true // ofCurrent\n );\n },\n\n noCentroid: -1,\n};\n\nmodule.exports = TouchHistoryMath;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/browser/eventPlugins/TouchHistoryMath.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/clamp.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclamp(min,value,max){\nif(value < min){\nreturn min;}\n\nif(value > max){\nreturn max;}\n\nreturn value;}\n\n\nmodule.exports = clamp;","sourceCode":"/**\n * @generated SignedSource<<ec51291ea6059cf23faa74f8644d17b1>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule clamp\n * @typechecks\n */\n\n /**\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @return {number}\n */\nfunction clamp(min, value, max) {\n if (value < min) {\n return min;\n }\n if (value > max) {\n return max;\n }\n return value;\n}\n\nmodule.exports = clamp;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react/core/clamp.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/rebound/rebound.js":{"data":{"code":"(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction(){\nvar rebound={};\nvar util=rebound.util = {};\nvar concat=Array.prototype.concat;\nvar slice=Array.prototype.slice;\n\n\nutil.bind = function bind(func,context){\nvar args=slice.call(arguments,2);\nreturn function(){\nfunc.apply(context,concat.call(args,slice.call(arguments)));};};\n\n\n\n\nutil.extend = function extend(target,source){\nfor(var key in source) {\nif(source.hasOwnProperty(key)){\ntarget[key] = source[key];}}};\n\n\n\n\n\n\n\n\n\nvar SpringSystem=rebound.SpringSystem = function SpringSystem(looper){\nthis._springRegistry = {};\nthis._activeSprings = [];\nthis.listeners = [];\nthis._idleSpringIndices = [];\nthis.looper = looper || new AnimationLooper();\nthis.looper.springSystem = this;};\n\n\nutil.extend(SpringSystem.prototype,{\n\n_springRegistry:null,\n\n_isIdle:true,\n\n_lastTimeMillis:-1,\n\n_activeSprings:null,\n\nlisteners:null,\n\n_idleSpringIndices:null,\n\n\n\n\n\n\nsetLooper:function(looper){\nthis.looper = looper;\nlooper.springSystem = this;},\n\n\n\n\n\n\ncreateSpring:function(tension,friction){\nvar springConfig;\nif(tension === undefined || friction === undefined){\nspringConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;}else \n{\nspringConfig = \nSpringConfig.fromOrigamiTensionAndFriction(tension,friction);}\n\nreturn this.createSpringWithConfig(springConfig);},\n\n\n\n\n\ncreateSpringWithBouncinessAndSpeed:function(bounciness,speed){\nvar springConfig;\nif(bounciness === undefined || speed === undefined){\nspringConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;}else \n{\nspringConfig = \nSpringConfig.fromBouncinessAndSpeed(bounciness,speed);}\n\nreturn this.createSpringWithConfig(springConfig);},\n\n\n\ncreateSpringWithConfig:function(springConfig){\nvar spring=new Spring(this);\nthis.registerSpring(spring);\nspring.setSpringConfig(springConfig);\nreturn spring;},\n\n\n\n\n\n\ngetIsIdle:function(){\nreturn this._isIdle;},\n\n\n\n\n\ngetSpringById:function(id){\nreturn this._springRegistry[id];},\n\n\n\n\ngetAllSprings:function(){\nvar vals=[];\nfor(var id in this._springRegistry) {\nif(this._springRegistry.hasOwnProperty(id)){\nvals.push(this._springRegistry[id]);}}\n\n\nreturn vals;},\n\n\n\n\n\n\nregisterSpring:function(spring){\nthis._springRegistry[spring.getId()] = spring;},\n\n\n\n\n\n\nderegisterSpring:function(spring){\nremoveFirst(this._activeSprings,spring);\ndelete this._springRegistry[spring.getId()];},\n\n\nadvance:function(time,deltaTime){\nwhile(this._idleSpringIndices.length > 0) this._idleSpringIndices.pop();\nfor(var i=0,len=this._activeSprings.length;i < len;i++) {\nvar spring=this._activeSprings[i];\nif(spring.systemShouldAdvance()){\nspring.advance(time / 1000.0,deltaTime / 1000.0);}else \n{\nthis._idleSpringIndices.push(this._activeSprings.indexOf(spring));}}\n\n\nwhile(this._idleSpringIndices.length > 0) {\nvar idx=this._idleSpringIndices.pop();\nidx >= 0 && this._activeSprings.splice(idx,1);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nloop:function(currentTimeMillis){\nvar listener;\nif(this._lastTimeMillis === -1){\nthis._lastTimeMillis = currentTimeMillis - 1;}\n\nvar ellapsedMillis=currentTimeMillis - this._lastTimeMillis;\nthis._lastTimeMillis = currentTimeMillis;\n\nvar i=0,len=this.listeners.length;\nfor(i = 0;i < len;i++) {\nlistener = this.listeners[i];\nlistener.onBeforeIntegrate && listener.onBeforeIntegrate(this);}\n\n\nthis.advance(currentTimeMillis,ellapsedMillis);\nif(this._activeSprings.length === 0){\nthis._isIdle = true;\nthis._lastTimeMillis = -1;}\n\n\nfor(i = 0;i < len;i++) {\nlistener = this.listeners[i];\nlistener.onAfterIntegrate && listener.onAfterIntegrate(this);}\n\n\nif(!this._isIdle){\nthis.looper.run();}},\n\n\n\n\n\n\nactivateSpring:function(springId){\nvar spring=this._springRegistry[springId];\nif(this._activeSprings.indexOf(spring) == -1){\nthis._activeSprings.push(spring);}\n\nif(this.getIsIdle()){\nthis._isIdle = false;\nthis.looper.run();}},\n\n\n\n\n\n\naddListener:function(listener){\nthis.listeners.push(listener);},\n\n\n\nremoveListener:function(listener){\nremoveFirst(this.listeners,listener);},\n\n\n\nremoveAllListeners:function(){\nthis.listeners = [];}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Spring=rebound.Spring = function Spring(springSystem){\nthis._id = 's' + Spring._ID++;\nthis._springSystem = springSystem;\nthis.listeners = [];\nthis._currentState = new PhysicsState();\nthis._previousState = new PhysicsState();\nthis._tempState = new PhysicsState();};\n\n\nutil.extend(Spring,{\n_ID:0,\n\nMAX_DELTA_TIME_SEC:0.064,\n\nSOLVER_TIMESTEP_SEC:0.001});\n\n\n\nutil.extend(Spring.prototype,{\n\n_id:0,\n\n_springConfig:null,\n\n_overshootClampingEnabled:false,\n\n_currentState:null,\n\n_previousState:null,\n\n_tempState:null,\n\n_startValue:0,\n\n_endValue:0,\n\n_wasAtRest:true,\n\n_restSpeedThreshold:0.001,\n\n_displacementFromRestThreshold:0.001,\n\nlisteners:null,\n\n_timeAccumulator:0,\n\n_springSystem:null,\n\n\ndestroy:function(){\nthis.listeners = [];\nthis.frames = [];\nthis._springSystem.deregisterSpring(this);},\n\n\n\n\ngetId:function(){\nreturn this._id;},\n\n\n\n\n\nsetSpringConfig:function(springConfig){\nthis._springConfig = springConfig;\nreturn this;},\n\n\n\ngetSpringConfig:function(){\nreturn this._springConfig;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsetCurrentValue:function(currentValue,skipSetAtRest){\nthis._startValue = currentValue;\nthis._currentState.position = currentValue;\nif(!skipSetAtRest){\nthis.setAtRest();}\n\nthis.notifyPositionUpdated(false,false);\nreturn this;},\n\n\n\n\n\ngetStartValue:function(){\nreturn this._startValue;},\n\n\n\ngetCurrentValue:function(){\nreturn this._currentState.position;},\n\n\n\n\ngetCurrentDisplacementDistance:function(){\nreturn this.getDisplacementDistanceForState(this._currentState);},\n\n\ngetDisplacementDistanceForState:function(state){\nreturn Math.abs(this._endValue - state.position);},\n\n\n\n\n\n\n\n\nsetEndValue:function(endValue){\nif(this._endValue == endValue && this.isAtRest()){\nreturn this;}\n\nthis._startValue = this.getCurrentValue();\nthis._endValue = endValue;\nthis._springSystem.activateSpring(this.getId());\nfor(var i=0,len=this.listeners.length;i < len;i++) {\nvar listener=this.listeners[i];\nvar onChange=listener.onSpringEndStateChange;\nonChange && onChange(this);}\n\nreturn this;},\n\n\n\ngetEndValue:function(){\nreturn this._endValue;},\n\n\n\n\n\n\n\n\n\nsetVelocity:function(velocity){\nif(velocity === this._currentState.velocity){\nreturn this;}\n\nthis._currentState.velocity = velocity;\nthis._springSystem.activateSpring(this.getId());\nreturn this;},\n\n\n\ngetVelocity:function(){\nreturn this._currentState.velocity;},\n\n\n\n\nsetRestSpeedThreshold:function(restSpeedThreshold){\nthis._restSpeedThreshold = restSpeedThreshold;\nreturn this;},\n\n\n\ngetRestSpeedThreshold:function(){\nreturn this._restSpeedThreshold;},\n\n\n\n\n\nsetRestDisplacementThreshold:function(displacementFromRestThreshold){\nthis._displacementFromRestThreshold = displacementFromRestThreshold;},\n\n\n\ngetRestDisplacementThreshold:function(){\nreturn this._displacementFromRestThreshold;},\n\n\n\n\n\n\n\nsetOvershootClampingEnabled:function(enabled){\nthis._overshootClampingEnabled = enabled;\nreturn this;},\n\n\n\nisOvershootClampingEnabled:function(){\nreturn this._overshootClampingEnabled;},\n\n\n\n\n\nisOvershooting:function(){\nvar start=this._startValue;\nvar end=this._endValue;\nreturn this._springConfig.tension > 0 && (\nstart < end && this.getCurrentValue() > end || \nstart > end && this.getCurrentValue() < end);},\n\n\n\n\n\n\n\nadvance:function(time,realDeltaTime){\nvar isAtRest=this.isAtRest();\n\nif(isAtRest && this._wasAtRest){\nreturn;}\n\n\nvar adjustedDeltaTime=realDeltaTime;\nif(realDeltaTime > Spring.MAX_DELTA_TIME_SEC){\nadjustedDeltaTime = Spring.MAX_DELTA_TIME_SEC;}\n\n\nthis._timeAccumulator += adjustedDeltaTime;\n\nvar tension=this._springConfig.tension,\nfriction=this._springConfig.friction,\n\nposition=this._currentState.position,\nvelocity=this._currentState.velocity,\ntempPosition=this._tempState.position,\ntempVelocity=this._tempState.velocity,\n\naVelocity,aAcceleration,\nbVelocity,bAcceleration,\ncVelocity,cAcceleration,\ndVelocity,dAcceleration,\n\ndxdt,dvdt;\n\nwhile(this._timeAccumulator >= Spring.SOLVER_TIMESTEP_SEC) {\n\nthis._timeAccumulator -= Spring.SOLVER_TIMESTEP_SEC;\n\nif(this._timeAccumulator < Spring.SOLVER_TIMESTEP_SEC){\nthis._previousState.position = position;\nthis._previousState.velocity = velocity;}\n\n\naVelocity = velocity;\naAcceleration = \ntension * (this._endValue - tempPosition) - friction * velocity;\n\ntempPosition = position + aVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ntempVelocity = \nvelocity + aAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\nbVelocity = tempVelocity;\nbAcceleration = \ntension * (this._endValue - tempPosition) - friction * tempVelocity;\n\ntempPosition = position + bVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ntempVelocity = \nvelocity + bAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ncVelocity = tempVelocity;\ncAcceleration = \ntension * (this._endValue - tempPosition) - friction * tempVelocity;\n\ntempPosition = position + cVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ntempVelocity = \nvelocity + cAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\ndVelocity = tempVelocity;\ndAcceleration = \ntension * (this._endValue - tempPosition) - friction * tempVelocity;\n\ndxdt = \n1.0 / 6.0 * (aVelocity + 2.0 * (bVelocity + cVelocity) + dVelocity);\ndvdt = 1.0 / 6.0 * (\naAcceleration + 2.0 * (bAcceleration + cAcceleration) + dAcceleration);\n\n\nposition += dxdt * Spring.SOLVER_TIMESTEP_SEC;\nvelocity += dvdt * Spring.SOLVER_TIMESTEP_SEC;}\n\n\nthis._tempState.position = tempPosition;\nthis._tempState.velocity = tempVelocity;\n\nthis._currentState.position = position;\nthis._currentState.velocity = velocity;\n\nif(this._timeAccumulator > 0){\nthis.interpolate(this._timeAccumulator / Spring.SOLVER_TIMESTEP_SEC);}\n\n\nif(this.isAtRest() || \nthis._overshootClampingEnabled && this.isOvershooting()){\n\nif(this._springConfig.tension > 0){\nthis._startValue = this._endValue;\nthis._currentState.position = this._endValue;}else \n{\nthis._endValue = this._currentState.position;\nthis._startValue = this._endValue;}\n\nthis.setVelocity(0);\nisAtRest = true;}\n\n\nvar notifyActivate=false;\nif(this._wasAtRest){\nthis._wasAtRest = false;\nnotifyActivate = true;}\n\n\nvar notifyAtRest=false;\nif(isAtRest){\nthis._wasAtRest = true;\nnotifyAtRest = true;}\n\n\nthis.notifyPositionUpdated(notifyActivate,notifyAtRest);},\n\n\nnotifyPositionUpdated:function(notifyActivate,notifyAtRest){\nfor(var i=0,len=this.listeners.length;i < len;i++) {\nvar listener=this.listeners[i];\nif(notifyActivate && listener.onSpringActivate){\nlistener.onSpringActivate(this);}\n\n\nif(listener.onSpringUpdate){\nlistener.onSpringUpdate(this);}\n\n\nif(notifyAtRest && listener.onSpringAtRest){\nlistener.onSpringAtRest(this);}}},\n\n\n\n\n\n\n\n\n\nsystemShouldAdvance:function(){\nreturn !this.isAtRest() || !this.wasAtRest();},\n\n\nwasAtRest:function(){\nreturn this._wasAtRest;},\n\n\n\n\n\n\n\n\nisAtRest:function(){\nreturn Math.abs(this._currentState.velocity) < this._restSpeedThreshold && (\nthis.getDisplacementDistanceForState(this._currentState) <= \nthis._displacementFromRestThreshold || \nthis._springConfig.tension === 0);},\n\n\n\n\n\n\nsetAtRest:function(){\nthis._endValue = this._currentState.position;\nthis._tempState.position = this._currentState.position;\nthis._currentState.velocity = 0;\nreturn this;},\n\n\ninterpolate:function(alpha){\nthis._currentState.position = this._currentState.position * \nalpha + this._previousState.position * (1 - alpha);\nthis._currentState.velocity = this._currentState.velocity * \nalpha + this._previousState.velocity * (1 - alpha);},\n\n\ngetListeners:function(){\nreturn this.listeners;},\n\n\naddListener:function(newListener){\nthis.listeners.push(newListener);\nreturn this;},\n\n\nremoveListener:function(listenerToRemove){\nremoveFirst(this.listeners,listenerToRemove);\nreturn this;},\n\n\nremoveAllListeners:function(){\nthis.listeners = [];\nreturn this;},\n\n\ncurrentValueIsApproximately:function(value){\nreturn Math.abs(this.getCurrentValue() - value) <= \nthis.getRestDisplacementThreshold();}});\n\n\n\n\n\n\n\n\n\nvar PhysicsState=function PhysicsState(){};\n\nutil.extend(PhysicsState.prototype,{\nposition:0,\nvelocity:0});\n\n\n\n\n\n\n\n\nvar SpringConfig=rebound.SpringConfig = \nfunction SpringConfig(tension,friction){\nthis.tension = tension;\nthis.friction = friction;};\n\n\n\n\n\n\n\nvar AnimationLooper=rebound.AnimationLooper = function AnimationLooper(){\nthis.springSystem = null;\nvar _this=this;\nvar _run=function(){\n_this.springSystem.loop(Date.now());};\n\n\nthis.run = function(){\nutil.onFrame(_run);};};\n\n\n\n\n\n\n\n\n\nrebound.SimulationLooper = function SimulationLooper(timestep){\nthis.springSystem = null;\nvar time=0;\nvar running=false;\ntimestep = timestep || 16.667;\n\nthis.run = function(){\nif(running){\nreturn;}\n\nrunning = true;\nwhile(!this.springSystem.getIsIdle()) {\nthis.springSystem.loop(time += timestep);}\n\nrunning = false;};};\n\n\n\n\n\n\n\n\nrebound.SteppingSimulationLooper = function(timestep){\nthis.springSystem = null;\nvar time=0;\n\n\n\nthis.run = function(){};\n\n\nthis.step = function(timestep){\nthis.springSystem.loop(time += timestep);};};\n\n\n\n\n\n\n\n\nvar OrigamiValueConverter=rebound.OrigamiValueConverter = {\ntensionFromOrigamiValue:function(oValue){\nreturn (oValue - 30.0) * 3.62 + 194.0;},\n\n\norigamiValueFromTension:function(tension){\nreturn (tension - 194.0) / 3.62 + 30.0;},\n\n\nfrictionFromOrigamiValue:function(oValue){\nreturn (oValue - 8.0) * 3.0 + 25.0;},\n\n\norigamiFromFriction:function(friction){\nreturn (friction - 25.0) / 3.0 + 8.0;}};\n\n\n\n\n\n\n\n\n\n\nvar BouncyConversion=rebound.BouncyConversion = function(bounciness,speed){\nthis.bounciness = bounciness;\nthis.speed = speed;\nvar b=this.normalize(bounciness / 1.7,0,20.0);\nb = this.projectNormal(b,0.0,0.8);\nvar s=this.normalize(speed / 1.7,0,20.0);\nthis.bouncyTension = this.projectNormal(s,0.5,200);\nthis.bouncyFriction = this.quadraticOutInterpolation(\nb,\nthis.b3Nobounce(this.bouncyTension),\n0.01);};\n\n\nutil.extend(BouncyConversion.prototype,{\n\nnormalize:function(value,startValue,endValue){\nreturn (value - startValue) / (endValue - startValue);},\n\n\nprojectNormal:function(n,start,end){\nreturn start + n * (end - start);},\n\n\nlinearInterpolation:function(t,start,end){\nreturn t * end + (1.0 - t) * start;},\n\n\nquadraticOutInterpolation:function(t,start,end){\nreturn this.linearInterpolation(2 * t - t * t,start,end);},\n\n\nb3Friction1:function(x){\nreturn 0.0007 * Math.pow(x,3) - \n0.031 * Math.pow(x,2) + 0.64 * x + 1.28;},\n\n\nb3Friction2:function(x){\nreturn 0.000044 * Math.pow(x,3) - \n0.006 * Math.pow(x,2) + 0.36 * x + 2.;},\n\n\nb3Friction3:function(x){\nreturn 0.00000045 * Math.pow(x,3) - \n0.000332 * Math.pow(x,2) + 0.1078 * x + 5.84;},\n\n\nb3Nobounce:function(tension){\nvar friction=0;\nif(tension <= 18){\nfriction = this.b3Friction1(tension);}else \nif(tension > 18 && tension <= 44){\nfriction = this.b3Friction2(tension);}else \n{\nfriction = this.b3Friction3(tension);}\n\nreturn friction;}});\n\n\n\nutil.extend(SpringConfig,{\n\n\n\n\nfromOrigamiTensionAndFriction:function(tension,friction){\nreturn new SpringConfig(\nOrigamiValueConverter.tensionFromOrigamiValue(tension),\nOrigamiValueConverter.frictionFromOrigamiValue(friction));},\n\n\n\n\n\nfromBouncinessAndSpeed:function(bounciness,speed){\nvar bouncyConversion=new rebound.BouncyConversion(bounciness,speed);\nreturn this.fromOrigamiTensionAndFriction(\nbouncyConversion.bouncyTension,\nbouncyConversion.bouncyFriction);},\n\n\n\n\ncoastingConfigWithOrigamiFriction:function(friction){\nreturn new SpringConfig(\n0,\nOrigamiValueConverter.frictionFromOrigamiValue(friction));}});\n\n\n\n\nSpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG = \nSpringConfig.fromOrigamiTensionAndFriction(40,7);\n\nutil.extend(SpringConfig.prototype,{friction:0,tension:0});\n\n\n\n\nvar colorCache={};\nutil.hexToRGB = function(color){\nif(colorCache[color]){\nreturn colorCache[color];}\n\ncolor = color.replace('#','');\nif(color.length === 3){\ncolor = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];}\n\nvar parts=color.match(/.{2}/g);\n\nvar ret={\nr:parseInt(parts[0],16),\ng:parseInt(parts[1],16),\nb:parseInt(parts[2],16)};\n\n\ncolorCache[color] = ret;\nreturn ret;};\n\n\nutil.rgbToHex = function(r,g,b){\nr = r.toString(16);\ng = g.toString(16);\nb = b.toString(16);\nr = r.length < 2?'0' + r:r;\ng = g.length < 2?'0' + g:g;\nb = b.length < 2?'0' + b:b;\nreturn '#' + r + g + b;};\n\n\nvar MathUtil=rebound.MathUtil = {\n\n\n\n\n\n\n\n\nmapValueInRange:function(value,fromLow,fromHigh,toLow,toHigh){\nvar fromRangeSize=fromHigh - fromLow;\nvar toRangeSize=toHigh - toLow;\nvar valueScale=(value - fromLow) / fromRangeSize;\nreturn toLow + valueScale * toRangeSize;},\n\n\n\n\n\ninterpolateColor:\nfunction(val,startColor,endColor,fromLow,fromHigh,asRGB){\nfromLow = fromLow === undefined?0:fromLow;\nfromHigh = fromHigh === undefined?1:fromHigh;\nstartColor = util.hexToRGB(startColor);\nendColor = util.hexToRGB(endColor);\nvar r=Math.floor(\nutil.mapValueInRange(val,fromLow,fromHigh,startColor.r,endColor.r));\n\nvar g=Math.floor(\nutil.mapValueInRange(val,fromLow,fromHigh,startColor.g,endColor.g));\n\nvar b=Math.floor(\nutil.mapValueInRange(val,fromLow,fromHigh,startColor.b,endColor.b));\n\nif(asRGB){\nreturn 'rgb(' + r + ',' + g + ',' + b + ')';}else \n{\nreturn util.rgbToHex(r,g,b);}},\n\n\n\ndegreesToRadians:function(deg){\nreturn deg * Math.PI / 180;},\n\n\nradiansToDegrees:function(rad){\nreturn rad * 180 / Math.PI;}};\n\n\n\n\nutil.extend(util,MathUtil);\n\n\n\n\n\n\n\nfunction removeFirst(array,item){\nvar idx=array.indexOf(item);\nidx != -1 && array.splice(idx,1);}\n\n\nvar _onFrame;\nif(typeof window !== 'undefined'){\n_onFrame = window.requestAnimationFrame || \nwindow.webkitRequestAnimationFrame || \nwindow.mozRequestAnimationFrame || \nwindow.msRequestAnimationFrame || \nwindow.oRequestAnimationFrame;}\n\nif(!_onFrame && typeof process !== 'undefined' && process.title === 'node'){\n_onFrame = setImmediate;}\n\n\n\nutil.onFrame = function onFrame(func){\nreturn _onFrame(func);};\n\n\n\n\nif(typeof exports != 'undefined'){\nutil.extend(exports,rebound);}else \nif(typeof window != 'undefined'){\nwindow.rebound = rebound;}})();","sourceCode":"// Rebound\n// =======\n// **Rebound** is a simple library that models Spring dynamics for the\n// purpose of driving physical animations.\n//\n// Origin\n// ------\n// [Rebound](http://facebook.github.io/rebound) was originally written\n// in Java to provide a lightweight physics system for\n// [Home](https://play.google.com/store/apps/details?id=com.facebook.home) and\n// [Chat Heads](https://play.google.com/store/apps/details?id=com.facebook.orca)\n// on Android. It's now been adopted by several other Android\n// applications. This JavaScript port was written to provide a quick\n// way to demonstrate Rebound animations on the web for a\n// [conference talk](https://www.youtube.com/watch?v=s5kNm-DgyjY). Since then\n// the JavaScript version has been used to build some really nice interfaces.\n// Check out [brandonwalkin.com](http://brandonwalkin.com) for an\n// example.\n//\n// Overview\n// --------\n// The Library provides a SpringSystem for maintaining a set of Spring\n// objects and iterating those Springs through a physics solver loop\n// until equilibrium is achieved. The Spring class is the basic\n// animation driver provided by Rebound. By attaching a listener to\n// a Spring, you can observe its motion. The observer function is\n// notified of position changes on the spring as it solves for\n// equilibrium. These position updates can be mapped to an animation\n// range to drive animated property updates on your user interface\n// elements (translation, rotation, scale, etc).\n//\n// Example\n// -------\n// Here's a simple example. Pressing and releasing on the logo below\n// will cause it to scale up and down with a springy animation.\n//\n// <div style=\"text-align:center; margin-bottom:50px; margin-top:50px\">\n// <img\n// src=\"http://facebook.github.io/rebound/images/rebound.png\"\n// id=\"logo\"\n// />\n// </div>\n// <script src=\"../rebound.min.js\"></script>\n// <script>\n//\n// function scale(el, val) {\n// el.style.mozTransform =\n// el.style.msTransform =\n// el.style.webkitTransform =\n// el.style.transform = 'scale3d(' + val + ', ' + val + ', 1)';\n// }\n// var el = document.getElementById('logo');\n//\n// var springSystem = new rebound.SpringSystem();\n// var spring = springSystem.createSpring(50, 3);\n// spring.addListener({\n// onSpringUpdate: function(spring) {\n// var val = spring.getCurrentValue();\n// val = rebound.MathUtil.mapValueInRange(val, 0, 1, 1, 0.5);\n// scale(el, val);\n// }\n// });\n//\n// el.addEventListener('mousedown', function() {\n// spring.setEndValue(1);\n// });\n//\n// el.addEventListener('mouseout', function() {\n// spring.setEndValue(0);\n// });\n//\n// el.addEventListener('mouseup', function() {\n// spring.setEndValue(0);\n// });\n//\n// </script>\n//\n// Here's how it works.\n//\n// ```\n// // Get a reference to the logo element.\n// var el = document.getElementById('logo');\n//\n// // create a SpringSystem and a Spring with a bouncy config.\n// var springSystem = new rebound.SpringSystem();\n// var spring = springSystem.createSpring(50, 3);\n//\n// // Add a listener to the spring. Every time the physics\n// // solver updates the Spring's value onSpringUpdate will\n// // be called.\n// spring.addListener({\n// onSpringUpdate: function(spring) {\n// var val = spring.getCurrentValue();\n// val = rebound.MathUtil\n// .mapValueInRange(val, 0, 1, 1, 0.5);\n// scale(el, val);\n// }\n// });\n//\n// // Listen for mouse down/up/out and toggle the\n// //springs endValue from 0 to 1.\n// el.addEventListener('mousedown', function() {\n// spring.setEndValue(1);\n// });\n//\n// el.addEventListener('mouseout', function() {\n// spring.setEndValue(0);\n// });\n//\n// el.addEventListener('mouseup', function() {\n// spring.setEndValue(0);\n// });\n//\n// // Helper for scaling an element with css transforms.\n// function scale(el, val) {\n// el.style.mozTransform =\n// el.style.msTransform =\n// el.style.webkitTransform =\n// el.style.transform = 'scale3d(' +\n// val + ', ' + val + ', 1)';\n// }\n// ```\n\n(function() {\n var rebound = {};\n var util = rebound.util = {};\n var concat = Array.prototype.concat;\n var slice = Array.prototype.slice;\n\n // Bind a function to a context object.\n util.bind = function bind(func, context) {\n var args = slice.call(arguments, 2);\n return function() {\n func.apply(context, concat.call(args, slice.call(arguments)));\n };\n };\n\n // Add all the properties in the source to the target.\n util.extend = function extend(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key];\n }\n }\n };\n\n // SpringSystem\n // ------------\n // **SpringSystem** is a set of Springs that all run on the same physics\n // timing loop. To get started with a Rebound animation you first\n // create a new SpringSystem and then add springs to it.\n var SpringSystem = rebound.SpringSystem = function SpringSystem(looper) {\n this._springRegistry = {};\n this._activeSprings = [];\n this.listeners = [];\n this._idleSpringIndices = [];\n this.looper = looper || new AnimationLooper();\n this.looper.springSystem = this;\n };\n\n util.extend(SpringSystem.prototype, {\n\n _springRegistry: null,\n\n _isIdle: true,\n\n _lastTimeMillis: -1,\n\n _activeSprings: null,\n\n listeners: null,\n\n _idleSpringIndices: null,\n\n // A SpringSystem is iterated by a looper. The looper is responsible\n // for executing each frame as the SpringSystem is resolved to idle.\n // There are three types of Loopers described below AnimationLooper,\n // SimulationLooper, and SteppingSimulationLooper. AnimationLooper is\n // the default as it is the most useful for common UI animations.\n setLooper: function(looper) {\n this.looper = looper;\n looper.springSystem = this;\n },\n\n // Add a new spring to this SpringSystem. This Spring will now be solved for\n // during the physics iteration loop. By default the spring will use the\n // default Origami spring config with 40 tension and 7 friction, but you can\n // also provide your own values here.\n createSpring: function(tension, friction) {\n var springConfig;\n if (tension === undefined || friction === undefined) {\n springConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;\n } else {\n springConfig =\n SpringConfig.fromOrigamiTensionAndFriction(tension, friction);\n }\n return this.createSpringWithConfig(springConfig);\n },\n\n // Add a spring with a specified bounciness and speed. To replicate Origami\n // compositions based on PopAnimation patches, use this factory method to\n // create matching springs.\n createSpringWithBouncinessAndSpeed: function(bounciness, speed) {\n var springConfig;\n if (bounciness === undefined || speed === undefined) {\n springConfig = SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG;\n } else {\n springConfig =\n SpringConfig.fromBouncinessAndSpeed(bounciness, speed);\n }\n return this.createSpringWithConfig(springConfig);\n },\n\n // Add a spring with the provided SpringConfig.\n createSpringWithConfig: function(springConfig) {\n var spring = new Spring(this);\n this.registerSpring(spring);\n spring.setSpringConfig(springConfig);\n return spring;\n },\n\n // You can check if a SpringSystem is idle or active by calling\n // getIsIdle. If all of the Springs in the SpringSystem are at rest,\n // i.e. the physics forces have reached equilibrium, then this\n // method will return true.\n getIsIdle: function() {\n return this._isIdle;\n },\n\n // Retrieve a specific Spring from the SpringSystem by id. This\n // can be useful for inspecting the state of a spring before\n // or after an integration loop in the SpringSystem executes.\n getSpringById: function (id) {\n return this._springRegistry[id];\n },\n\n // Get a listing of all the springs registered with this\n // SpringSystem.\n getAllSprings: function() {\n var vals = [];\n for (var id in this._springRegistry) {\n if (this._springRegistry.hasOwnProperty(id)) {\n vals.push(this._springRegistry[id]);\n }\n }\n return vals;\n },\n\n // registerSpring is called automatically as soon as you create\n // a Spring with SpringSystem#createSpring. This method sets the\n // spring up in the registry so that it can be solved in the\n // solver loop.\n registerSpring: function(spring) {\n this._springRegistry[spring.getId()] = spring;\n },\n\n // Deregister a spring with this SpringSystem. The SpringSystem will\n // no longer consider this Spring during its integration loop once\n // this is called. This is normally done automatically for you when\n // you call Spring#destroy.\n deregisterSpring: function(spring) {\n removeFirst(this._activeSprings, spring);\n delete this._springRegistry[spring.getId()];\n },\n\n advance: function(time, deltaTime) {\n while(this._idleSpringIndices.length > 0) this._idleSpringIndices.pop();\n for (var i = 0, len = this._activeSprings.length; i < len; i++) {\n var spring = this._activeSprings[i];\n if (spring.systemShouldAdvance()) {\n spring.advance(time / 1000.0, deltaTime / 1000.0);\n } else {\n this._idleSpringIndices.push(this._activeSprings.indexOf(spring));\n }\n }\n while(this._idleSpringIndices.length > 0) {\n var idx = this._idleSpringIndices.pop();\n idx >= 0 && this._activeSprings.splice(idx, 1);\n }\n },\n\n // This is our main solver loop called to move the simulation\n // forward through time. Before each pass in the solver loop\n // onBeforeIntegrate is called on an any listeners that have\n // registered themeselves with the SpringSystem. This gives you\n // an opportunity to apply any constraints or adjustments to\n // the springs that should be enforced before each iteration\n // loop. Next the advance method is called to move each Spring in\n // the systemShouldAdvance forward to the current time. After the\n // integration step runs in advance, onAfterIntegrate is called\n // on any listeners that have registered themselves with the\n // SpringSystem. This gives you an opportunity to run any post\n // integration constraints or adjustments on the Springs in the\n // SpringSystem.\n loop: function(currentTimeMillis) {\n var listener;\n if (this._lastTimeMillis === -1) {\n this._lastTimeMillis = currentTimeMillis -1;\n }\n var ellapsedMillis = currentTimeMillis - this._lastTimeMillis;\n this._lastTimeMillis = currentTimeMillis;\n\n var i = 0, len = this.listeners.length;\n for (i = 0; i < len; i++) {\n listener = this.listeners[i];\n listener.onBeforeIntegrate && listener.onBeforeIntegrate(this);\n }\n\n this.advance(currentTimeMillis, ellapsedMillis);\n if (this._activeSprings.length === 0) {\n this._isIdle = true;\n this._lastTimeMillis = -1;\n }\n\n for (i = 0; i < len; i++) {\n listener = this.listeners[i];\n listener.onAfterIntegrate && listener.onAfterIntegrate(this);\n }\n\n if (!this._isIdle) {\n this.looper.run();\n }\n },\n\n // activateSpring is used to notify the SpringSystem that a Spring\n // has become displaced. The system responds by starting its solver\n // loop up if it is currently idle.\n activateSpring: function(springId) {\n var spring = this._springRegistry[springId];\n if (this._activeSprings.indexOf(spring) == -1) {\n this._activeSprings.push(spring);\n }\n if (this.getIsIdle()) {\n this._isIdle = false;\n this.looper.run();\n }\n },\n\n // Add a listener to the SpringSystem so that you can receive\n // before/after integration notifications allowing Springs to be\n // constrained or adjusted.\n addListener: function(listener) {\n this.listeners.push(listener);\n },\n\n // Remove a previously added listener on the SpringSystem.\n removeListener: function(listener) {\n removeFirst(this.listeners, listener);\n },\n\n // Remove all previously added listeners on the SpringSystem.\n removeAllListeners: function() {\n this.listeners = [];\n }\n\n });\n\n // Spring\n // ------\n // **Spring** provides a model of a classical spring acting to\n // resolve a body to equilibrium. Springs have configurable\n // tension which is a force multipler on the displacement of the\n // spring from its rest point or `endValue` as defined by [Hooke's\n // law](http://en.wikipedia.org/wiki/Hooke's_law). Springs also have\n // configurable friction, which ensures that they do not oscillate\n // infinitely. When a Spring is displaced by updating it's resting\n // or `currentValue`, the SpringSystems that contain that Spring\n // will automatically start looping to solve for equilibrium. As each\n // timestep passes, `SpringListener` objects attached to the Spring\n // will be notified of the updates providing a way to drive an\n // animation off of the spring's resolution curve.\n var Spring = rebound.Spring = function Spring(springSystem) {\n this._id = 's' + Spring._ID++;\n this._springSystem = springSystem;\n this.listeners = [];\n this._currentState = new PhysicsState();\n this._previousState = new PhysicsState();\n this._tempState = new PhysicsState();\n };\n\n util.extend(Spring, {\n _ID: 0,\n\n MAX_DELTA_TIME_SEC: 0.064,\n\n SOLVER_TIMESTEP_SEC: 0.001\n\n });\n\n util.extend(Spring.prototype, {\n\n _id: 0,\n\n _springConfig: null,\n\n _overshootClampingEnabled: false,\n\n _currentState: null,\n\n _previousState: null,\n\n _tempState: null,\n\n _startValue: 0,\n\n _endValue: 0,\n\n _wasAtRest: true,\n\n _restSpeedThreshold: 0.001,\n\n _displacementFromRestThreshold: 0.001,\n\n listeners: null,\n\n _timeAccumulator: 0,\n\n _springSystem: null,\n\n // Remove a Spring from simulation and clear its listeners.\n destroy: function() {\n this.listeners = [];\n this.frames = [];\n this._springSystem.deregisterSpring(this);\n },\n\n // Get the id of the spring, which can be used to retrieve it from\n // the SpringSystems it participates in later.\n getId: function() {\n return this._id;\n },\n\n // Set the configuration values for this Spring. A SpringConfig\n // contains the tension and friction values used to solve for the\n // equilibrium of the Spring in the physics loop.\n setSpringConfig: function(springConfig) {\n this._springConfig = springConfig;\n return this;\n },\n\n // Retrieve the SpringConfig used by this Spring.\n getSpringConfig: function() {\n return this._springConfig;\n },\n\n // Set the current position of this Spring. Listeners will be updated\n // with this value immediately. If the rest or `endValue` is not\n // updated to match this value, then the spring will be dispalced and\n // the SpringSystem will start to loop to restore the spring to the\n // `endValue`.\n //\n // A common pattern is to move a Spring around without animation by\n // calling.\n //\n // ```\n // spring.setCurrentValue(n).setAtRest();\n // ```\n //\n // This moves the Spring to a new position `n`, sets the endValue\n // to `n`, and removes any velocity from the `Spring`. By doing\n // this you can allow the `SpringListener` to manage the position\n // of UI elements attached to the spring even when moving without\n // animation. For example, when dragging an element you can\n // update the position of an attached view through a spring\n // by calling `spring.setCurrentValue(x)`. When\n // the gesture ends you can update the Springs\n // velocity and endValue\n // `spring.setVelocity(gestureEndVelocity).setEndValue(flingTarget)`\n // to cause it to naturally animate the UI element to the resting\n // position taking into account existing velocity. The codepaths for\n // synchronous movement and spring driven animation can\n // be unified using this technique.\n setCurrentValue: function(currentValue, skipSetAtRest) {\n this._startValue = currentValue;\n this._currentState.position = currentValue;\n if (!skipSetAtRest) {\n this.setAtRest();\n }\n this.notifyPositionUpdated(false, false);\n return this;\n },\n\n // Get the position that the most recent animation started at. This\n // can be useful for determining the number off oscillations that\n // have occurred.\n getStartValue: function() {\n return this._startValue;\n },\n\n // Retrieve the current value of the Spring.\n getCurrentValue: function() {\n return this._currentState.position;\n },\n\n // Get the absolute distance of the Spring from it's resting endValue\n // position.\n getCurrentDisplacementDistance: function() {\n return this.getDisplacementDistanceForState(this._currentState);\n },\n\n getDisplacementDistanceForState: function(state) {\n return Math.abs(this._endValue - state.position);\n },\n\n // Set the endValue or resting position of the spring. If this\n // value is different than the current value, the SpringSystem will\n // be notified and will begin running its solver loop to resolve\n // the Spring to equilibrium. Any listeners that are registered\n // for onSpringEndStateChange will also be notified of this update\n // immediately.\n setEndValue: function(endValue) {\n if (this._endValue == endValue && this.isAtRest()) {\n return this;\n }\n this._startValue = this.getCurrentValue();\n this._endValue = endValue;\n this._springSystem.activateSpring(this.getId());\n for (var i = 0, len = this.listeners.length; i < len; i++) {\n var listener = this.listeners[i];\n var onChange = listener.onSpringEndStateChange;\n onChange && onChange(this);\n }\n return this;\n },\n\n // Retrieve the endValue or resting position of this spring.\n getEndValue: function() {\n return this._endValue;\n },\n\n // Set the current velocity of the Spring. As previously mentioned,\n // this can be useful when you are performing a direct manipulation\n // gesture. When a UI element is released you may call setVelocity\n // on its animation Spring so that the Spring continues with the\n // same velocity as the gesture ended with. The friction, tension,\n // and displacement of the Spring will then govern its motion to\n // return to rest on a natural feeling curve.\n setVelocity: function(velocity) {\n if (velocity === this._currentState.velocity) {\n return this;\n }\n this._currentState.velocity = velocity;\n this._springSystem.activateSpring(this.getId());\n return this;\n },\n\n // Get the current velocity of the Spring.\n getVelocity: function() {\n return this._currentState.velocity;\n },\n\n // Set a threshold value for the movement speed of the Spring below\n // which it will be considered to be not moving or resting.\n setRestSpeedThreshold: function(restSpeedThreshold) {\n this._restSpeedThreshold = restSpeedThreshold;\n return this;\n },\n\n // Retrieve the rest speed threshold for this Spring.\n getRestSpeedThreshold: function() {\n return this._restSpeedThreshold;\n },\n\n // Set a threshold value for displacement below which the Spring\n // will be considered to be not displaced i.e. at its resting\n // `endValue`.\n setRestDisplacementThreshold: function(displacementFromRestThreshold) {\n this._displacementFromRestThreshold = displacementFromRestThreshold;\n },\n\n // Retrieve the rest displacement threshold for this spring.\n getRestDisplacementThreshold: function() {\n return this._displacementFromRestThreshold;\n },\n\n // Enable overshoot clamping. This means that the Spring will stop\n // immediately when it reaches its resting position regardless of\n // any existing momentum it may have. This can be useful for certain\n // types of animations that should not oscillate such as a scale\n // down to 0 or alpha fade.\n setOvershootClampingEnabled: function(enabled) {\n this._overshootClampingEnabled = enabled;\n return this;\n },\n\n // Check if overshoot clamping is enabled for this spring.\n isOvershootClampingEnabled: function() {\n return this._overshootClampingEnabled;\n },\n\n // Check if the Spring has gone past its end point by comparing\n // the direction it was moving in when it started to the current\n // position and end value.\n isOvershooting: function() {\n var start = this._startValue;\n var end = this._endValue;\n return this._springConfig.tension > 0 &&\n ((start < end && this.getCurrentValue() > end) ||\n (start > end && this.getCurrentValue() < end));\n },\n\n // Spring.advance is the main solver method for the Spring. It takes\n // the current time and delta since the last time step and performs\n // an RK4 integration to get the new position and velocity state\n // for the Spring based on the tension, friction, velocity, and\n // displacement of the Spring.\n advance: function(time, realDeltaTime) {\n var isAtRest = this.isAtRest();\n\n if (isAtRest && this._wasAtRest) {\n return;\n }\n\n var adjustedDeltaTime = realDeltaTime;\n if (realDeltaTime > Spring.MAX_DELTA_TIME_SEC) {\n adjustedDeltaTime = Spring.MAX_DELTA_TIME_SEC;\n }\n\n this._timeAccumulator += adjustedDeltaTime;\n\n var tension = this._springConfig.tension,\n friction = this._springConfig.friction,\n\n position = this._currentState.position,\n velocity = this._currentState.velocity,\n tempPosition = this._tempState.position,\n tempVelocity = this._tempState.velocity,\n\n aVelocity, aAcceleration,\n bVelocity, bAcceleration,\n cVelocity, cAcceleration,\n dVelocity, dAcceleration,\n\n dxdt, dvdt;\n\n while(this._timeAccumulator >= Spring.SOLVER_TIMESTEP_SEC) {\n\n this._timeAccumulator -= Spring.SOLVER_TIMESTEP_SEC;\n\n if (this._timeAccumulator < Spring.SOLVER_TIMESTEP_SEC) {\n this._previousState.position = position;\n this._previousState.velocity = velocity;\n }\n\n aVelocity = velocity;\n aAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * velocity;\n\n tempPosition = position + aVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + aAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n bVelocity = tempVelocity;\n bAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n tempPosition = position + bVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + bAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n cVelocity = tempVelocity;\n cAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n tempPosition = position + cVelocity * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n tempVelocity =\n velocity + cAcceleration * Spring.SOLVER_TIMESTEP_SEC * 0.5;\n dVelocity = tempVelocity;\n dAcceleration =\n (tension * (this._endValue - tempPosition)) - friction * tempVelocity;\n\n dxdt =\n 1.0/6.0 * (aVelocity + 2.0 * (bVelocity + cVelocity) + dVelocity);\n dvdt = 1.0/6.0 * (\n aAcceleration + 2.0 * (bAcceleration + cAcceleration) + dAcceleration\n );\n\n position += dxdt * Spring.SOLVER_TIMESTEP_SEC;\n velocity += dvdt * Spring.SOLVER_TIMESTEP_SEC;\n }\n\n this._tempState.position = tempPosition;\n this._tempState.velocity = tempVelocity;\n\n this._currentState.position = position;\n this._currentState.velocity = velocity;\n\n if (this._timeAccumulator > 0) {\n this.interpolate(this._timeAccumulator / Spring.SOLVER_TIMESTEP_SEC);\n }\n\n if (this.isAtRest() ||\n this._overshootClampingEnabled && this.isOvershooting()) {\n\n if (this._springConfig.tension > 0) {\n this._startValue = this._endValue;\n this._currentState.position = this._endValue;\n } else {\n this._endValue = this._currentState.position;\n this._startValue = this._endValue;\n }\n this.setVelocity(0);\n isAtRest = true;\n }\n\n var notifyActivate = false;\n if (this._wasAtRest) {\n this._wasAtRest = false;\n notifyActivate = true;\n }\n\n var notifyAtRest = false;\n if (isAtRest) {\n this._wasAtRest = true;\n notifyAtRest = true;\n }\n\n this.notifyPositionUpdated(notifyActivate, notifyAtRest);\n },\n\n notifyPositionUpdated: function(notifyActivate, notifyAtRest) {\n for (var i = 0, len = this.listeners.length; i < len; i++) {\n var listener = this.listeners[i];\n if (notifyActivate && listener.onSpringActivate) {\n listener.onSpringActivate(this);\n }\n\n if (listener.onSpringUpdate) {\n listener.onSpringUpdate(this);\n }\n\n if (notifyAtRest && listener.onSpringAtRest) {\n listener.onSpringAtRest(this);\n }\n }\n },\n\n\n // Check if the SpringSystem should advance. Springs are advanced\n // a final frame after they reach equilibrium to ensure that the\n // currentValue is exactly the requested endValue regardless of the\n // displacement threshold.\n systemShouldAdvance: function() {\n return !this.isAtRest() || !this.wasAtRest();\n },\n\n wasAtRest: function() {\n return this._wasAtRest;\n },\n\n // Check if the Spring is atRest meaning that it's currentValue and\n // endValue are the same and that it has no velocity. The previously\n // described thresholds for speed and displacement define the bounds\n // of this equivalence check. If the Spring has 0 tension, then it will\n // be considered at rest whenever its absolute velocity drops below the\n // restSpeedThreshold.\n isAtRest: function() {\n return Math.abs(this._currentState.velocity) < this._restSpeedThreshold &&\n (this.getDisplacementDistanceForState(this._currentState) <=\n this._displacementFromRestThreshold ||\n this._springConfig.tension === 0);\n },\n\n // Force the spring to be at rest at its current position. As\n // described in the documentation for setCurrentValue, this method\n // makes it easy to do synchronous non-animated updates to ui\n // elements that are attached to springs via SpringListeners.\n setAtRest: function() {\n this._endValue = this._currentState.position;\n this._tempState.position = this._currentState.position;\n this._currentState.velocity = 0;\n return this;\n },\n\n interpolate: function(alpha) {\n this._currentState.position = this._currentState.position *\n alpha + this._previousState.position * (1 - alpha);\n this._currentState.velocity = this._currentState.velocity *\n alpha + this._previousState.velocity * (1 - alpha);\n },\n\n getListeners: function() {\n return this.listeners;\n },\n\n addListener: function(newListener) {\n this.listeners.push(newListener);\n return this;\n },\n\n removeListener: function(listenerToRemove) {\n removeFirst(this.listeners, listenerToRemove);\n return this;\n },\n\n removeAllListeners: function() {\n this.listeners = [];\n return this;\n },\n\n currentValueIsApproximately: function(value) {\n return Math.abs(this.getCurrentValue() - value) <=\n this.getRestDisplacementThreshold();\n }\n\n });\n\n // PhysicsState\n // ------------\n // **PhysicsState** consists of a position and velocity. A Spring uses\n // this internally to keep track of its current and prior position and\n // velocity values.\n var PhysicsState = function PhysicsState() {};\n\n util.extend(PhysicsState.prototype, {\n position: 0,\n velocity: 0\n });\n\n // SpringConfig\n // ------------\n // **SpringConfig** maintains a set of tension and friction constants\n // for a Spring. You can use fromOrigamiTensionAndFriction to convert\n // values from the [Origami](http://facebook.github.io/origami/)\n // design tool directly to Rebound spring constants.\n var SpringConfig = rebound.SpringConfig =\n function SpringConfig(tension, friction) {\n this.tension = tension;\n this.friction = friction;\n };\n\n // Loopers\n // -------\n // **AnimationLooper** plays each frame of the SpringSystem on animation\n // timing loop. This is the default type of looper for a new spring system\n // as it is the most common when developing UI.\n var AnimationLooper = rebound.AnimationLooper = function AnimationLooper() {\n this.springSystem = null;\n var _this = this;\n var _run = function() {\n _this.springSystem.loop(Date.now());\n };\n\n this.run = function() {\n util.onFrame(_run);\n };\n };\n\n // **SimulationLooper** resolves the SpringSystem to a resting state in a\n // tight and blocking loop. This is useful for synchronously generating\n // pre-recorded animations that can then be played on a timing loop later.\n // Sometimes this lead to better performance to pre-record a single spring\n // curve and use it to drive many animations; however, it can make dynamic\n // response to user input a bit trickier to implement.\n rebound.SimulationLooper = function SimulationLooper(timestep) {\n this.springSystem = null;\n var time = 0;\n var running = false;\n timestep=timestep || 16.667;\n\n this.run = function() {\n if (running) {\n return;\n }\n running = true;\n while(!this.springSystem.getIsIdle()) {\n this.springSystem.loop(time+=timestep);\n }\n running = false;\n };\n };\n\n // **SteppingSimulationLooper** resolves the SpringSystem one step at a\n // time controlled by an outside loop. This is useful for testing and\n // verifying the behavior of a SpringSystem or if you want to control your own\n // timing loop for some reason e.g. slowing down or speeding up the\n // simulation.\n rebound.SteppingSimulationLooper = function(timestep) {\n this.springSystem = null;\n var time = 0;\n\n // this.run is NOOP'd here to allow control from the outside using\n // this.step.\n this.run = function(){};\n\n // Perform one step toward resolving the SpringSystem.\n this.step = function(timestep) {\n this.springSystem.loop(time+=timestep);\n };\n };\n\n // Math for converting from\n // [Origami](http://facebook.github.io/origami/) to\n // [Rebound](http://facebook.github.io/rebound).\n // You mostly don't need to worry about this, just use\n // SpringConfig.fromOrigamiTensionAndFriction(v, v);\n var OrigamiValueConverter = rebound.OrigamiValueConverter = {\n tensionFromOrigamiValue: function(oValue) {\n return (oValue - 30.0) * 3.62 + 194.0;\n },\n\n origamiValueFromTension: function(tension) {\n return (tension - 194.0) / 3.62 + 30.0;\n },\n\n frictionFromOrigamiValue: function(oValue) {\n return (oValue - 8.0) * 3.0 + 25.0;\n },\n\n origamiFromFriction: function(friction) {\n return (friction - 25.0) / 3.0 + 8.0;\n }\n };\n\n // BouncyConversion provides math for converting from Origami PopAnimation\n // config values to regular Origami tension and friction values. If you are\n // trying to replicate prototypes made with PopAnimation patches in Origami,\n // then you should create your springs with\n // SpringSystem.createSpringWithBouncinessAndSpeed, which uses this Math\n // internally to create a spring to match the provided PopAnimation\n // configuration from Origami.\n var BouncyConversion = rebound.BouncyConversion = function(bounciness, speed){\n this.bounciness = bounciness;\n this.speed = speed;\n var b = this.normalize(bounciness / 1.7, 0, 20.0);\n b = this.projectNormal(b, 0.0, 0.8);\n var s = this.normalize(speed / 1.7, 0, 20.0);\n this.bouncyTension = this.projectNormal(s, 0.5, 200)\n this.bouncyFriction = this.quadraticOutInterpolation(\n b,\n this.b3Nobounce(this.bouncyTension),\n 0.01);\n }\n\n util.extend(BouncyConversion.prototype, {\n\n normalize: function(value, startValue, endValue) {\n return (value - startValue) / (endValue - startValue);\n },\n\n projectNormal: function(n, start, end) {\n return start + (n * (end - start));\n },\n\n linearInterpolation: function(t, start, end) {\n return t * end + (1.0 - t) * start;\n },\n\n quadraticOutInterpolation: function(t, start, end) {\n return this.linearInterpolation(2*t - t*t, start, end);\n },\n\n b3Friction1: function(x) {\n return (0.0007 * Math.pow(x, 3)) -\n (0.031 * Math.pow(x, 2)) + 0.64 * x + 1.28;\n },\n\n b3Friction2: function(x) {\n return (0.000044 * Math.pow(x, 3)) -\n (0.006 * Math.pow(x, 2)) + 0.36 * x + 2.;\n },\n\n b3Friction3: function(x) {\n return (0.00000045 * Math.pow(x, 3)) -\n (0.000332 * Math.pow(x, 2)) + 0.1078 * x + 5.84;\n },\n\n b3Nobounce: function(tension) {\n var friction = 0;\n if (tension <= 18) {\n friction = this.b3Friction1(tension);\n } else if (tension > 18 && tension <= 44) {\n friction = this.b3Friction2(tension);\n } else {\n friction = this.b3Friction3(tension);\n }\n return friction;\n }\n });\n\n util.extend(SpringConfig, {\n // Convert an origami Spring tension and friction to Rebound spring\n // constants. If you are prototyping a design with Origami, this\n // makes it easy to make your springs behave exactly the same in\n // Rebound.\n fromOrigamiTensionAndFriction: function(tension, friction) {\n return new SpringConfig(\n OrigamiValueConverter.tensionFromOrigamiValue(tension),\n OrigamiValueConverter.frictionFromOrigamiValue(friction));\n },\n\n // Convert an origami PopAnimation Spring bounciness and speed to Rebound\n // spring constants. If you are using PopAnimation patches in Origami, this\n // utility will provide springs that match your prototype.\n fromBouncinessAndSpeed: function(bounciness, speed) {\n var bouncyConversion = new rebound.BouncyConversion(bounciness, speed);\n return this.fromOrigamiTensionAndFriction(\n bouncyConversion.bouncyTension,\n bouncyConversion.bouncyFriction);\n },\n\n // Create a SpringConfig with no tension or a coasting spring with some\n // amount of Friction so that it does not coast infininitely.\n coastingConfigWithOrigamiFriction: function(friction) {\n return new SpringConfig(\n 0,\n OrigamiValueConverter.frictionFromOrigamiValue(friction)\n );\n }\n });\n\n SpringConfig.DEFAULT_ORIGAMI_SPRING_CONFIG =\n SpringConfig.fromOrigamiTensionAndFriction(40, 7);\n\n util.extend(SpringConfig.prototype, {friction: 0, tension: 0});\n\n // Here are a couple of function to convert colors between hex codes and RGB\n // component values. These are handy when performing color\n // tweening animations.\n var colorCache = {};\n util.hexToRGB = function(color) {\n if (colorCache[color]) {\n return colorCache[color];\n }\n color = color.replace('#', '');\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n var parts = color.match(/.{2}/g);\n\n var ret = {\n r: parseInt(parts[0], 16),\n g: parseInt(parts[1], 16),\n b: parseInt(parts[2], 16)\n };\n\n colorCache[color] = ret;\n return ret;\n };\n\n util.rgbToHex = function(r, g, b) {\n r = r.toString(16);\n g = g.toString(16);\n b = b.toString(16);\n r = r.length < 2 ? '0' + r : r;\n g = g.length < 2 ? '0' + g : g;\n b = b.length < 2 ? '0' + b : b;\n return '#' + r + g + b;\n };\n\n var MathUtil = rebound.MathUtil = {\n // This helper function does a linear interpolation of a value from\n // one range to another. This can be very useful for converting the\n // motion of a Spring to a range of UI property values. For example a\n // spring moving from position 0 to 1 could be interpolated to move a\n // view from pixel 300 to 350 and scale it from 0.5 to 1. The current\n // position of the `Spring` just needs to be run through this method\n // taking its input range in the _from_ parameters with the property\n // animation range in the _to_ parameters.\n mapValueInRange: function(value, fromLow, fromHigh, toLow, toHigh) {\n var fromRangeSize = fromHigh - fromLow;\n var toRangeSize = toHigh - toLow;\n var valueScale = (value - fromLow) / fromRangeSize;\n return toLow + (valueScale * toRangeSize);\n },\n\n // Interpolate two hex colors in a 0 - 1 range or optionally provide a\n // custom range with fromLow,fromHight. The output will be in hex by default\n // unless asRGB is true in which case it will be returned as an rgb string.\n interpolateColor:\n function(val, startColor, endColor, fromLow, fromHigh, asRGB) {\n fromLow = fromLow === undefined ? 0 : fromLow;\n fromHigh = fromHigh === undefined ? 1 : fromHigh;\n startColor = util.hexToRGB(startColor);\n endColor = util.hexToRGB(endColor);\n var r = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.r, endColor.r)\n );\n var g = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.g, endColor.g)\n );\n var b = Math.floor(\n util.mapValueInRange(val, fromLow, fromHigh, startColor.b, endColor.b)\n );\n if (asRGB) {\n return 'rgb(' + r + ',' + g + ',' + b + ')';\n } else {\n return util.rgbToHex(r, g, b);\n }\n },\n\n degreesToRadians: function(deg) {\n return (deg * Math.PI) / 180;\n },\n\n radiansToDegrees: function(rad) {\n return (rad * 180) / Math.PI;\n }\n\n }\n\n util.extend(util, MathUtil);\n\n\n // Utilities\n // ---------\n // Here are a few useful JavaScript utilities.\n\n // Lop off the first occurence of the reference in the Array.\n function removeFirst(array, item) {\n var idx = array.indexOf(item);\n idx != -1 && array.splice(idx, 1);\n }\n\n var _onFrame;\n if (typeof window !== 'undefined') {\n _onFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n window.oRequestAnimationFrame;\n }\n if (!_onFrame && typeof process !== 'undefined' && process.title === 'node') {\n _onFrame = setImmediate;\n }\n\n // Cross browser/node timer functions.\n util.onFrame = function onFrame(func) {\n return _onFrame(func);\n };\n\n // Export the public api using exports for common js or the window for\n // normal browser inclusion.\n if (typeof exports != 'undefined') {\n util.extend(exports, rebound);\n } else if (typeof window != 'undefined') {\n window.rebound = rebound;\n }\n})();\n\n\n// Legal Stuff\n// -----------\n/**\n * Copyright (c) 2013, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/rebound/rebound.js"},"mtime":1426054614000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\nvar Image=require('Image');\nvar NavigationContext=require('NavigationContext');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTNavigatorManager=require('NativeModules').NavigatorManager;\nvar StyleSheet=require('StyleSheet');\nvar StaticContainer=require('StaticContainer.react');\nvar View=require('View');\n\nvar createReactNativeComponentClass=\nrequire('createReactNativeComponentClass');\nvar invariant=require('invariant');\nvar logError=require('logError');\nvar merge=require('merge');\n\nvar TRANSITIONER_REF='transitionerRef';\n\nvar PropTypes=React.PropTypes;\n\nvar __uid=0;\nfunction getuid(){\nreturn __uid++;}\n\n\nvar RCTNavigator=createReactNativeComponentClass({\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nrequestedTopOfStack:true}),\n\nuiViewClassName:'RCTNavigator'});\n\n\nvar RCTNavigatorItem=createReactNativeComponentClass({\nvalidAttributes:{\n\n\ntitle:true,\nbarTintColor:true,\nleftButtonIcon:true,\nleftButtonTitle:true,\nonNavLeftButtonTap:true,\nrightButtonIcon:true,\nrightButtonTitle:true,\nonNavRightButtonTap:true,\nbackButtonIcon:true,\nbackButtonTitle:true,\ntintColor:true,\ntranslucent:true,\nnavigationBarHidden:true,\ntitleTextColor:true,\nstyle:true},\n\nuiViewClassName:'RCTNavItem'});\n\n\nvar NavigatorTransitionerIOS=React.createClass({displayName:'NavigatorTransitionerIOS',\nrequestSchedulingNavigation:function(cb){\nRCTNavigatorManager.requestSchedulingJavaScriptNavigation(\nReact.findNodeHandle(this),\nlogError,\ncb);},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTNavigator,this.props));}});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NavigatorIOS=React.createClass({displayName:'NavigatorIOS',\n\npropTypes:{\n\n\n\n\n\n\ninitialRoute:PropTypes.shape({\n\n\n\ncomponent:PropTypes.func.isRequired,\n\n\n\n\ntitle:PropTypes.string.isRequired,\n\n\n\n\n\npassProps:PropTypes.object,\n\n\n\n\n\n\nbackButtonIcon:Image.propTypes.source,\n\n\n\n\n\n\nbackButtonTitle:PropTypes.string,\n\n\n\n\nleftButtonIcon:Image.propTypes.source,\n\n\n\n\nleftButtonTitle:PropTypes.string,\n\n\n\n\nonLeftButtonPress:PropTypes.func,\n\n\n\n\nrightButtonIcon:Image.propTypes.source,\n\n\n\n\nrightButtonTitle:PropTypes.string,\n\n\n\n\nonRightButtonPress:PropTypes.func,\n\n\n\n\nwrapperStyle:View.propTypes.style}).\n\nisRequired,\n\n\n\n\nnavigationBarHidden:PropTypes.bool,\n\n\n\n\n\nitemWrapperStyle:View.propTypes.style,\n\n\n\n\ntintColor:PropTypes.string,\n\n\n\n\nbarTintColor:PropTypes.string,\n\n\n\n\ntitleTextColor:PropTypes.string,\n\n\n\n\ntranslucent:PropTypes.bool},\n\n\n\nnavigator:undefined,\nnavigationContext:new NavigationContext(),\n\ncomponentWillMount:function(){\n\n\nthis.navigator = {\npush:this.push,\npop:this.pop,\npopN:this.popN,\nreplace:this.replace,\nreplacePrevious:this.replacePrevious,\nreplacePreviousAndPop:this.replacePreviousAndPop,\nresetTo:this.resetTo,\npopToRoute:this.popToRoute,\npopToTop:this.popToTop,\nnavigationContext:this.navigationContext};\n\nthis._emitWillFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentDidMount:function(){\nthis._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);},\n\n\ncomponentWillUnmount:function(){\nthis.navigationContext.dispose();\nthis.navigationContext = new NavigationContext();},\n\n\ngetInitialState:function(){\nreturn {\nidStack:[getuid()],\nrouteStack:[this.props.initialRoute],\n\nrequestedTopOfStack:0,\n\n\n\n\n\n\nobservedTopOfStack:0,\nprogress:1,\nfromIndex:0,\ntoIndex:0,\n\n\nmakingNavigatorRequest:false,\n\n\n\nupdatingAllIndicesAtOrBeyond:0};},\n\n\n\n_toFocusOnNavigationComplete:undefined,\n\n_handleFocusRequest:function(item){\nif(this.state.makingNavigatorRequest){\nthis._toFocusOnNavigationComplete = item;}else \n{\nthis._getFocusEmitter().emit('focus',item);}},\n\n\n\n_focusEmitter:undefined,\n\n_getFocusEmitter:function(){\n\nvar focusEmitter=this._focusEmitter;\nif(!focusEmitter){\nfocusEmitter = new EventEmitter();\nthis._focusEmitter = focusEmitter;}\n\nreturn focusEmitter;},\n\n\ngetChildContext:function()\n\n\n{\nreturn {\nonFocusRequested:this._handleFocusRequest,\nfocusEmitter:this._getFocusEmitter()};},\n\n\n\nchildContextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_tryLockNavigator:function(cb){\nthis.refs[TRANSITIONER_REF].requestSchedulingNavigation(\nfunction(acquiredLock){return acquiredLock && cb();});},\n\n\n\n_handleNavigatorStackChanged:function(e){\nvar newObservedTopOfStack=e.nativeEvent.stackLength - 1;\nthis._emitDidFocus(this.state.routeStack[newObservedTopOfStack]);\n\ninvariant(\nnewObservedTopOfStack <= this.state.requestedTopOfStack,\n'No navigator item should be pushed without JS knowing about it %s %s',newObservedTopOfStack,this.state.requestedTopOfStack);\n\nvar wasWaitingForConfirmation=\nthis.state.requestedTopOfStack !== this.state.observedTopOfStack;\nif(wasWaitingForConfirmation){\ninvariant(\nnewObservedTopOfStack === this.state.requestedTopOfStack,\n'If waiting for observedTopOfStack to reach requestedTopOfStack, ' + \n'the only valid observedTopOfStack should be requestedTopOfStack.');}\n\n\n\n\n\n\n\n\n\n\n\nvar nextState={\nobservedTopOfStack:newObservedTopOfStack,\nmakingNavigatorRequest:false,\nupdatingAllIndicesAtOrBeyond:null,\nprogress:1,\ntoIndex:newObservedTopOfStack,\nfromIndex:newObservedTopOfStack};\n\nthis.setState(nextState,this._eliminateUnneededChildren);},\n\n\n_eliminateUnneededChildren:function(){\n\n\n\nvar updatingAllIndicesAtOrBeyond=\nthis.state.routeStack.length > this.state.observedTopOfStack + 1?\nthis.state.observedTopOfStack + 1:\nnull;\nthis.setState({\nidStack:this.state.idStack.slice(0,this.state.observedTopOfStack + 1),\nrouteStack:this.state.routeStack.slice(0,this.state.observedTopOfStack + 1),\n\nrequestedTopOfStack:this.state.observedTopOfStack,\nmakingNavigatorRequest:true,\nupdatingAllIndicesAtOrBeyond:updatingAllIndicesAtOrBeyond});},\n\n\n\n_emitDidFocus:function(route){\nthis.navigationContext.emit('didfocus',{route:route});},\n\n\n_emitWillFocus:function(route){\nthis.navigationContext.emit('willfocus',{route:route});},\n\n\npush:function(route){var _this=this;\ninvariant(!!route,'Must supply route to push');\n\nif(this.state.requestedTopOfStack === this.state.observedTopOfStack){\nthis._tryLockNavigator(function(){\n_this._emitWillFocus(route);\n\nvar nextStack=_this.state.routeStack.concat([route]);\nvar nextIDStack=_this.state.idStack.concat([getuid()]);\n_this.setState({\n\n\nidStack:nextIDStack,\nrouteStack:nextStack,\nrequestedTopOfStack:nextStack.length - 1,\nmakingNavigatorRequest:true,\nupdatingAllIndicesAtOrBeyond:nextStack.length - 1});});}},\n\n\n\n\n\npopN:function(n){var _this2=this;\nif(n === 0){\nreturn;}\n\n\nif(this.state.requestedTopOfStack === this.state.observedTopOfStack){\nif(this.state.requestedTopOfStack > 0){\nthis._tryLockNavigator(function(){\nvar newRequestedTopOfStack=_this2.state.requestedTopOfStack - n;\ninvariant(newRequestedTopOfStack >= 0,'Cannot pop below 0');\n_this2._emitWillFocus(_this2.state.routeStack[newRequestedTopOfStack]);\n_this2.setState({\nrequestedTopOfStack:newRequestedTopOfStack,\nmakingNavigatorRequest:true,\n\n\nupdatingAllIndicesAtOrBeyond:null});});}}},\n\n\n\n\n\n\npop:function(){\nthis.popN(1);},\n\n\n\n\n\n\n\n\nreplaceAtIndex:function(route,index){\ninvariant(!!route,'Must supply route to replace');\nif(index < 0){\nindex += this.state.routeStack.length;}\n\n\nif(this.state.routeStack.length <= index){\nreturn;}\n\n\n\n\nvar nextIDStack=this.state.idStack.slice();\nvar nextRouteStack=this.state.routeStack.slice();\nnextIDStack[index] = getuid();\nnextRouteStack[index] = route;\n\nthis.setState({\nidStack:nextIDStack,\nrouteStack:nextRouteStack,\nmakingNavigatorRequest:false,\nupdatingAllIndicesAtOrBeyond:index});\n\n\nthis._emitWillFocus(route);\nthis._emitDidFocus(route);},\n\n\n\n\n\nreplace:function(route){\nthis.replaceAtIndex(route,-1);},\n\n\n\n\n\nreplacePrevious:function(route){\nthis.replaceAtIndex(route,-2);},\n\n\npopToTop:function(){\nthis.popToRoute(this.state.routeStack[0]);},\n\n\npopToRoute:function(route){\nvar indexOfRoute=this.state.routeStack.indexOf(route);\ninvariant(\nindexOfRoute !== -1,\n'Calling pop to route for a route that doesn\\'t exist!');\n\nvar numToPop=this.state.routeStack.length - indexOfRoute - 1;\nthis.popN(numToPop);},\n\n\nreplacePreviousAndPop:function(route){var _this3=this;\n\nif(this.state.requestedTopOfStack !== this.state.observedTopOfStack){\nreturn;}\n\nif(this.state.routeStack.length < 2){\nreturn;}\n\nthis._tryLockNavigator(function(){\n_this3.replacePrevious(route);\n_this3.setState({\nrequestedTopOfStack:_this3.state.requestedTopOfStack - 1,\nmakingNavigatorRequest:true});});},\n\n\n\n\nresetTo:function(route){\ninvariant(!!route,'Must supply route to push');\n\nif(this.state.requestedTopOfStack !== this.state.observedTopOfStack){\nreturn;}\n\nthis.replaceAtIndex(route,0);\nthis.popToRoute(route);},\n\n\nhandleNavigationComplete:function(e){\nif(this._toFocusOnNavigationComplete){\nthis._getFocusEmitter().emit('focus',this._toFocusOnNavigationComplete);\nthis._toFocusOnNavigationComplete = null;}\n\nthis._handleNavigatorStackChanged(e);},\n\n\n_routeToStackItem:function(route,i){\nvar Component=route.component;\nvar shouldUpdateChild=this.state.updatingAllIndicesAtOrBeyond !== null && \nthis.state.updatingAllIndicesAtOrBeyond >= i;\n\nreturn (\nReact.createElement(StaticContainer,{key:'nav' + i,shouldUpdate:shouldUpdateChild},\nReact.createElement(RCTNavigatorItem,{\ntitle:route.title,\nstyle:[\nstyles.stackItem,\nthis.props.itemWrapperStyle,\nroute.wrapperStyle],\n\nbackButtonIcon:this._imageNameFromSource(route.backButtonIcon),\nbackButtonTitle:route.backButtonTitle,\nleftButtonIcon:this._imageNameFromSource(route.leftButtonIcon),\nleftButtonTitle:route.leftButtonTitle,\nonNavLeftButtonTap:route.onLeftButtonPress,\nrightButtonIcon:this._imageNameFromSource(route.rightButtonIcon),\nrightButtonTitle:route.rightButtonTitle,\nonNavRightButtonTap:route.onRightButtonPress,\nnavigationBarHidden:this.props.navigationBarHidden,\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor,\ntranslucent:this.props.translucent !== false,\ntitleTextColor:this.props.titleTextColor},\nReact.createElement(Component,_extends({\nnavigator:this.navigator,\nroute:route},\nroute.passProps)))));},\n\n\n\n\n\n\n_imageNameFromSource:function(source){\nreturn source?source.uri:undefined;},\n\n\nrenderNavigationStackItems:function(){\nvar shouldRecurseToNavigator=\nthis.state.makingNavigatorRequest || \nthis.state.updatingAllIndicesAtOrBeyond !== null;\n\n\nvar items=shouldRecurseToNavigator?\nthis.state.routeStack.map(this._routeToStackItem):null;\nreturn (\nReact.createElement(StaticContainer,{shouldUpdate:shouldRecurseToNavigator},\nReact.createElement(NavigatorTransitionerIOS,{\nref:TRANSITIONER_REF,\nstyle:styles.transitioner,\nvertical:this.props.vertical,\nrequestedTopOfStack:this.state.requestedTopOfStack,\nonNavigationComplete:this.handleNavigationComplete},\nitems)));},\n\n\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:this.props.style},\nthis.renderNavigationStackItems()));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nstackItem:{\nbackgroundColor:'white',\noverflow:'hidden',\nposition:'absolute',\ntop:0,\nleft:0,\nright:0,\nbottom:0},\n\ntransitioner:{\nflex:1}});\n\n\n\nmodule.exports = NavigatorIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NavigatorIOS\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\nvar Image = require('Image');\nvar NavigationContext = require('NavigationContext');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTNavigatorManager = require('NativeModules').NavigatorManager;\nvar StyleSheet = require('StyleSheet');\nvar StaticContainer = require('StaticContainer.react');\nvar View = require('View');\n\nvar createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nvar invariant = require('invariant');\nvar logError = require('logError');\nvar merge = require('merge');\n\nvar TRANSITIONER_REF = 'transitionerRef';\n\nvar PropTypes = React.PropTypes;\n\nvar __uid = 0;\nfunction getuid() {\n return __uid++;\n}\n\nvar RCTNavigator = createReactNativeComponentClass({\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n requestedTopOfStack: true\n }),\n uiViewClassName: 'RCTNavigator',\n});\n\nvar RCTNavigatorItem = createReactNativeComponentClass({\n validAttributes: {\n // TODO: Remove or fix the attributes that are not fully functional.\n // NavigatorIOS does not use them all, because some are problematic\n title: true,\n barTintColor: true,\n leftButtonIcon: true,\n leftButtonTitle: true,\n onNavLeftButtonTap: true,\n rightButtonIcon: true,\n rightButtonTitle: true,\n onNavRightButtonTap: true,\n backButtonIcon: true,\n backButtonTitle: true,\n tintColor: true,\n translucent: true,\n navigationBarHidden: true,\n titleTextColor: true,\n style: true,\n },\n uiViewClassName: 'RCTNavItem',\n});\n\nvar NavigatorTransitionerIOS = React.createClass({\n requestSchedulingNavigation: function(cb) {\n RCTNavigatorManager.requestSchedulingJavaScriptNavigation(\n React.findNodeHandle(this),\n logError,\n cb\n );\n },\n\n render: function() {\n return (\n <RCTNavigator {...this.props}/>\n );\n },\n});\n\ntype Route = {\n component: Function;\n title: string;\n passProps?: Object;\n backButtonTitle?: string;\n backButtonIcon?: Object;\n leftButtonTitle?: string;\n leftButtonIcon?: Object;\n onLeftButtonPress?: Function;\n rightButtonTitle?: string;\n rightButtonIcon?: Object;\n onRightButtonPress?: Function;\n wrapperStyle?: any;\n};\n\ntype State = {\n idStack: Array<number>;\n routeStack: Array<Route>;\n requestedTopOfStack: number;\n observedTopOfStack: number;\n progress: number;\n fromIndex: number;\n toIndex: number;\n makingNavigatorRequest: boolean;\n updatingAllIndicesAtOrBeyond: number;\n}\n\ntype Event = Object;\n\n/**\n * Think of `<NavigatorIOS>` as simply a component that renders an\n * `RCTNavigator`, and moves the `RCTNavigator`'s `requestedTopOfStack` pointer\n * forward and backward. The `RCTNavigator` interprets changes in\n * `requestedTopOfStack` to be pushes and pops of children that are rendered.\n * `<NavigatorIOS>` always ensures that whenever the `requestedTopOfStack`\n * pointer is moved, that we've also rendered enough children so that the\n * `RCTNavigator` can carry out the push/pop with those children.\n * `<NavigatorIOS>` also removes children that will no longer be needed\n * (after the pop of a child has been fully completed/animated out).\n */\n\n/**\n * NavigatorIOS wraps UIKit navigation and allows you to add back-swipe\n * functionality across your app.\n *\n * #### Routes\n * A route is an object used to describe each page in the navigator. The first\n * route is provided to NavigatorIOS as `initialRoute`:\n *\n * ```\n * render: function() {\n * return (\n * <NavigatorIOS\n * initialRoute={{\n * component: MyView,\n * title: 'My View Title',\n * passProps: { myProp: 'foo' },\n * }}\n * />\n * );\n * },\n * ```\n *\n * Now MyView will be rendered by the navigator. It will recieve the route\n * object in the `route` prop, a navigator, and all of the props specified in\n * `passProps`.\n *\n * See the initialRoute propType for a complete definition of a route.\n *\n * #### Navigator\n *\n * A `navigator` is an object of navigation functions that a view can call. It\n * is passed as a prop to any component rendered by NavigatorIOS.\n *\n * ```\n * var MyView = React.createClass({\n * _handleBackButtonPress: function() {\n * this.props.navigator.pop();\n * },\n * _handleNextButtonPress: function() {\n * this.props.navigator.push(nextRoute);\n * },\n * ...\n * });\n * ```\n *\n * A navigation object contains the following functions:\n *\n * - `push(route)` - Navigate forward to a new route\n * - `pop()` - Go back one page\n * - `popN(n)` - Go back N pages at once. When N=1, behavior matches `pop()`\n * - `replace(route)` - Replace the route for the current page and immediately\n * load the view for the new route\n * - `replacePrevious(route)` - Replace the route/view for the previous page\n * - `replacePreviousAndPop(route)` - Replaces the previous route/view and\n * transitions back to it\n * - `resetTo(route)` - Replaces the top item and popToTop\n * - `popToRoute(route)` - Go back to the item for a particular route object\n * - `popToTop()` - Go back to the top item\n *\n * Navigator functions are also available on the NavigatorIOS component:\n *\n * ```\n * var MyView = React.createClass({\n * _handleNavigationRequest: function() {\n * this.refs.nav.push(otherRoute);\n * },\n * render: () => (\n * <NavigatorIOS\n * ref=\"nav\"\n * initialRoute={...}\n * />\n * ),\n * });\n * ```\n *\n */\nvar NavigatorIOS = React.createClass({\n\n propTypes: {\n\n /**\n * NavigatorIOS uses \"route\" objects to identify child views, their props,\n * and navigation bar configuration. \"push\" and all the other navigation\n * operations expect routes to be like this:\n */\n initialRoute: PropTypes.shape({\n /**\n * The React Class to render for this route\n */\n component: PropTypes.func.isRequired,\n\n /**\n * The title displayed in the nav bar and back button for this route\n */\n title: PropTypes.string.isRequired,\n\n /**\n * Specify additional props passed to the component. NavigatorIOS will\n * automatically provide \"route\" and \"navigator\" components\n */\n passProps: PropTypes.object,\n\n /**\n * If set, the left header button image will appear with this source. Note\n * that this doesn't apply for the header of the current view, but the\n * ones of the views that are pushed afterward.\n */\n backButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the left header button will appear with this name. Note that\n * this doesn't apply for the header of the current view, but the ones\n * of the views that are pushed afterward.\n */\n backButtonTitle: PropTypes.string,\n\n /**\n * If set, the left header button image will appear with this source\n */\n leftButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the left header button will appear with this name\n */\n leftButtonTitle: PropTypes.string,\n\n /**\n * Called when the left header button is pressed\n */\n onLeftButtonPress: PropTypes.func,\n\n /**\n * If set, the right header button image will appear with this source\n */\n rightButtonIcon: Image.propTypes.source,\n\n /**\n * If set, the right header button will appear with this name\n */\n rightButtonTitle: PropTypes.string,\n\n /**\n * Called when the right header button is pressed\n */\n onRightButtonPress: PropTypes.func,\n\n /**\n * Styles for the navigation item containing the component\n */\n wrapperStyle: View.propTypes.style,\n\n }).isRequired,\n\n /**\n * A Boolean value that indicates whether the navigation bar is hidden\n */\n navigationBarHidden: PropTypes.bool,\n\n /**\n * The default wrapper style for components in the navigator.\n * A common use case is to set the backgroundColor for every page\n */\n itemWrapperStyle: View.propTypes.style,\n\n /**\n * The color used for buttons in the navigation bar\n */\n tintColor: PropTypes.string,\n\n /**\n * The background color of the navigation bar\n */\n barTintColor: PropTypes.string,\n\n /**\n * The text color of the navigation bar title\n */\n titleTextColor: PropTypes.string,\n\n /**\n * A Boolean value that indicates whether the navigation bar is translucent\n */\n translucent: PropTypes.bool,\n\n },\n\n navigator: (undefined: ?Object),\n navigationContext: new NavigationContext(),\n\n componentWillMount: function() {\n // Precompute a pack of callbacks that's frequently generated and passed to\n // instances.\n this.navigator = {\n push: this.push,\n pop: this.pop,\n popN: this.popN,\n replace: this.replace,\n replacePrevious: this.replacePrevious,\n replacePreviousAndPop: this.replacePreviousAndPop,\n resetTo: this.resetTo,\n popToRoute: this.popToRoute,\n popToTop: this.popToTop,\n navigationContext: this.navigationContext,\n };\n this._emitWillFocus(this.state.routeStack[this.state.observedTopOfStack]);\n },\n\n componentDidMount: function() {\n this._emitDidFocus(this.state.routeStack[this.state.observedTopOfStack]);\n },\n\n componentWillUnmount: function() {\n this.navigationContext.dispose();\n this.navigationContext = new NavigationContext();\n },\n\n getInitialState: function(): State {\n return {\n idStack: [getuid()],\n routeStack: [this.props.initialRoute],\n // The navigation index that we wish to push/pop to.\n requestedTopOfStack: 0,\n // The last index that native has sent confirmation of completed push/pop\n // for. At this point, we can discard any views that are beyond the\n // `requestedTopOfStack`. A value of `null` means we have not received\n // any confirmation, ever. We may receive an `observedTopOfStack` without\n // ever requesting it - native can instigate pops of its own with the\n // backswipe gesture.\n observedTopOfStack: 0,\n progress: 1,\n fromIndex: 0,\n toIndex: 0,\n // Whether or not we are making a navigator request to push/pop. (Used\n // for performance optimization).\n makingNavigatorRequest: false,\n // Whether or not we are updating children of navigator and if so (not\n // `null`) which index marks the beginning of all updates. Used for\n // performance optimization.\n updatingAllIndicesAtOrBeyond: 0,\n };\n },\n\n _toFocusOnNavigationComplete: (undefined: any),\n\n _handleFocusRequest: function(item: any) {\n if (this.state.makingNavigatorRequest) {\n this._toFocusOnNavigationComplete = item;\n } else {\n this._getFocusEmitter().emit('focus', item);\n }\n },\n\n _focusEmitter: (undefined: ?EventEmitter),\n\n _getFocusEmitter: function(): EventEmitter {\n // Flow not yet tracking assignments to instance fields.\n var focusEmitter = this._focusEmitter;\n if (!focusEmitter) {\n focusEmitter = new EventEmitter();\n this._focusEmitter = focusEmitter;\n }\n return focusEmitter;\n },\n\n getChildContext: function(): {\n onFocusRequested: Function;\n focusEmitter: EventEmitter;\n } {\n return {\n onFocusRequested: this._handleFocusRequest,\n focusEmitter: this._getFocusEmitter(),\n };\n },\n\n childContextTypes: {\n onFocusRequested: React.PropTypes.func,\n focusEmitter: React.PropTypes.instanceOf(EventEmitter),\n },\n\n _tryLockNavigator: function(cb: () => void) {\n this.refs[TRANSITIONER_REF].requestSchedulingNavigation(\n (acquiredLock) => acquiredLock && cb()\n );\n },\n\n _handleNavigatorStackChanged: function(e: Event) {\n var newObservedTopOfStack = e.nativeEvent.stackLength - 1;\n this._emitDidFocus(this.state.routeStack[newObservedTopOfStack]);\n\n invariant(\n newObservedTopOfStack <= this.state.requestedTopOfStack,\n 'No navigator item should be pushed without JS knowing about it %s %s', newObservedTopOfStack, this.state.requestedTopOfStack\n );\n var wasWaitingForConfirmation =\n this.state.requestedTopOfStack !== this.state.observedTopOfStack;\n if (wasWaitingForConfirmation) {\n invariant(\n newObservedTopOfStack === this.state.requestedTopOfStack,\n 'If waiting for observedTopOfStack to reach requestedTopOfStack, ' +\n 'the only valid observedTopOfStack should be requestedTopOfStack.'\n );\n }\n // Mark the most recent observation regardless of if we can lock the\n // navigator. `observedTopOfStack` merely represents what we've observed\n // and this first `setState` is only executed to update debugging\n // overlays/navigation bar.\n // Also reset progress, toIndex, and fromIndex as they might not end\n // in the correct states for a two possible reasons:\n // Progress isn't always 0 or 1 at the end, the system rounds\n // If the Navigator is offscreen these values won't be updated\n // TOOD: Revisit this decision when no longer relying on native navigator.\n var nextState = {\n observedTopOfStack: newObservedTopOfStack,\n makingNavigatorRequest: false,\n updatingAllIndicesAtOrBeyond: null,\n progress: 1,\n toIndex: newObservedTopOfStack,\n fromIndex: newObservedTopOfStack,\n };\n this.setState(nextState, this._eliminateUnneededChildren);\n },\n\n _eliminateUnneededChildren: function() {\n // Updating the indices that we're deleting and that's all. (Truth: Nothing\n // even uses the indices in this case, but let's make this describe the\n // truth anyways).\n var updatingAllIndicesAtOrBeyond =\n this.state.routeStack.length > this.state.observedTopOfStack + 1 ?\n this.state.observedTopOfStack + 1 :\n null;\n this.setState({\n idStack: this.state.idStack.slice(0, this.state.observedTopOfStack + 1),\n routeStack: this.state.routeStack.slice(0, this.state.observedTopOfStack + 1),\n // Now we rerequest the top of stack that we observed.\n requestedTopOfStack: this.state.observedTopOfStack,\n makingNavigatorRequest: true,\n updatingAllIndicesAtOrBeyond: updatingAllIndicesAtOrBeyond,\n });\n },\n\n _emitDidFocus: function(route: Route) {\n this.navigationContext.emit('didfocus', {route: route});\n },\n\n _emitWillFocus: function(route: Route) {\n this.navigationContext.emit('willfocus', {route: route});\n },\n\n push: function(route: Route) {\n invariant(!!route, 'Must supply route to push');\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack === this.state.observedTopOfStack) {\n this._tryLockNavigator(() => {\n this._emitWillFocus(route);\n\n var nextStack = this.state.routeStack.concat([route]);\n var nextIDStack = this.state.idStack.concat([getuid()]);\n this.setState({\n // We have to make sure that we've also supplied enough views to\n // satisfy our request to adjust the `requestedTopOfStack`.\n idStack: nextIDStack,\n routeStack: nextStack,\n requestedTopOfStack: nextStack.length - 1,\n makingNavigatorRequest: true,\n updatingAllIndicesAtOrBeyond: nextStack.length - 1,\n });\n });\n }\n },\n\n popN: function(n: number) {\n if (n === 0) {\n return;\n }\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack === this.state.observedTopOfStack) {\n if (this.state.requestedTopOfStack > 0) {\n this._tryLockNavigator(() => {\n var newRequestedTopOfStack = this.state.requestedTopOfStack - n;\n invariant(newRequestedTopOfStack >= 0, 'Cannot pop below 0');\n this._emitWillFocus(this.state.routeStack[newRequestedTopOfStack]);\n this.setState({\n requestedTopOfStack: newRequestedTopOfStack,\n makingNavigatorRequest: true,\n // Not actually updating the indices yet until we get the native\n // `onNavigationComplete`.\n updatingAllIndicesAtOrBeyond: null,\n });\n });\n }\n }\n },\n\n pop: function() {\n this.popN(1);\n },\n\n /**\n * Replace a route in the navigation stack.\n *\n * `index` specifies the route in the stack that should be replaced.\n * If it's negative, it counts from the back.\n */\n replaceAtIndex: function(route: Route, index: number) {\n invariant(!!route, 'Must supply route to replace');\n if (index < 0) {\n index += this.state.routeStack.length;\n }\n\n if (this.state.routeStack.length <= index) {\n return;\n }\n\n // I don't believe we need to lock for a replace since there's no\n // navigation actually happening\n var nextIDStack = this.state.idStack.slice();\n var nextRouteStack = this.state.routeStack.slice();\n nextIDStack[index] = getuid();\n nextRouteStack[index] = route;\n\n this.setState({\n idStack: nextIDStack,\n routeStack: nextRouteStack,\n makingNavigatorRequest: false,\n updatingAllIndicesAtOrBeyond: index,\n });\n\n this._emitWillFocus(route);\n this._emitDidFocus(route);\n },\n\n /**\n * Replaces the top of the navigation stack.\n */\n replace: function(route: Route) {\n this.replaceAtIndex(route, -1);\n },\n\n /**\n * Replace the current route's parent.\n */\n replacePrevious: function(route: Route) {\n this.replaceAtIndex(route, -2);\n },\n\n popToTop: function() {\n this.popToRoute(this.state.routeStack[0]);\n },\n\n popToRoute: function(route: Route) {\n var indexOfRoute = this.state.routeStack.indexOf(route);\n invariant(\n indexOfRoute !== -1,\n 'Calling pop to route for a route that doesn\\'t exist!'\n );\n var numToPop = this.state.routeStack.length - indexOfRoute - 1;\n this.popN(numToPop);\n },\n\n replacePreviousAndPop: function(route: Route) {\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {\n return;\n }\n if (this.state.routeStack.length < 2) {\n return;\n }\n this._tryLockNavigator(() => {\n this.replacePrevious(route);\n this.setState({\n requestedTopOfStack: this.state.requestedTopOfStack - 1,\n makingNavigatorRequest: true,\n });\n });\n },\n\n resetTo: function(route: Route) {\n invariant(!!route, 'Must supply route to push');\n // Make sure all previous requests are caught up first. Otherwise reject.\n if (this.state.requestedTopOfStack !== this.state.observedTopOfStack) {\n return;\n }\n this.replaceAtIndex(route, 0);\n this.popToRoute(route);\n },\n\n handleNavigationComplete: function(e: Event) {\n if (this._toFocusOnNavigationComplete) {\n this._getFocusEmitter().emit('focus', this._toFocusOnNavigationComplete);\n this._toFocusOnNavigationComplete = null;\n }\n this._handleNavigatorStackChanged(e);\n },\n\n _routeToStackItem: function(route: Route, i: number) {\n var Component = route.component;\n var shouldUpdateChild = this.state.updatingAllIndicesAtOrBeyond !== null &&\n this.state.updatingAllIndicesAtOrBeyond >= i;\n\n return (\n <StaticContainer key={'nav' + i} shouldUpdate={shouldUpdateChild}>\n <RCTNavigatorItem\n title={route.title}\n style={[\n styles.stackItem,\n this.props.itemWrapperStyle,\n route.wrapperStyle\n ]}\n backButtonIcon={this._imageNameFromSource(route.backButtonIcon)}\n backButtonTitle={route.backButtonTitle}\n leftButtonIcon={this._imageNameFromSource(route.leftButtonIcon)}\n leftButtonTitle={route.leftButtonTitle}\n onNavLeftButtonTap={route.onLeftButtonPress}\n rightButtonIcon={this._imageNameFromSource(route.rightButtonIcon)}\n rightButtonTitle={route.rightButtonTitle}\n onNavRightButtonTap={route.onRightButtonPress}\n navigationBarHidden={this.props.navigationBarHidden}\n tintColor={this.props.tintColor}\n barTintColor={this.props.barTintColor}\n translucent={this.props.translucent !== false}\n titleTextColor={this.props.titleTextColor}>\n <Component\n navigator={this.navigator}\n route={route}\n {...route.passProps}\n />\n </RCTNavigatorItem>\n </StaticContainer>\n );\n },\n\n _imageNameFromSource: function(source: ?Object) {\n return source ? source.uri : undefined;\n },\n\n renderNavigationStackItems: function() {\n var shouldRecurseToNavigator =\n this.state.makingNavigatorRequest ||\n this.state.updatingAllIndicesAtOrBeyond !== null;\n // If not recursing update to navigator at all, may as well avoid\n // computation of navigator children.\n var items = shouldRecurseToNavigator ?\n this.state.routeStack.map(this._routeToStackItem) : null;\n return (\n <StaticContainer shouldUpdate={shouldRecurseToNavigator}>\n <NavigatorTransitionerIOS\n ref={TRANSITIONER_REF}\n style={styles.transitioner}\n vertical={this.props.vertical}\n requestedTopOfStack={this.state.requestedTopOfStack}\n onNavigationComplete={this.handleNavigationComplete}>\n {items}\n </NavigatorTransitionerIOS>\n </StaticContainer>\n );\n },\n\n render: function() {\n return (\n <View style={this.props.style}>\n {this.renderNavigationStackItems()}\n </View>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n stackItem: {\n backgroundColor: 'white',\n overflow: 'hidden',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n transitioner: {\n flex: 1,\n },\n});\n\nmodule.exports = NavigatorIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Navigation/NavigatorIOS.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Picker/PickerIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar ReactChildren=require('ReactChildren');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar RCTPickerIOSConsts=require('NativeModules').UIManager.RCTPicker.Constants;\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar merge=require('merge');\n\nvar PICKER='picker';\n\nvar PickerIOS=React.createClass({displayName:'PickerIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\nonValueChange:React.PropTypes.func,\nselectedValue:React.PropTypes.any},\n\n\ngetInitialState:function(){\nreturn this._stateFromProps(this.props);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nthis.setState(this._stateFromProps(nextProps));},\n\n\n\n_stateFromProps:function(props){\nvar selectedIndex=0;\nvar items=[];\nReactChildren.forEach(props.children,function(child,index){\nif(child.props.value === props.selectedValue){\nselectedIndex = index;}\n\nitems.push({value:child.props.value,label:child.props.label});});\n\nreturn {selectedIndex:selectedIndex,items:items};},\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{style:this.props.style},\nReact.createElement(RCTPickerIOS,{\nref:PICKER,\nstyle:styles.pickerIOS,\nitems:this.state.items,\nselectedIndex:this.state.selectedIndex,\nonChange:this._onChange})));},\n\n\n\n\n\n_onChange:function(event){\nif(this.props.onChange){\nthis.props.onChange(event);}\n\nif(this.props.onValueChange){\nthis.props.onValueChange(event.nativeEvent.newValue);}\n\n\n\n\n\n\n\n\nif(this.state.selectedIndex !== event.nativeEvent.newIndex){\nthis.refs[PICKER].setNativeProps({\nselectedIndex:this.state.selectedIndex});}}});\n\n\n\n\n\nPickerIOS.Item = React.createClass({displayName:'Item',\npropTypes:{\nvalue:React.PropTypes.any,\nlabel:React.PropTypes.string},\n\n\nrender:function(){\n\nreturn null;}});\n\n\n\nvar styles=StyleSheet.create({\npickerIOS:{\n\n\n\nheight:RCTPickerIOSConsts.ComponentHeight}});\n\n\n\nvar RCTPickerIOS=requireNativeComponent('RCTPicker',null);\n\nmodule.exports = PickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PickerIOS\n *\n * This is a controlled component version of RCTPickerIOS\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar ReactChildren = require('ReactChildren');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar RCTPickerIOSConsts = require('NativeModules').UIManager.RCTPicker.Constants;\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar merge = require('merge');\n\nvar PICKER = 'picker';\n\nvar PickerIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n onValueChange: React.PropTypes.func,\n selectedValue: React.PropTypes.any, // string or integer basically\n },\n\n getInitialState: function() {\n return this._stateFromProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps) {\n this.setState(this._stateFromProps(nextProps));\n },\n\n // Translate PickerIOS prop and children into stuff that RCTPickerIOS understands.\n _stateFromProps: function(props) {\n var selectedIndex = 0;\n var items = [];\n ReactChildren.forEach(props.children, function (child, index) {\n if (child.props.value === props.selectedValue) {\n selectedIndex = index;\n }\n items.push({value: child.props.value, label: child.props.label});\n });\n return {selectedIndex, items};\n },\n\n render: function() {\n return (\n <View style={this.props.style}>\n <RCTPickerIOS\n ref={PICKER}\n style={styles.pickerIOS}\n items={this.state.items}\n selectedIndex={this.state.selectedIndex}\n onChange={this._onChange}\n />\n </View>\n );\n },\n\n _onChange: function(event) {\n if (this.props.onChange) {\n this.props.onChange(event);\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(event.nativeEvent.newValue);\n }\n\n // The picker is a controlled component. This means we expect the\n // on*Change handlers to be in charge of updating our\n // `selectedValue` prop. That way they can also\n // disallow/undo/mutate the selection of certain values. In other\n // words, the embedder of this component should be the source of\n // truth, not the native component.\n if (this.state.selectedIndex !== event.nativeEvent.newIndex) {\n this.refs[PICKER].setNativeProps({\n selectedIndex: this.state.selectedIndex\n });\n }\n },\n});\n\nPickerIOS.Item = React.createClass({\n propTypes: {\n value: React.PropTypes.any, // string or integer basically\n label: React.PropTypes.string,\n },\n\n render: function() {\n // These items don't get rendered directly.\n return null;\n },\n});\n\nvar styles = StyleSheet.create({\n pickerIOS: {\n // The picker will conform to whatever width is given, but we do\n // have to set the component's height explicitly on the\n // surrounding view to ensure it gets rendered.\n height: RCTPickerIOSConsts.ComponentHeight,\n },\n});\n\nvar RCTPickerIOS = requireNativeComponent('RCTPicker', null);\n\nmodule.exports = PickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Picker/PickerIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\n\n\n\nvar ProgressViewIOS=React.createClass({displayName:'ProgressViewIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nprogressViewStyle:PropTypes.oneOf(['default','bar']),\n\n\n\n\nprogress:PropTypes.number,\n\n\n\n\nprogressTintColor:PropTypes.string,\n\n\n\n\ntrackTintColor:PropTypes.string,\n\n\n\n\nprogressImage:Image.propTypes.source,\n\n\n\n\ntrackImage:Image.propTypes.source},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTProgressView,_extends({},\nthis.props,{\nstyle:[styles.progressView,this.props.style]})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nprogressView:{\nheight:NativeModules.ProgressViewManager.ComponentHeight}});\n\n\n\nvar RCTProgressView=requireNativeComponent(\n'RCTProgressView',\nProgressViewIOS);\n\n\nmodule.exports = ProgressViewIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ProgressViewIOS\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\n/**\n * Use `ProgressViewIOS` to render a UIProgressView on iOS.\n */\nvar ProgressViewIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The progress bar style.\n */\n progressViewStyle: PropTypes.oneOf(['default', 'bar']),\n\n /**\n * The progress value (between 0 and 1).\n */\n progress: PropTypes.number,\n\n /**\n * The tint color of the progress bar itself.\n */\n progressTintColor: PropTypes.string,\n\n /**\n * The tint color of the progress bar track.\n */\n trackTintColor: PropTypes.string,\n\n /**\n * A stretchable image to display as the progress bar.\n */\n progressImage: Image.propTypes.source,\n\n /**\n * A stretchable image to display behind the progress bar.\n */\n trackImage: Image.propTypes.source,\n },\n\n render: function() {\n return (\n <RCTProgressView\n {...this.props}\n style={[styles.progressView, this.props.style]}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n progressView: {\n height: NativeModules.ProgressViewManager.ComponentHeight\n },\n});\n\nvar RCTProgressView = requireNativeComponent(\n 'RCTProgressView',\n ProgressViewIOS\n);\n\nmodule.exports = ProgressViewIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/ProgressViewIOS/ProgressViewIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar NativeModules=require('NativeModules');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\nvar verifyPropTypes=require('verifyPropTypes');\n\n\n\n\n\n\nvar SEGMENTED_CONTROL_REFERENCE='segmentedcontrol';\n\n\n\n\n\n\nvar SegmentedControlIOS=React.createClass({displayName:'SegmentedControlIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\nvalues:PropTypes.arrayOf(PropTypes.string),\n\n\n\n\nselectedIndex:PropTypes.number,\n\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonChange:PropTypes.func,\n\n\n\n\n\nenabled:PropTypes.bool,\n\n\n\n\ntintColor:PropTypes.string,\n\n\n\n\n\nmomentary:PropTypes.bool},\n\n\ngetDefaultProps:function(){\nreturn {\nvalues:[],\nenabled:true};},\n\n\n\n_onChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nthis.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSegmentedControl,_extends({},\nthis.props,{\nref:SEGMENTED_CONTROL_REFERENCE,\nstyle:[styles.segmentedControl,this.props.style],\nonChange:this._onChange})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nsegmentedControl:{\nheight:NativeModules.SegmentedControlManager.ComponentHeight}});\n\n\n\nvar RCTSegmentedControl=requireNativeComponent(\n'RCTSegmentedControl',\nSegmentedControlIOS);\n\n\nmodule.exports = SegmentedControlIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SegmentedControlIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar NativeModules = require('NativeModules');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\nvar verifyPropTypes = require('verifyPropTypes');\n\ntype DefaultProps = {\n values: Array<string>;\n enabled: boolean;\n};\n\nvar SEGMENTED_CONTROL_REFERENCE = 'segmentedcontrol';\n\ntype Event = Object;\n\n/**\n * Use `SegmentedControlIOS` to render a UISegmentedControl iOS.\n */\nvar SegmentedControlIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The labels for the control's segment buttons, in order.\n */\n values: PropTypes.arrayOf(PropTypes.string),\n\n /**\n * The index in `props.values` of the segment to be pre-selected\n */\n selectedIndex: PropTypes.number,\n\n /**\n * Callback that is called when the user taps a segment;\n * passes the segment's value as an argument\n */\n onValueChange: PropTypes.func,\n\n /**\n * Callback that is called when the user taps a segment;\n * passes the event as an argument\n */\n onChange: PropTypes.func,\n\n /**\n * If false the user won't be able to interact with the control.\n * Default value is true.\n */\n enabled: PropTypes.bool,\n\n /**\n * Accent color of the control.\n */\n tintColor: PropTypes.string,\n\n /**\n * If true, then selecting a segment won't persist visually.\n * The `onValueChange` callback will still work as expected.\n */\n momentary: PropTypes.bool\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n values: [],\n enabled: true\n };\n },\n\n _onChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n },\n\n render: function() {\n return (\n <RCTSegmentedControl\n {...this.props}\n ref={SEGMENTED_CONTROL_REFERENCE}\n style={[styles.segmentedControl, this.props.style]}\n onChange={this._onChange}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n segmentedControl: {\n height: NativeModules.SegmentedControlManager.ComponentHeight\n },\n});\n\nvar RCTSegmentedControl = requireNativeComponent(\n 'RCTSegmentedControl',\n SegmentedControlIOS\n);\n\nmodule.exports = SegmentedControlIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SegmentedControlIOS/SegmentedControlIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\n\n\nvar SliderIOS=React.createClass({displayName:'SliderIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\n\n\n\n\n\nvalue:PropTypes.number,\n\n\n\n\nminimumValue:PropTypes.number,\n\n\n\n\nmaximumValue:PropTypes.number,\n\n\n\n\n\nminimumTrackTintColor:PropTypes.string,\n\n\n\n\n\nmaximumTrackTintColor:PropTypes.string,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\n\nonSlidingComplete:PropTypes.func},\n\n\n_onValueChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nif(event.nativeEvent.continuous){\nthis.props.onValueChange && \nthis.props.onValueChange(event.nativeEvent.value);}else \n{\nthis.props.onSlidingComplete && event.nativeEvent.value !== undefined && \nthis.props.onSlidingComplete(event.nativeEvent.value);}},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSlider,{\nstyle:[styles.slider,this.props.style],\nvalue:this.props.value,\nmaximumValue:this.props.maximumValue,\nminimumValue:this.props.minimumValue,\nminimumTrackTintColor:this.props.minimumTrackTintColor,\nmaximumTrackTintColor:this.props.maximumTrackTintColor,\nonChange:this._onValueChange}));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nslider:{\nheight:40}});\n\n\n\nvar RCTSlider=requireNativeComponent('RCTSlider',SliderIOS);\n\nmodule.exports = SliderIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SliderIOS\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\ntype Event = Object;\n\nvar SliderIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * Used to style and layout the `Slider`. See `StyleSheet.js` and\n * `ViewStylePropTypes.js` for more info.\n */\n style: View.propTypes.style,\n\n /**\n * Initial value of the slider. The value should be between minimumValue\n * and maximumValue, which default to 0 and 1 respectively.\n * Default value is 0.\n *\n * *This is not a controlled component*, e.g. if you don't update\n * the value, the component won't be reset to its inital value.\n */\n value: PropTypes.number,\n\n /**\n * Initial minimum value of the slider. Default value is 0.\n */\n minimumValue: PropTypes.number,\n\n /**\n * Initial maximum value of the slider. Default value is 1.\n */\n maximumValue: PropTypes.number,\n\n /**\n * The color used for the track to the left of the button. Overrides the\n * default blue gradient image.\n */\n minimumTrackTintColor: PropTypes.string,\n\n /**\n * The color used for the track to the right of the button. Overrides the\n * default blue gradient image.\n */\n maximumTrackTintColor: PropTypes.string,\n\n /**\n * Callback continuously called while the user is dragging the slider.\n */\n onValueChange: PropTypes.func,\n\n /**\n * Callback called when the user finishes changing the value (e.g. when\n * the slider is released).\n */\n onSlidingComplete: PropTypes.func,\n },\n\n _onValueChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n if (event.nativeEvent.continuous) {\n this.props.onValueChange &&\n this.props.onValueChange(event.nativeEvent.value);\n } else {\n this.props.onSlidingComplete && event.nativeEvent.value !== undefined &&\n this.props.onSlidingComplete(event.nativeEvent.value);\n }\n },\n\n render: function() {\n return (\n <RCTSlider\n style={[styles.slider, this.props.style]}\n value={this.props.value}\n maximumValue={this.props.maximumValue}\n minimumValue={this.props.minimumValue}\n minimumTrackTintColor={this.props.minimumTrackTintColor}\n maximumTrackTintColor={this.props.maximumTrackTintColor}\n onChange={this._onValueChange}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n slider: {\n height: 40,\n },\n});\n\nvar RCTSlider = requireNativeComponent('RCTSlider', SliderIOS);\n\nmodule.exports = SliderIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SliderIOS/SliderIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar SWITCH='switch';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar SwitchIOS=React.createClass({displayName:'SwitchIOS',\nmixins:[NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\nvalue:PropTypes.bool,\n\n\n\n\n\ndisabled:PropTypes.bool,\n\n\n\n\nonValueChange:PropTypes.func,\n\n\n\n\nonTintColor:PropTypes.string,\n\n\n\n\nthumbTintColor:PropTypes.string,\n\n\n\n\ntintColor:PropTypes.string},\n\n\ngetDefaultProps:function(){\nreturn {\nvalue:false,\ndisabled:false};},\n\n\n\n_onChange:function(event){\nthis.props.onChange && this.props.onChange(event);\nthis.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n\n\n\nthis.refs[SWITCH].setNativeProps({value:this.props.value});},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTSwitch,_extends({},\nthis.props,{\nref:SWITCH,\nonChange:this._onChange,\nstyle:[styles.rkSwitch,this.props.style]})));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nrkSwitch:{\nheight:31,\nwidth:51}});\n\n\n\nvar RCTSwitch=requireNativeComponent('RCTSwitch',SwitchIOS);\n\nmodule.exports = SwitchIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule SwitchIOS\n * @flow\n *\n * This is a controlled component version of RCTSwitch.\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar SWITCH = 'switch';\n\ntype DefaultProps = {\n value: boolean;\n disabled: boolean;\n};\n\ntype Event = Object;\n\n/**\n * Use `SwitchIOS` to render a boolean input on iOS. This is\n * a controlled component, so you must hook in to the `onValueChange` callback\n * and update the `value` prop in order for the component to update, otherwise\n * the user's change will be reverted immediately to reflect `props.value` as the\n * source of truth.\n */\nvar SwitchIOS = React.createClass({\n mixins: [NativeMethodsMixin],\n\n propTypes: {\n /**\n * The value of the switch, if true the switch will be turned on.\n * Default value is false.\n */\n value: PropTypes.bool,\n\n /**\n * If true the user won't be able to toggle the switch.\n * Default value is false.\n */\n disabled: PropTypes.bool,\n\n /**\n * Callback that is called when the user toggles the switch.\n */\n onValueChange: PropTypes.func,\n\n /**\n * Background color when the switch is turned on.\n */\n onTintColor: PropTypes.string,\n\n /**\n * Background color for the switch round button.\n */\n thumbTintColor: PropTypes.string,\n\n /**\n * Background color when the switch is turned off.\n */\n tintColor: PropTypes.string,\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n value: false,\n disabled: false,\n };\n },\n\n _onChange: function(event: Event) {\n this.props.onChange && this.props.onChange(event);\n this.props.onValueChange && this.props.onValueChange(event.nativeEvent.value);\n\n // The underlying switch might have changed, but we're controlled,\n // and so want to ensure it represents our value.\n this.refs[SWITCH].setNativeProps({value: this.props.value});\n },\n\n render: function() {\n return (\n <RCTSwitch\n {...this.props}\n ref={SWITCH}\n onChange={this._onChange}\n style={[styles.rkSwitch, this.props.style]}\n />\n );\n }\n});\n\nvar styles = StyleSheet.create({\n rkSwitch: {\n height: 31,\n width: 51,\n },\n});\n\nvar RCTSwitch = requireNativeComponent('RCTSwitch', SwitchIOS);\n\nmodule.exports = SwitchIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/SwitchIOS/SwitchIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar TabBarItemIOS=require('TabBarItemIOS');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar TabBarIOS=React.createClass({displayName:'TabBarIOS',\nstatics:{\nItem:TabBarItemIOS},\n\n\npropTypes:{\nstyle:View.propTypes.style,\n\n\n\ntintColor:React.PropTypes.string,\n\n\n\nbarTintColor:React.PropTypes.string},\n\n\nrender:function(){\nreturn (\nReact.createElement(RCTTabBar,{\nstyle:[styles.tabGroup,this.props.style],\ntintColor:this.props.tintColor,\nbarTintColor:this.props.barTintColor},\nthis.props.children));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ntabGroup:{\nflex:1}});\n\n\n\nvar RCTTabBar=requireNativeComponent('RCTTabBar',TabBarIOS);\n\nmodule.exports = TabBarIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TabBarIOS\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar TabBarItemIOS = require('TabBarItemIOS');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar TabBarIOS = React.createClass({\n statics: {\n Item: TabBarItemIOS,\n },\n\n propTypes: {\n style: View.propTypes.style,\n /**\n * Color of the currently selected tab icon\n */\n tintColor: React.PropTypes.string,\n /**\n * Background color of the tab bar\n */\n barTintColor: React.PropTypes.string\n },\n\n render: function() {\n return (\n <RCTTabBar\n style={[styles.tabGroup, this.props.style]}\n tintColor={this.props.tintColor}\n barTintColor={this.props.barTintColor}>\n {this.props.children}\n </RCTTabBar>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n tabGroup: {\n flex: 1,\n }\n});\n\nvar RCTTabBar = requireNativeComponent('RCTTabBar', TabBarIOS);\n\nmodule.exports = TabBarIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarIOS.ios.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Image=require('Image');\nvar React=require('React');\nvar StaticContainer=require('StaticContainer.react');\nvar StyleSheet=require('StyleSheet');\nvar View=require('View');\n\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar TabBarItemIOS=React.createClass({displayName:'TabBarItemIOS',\npropTypes:{\n\n\n\nbadge:React.PropTypes.oneOfType([\nReact.PropTypes.string,\nReact.PropTypes.number]),\n\n\n\n\n\n\nsystemIcon:React.PropTypes.oneOf([\n'bookmarks',\n'contacts',\n'downloads',\n'favorites',\n'featured',\n'history',\n'more',\n'most-recent',\n'most-viewed',\n'recents',\n'search',\n'top-rated']),\n\n\n\n\nicon:Image.propTypes.source,\n\n\n\n\nselectedIcon:Image.propTypes.source,\n\n\n\n\nonPress:React.PropTypes.func,\n\n\n\n\nselected:React.PropTypes.bool,\n\n\n\nstyle:View.propTypes.style,\n\n\n\n\ntitle:React.PropTypes.string},\n\n\ngetInitialState:function(){\nreturn {\nhasBeenSelected:false};},\n\n\n\ncomponentWillMount:function(){\nif(this.props.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\ncomponentWillReceiveProps:function(nextProps){\nif(this.state.hasBeenSelected || nextProps.selected){\nthis.setState({hasBeenSelected:true});}},\n\n\n\nrender:function(){\nvar tabContents=null;\n\n\nif(this.state.hasBeenSelected){\ntabContents = \nReact.createElement(StaticContainer,{shouldUpdate:this.props.selected},\nthis.props.children);}else \n\n{\ntabContents = React.createElement(View,null);}\n\n\nvar icon=this.props.systemIcon || \nthis.props.icon && this.props.icon.uri;\n\n\nvar badge=typeof this.props.badge === 'number'?\n'' + this.props.badge:\nthis.props.badge;\n\nreturn (\nReact.createElement(RCTTabBarItem,{\nicon:icon,\nselectedIcon:this.props.selectedIcon && this.props.selectedIcon.uri,\nonPress:this.props.onPress,\nselected:this.props.selected,\nbadge:badge,\ntitle:this.props.title,\nstyle:[styles.tab,this.props.style]},\ntabContents));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ntab:{\nposition:'absolute',\ntop:0,\nright:0,\nbottom:0,\nleft:0}});\n\n\n\nvar RCTTabBarItem=requireNativeComponent('RCTTabBarItem',TabBarItemIOS);\n\nmodule.exports = TabBarItemIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TabBarItemIOS\n * @flow\n */\n'use strict';\n\nvar Image = require('Image');\nvar React = require('React');\nvar StaticContainer = require('StaticContainer.react');\nvar StyleSheet = require('StyleSheet');\nvar View = require('View');\n\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar TabBarItemIOS = React.createClass({\n propTypes: {\n /**\n * Little red bubble that sits at the top right of the icon.\n */\n badge: React.PropTypes.oneOfType([\n React.PropTypes.string,\n React.PropTypes.number,\n ]),\n /**\n * Items comes with a few predefined system icons. Note that if you are\n * using them, the title and selectedIcon will be overriden with the\n * system ones.\n */\n systemIcon: React.PropTypes.oneOf([\n 'bookmarks',\n 'contacts',\n 'downloads',\n 'favorites',\n 'featured',\n 'history',\n 'more',\n 'most-recent',\n 'most-viewed',\n 'recents',\n 'search',\n 'top-rated',\n ]),\n /**\n * A custom icon for the tab. It is ignored when a system icon is defined.\n */\n icon: Image.propTypes.source,\n /**\n * A custom icon when the tab is selected. It is ignored when a system\n * icon is defined. If left empty, the icon will be tinted in blue.\n */\n selectedIcon: Image.propTypes.source,\n /**\n * Callback when this tab is being selected, you should change the state of your\n * component to set selected={true}.\n */\n onPress: React.PropTypes.func,\n /**\n * It specifies whether the children are visible or not. If you see a\n * blank content, you probably forgot to add a selected one.\n */\n selected: React.PropTypes.bool,\n /**\n * React style object.\n */\n style: View.propTypes.style,\n /**\n * Text that appears under the icon. It is ignored when a system icon\n * is defined.\n */\n title: React.PropTypes.string,\n },\n\n getInitialState: function() {\n return {\n hasBeenSelected: false,\n };\n },\n\n componentWillMount: function() {\n if (this.props.selected) {\n this.setState({hasBeenSelected: true});\n }\n },\n\n componentWillReceiveProps: function(nextProps: { selected?: boolean }) {\n if (this.state.hasBeenSelected || nextProps.selected) {\n this.setState({hasBeenSelected: true});\n }\n },\n\n render: function() {\n var tabContents = null;\n // if the tab has already been shown once, always continue to show it so we\n // preserve state between tab transitions\n if (this.state.hasBeenSelected) {\n tabContents =\n <StaticContainer shouldUpdate={this.props.selected}>\n {this.props.children}\n </StaticContainer>;\n } else {\n tabContents = <View />;\n }\n\n var icon = this.props.systemIcon || (\n this.props.icon && this.props.icon.uri\n );\n\n var badge = typeof this.props.badge === 'number' ?\n '' + this.props.badge :\n this.props.badge;\n\n return (\n <RCTTabBarItem\n icon={icon}\n selectedIcon={this.props.selectedIcon && this.props.selectedIcon.uri}\n onPress={this.props.onPress}\n selected={this.props.selected}\n badge={badge}\n title={this.props.title}\n style={[styles.tab, this.props.style]}>\n {tabContents}\n </RCTTabBarItem>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n tab: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n }\n});\n\nvar RCTTabBarItem = requireNativeComponent('RCTTabBarItem', TabBarItemIOS);\n\nmodule.exports = TabBarItemIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TabBarIOS/TabBarItemIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/Text.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar Platform=require('Platform');\nvar React=require('React');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheetPropType=require('StyleSheetPropType');\nvar TextStylePropTypes=require('TextStylePropTypes');\nvar Touchable=require('Touchable');\n\nvar createReactNativeComponentClass=\nrequire('createReactNativeComponentClass');\nvar merge=require('merge');\n\nvar stylePropType=StyleSheetPropType(TextStylePropTypes);\n\nvar viewConfig={\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nisHighlighted:true,\nnumberOfLines:true}),\n\nuiViewClassName:'RCTText'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Text=React.createClass({displayName:'Text',\n\nmixins:[Touchable.Mixin,NativeMethodsMixin],\n\npropTypes:{\n\n\n\n\n\nnumberOfLines:React.PropTypes.number,\n\n\n\n\n\nonPress:React.PropTypes.func,\n\n\n\n\nsuppressHighlighting:React.PropTypes.bool,\nstyle:stylePropType,\n\n\n\ntestID:React.PropTypes.string,\n\n\n\n\n\nonLayout:React.PropTypes.func},\n\n\nviewConfig:viewConfig,\n\ngetInitialState:function(){\nreturn merge(this.touchableGetInitialState(),{\nisHighlighted:false});},\n\n\n\nonStartShouldSetResponder:function(){\nvar shouldSetFromProps=this.props.onStartShouldSetResponder && \nthis.props.onStartShouldSetResponder();\nreturn shouldSetFromProps || !!this.props.onPress;},\n\n\n\n\n\nhandleResponderTerminationRequest:function(){\n\n\nvar allowTermination=this.touchableHandleResponderTerminationRequest();\nif(allowTermination && this.props.onResponderTerminationRequest){\nallowTermination = this.props.onResponderTerminationRequest();}\n\nreturn allowTermination;},\n\n\nhandleResponderGrant:function(e,dispatchID){\nthis.touchableHandleResponderGrant(e,dispatchID);\nthis.props.onResponderGrant && \nthis.props.onResponderGrant.apply(this,arguments);},\n\n\nhandleResponderMove:function(e){\nthis.touchableHandleResponderMove(e);\nthis.props.onResponderMove && \nthis.props.onResponderMove.apply(this,arguments);},\n\n\nhandleResponderRelease:function(e){\nthis.touchableHandleResponderRelease(e);\nthis.props.onResponderRelease && \nthis.props.onResponderRelease.apply(this,arguments);},\n\n\nhandleResponderTerminate:function(e){\nthis.touchableHandleResponderTerminate(e);\nthis.props.onResponderTerminate && \nthis.props.onResponderTerminate.apply(this,arguments);},\n\n\ntouchableHandleActivePressIn:function(){\nif(this.props.suppressHighlighting || !this.props.onPress){\nreturn;}\n\nthis.setState({\nisHighlighted:true});},\n\n\n\ntouchableHandleActivePressOut:function(){\nif(this.props.suppressHighlighting || !this.props.onPress){\nreturn;}\n\nthis.setState({\nisHighlighted:false});},\n\n\n\ntouchableHandlePress:function(){\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ngetChildContext:function(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\nrender:function(){\nvar props={};\nfor(var key in this.props) {\nprops[key] = this.props[key];}\n\n\nif(props.accessible !== false){\nprops.accessible = true;}\n\nprops.isHighlighted = this.state.isHighlighted;\nprops.onStartShouldSetResponder = this.onStartShouldSetResponder;\nprops.onResponderTerminationRequest = \nthis.handleResponderTerminationRequest;\nprops.onResponderGrant = this.handleResponderGrant;\nprops.onResponderMove = this.handleResponderMove;\nprops.onResponderRelease = this.handleResponderRelease;\nprops.onResponderTerminate = this.handleResponderTerminate;\n\n\nvar context=ReactInstanceMap.get(this)._context;\nif(context.isInAParentText){\nreturn React.createElement(RCTVirtualText,props);}else \n{\nreturn React.createElement(RCTText,props);}}});\n\n\n\n\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\nvar RCTText=createReactNativeComponentClass(viewConfig);\nvar RCTVirtualText=RCTText;\n\nif(Platform.OS === 'android'){\nRCTVirtualText = createReactNativeComponentClass({\nvalidAttributes:merge(ReactNativeViewAttributes.UIView,{\nisHighlighted:true}),\n\nuiViewClassName:'RCTVirtualText'});}\n\n\n\nmodule.exports = Text;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Text\n * @flow\n */\n'use strict';\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar Platform = require('Platform');\nvar React = require('React');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheetPropType = require('StyleSheetPropType');\nvar TextStylePropTypes = require('TextStylePropTypes');\nvar Touchable = require('Touchable');\n\nvar createReactNativeComponentClass =\n require('createReactNativeComponentClass');\nvar merge = require('merge');\n\nvar stylePropType = StyleSheetPropType(TextStylePropTypes);\n\nvar viewConfig = {\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n numberOfLines: true,\n }),\n uiViewClassName: 'RCTText',\n};\n\n/**\n * A React component for displaying text which supports nesting,\n * styling, and touch handling. In the following example, the nested title and\n * body text will inherit the `fontFamily` from `styles.baseText`, but the title\n * provides its own additional styles. The title and body will stack on top of\n * each other on account of the literal newlines:\n *\n * ```\n * renderText: function() {\n * return (\n * <Text style={styles.baseText}>\n * <Text style={styles.titleText} onPress={this.onPressTitle}>\n * {this.state.titleText + '\\n\\n'}\n * </Text>\n * <Text numberOfLines={5}>\n * {this.state.bodyText}\n * </Text>\n * </Text>\n * );\n * },\n * ...\n * var styles = StyleSheet.create({\n * baseText: {\n * fontFamily: 'Cochin',\n * },\n * titleText: {\n * fontSize: 20,\n * fontWeight: 'bold',\n * },\n * };\n * ```\n */\n\nvar Text = React.createClass({\n\n mixins: [Touchable.Mixin, NativeMethodsMixin],\n\n propTypes: {\n /**\n * Used to truncate the text with an elipsis after computing the text\n * layout, including line wrapping, such that the total number of lines does\n * not exceed this number.\n */\n numberOfLines: React.PropTypes.number,\n /**\n * This function is called on press. Text intrinsically supports press\n * handling with a default highlight state (which can be disabled with\n * `suppressHighlighting`).\n */\n onPress: React.PropTypes.func,\n /**\n * When true, no visual change is made when text is pressed down. By\n * default, a gray oval highlights the text on press down.\n */\n suppressHighlighting: React.PropTypes.bool,\n style: stylePropType,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: React.PropTypes.string,\n /**\n * Invoked on mount and layout changes with\n *\n * {nativeEvent: {layout: {x, y, width, height}}}.\n */\n onLayout: React.PropTypes.func,\n },\n\n viewConfig: viewConfig,\n\n getInitialState: function() {\n return merge(this.touchableGetInitialState(), {\n isHighlighted: false,\n });\n },\n\n onStartShouldSetResponder: function(): bool {\n var shouldSetFromProps = this.props.onStartShouldSetResponder &&\n this.props.onStartShouldSetResponder();\n return shouldSetFromProps || !!this.props.onPress;\n },\n\n /*\n * Returns true to allow responder termination\n */\n handleResponderTerminationRequest: function(): bool {\n // Allow touchable or props.onResponderTerminationRequest to deny\n // the request\n var allowTermination = this.touchableHandleResponderTerminationRequest();\n if (allowTermination && this.props.onResponderTerminationRequest) {\n allowTermination = this.props.onResponderTerminationRequest();\n }\n return allowTermination;\n },\n\n handleResponderGrant: function(e: SyntheticEvent, dispatchID: string) {\n this.touchableHandleResponderGrant(e, dispatchID);\n this.props.onResponderGrant &&\n this.props.onResponderGrant.apply(this, arguments);\n },\n\n handleResponderMove: function(e: SyntheticEvent) {\n this.touchableHandleResponderMove(e);\n this.props.onResponderMove &&\n this.props.onResponderMove.apply(this, arguments);\n },\n\n handleResponderRelease: function(e: SyntheticEvent) {\n this.touchableHandleResponderRelease(e);\n this.props.onResponderRelease &&\n this.props.onResponderRelease.apply(this, arguments);\n },\n\n handleResponderTerminate: function(e: SyntheticEvent) {\n this.touchableHandleResponderTerminate(e);\n this.props.onResponderTerminate &&\n this.props.onResponderTerminate.apply(this, arguments);\n },\n\n touchableHandleActivePressIn: function() {\n if (this.props.suppressHighlighting || !this.props.onPress) {\n return;\n }\n this.setState({\n isHighlighted: true,\n });\n },\n\n touchableHandleActivePressOut: function() {\n if (this.props.suppressHighlighting || !this.props.onPress) {\n return;\n }\n this.setState({\n isHighlighted: false,\n });\n },\n\n touchableHandlePress: function() {\n this.props.onPress && this.props.onPress();\n },\n\n touchableGetPressRectOffset: function(): RectOffset {\n return PRESS_RECT_OFFSET;\n },\n\n getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n render: function() {\n var props = {};\n for (var key in this.props) {\n props[key] = this.props[key];\n }\n // Text is accessible by default\n if (props.accessible !== false) {\n props.accessible = true;\n }\n props.isHighlighted = this.state.isHighlighted;\n props.onStartShouldSetResponder = this.onStartShouldSetResponder;\n props.onResponderTerminationRequest =\n this.handleResponderTerminationRequest;\n props.onResponderGrant = this.handleResponderGrant;\n props.onResponderMove = this.handleResponderMove;\n props.onResponderRelease = this.handleResponderRelease;\n props.onResponderTerminate = this.handleResponderTerminate;\n\n // TODO: Switch to use contextTypes and this.context after React upgrade\n var context = ReactInstanceMap.get(this)._context;\n if (context.isInAParentText) {\n return <RCTVirtualText {...props} />;\n } else {\n return <RCTText {...props} />;\n }\n },\n});\n\ntype RectOffset = {\n top: number;\n left: number;\n right: number;\n bottom: number;\n}\n\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nvar RCTText = createReactNativeComponentClass(viewConfig);\nvar RCTVirtualText = RCTText;\n\nif (Platform.OS === 'android') {\n RCTVirtualText = createReactNativeComponentClass({\n validAttributes: merge(ReactNativeViewAttributes.UIView, {\n isHighlighted: true,\n }),\n uiViewClassName: 'RCTVirtualText',\n });\n}\n\nmodule.exports = Text;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Text/Text.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/interactions/Touchable/Touchable.js":{"data":{"code":"'use strict';\n\n\n\n\n\nvar BoundingDimensions=require('BoundingDimensions');\nvar Position=require('Position');\nvar TouchEventUtils=require('TouchEventUtils');\n\nvar keyMirror=require('keyMirror');\nvar queryLayoutByID=require('queryLayoutByID');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar States=keyMirror({\nNOT_RESPONDER:null,\nRESPONDER_INACTIVE_PRESS_IN:null,\nRESPONDER_INACTIVE_PRESS_OUT:null,\nRESPONDER_ACTIVE_PRESS_IN:null,\nRESPONDER_ACTIVE_PRESS_OUT:null,\nRESPONDER_ACTIVE_LONG_PRESS_IN:null,\nRESPONDER_ACTIVE_LONG_PRESS_OUT:null,\nERROR:null});\n\n\n\n\n\nvar IsActive={\nRESPONDER_ACTIVE_PRESS_OUT:true,\nRESPONDER_ACTIVE_PRESS_IN:true};\n\n\n\n\n\n\nvar IsPressingIn={\nRESPONDER_INACTIVE_PRESS_IN:true,\nRESPONDER_ACTIVE_PRESS_IN:true,\nRESPONDER_ACTIVE_LONG_PRESS_IN:true};\n\n\nvar IsLongPressingIn={\nRESPONDER_ACTIVE_LONG_PRESS_IN:true};\n\n\n\n\n\nvar Signals=keyMirror({\nDELAY:null,\nRESPONDER_GRANT:null,\nRESPONDER_RELEASE:null,\nRESPONDER_TERMINATED:null,\nENTER_PRESS_RECT:null,\nLEAVE_PRESS_RECT:null,\nLONG_PRESS_DETECTED:null});\n\n\n\n\n\nvar Transitions={\nNOT_RESPONDER:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN,\nRESPONDER_RELEASE:States.ERROR,\nRESPONDER_TERMINATED:States.ERROR,\nENTER_PRESS_RECT:States.ERROR,\nLEAVE_PRESS_RECT:States.ERROR,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_INACTIVE_PRESS_IN:{\nDELAY:States.RESPONDER_ACTIVE_PRESS_IN,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_INACTIVE_PRESS_OUT:{\nDELAY:States.RESPONDER_ACTIVE_PRESS_OUT,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_INACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_ACTIVE_PRESS_IN:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN},\n\nRESPONDER_ACTIVE_PRESS_OUT:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nRESPONDER_ACTIVE_LONG_PRESS_IN:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\nLONG_PRESS_DETECTED:States.RESPONDER_ACTIVE_LONG_PRESS_IN},\n\nRESPONDER_ACTIVE_LONG_PRESS_OUT:{\nDELAY:States.ERROR,\nRESPONDER_GRANT:States.ERROR,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_IN,\nLEAVE_PRESS_RECT:States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\nLONG_PRESS_DETECTED:States.ERROR},\n\nerror:{\nDELAY:States.NOT_RESPONDER,\nRESPONDER_GRANT:States.RESPONDER_INACTIVE_PRESS_IN,\nRESPONDER_RELEASE:States.NOT_RESPONDER,\nRESPONDER_TERMINATED:States.NOT_RESPONDER,\nENTER_PRESS_RECT:States.NOT_RESPONDER,\nLEAVE_PRESS_RECT:States.NOT_RESPONDER,\nLONG_PRESS_DETECTED:States.NOT_RESPONDER}};\n\n\n\n\n\n\nvar HIGHLIGHT_DELAY_MS=130;\n\nvar PRESS_EXPAND_PX=20;\n\nvar LONG_PRESS_THRESHOLD=500;\n\nvar LONG_PRESS_DELAY_MS=LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nvar LONG_PRESS_ALLOWED_MOVEMENT=10;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableMixin={\n\n\n\n\n\n\n\ntouchableGetInitialState:function(){\nreturn {\ntouchable:{touchState:undefined,responderID:null}};},\n\n\n\n\n\n\n\ntouchableHandleResponderTerminationRequest:function(){\nreturn !this.props.rejectResponderTermination;},\n\n\n\n\n\ntouchableHandleStartShouldSetResponder:function(){\nreturn true;},\n\n\n\n\n\ntouchableLongPressCancelsPress:function(){\nreturn true;},\n\n\n\n\n\n\n\n\ntouchableHandleResponderGrant:function(e,dispatchID){\n\n\n\ne.persist();\n\nthis.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\nthis.pressOutDelayTimeout = null;\n\nthis.state.touchable.touchState = States.NOT_RESPONDER;\nthis.state.touchable.responderID = dispatchID;\nthis._receiveSignal(Signals.RESPONDER_GRANT,e);\nvar delayMS=\nthis.touchableGetHighlightDelayMS !== undefined?\nMath.max(this.touchableGetHighlightDelayMS(),0):HIGHLIGHT_DELAY_MS;\ndelayMS = isNaN(delayMS)?HIGHLIGHT_DELAY_MS:delayMS;\nif(delayMS !== 0){\nthis.touchableDelayTimeout = setTimeout(\nthis._handleDelay.bind(this,e),\ndelayMS);}else \n\n{\nthis._handleDelay(e);}\n\n\nvar longDelayMS=\nthis.touchableGetLongPressDelayMS !== undefined?\nMath.max(this.touchableGetLongPressDelayMS(),10):LONG_PRESS_DELAY_MS;\nlongDelayMS = isNaN(longDelayMS)?LONG_PRESS_DELAY_MS:longDelayMS;\nthis.longPressDelayTimeout = setTimeout(\nthis._handleLongDelay.bind(this,e),\nlongDelayMS + delayMS);},\n\n\n\n\n\n\ntouchableHandleResponderRelease:function(e){\nthis._receiveSignal(Signals.RESPONDER_RELEASE,e);},\n\n\n\n\n\ntouchableHandleResponderTerminate:function(e){\nthis._receiveSignal(Signals.RESPONDER_TERMINATED,e);},\n\n\n\n\n\ntouchableHandleResponderMove:function(e){\n\n\nif(this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN){\nreturn;}\n\n\n\nif(!this.state.touchable.positionOnActivate){\nreturn;}\n\n\nvar positionOnActivate=this.state.touchable.positionOnActivate;\nvar dimensionsOnActivate=this.state.touchable.dimensionsOnActivate;\nvar pressRectOffset=this.touchableGetPressRectOffset?\nthis.touchableGetPressRectOffset():null;\nvar pressExpandLeft=\npressRectOffset.left != null?pressRectOffset.left:PRESS_EXPAND_PX;\nvar pressExpandTop=\npressRectOffset.top != null?pressRectOffset.top:PRESS_EXPAND_PX;\nvar pressExpandRight=\npressRectOffset.right != null?pressRectOffset.right:PRESS_EXPAND_PX;\nvar pressExpandBottom=\npressRectOffset.bottom != null?pressRectOffset.bottom:PRESS_EXPAND_PX;\n\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch && touch.pageX;\nvar pageY=touch && touch.pageY;\n\nif(this.pressInLocation){\nvar movedDistance=this._getDistanceBetweenPoints(pageX,pageY,this.pressInLocation.pageX,this.pressInLocation.pageY);\nif(movedDistance > LONG_PRESS_ALLOWED_MOVEMENT){\nthis._cancelLongPressDelayTimeout();}}\n\n\n\nvar isTouchWithinActive=\npageX > positionOnActivate.left - pressExpandLeft && \npageY > positionOnActivate.top - pressExpandTop && \npageX < \npositionOnActivate.left + \ndimensionsOnActivate.width + \npressExpandRight && \npageY < \npositionOnActivate.top + \ndimensionsOnActivate.height + \npressExpandBottom;\nif(isTouchWithinActive){\nthis._receiveSignal(Signals.ENTER_PRESS_RECT,e);}else \n{\nthis._cancelLongPressDelayTimeout();\nthis._receiveSignal(Signals.LEAVE_PRESS_RECT,e);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_remeasureMetricsOnActivation:function(){\nqueryLayoutByID(\nthis.state.touchable.responderID,\nnull,\nthis._handleQueryLayout);},\n\n\n\n_handleQueryLayout:function(l,t,w,h,globalX,globalY){\nthis.state.touchable.positionOnActivate && \nPosition.release(this.state.touchable.positionOnActivate);\nthis.state.touchable.dimensionsOnActivate && \nBoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\nthis.state.touchable.positionOnActivate = Position.getPooled(globalX,globalY);\nthis.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w,h);},\n\n\n_handleDelay:function(e){\nthis.touchableDelayTimeout = null;\nthis._receiveSignal(Signals.DELAY,e);},\n\n\n_handleLongDelay:function(e){\nthis.longPressDelayTimeout = null;\nthis._receiveSignal(Signals.LONG_PRESS_DETECTED,e);},\n\n\n\n\n\n\n\n\n\n\n_receiveSignal:function(signal,e){\nvar curState=this.state.touchable.touchState;\nif(!(Transitions[curState] && Transitions[curState][signal])){\nthrow new Error(\n'Unrecognized signal `' + signal + '` or state `' + curState + \n'` for Touchable responder `' + this.state.touchable.responderID + '`');}\n\n\nvar nextState=Transitions[curState][signal];\nif(nextState === States.ERROR){\nthrow new Error(\n'Touchable cannot transition from `' + curState + '` to `' + signal + \n'` for responder `' + this.state.touchable.responderID + '`');}\n\n\nif(curState !== nextState){\nthis._performSideEffectsForTransition(curState,nextState,signal,e);\nthis.state.touchable.touchState = nextState;}},\n\n\n\n_cancelLongPressDelayTimeout:function(){\nthis.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\nthis.longPressDelayTimeout = null;},\n\n\n_isHighlight:function(state){\nreturn state === States.RESPONDER_ACTIVE_PRESS_IN || \nstate === States.RESPONDER_ACTIVE_LONG_PRESS_IN;},\n\n\n_savePressInLocation:function(e){\nvar touch=TouchEventUtils.extractSingleTouch(e.nativeEvent);\nvar pageX=touch && touch.pageX;\nvar pageY=touch && touch.pageY;\nthis.pressInLocation = {pageX:pageX,pageY:pageY};},\n\n\n_getDistanceBetweenPoints:function(aX,aY,bX,bY){\nvar deltaX=aX - bX;\nvar deltaY=aY - bY;\nreturn Math.sqrt(deltaX * deltaX + deltaY * deltaY);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n_performSideEffectsForTransition:function(curState,nextState,signal,e){\nvar curIsHighlight=this._isHighlight(curState);\nvar newIsHighlight=this._isHighlight(nextState);\n\nvar isFinalSignal=\nsignal === Signals.RESPONDER_TERMINATED || \nsignal === Signals.RESPONDER_RELEASE;\n\nif(isFinalSignal){\nthis._cancelLongPressDelayTimeout();}\n\n\nif(!IsActive[curState] && IsActive[nextState]){\nthis._remeasureMetricsOnActivation();}\n\n\nif(IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED){\nthis.touchableHandleLongPress && this.touchableHandleLongPress();}\n\n\nif(newIsHighlight && !curIsHighlight){\nthis._savePressInLocation(e);\nthis.touchableHandleActivePressIn && this.touchableHandleActivePressIn();}else \nif(!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut){\nif(this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()){\nthis.pressOutDelayTimeout = this.setTimeout(function(){\nthis.touchableHandleActivePressOut();},\nthis.touchableGetPressOutDelayMS());}else \n{\nthis.touchableHandleActivePressOut();}}\n\n\n\nif(IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE){\nvar hasLongPressHandler=!!this.props.onLongPress;\nvar pressIsLongButStillCallOnPress=\nIsLongPressingIn[curState] && (\n!hasLongPressHandler || \n!this.touchableLongPressCancelsPress());\n\n\nvar shouldInvokePress=!IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\nif(shouldInvokePress && this.touchableHandlePress){\nthis.touchableHandlePress(e);}}\n\n\n\nthis.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\nthis.touchableDelayTimeout = null;}};\n\n\n\n\nvar Touchable={\nMixin:TouchableMixin};\n\n\nmodule.exports = Touchable;","sourceCode":"/**\n * @providesModule Touchable\n */\n\n'use strict';\n\nvar BoundingDimensions = require('BoundingDimensions');\nvar Position = require('Position');\nvar TouchEventUtils = require('TouchEventUtils');\n\nvar keyMirror = require('keyMirror');\nvar queryLayoutByID = require('queryLayoutByID');\n\n/**\n * `Touchable`: Taps done right.\n *\n * You hook your `ResponderEventPlugin` events into `Touchable`. `Touchable`\n * will measure time/geometry and tells you when to give feedback to the user.\n *\n * ====================== Touchable Tutorial ===============================\n * The `Touchable` mixin helps you handle the \"press\" interaction. It analyzes\n * the geometry of elements, and observes when another responder (scroll view\n * etc) has stolen the touch lock. It notifies your component when it should\n * give feedback to the user. (bouncing/highlighting/unhighlighting).\n *\n * - When a touch was activated (typically you highlight)\n * - When a touch was deactivated (typically you unhighlight)\n * - When a touch was \"pressed\" - a touch ended while still within the geometry\n * of the element, and no other element (like scroller) has \"stolen\" touch\n * lock (\"responder\") (Typically you bounce the element).\n *\n * A good tap interaction isn't as simple as you might think. There should be a\n * slight delay before showing a highlight when starting a touch. If a\n * subsequent touch move exceeds the boundary of the elemement, it should\n * unhighlight, but if that same touch is brought back within the boundary, it\n * should rehighlight again. A touch can move in and out of that boundary\n * several times, each time toggling highlighting, but a \"press\" is only\n * triggered if that touch ends while within the element's boundary and no\n * scroller (or anything else) has stolen the lock on touches.\n *\n * To create a new type of component that handles interaction using the\n * `Touchable` mixin, do the following:\n *\n * - Initialize the `Touchable` state.\n *\n * getInitialState: function() {\n * return merge(this.touchableGetInitialState(), yourComponentState);\n * }\n *\n * - Choose the rendered component who's touches should start the interactive\n * sequence. On that rendered node, forward all `Touchable` responder\n * handlers. You can choose any rendered node you like. Choose a node who's\n * hit target you'd like to instigate the interaction sequence:\n *\n * // In render function:\n * return (\n * <div\n * onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n * onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n * onResponderGrant={this.touchableHandleResponderGrant}\n * onResponderMove={this.touchableHandleResponderMove}\n * onResponderRelease={this.touchableHandleResponderRelease}\n * onResponderTerminate={this.touchableHandleResponderTerminate}>\n * <div>\n * Even though the hit detection/interactions are triggered by the\n * wrapping (typically larger) node, we usually end up implementing\n * custom logic that highlights this inner one.\n * </div>\n * </div>\n * );\n *\n * - You may set up your own handlers for each of these events, so long as you\n * also invoke the `touchable*` handlers inside of your custom handler.\n *\n * - Implement the handlers on your component class in order to provide\n * feedback to the user. See documentation for each of these class methods\n * that you should implement.\n *\n * touchableHandlePress: function() {\n * this.performBounceAnimation(); // or whatever you want to do.\n * },\n * touchableHandleActivePressIn: function() {\n * this.beginHighlighting(...); // Whatever you like to convey activation\n * },\n * touchableHandleActivePressOut: function() {\n * this.endHighlighting(...); // Whatever you like to convey deactivation\n * },\n *\n * - There are more advanced methods you can implement (see documentation below):\n * touchableGetHighlightDelayMS: function() {\n * return 20;\n * }\n * // In practice, *always* use a predeclared constant (conserve memory).\n * touchableGetPressRectOffset: function() {\n * return {top: 20, left: 20, right: 20, bottom: 100};\n * }\n */\n\n/**\n * Touchable states.\n */\nvar States = keyMirror({\n NOT_RESPONDER: null, // Not the responder\n RESPONDER_INACTIVE_PRESS_IN: null, // Responder, inactive, in the `PressRect`\n RESPONDER_INACTIVE_PRESS_OUT: null, // Responder, inactive, out of `PressRect`\n RESPONDER_ACTIVE_PRESS_IN: null, // Responder, active, in the `PressRect`\n RESPONDER_ACTIVE_PRESS_OUT: null, // Responder, active, out of `PressRect`\n RESPONDER_ACTIVE_LONG_PRESS_IN: null, // Responder, active, in the `PressRect`, after long press threshold\n RESPONDER_ACTIVE_LONG_PRESS_OUT: null, // Responder, active, out of `PressRect`, after long press threshold\n ERROR: null\n});\n\n/**\n * Quick lookup map for states that are considered to be \"active\"\n */\nvar IsActive = {\n RESPONDER_ACTIVE_PRESS_OUT: true,\n RESPONDER_ACTIVE_PRESS_IN: true\n};\n\n/**\n * Quick lookup for states that are considered to be \"pressing\" and are\n * therefore eligible to result in a \"selection\" if the press stops.\n */\nvar IsPressingIn = {\n RESPONDER_INACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_PRESS_IN: true,\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\nvar IsLongPressingIn = {\n RESPONDER_ACTIVE_LONG_PRESS_IN: true,\n};\n\n/**\n * Inputs to the state machine.\n */\nvar Signals = keyMirror({\n DELAY: null,\n RESPONDER_GRANT: null,\n RESPONDER_RELEASE: null,\n RESPONDER_TERMINATED: null,\n ENTER_PRESS_RECT: null,\n LEAVE_PRESS_RECT: null,\n LONG_PRESS_DETECTED: null,\n});\n\n/**\n * Mapping from States x Signals => States\n */\nvar Transitions = {\n NOT_RESPONDER: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.ERROR,\n RESPONDER_TERMINATED: States.ERROR,\n ENTER_PRESS_RECT: States.ERROR,\n LEAVE_PRESS_RECT: States.ERROR,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_IN: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_IN,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_INACTIVE_PRESS_OUT: {\n DELAY: States.RESPONDER_ACTIVE_PRESS_OUT,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_INACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n RESPONDER_ACTIVE_LONG_PRESS_IN: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n },\n RESPONDER_ACTIVE_LONG_PRESS_OUT: {\n DELAY: States.ERROR,\n RESPONDER_GRANT: States.ERROR,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_IN,\n LEAVE_PRESS_RECT: States.RESPONDER_ACTIVE_LONG_PRESS_OUT,\n LONG_PRESS_DETECTED: States.ERROR,\n },\n error: {\n DELAY: States.NOT_RESPONDER,\n RESPONDER_GRANT: States.RESPONDER_INACTIVE_PRESS_IN,\n RESPONDER_RELEASE: States.NOT_RESPONDER,\n RESPONDER_TERMINATED: States.NOT_RESPONDER,\n ENTER_PRESS_RECT: States.NOT_RESPONDER,\n LEAVE_PRESS_RECT: States.NOT_RESPONDER,\n LONG_PRESS_DETECTED: States.NOT_RESPONDER,\n }\n};\n\n// ==== Typical Constants for integrating into UI components ====\n// var HIT_EXPAND_PX = 20;\n// var HIT_VERT_OFFSET_PX = 10;\nvar HIGHLIGHT_DELAY_MS = 130;\n\nvar PRESS_EXPAND_PX = 20;\n\nvar LONG_PRESS_THRESHOLD = 500;\n\nvar LONG_PRESS_DELAY_MS = LONG_PRESS_THRESHOLD - HIGHLIGHT_DELAY_MS;\n\nvar LONG_PRESS_ALLOWED_MOVEMENT = 10;\n\n// Default amount \"active\" region protrudes beyond box\n\n/**\n * By convention, methods prefixed with underscores are meant to be @private,\n * and not @protected. Mixers shouldn't access them - not even to provide them\n * as callback handlers.\n *\n *\n * ========== Geometry =========\n * `Touchable` only assumes that there exists a `HitRect` node. The `PressRect`\n * is an abstract box that is extended beyond the `HitRect`.\n *\n * +--------------------------+\n * | | - \"Start\" events in `HitRect` cause `HitRect`\n * | +--------------------+ | to become the responder.\n * | | +--------------+ | | - `HitRect` is typically expanded around\n * | | | | | | the `VisualRect`, but shifted downward.\n * | | | VisualRect | | | - After pressing down, after some delay,\n * | | | | | | and before letting up, the Visual React\n * | | +--------------+ | | will become \"active\". This makes it eligible\n * | | HitRect | | for being highlighted (so long as the\n * | +--------------------+ | press remains in the `PressRect`).\n * | PressRect o |\n * +----------------------|---+\n * Out Region |\n * +-----+ This gap between the `HitRect` and\n * `PressRect` allows a touch to move far away\n * from the original hit rect, and remain\n * highlighted, and eligible for a \"Press\".\n * Customize this via\n * `touchableGetPressRectOffset()`.\n *\n *\n *\n * ======= State Machine =======\n *\n * +-------------+ <---+ RESPONDER_RELEASE\n * |NOT_RESPONDER|\n * +-------------+ <---+ RESPONDER_TERMINATED\n * +\n * | RESPONDER_GRANT (HitRect)\n * v\n * +---------------------------+ DELAY +-------------------------+ T + DELAY +------------------------------+\n * |RESPONDER_INACTIVE_PRESS_IN|+-------->|RESPONDER_ACTIVE_PRESS_IN| +------------> |RESPONDER_ACTIVE_LONG_PRESS_IN|\n * +---------------------------+ +-------------------------+ +------------------------------+\n * + ^ + ^ + ^\n * |LEAVE_ |ENTER_ |LEAVE_ |ENTER_ |LEAVE_ |ENTER_\n * |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT |PRESS_RECT\n * | | | | | |\n * v + v + v +\n * +----------------------------+ DELAY +--------------------------+ +-------------------------------+\n * |RESPONDER_INACTIVE_PRESS_OUT|+------->|RESPONDER_ACTIVE_PRESS_OUT| |RESPONDER_ACTIVE_LONG_PRESS_OUT|\n * +----------------------------+ +--------------------------+ +-------------------------------+\n *\n * T + DELAY => LONG_PRESS_DELAY_MS + DELAY\n *\n * Not drawn are the side effects of each transition. The most important side\n * effect is the `touchableHandlePress` abstract method invocation that occurs\n * when a responder is released while in either of the \"Press\" states.\n *\n * The other important side effects are the highlight abstract method\n * invocations (internal callbacks) to be implemented by the mixer.\n *\n *\n * @lends Touchable.prototype\n */\nvar TouchableMixin = {\n /**\n * It's prefer that mixins determine state in this way, having the class\n * explicitly mix the state in the one and only `getInitialState` method.\n *\n * @return {object} State object to be placed inside of\n * `this.state.touchable`.\n */\n touchableGetInitialState: function() {\n return {\n touchable: {touchState: undefined, responderID: null}\n };\n },\n\n // ==== Hooks to Gesture Responder system ====\n /**\n * Must return true if embedded in a native platform scroll view.\n */\n touchableHandleResponderTerminationRequest: function() {\n return !this.props.rejectResponderTermination;\n },\n\n /**\n * Must return true to start the process of `Touchable`.\n */\n touchableHandleStartShouldSetResponder: function() {\n return true;\n },\n\n /**\n * Return true to cancel press on long press.\n */\n touchableLongPressCancelsPress: function () {\n return true;\n },\n\n /**\n * Place as callback for a DOM element's `onResponderGrant` event.\n * @param {SyntheticEvent} e Synthetic event from event system.\n * @param {string} dispatchID ID of node that e was dispatched to.\n *\n */\n touchableHandleResponderGrant: function(e, dispatchID) {\n // Since e is used in a callback invoked on another event loop\n // (as in setTimeout etc), we need to call e.persist() on the\n // event to make sure it doesn't get reused in the event object pool.\n e.persist();\n\n this.pressOutDelayTimeout && clearTimeout(this.pressOutDelayTimeout);\n this.pressOutDelayTimeout = null;\n\n this.state.touchable.touchState = States.NOT_RESPONDER;\n this.state.touchable.responderID = dispatchID;\n this._receiveSignal(Signals.RESPONDER_GRANT, e);\n var delayMS =\n this.touchableGetHighlightDelayMS !== undefined ?\n Math.max(this.touchableGetHighlightDelayMS(), 0) : HIGHLIGHT_DELAY_MS;\n delayMS = isNaN(delayMS) ? HIGHLIGHT_DELAY_MS : delayMS;\n if (delayMS !== 0) {\n this.touchableDelayTimeout = setTimeout(\n this._handleDelay.bind(this, e),\n delayMS\n );\n } else {\n this._handleDelay(e);\n }\n\n var longDelayMS =\n this.touchableGetLongPressDelayMS !== undefined ?\n Math.max(this.touchableGetLongPressDelayMS(), 10) : LONG_PRESS_DELAY_MS;\n longDelayMS = isNaN(longDelayMS) ? LONG_PRESS_DELAY_MS : longDelayMS;\n this.longPressDelayTimeout = setTimeout(\n this._handleLongDelay.bind(this, e),\n longDelayMS + delayMS\n );\n },\n\n /**\n * Place as callback for a DOM element's `onResponderRelease` event.\n */\n touchableHandleResponderRelease: function(e) {\n this._receiveSignal(Signals.RESPONDER_RELEASE, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderTerminate` event.\n */\n touchableHandleResponderTerminate: function(e) {\n this._receiveSignal(Signals.RESPONDER_TERMINATED, e);\n },\n\n /**\n * Place as callback for a DOM element's `onResponderMove` event.\n */\n touchableHandleResponderMove: function(e) {\n // Not enough time elapsed yet, wait for highlight -\n // this is just a perf optimization.\n if (this.state.touchable.touchState === States.RESPONDER_INACTIVE_PRESS_IN) {\n return;\n }\n\n // Measurement may not have returned yet.\n if (!this.state.touchable.positionOnActivate) {\n return;\n }\n\n var positionOnActivate = this.state.touchable.positionOnActivate;\n var dimensionsOnActivate = this.state.touchable.dimensionsOnActivate;\n var pressRectOffset = this.touchableGetPressRectOffset ?\n this.touchableGetPressRectOffset() : null;\n var pressExpandLeft =\n pressRectOffset.left != null ? pressRectOffset.left : PRESS_EXPAND_PX;\n var pressExpandTop =\n pressRectOffset.top != null ? pressRectOffset.top : PRESS_EXPAND_PX;\n var pressExpandRight =\n pressRectOffset.right != null ? pressRectOffset.right : PRESS_EXPAND_PX;\n var pressExpandBottom =\n pressRectOffset.bottom != null ? pressRectOffset.bottom : PRESS_EXPAND_PX;\n\n var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n\n if (this.pressInLocation) {\n var movedDistance = this._getDistanceBetweenPoints(pageX, pageY, this.pressInLocation.pageX, this.pressInLocation.pageY);\n if (movedDistance > LONG_PRESS_ALLOWED_MOVEMENT) {\n this._cancelLongPressDelayTimeout();\n }\n }\n\n var isTouchWithinActive =\n pageX > positionOnActivate.left - pressExpandLeft &&\n pageY > positionOnActivate.top - pressExpandTop &&\n pageX <\n positionOnActivate.left +\n dimensionsOnActivate.width +\n pressExpandRight &&\n pageY <\n positionOnActivate.top +\n dimensionsOnActivate.height +\n pressExpandBottom;\n if (isTouchWithinActive) {\n this._receiveSignal(Signals.ENTER_PRESS_RECT, e);\n } else {\n this._cancelLongPressDelayTimeout();\n this._receiveSignal(Signals.LEAVE_PRESS_RECT, e);\n }\n },\n\n // ==== Abstract Application Callbacks ====\n\n /**\n * Invoked when the item should be highlighted. Mixers should implement this\n * to visually distinguish the `VisualRect` so that the user knows that\n * releasing a touch will result in a \"selection\" (analog to click).\n *\n * @abstract\n * touchableHandleActivePressIn: function,\n */\n\n /**\n * Invoked when the item is \"active\" (in that it is still eligible to become\n * a \"select\") but the touch has left the `PressRect`. Usually the mixer will\n * want to unhighlight the `VisualRect`. If the user (while pressing) moves\n * back into the `PressRect` `touchableHandleActivePressIn` will be invoked\n * again and the mixer should probably highlight the `VisualRect` again. This\n * event will not fire on an `touchEnd/mouseUp` event, only move events while\n * the user is depressing the mouse/touch.\n *\n * @abstract\n * touchableHandleActivePressOut: function\n */\n\n /**\n * Invoked when the item is \"selected\" - meaning the interaction ended by\n * letting up while the item was either in the state\n * `RESPONDER_ACTIVE_PRESS_IN` or `RESPONDER_INACTIVE_PRESS_IN`.\n *\n * @abstract\n * touchableHandlePress: function\n */\n\n /**\n * Invoked when the item is long pressed - meaning the interaction ended by\n * letting up while the item was in `RESPONDER_ACTIVE_LONG_PRESS_IN`. If\n * `touchableHandleLongPress` is *not* provided, `touchableHandlePress` will\n * be called as it normally is. If `touchableHandleLongPress` is provided, by\n * default any `touchableHandlePress` callback will not be invoked. To\n * override this default behavior, override `touchableLongPressCancelsPress`\n * to return false. As a result, `touchableHandlePress` will be called when\n * lifting up, even if `touchableHandleLongPress` has also been called.\n *\n * @abstract\n * touchableHandleLongPress: function\n */\n\n /**\n * Returns the number of millis to wait before triggering a highlight.\n *\n * @abstract\n * touchableGetHighlightDelayMS: function\n */\n\n /**\n * Returns the amount to extend the `HitRect` into the `PressRect`. Positive\n * numbers mean the size expands outwards.\n *\n * @abstract\n * touchableGetPressRectOffset: function\n */\n\n\n\n // ==== Internal Logic ====\n\n /**\n * Measures the `HitRect` node on activation. The Bounding rectangle is with\n * respect to viewport - not page, so adding the `pageXOffset/pageYOffset`\n * should result in points that are in the same coordinate system as an\n * event's `globalX/globalY` data values.\n *\n * - Consider caching this for the lifetime of the component, or possibly\n * being able to share this cache between any `ScrollMap` view.\n *\n * @sideeffects\n * @private\n */\n _remeasureMetricsOnActivation: function() {\n queryLayoutByID(\n this.state.touchable.responderID,\n null,\n this._handleQueryLayout\n );\n },\n\n _handleQueryLayout: function(l, t, w, h, globalX, globalY) {\n this.state.touchable.positionOnActivate &&\n Position.release(this.state.touchable.positionOnActivate);\n this.state.touchable.dimensionsOnActivate &&\n BoundingDimensions.release(this.state.touchable.dimensionsOnActivate);\n this.state.touchable.positionOnActivate = Position.getPooled(globalX, globalY);\n this.state.touchable.dimensionsOnActivate = BoundingDimensions.getPooled(w, h);\n },\n\n _handleDelay: function(e) {\n this.touchableDelayTimeout = null;\n this._receiveSignal(Signals.DELAY, e);\n },\n\n _handleLongDelay: function(e) {\n this.longPressDelayTimeout = null;\n this._receiveSignal(Signals.LONG_PRESS_DETECTED, e);\n },\n\n /**\n * Receives a state machine signal, performs side effects of the transition\n * and stores the new state. Validates the transition as well.\n *\n * @param {Signals} signal State machine signal.\n * @throws Error if invalid state transition or unrecognized signal.\n * @sideeffects\n */\n _receiveSignal: function(signal, e) {\n var curState = this.state.touchable.touchState;\n if (!(Transitions[curState] && Transitions[curState][signal])) {\n throw new Error(\n 'Unrecognized signal `' + signal + '` or state `' + curState +\n '` for Touchable responder `' + this.state.touchable.responderID + '`'\n );\n }\n var nextState = Transitions[curState][signal];\n if (nextState === States.ERROR) {\n throw new Error(\n 'Touchable cannot transition from `' + curState + '` to `' + signal +\n '` for responder `' + this.state.touchable.responderID + '`'\n );\n }\n if (curState !== nextState) {\n this._performSideEffectsForTransition(curState, nextState, signal, e);\n this.state.touchable.touchState = nextState;\n }\n },\n\n _cancelLongPressDelayTimeout: function () {\n this.longPressDelayTimeout && clearTimeout(this.longPressDelayTimeout);\n this.longPressDelayTimeout = null;\n },\n\n _isHighlight: function (state) {\n return state === States.RESPONDER_ACTIVE_PRESS_IN ||\n state === States.RESPONDER_ACTIVE_LONG_PRESS_IN;\n },\n\n _savePressInLocation: function(e) {\n var touch = TouchEventUtils.extractSingleTouch(e.nativeEvent);\n var pageX = touch && touch.pageX;\n var pageY = touch && touch.pageY;\n this.pressInLocation = {pageX: pageX, pageY: pageY};\n },\n\n _getDistanceBetweenPoints: function (aX, aY, bX, bY) {\n var deltaX = aX - bX;\n var deltaY = aY - bY;\n return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n },\n\n /**\n * Will perform a transition between touchable states, and identify any\n * highlighting or unhighlighting that must be performed for this particular\n * transition.\n *\n * @param {States} curState Current Touchable state.\n * @param {States} nextState Next Touchable state.\n * @param {Signal} signal Signal that triggered the transition.\n * @param {Event} e Native event.\n * @sideeffects\n */\n _performSideEffectsForTransition: function(curState, nextState, signal, e) {\n var curIsHighlight = this._isHighlight(curState);\n var newIsHighlight = this._isHighlight(nextState);\n\n var isFinalSignal =\n signal === Signals.RESPONDER_TERMINATED ||\n signal === Signals.RESPONDER_RELEASE;\n\n if (isFinalSignal) {\n this._cancelLongPressDelayTimeout();\n }\n\n if (!IsActive[curState] && IsActive[nextState]) {\n this._remeasureMetricsOnActivation();\n }\n\n if (IsPressingIn[curState] && signal === Signals.LONG_PRESS_DETECTED) {\n this.touchableHandleLongPress && this.touchableHandleLongPress();\n }\n\n if (newIsHighlight && !curIsHighlight) {\n this._savePressInLocation(e);\n this.touchableHandleActivePressIn && this.touchableHandleActivePressIn();\n } else if (!newIsHighlight && curIsHighlight && this.touchableHandleActivePressOut) {\n if (this.touchableGetPressOutDelayMS && this.touchableGetPressOutDelayMS()) {\n this.pressOutDelayTimeout = this.setTimeout(function() {\n this.touchableHandleActivePressOut();\n }, this.touchableGetPressOutDelayMS());\n } else {\n this.touchableHandleActivePressOut();\n }\n }\n\n if (IsPressingIn[curState] && signal === Signals.RESPONDER_RELEASE) {\n var hasLongPressHandler = !!this.props.onLongPress;\n var pressIsLongButStillCallOnPress =\n IsLongPressingIn[curState] && ( // We *are* long pressing..\n !hasLongPressHandler || // But either has no long handler\n !this.touchableLongPressCancelsPress() // or we're told to ignore it.\n );\n\n var shouldInvokePress = !IsLongPressingIn[curState] || pressIsLongButStillCallOnPress;\n if (shouldInvokePress && this.touchableHandlePress) {\n this.touchableHandlePress(e);\n }\n }\n\n this.touchableDelayTimeout && clearTimeout(this.touchableDelayTimeout);\n this.touchableDelayTimeout = null;\n }\n\n};\n\nvar Touchable = {\n Mixin: TouchableMixin\n};\n\nmodule.exports = Touchable;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/interactions/Touchable/Touchable.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/BoundingDimensions.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\n\n\n\n\n\n\n\n\nfunction BoundingDimensions(width,height){\nthis.width = width;\nthis.height = height;}\n\n\n\n\n\n\nBoundingDimensions.getPooledFromElement = function(element){\nreturn BoundingDimensions.getPooled(\nelement.offsetWidth,\nelement.offsetHeight);};\n\n\n\nPooledClass.addPoolingTo(BoundingDimensions,twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;","sourceCode":"/**\n * @providesModule BoundingDimensions\n */\n\n\"use strict\";\n\nvar PooledClass = require('PooledClass');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * PooledClass representing the bounding rectangle of a region.\n *\n * @param {number} width Width of bounding rectangle.\n * @param {number} height Height of bounding rectangle.\n * @constructor BoundingDimensions\n */\nfunction BoundingDimensions(width, height) {\n this.width = width;\n this.height = height;\n}\n\n/**\n * @param {HTMLElement} element Element to return `BoundingDimensions` for.\n * @return {BoundingDimensions} Bounding dimensions of `element`.\n */\nBoundingDimensions.getPooledFromElement = function(element) {\n return BoundingDimensions.getPooled(\n element.offsetWidth,\n element.offsetHeight\n );\n};\n\nPooledClass.addPoolingTo(BoundingDimensions, twoArgumentPooler);\n\nmodule.exports = BoundingDimensions;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/BoundingDimensions.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/Position.js":{"data":{"code":"\"use strict\";\n\n\n\n\n\nvar PooledClass=require('PooledClass');\n\nvar twoArgumentPooler=PooledClass.twoArgumentPooler;\n\n\n\n\n\n\n\n\n\nfunction Position(left,top){\nthis.left = left;\nthis.top = top;}\n\n\nPooledClass.addPoolingTo(Position,twoArgumentPooler);\n\nmodule.exports = Position;","sourceCode":"/**\n * @providesModule Position\n */\n\n\"use strict\";\n\nvar PooledClass = require('PooledClass');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\n/**\n * Position does not expose methods for construction via an `HTMLDOMElement`,\n * because it isn't meaningful to construct such a thing without first defining\n * a frame of refrence.\n *\n * @param {number} windowStartKey Key that window starts at.\n * @param {number} windowEndKey Key that window ends at.\n */\nfunction Position(left, top) {\n this.left = left;\n this.top = top;\n}\n\nPooledClass.addPoolingTo(Position, twoArgumentPooler);\n\nmodule.exports = Position;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/react_contrib/pooledClasses/Position.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/TouchEventUtils.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nTouchEventUtils={\n\n\n\n\n\n\n\n\n\n\nextractSingleTouch:function(nativeEvent){\nvar touches=nativeEvent.touches;\nvar changedTouches=nativeEvent.changedTouches;\nvar hasTouches=touches && touches.length > 0;\nvar hasChangedTouches=changedTouches && changedTouches.length > 0;\n\nreturn !hasTouches && hasChangedTouches?changedTouches[0]:\nhasTouches?touches[0]:\nnativeEvent;}};\n\n\n\nmodule.exports = TouchEventUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchEventUtils\n */\n\nvar TouchEventUtils = {\n /**\n * Utility function for common case of extracting out the primary touch from a\n * touch event.\n * - `touchEnd` events usually do not have the `touches` property.\n * http://stackoverflow.com/questions/3666929/\n * mobile-sarai-touchend-event-not-firing-when-last-touch-is-removed\n *\n * @param {Event} nativeEvent Native event that may or may not be a touch.\n * @return {TouchesObject?} an object with pageX and pageY or null.\n */\n extractSingleTouch: function(nativeEvent) {\n var touches = nativeEvent.touches;\n var changedTouches = nativeEvent.changedTouches;\n var hasTouches = touches && touches.length > 0;\n var hasChangedTouches = changedTouches && changedTouches.length > 0;\n\n return !hasTouches && hasChangedTouches ? changedTouches[0] :\n hasTouches ? touches[0] :\n nativeEvent;\n }\n};\n\nmodule.exports = TouchEventUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/TouchEventUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNativeTagHandles=require('ReactNativeTagHandles');\nvar RCTUIManager=require('NativeModules').UIManager;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar queryLayoutByID=function(\nrootNodeID,\nonError,\nonSuccess)\n{\n\nRCTUIManager.measure(\nReactNativeTagHandles.rootNodeIDToTag[rootNodeID],\nonSuccess);};\n\n\n\nmodule.exports = queryLayoutByID;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule queryLayoutByID\n * @flow\n */\n'use strict';\n\nvar ReactNativeTagHandles = require('ReactNativeTagHandles');\nvar RCTUIManager = require('NativeModules').UIManager;\n\ntype OnSuccessCallback = (\n left: number,\n top: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n) => void\n\n// I don't know what type error is...\ntype OnErrorCallback = (error: any) => void\n\n/**\n * Queries the layout of a view. The layout does not reflect the element as\n * seen by the user, rather it reflects the position within the layout system,\n * before any transforms are applied.\n *\n * The only other requirement is that the `pageX, pageY` values be in the same\n * coordinate system that events' `pageX/Y` are reported. That means that for\n * the web, `pageXOffset/pageYOffset` should be added to to\n * getBoundingClientRect to make consistent with touches.\n *\n * var pageXOffset = window.pageXOffset;\n * var pageYOffset = window.pageYOffset;\n *\n * This is an IOS specific implementation.\n *\n * @param {string} rootNodeID ID of the platform specific node to be measured.\n * @param {function} onError `func(error)`\n * @param {function} onSuccess `func(left, top, width, height, pageX, pageY)`\n */\nvar queryLayoutByID = function(\n rootNodeID: string,\n onError: OnErrorCallback,\n onSuccess: OnSuccessCallback\n): void {\n // Native bridge doesn't *yet* surface errors.\n RCTUIManager.measure(\n ReactNativeTagHandles.rootNodeIDToTag[rootNodeID],\n onSuccess\n );\n};\n\nmodule.exports = queryLayoutByID;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/RKBackendNode/queryLayoutByID.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInput.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar DocumentSelectionState=require('DocumentSelectionState');\nvar EventEmitter=require('EventEmitter');\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar RCTUIManager=require('NativeModules').UIManager;\nvar Platform=require('Platform');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar ReactChildren=require('ReactChildren');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TextInputState=require('TextInputState');\nvar TimerMixin=require('react-timer-mixin');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar createReactNativeComponentClass=require('createReactNativeComponentClass');\nvar emptyFunction=require('emptyFunction');\nvar invariant=require('invariant');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar onlyMultiline={\nonSelectionChange:true,\nonTextInput:true,\nchildren:true};\n\n\nvar notMultiline={\nonSubmitEditing:true};\n\n\nvar AndroidTextInputAttributes={\nautoCapitalize:true,\nautoCorrect:true,\nautoFocus:true,\ntextAlign:true,\ntextAlignVertical:true,\nkeyboardType:true,\nmultiline:true,\npassword:true,\nplaceholder:true,\nplaceholderTextColor:true,\ntext:true,\ntestID:true,\nunderlineColorAndroid:true};\n\n\nvar viewConfigAndroid={\nuiViewClassName:'AndroidTextInput',\nvalidAttributes:AndroidTextInputAttributes};\n\n\nvar RCTTextView=requireNativeComponent('RCTTextView',null);\nvar RCTTextField=requireNativeComponent('RCTTextField',null);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TextInput=React.createClass({displayName:'TextInput',\npropTypes:{\n\n\n\n\n\n\n\n\nautoCapitalize:PropTypes.oneOf([\n'none',\n'sentences',\n'words',\n'characters']),\n\n\n\n\nautoCorrect:PropTypes.bool,\n\n\n\nautoFocus:PropTypes.bool,\n\n\n\ntextAlign:PropTypes.oneOf([\n'start',\n'center',\n'end']),\n\ntextAlignVertical:PropTypes.oneOf([\n'top',\n'center',\n'bottom']),\n\n\n\n\neditable:PropTypes.bool,\n\n\n\nkeyboardType:PropTypes.oneOf([\n\n'default',\n'numeric',\n'email-address',\n\n'ascii-capable',\n'numbers-and-punctuation',\n'url',\n'number-pad',\n'phone-pad',\n'name-phone-pad',\n'decimal-pad',\n'twitter',\n'web-search']),\n\n\n\n\nreturnKeyType:PropTypes.oneOf([\n'default',\n'go',\n'google',\n'join',\n'next',\n'route',\n'search',\n'send',\n'yahoo',\n'done',\n'emergency-call']),\n\n\n\n\n\nenablesReturnKeyAutomatically:PropTypes.bool,\n\n\n\nmultiline:PropTypes.bool,\n\n\n\nonBlur:PropTypes.func,\n\n\n\nonFocus:PropTypes.func,\n\n\n\nonChange:PropTypes.func,\n\n\n\n\nonChangeText:PropTypes.func,\n\n\n\nonEndEditing:PropTypes.func,\n\n\n\nonSubmitEditing:PropTypes.func,\n\n\n\nonLayout:PropTypes.func,\n\n\n\n\npassword:PropTypes.bool,\n\n\n\nplaceholder:PropTypes.string,\n\n\n\nplaceholderTextColor:PropTypes.string,\n\n\n\n\nselectionState:PropTypes.instanceOf(DocumentSelectionState),\n\n\n\nvalue:PropTypes.string,\n\n\n\n\n\n\nbufferDelay:PropTypes.number,\n\n\n\n\n\ncontrolled:PropTypes.bool,\n\n\n\nclearButtonMode:PropTypes.oneOf([\n'never',\n'while-editing',\n'unless-editing',\n'always']),\n\n\n\n\nclearTextOnFocus:PropTypes.bool,\n\n\n\nselectTextOnFocus:PropTypes.bool,\n\n\n\nstyle:Text.propTypes.style,\n\n\n\ntestID:PropTypes.string,\n\n\n\nunderlineColorAndroid:PropTypes.string},\n\n\n\n\n\n\nmixins:[NativeMethodsMixin,TimerMixin],\n\nviewConfig:Platform.OS === 'ios'?RCTTextField.viewConfig:\nPlatform.OS === 'android'?viewConfigAndroid:{},\n\nisFocused:function(){\nreturn TextInputState.currentlyFocusedField() === \nReact.findNodeHandle(this.refs.input);},\n\n\ngetDefaultProps:function(){\nreturn {\nbufferDelay:100};},\n\n\n\ngetInitialState:function(){\nreturn {\nmostRecentEventCounter:0,\nbufferedValue:this.props.value};},\n\n\n\ncontextTypes:{\nonFocusRequested:React.PropTypes.func,\nfocusEmitter:React.PropTypes.instanceOf(EventEmitter)},\n\n\n_focusSubscription:undefined,\n\ncomponentDidMount:function(){var _this=this;\nif(!this.context.focusEmitter){\nif(this.props.autoFocus){\nthis.requestAnimationFrame(this.focus);}\n\nreturn;}\n\nthis._focusSubscription = this.context.focusEmitter.addListener(\n'focus',\nfunction(el){\nif(_this === el){\n_this.requestAnimationFrame(_this.focus);}else \nif(_this.isFocused()){\n_this.blur();}});\n\n\n\nif(this.props.autoFocus){\nthis.context.onFocusRequested(this);}},\n\n\n\ncomponentWillUnmount:function(){\nthis._focusSubscription && this._focusSubscription.remove();\nif(this.isFocused()){\nthis.blur();}},\n\n\n\n_bufferTimeout:undefined,\n\ncomponentWillReceiveProps:function(newProps){var _this2=this;\nif(newProps.value !== this.props.value){\nif(!this.isFocused()){\n\n\nthis.setState({bufferedValue:newProps.value});}else \n{\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nthis.clearTimeout(this._bufferTimeout);\nthis._bufferTimeout = this.setTimeout(\nfunction(){return _this2.setState({bufferedValue:newProps.value});},\nthis.props.bufferDelay);}}},\n\n\n\n\n\ngetChildContext:function(){\nreturn {isInAParentText:true};},\n\n\nchildContextTypes:{\nisInAParentText:React.PropTypes.bool},\n\n\nrender:function(){\nif(Platform.OS === 'ios'){\nreturn this._renderIOS();}else \nif(Platform.OS === 'android'){\nreturn this._renderAndroid();}},\n\n\n\n_renderIOS:function(){\nvar textContainer;\n\nvar props=Object.assign({},this.props);\nprops.style = [styles.input,this.props.style];\n\nif(!props.multiline){\nfor(var propKey in onlyMultiline) {\nif(props[propKey]){\nthrow new Error(\n'TextInput prop `' + propKey + '` is only supported with multiline.');}}\n\n\n\ntextContainer = \nReact.createElement(RCTTextField,_extends({\nref:'input'},\nprops,{\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChangeShouldSetResponder:function(){return true;},\ntext:this.state.bufferedValue}));}else \n\n{\nfor(var propKey in notMultiline) {\nif(props[propKey]){\nthrow new Error(\n'TextInput prop `' + propKey + '` cannot be used with multiline.');}}\n\n\n\n\nvar children=props.children;\nvar childCount=0;\nReactChildren.forEach(children,function(){return ++childCount;});\ninvariant(\n!(props.value && childCount),\n'Cannot specify both value and children.');\n\nif(childCount > 1){\nchildren = React.createElement(Text,null,children);}\n\nif(props.inputView){\nchildren = [children,props.inputView];}\n\ntextContainer = \nReact.createElement(RCTTextView,_extends({\nref:'input'},\nprops,{\nchildren:children,\nmostRecentEventCounter:this.state.mostRecentEventCounter,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonSelectionChange:this._onSelectionChange,\nonTextInput:this._onTextInput,\nonSelectionChangeShouldSetResponder:emptyFunction.thatReturnsTrue,\ntext:this.state.bufferedValue}));}\n\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\nrejectResponderTermination:true,\ntestID:props.testID},\ntextContainer));},\n\n\n\n\n_renderAndroid:function(){\nvar autoCapitalize=RCTUIManager.UIText.AutocapitalizationType[this.props.autoCapitalize];\nvar textAlign=\nRCTUIManager.AndroidTextInput.Constants.TextAlign[this.props.textAlign];\nvar textAlignVertical=\nRCTUIManager.AndroidTextInput.Constants.TextAlignVertical[this.props.textAlignVertical];\nvar children=this.props.children;\nvar childCount=0;\nReactChildren.forEach(children,function(){return ++childCount;});\ninvariant(\n!(this.props.value && childCount),\n'Cannot specify both value and children.');\n\nif(childCount > 1){\nchildren = React.createElement(Text,null,children);}\n\nvar textContainer=\nReact.createElement(AndroidTextInput,{\nref:'input',\nstyle:[this.props.style],\nautoCapitalize:autoCapitalize,\nautoCorrect:this.props.autoCorrect,\ntextAlign:textAlign,\ntextAlignVertical:textAlignVertical,\nkeyboardType:this.props.keyboardType,\nmultiline:this.props.multiline,\nonFocus:this._onFocus,\nonBlur:this._onBlur,\nonChange:this._onChange,\nonTextInput:this._onTextInput,\nonEndEditing:this.props.onEndEditing,\nonSubmitEditing:this.props.onSubmitEditing,\nonLayout:this.props.onLayout,\npassword:this.props.password || this.props.secureTextEntry,\nplaceholder:this.props.placeholder,\nplaceholderTextColor:this.props.placeholderTextColor,\ntext:this.state.bufferedValue,\nunderlineColorAndroid:this.props.underlineColorAndroid,\nchildren:children});\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,{\nonPress:this._onPress,\ntestID:this.props.testID},\ntextContainer));},\n\n\n\n\n_onFocus:function(event){\nif(this.props.onFocus){\nthis.props.onFocus(event);}},\n\n\n\n_onPress:function(event){\nthis.focus();},\n\n\n_onChange:function(event){\nif(this.props.controlled && event.nativeEvent.text !== this.props.value){\nthis.refs.input.setNativeProps({text:this.props.value});}\n\nthis.props.onChange && this.props.onChange(event);\nthis.props.onChangeText && this.props.onChangeText(event.nativeEvent.text);},\n\n\n_onBlur:function(event){\nthis.blur();\nif(this.props.onBlur){\nthis.props.onBlur(event);}},\n\n\n\n_onSelectionChange:function(event){\nif(this.props.selectionState){\nvar selection=event.nativeEvent.selection;\nthis.props.selectionState.update(selection.start,selection.end);}\n\nthis.props.onSelectionChange && this.props.onSelectionChange(event);},\n\n\n_onTextInput:function(event){\nthis.props.onTextInput && this.props.onTextInput(event);\nvar counter=event.nativeEvent.eventCounter;\nif(counter > this.state.mostRecentEventCounter){\nthis.setState({mostRecentEventCounter:counter});}}});\n\n\n\n\nvar styles=StyleSheet.create({\ninput:{\nalignSelf:'stretch'}});\n\n\n\nvar AndroidTextInput=createReactNativeComponentClass({\nvalidAttributes:AndroidTextInputAttributes,\nuiViewClassName:'AndroidTextInput'});\n\n\nmodule.exports = TextInput;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TextInput\n * @flow\n */\n'use strict';\n\nvar DocumentSelectionState = require('DocumentSelectionState');\nvar EventEmitter = require('EventEmitter');\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar RCTUIManager = require('NativeModules').UIManager;\nvar Platform = require('Platform');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar ReactChildren = require('ReactChildren');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TextInputState = require('TextInputState');\nvar TimerMixin = require('react-timer-mixin');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar createReactNativeComponentClass = require('createReactNativeComponentClass');\nvar emptyFunction = require('emptyFunction');\nvar invariant = require('invariant');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar onlyMultiline = {\n onSelectionChange: true,\n onTextInput: true,\n children: true,\n};\n\nvar notMultiline = {\n onSubmitEditing: true,\n};\n\nvar AndroidTextInputAttributes = {\n autoCapitalize: true,\n autoCorrect: true,\n autoFocus: true,\n textAlign: true,\n textAlignVertical: true,\n keyboardType: true,\n multiline: true,\n password: true,\n placeholder: true,\n placeholderTextColor: true,\n text: true,\n testID: true,\n underlineColorAndroid: true,\n};\n\nvar viewConfigAndroid = {\n uiViewClassName: 'AndroidTextInput',\n validAttributes: AndroidTextInputAttributes,\n};\n\nvar RCTTextView = requireNativeComponent('RCTTextView', null);\nvar RCTTextField = requireNativeComponent('RCTTextField', null);\n\ntype DefaultProps = {\n bufferDelay: number;\n};\n\ntype Event = Object;\n\n/**\n * A foundational component for inputting text into the app via a\n * keyboard. Props provide configurability for several features, such as\n * auto-correction, auto-capitalization, placeholder text, and different keyboard\n * types, such as a numeric keypad.\n *\n * The simplest use case is to plop down a `TextInput` and subscribe to the\n * `onChangeText` events to read the user input. There are also other events, such\n * as `onSubmitEditing` and `onFocus` that can be subscribed to. A simple\n * example:\n *\n * ```\n * <View>\n * <TextInput\n * style={{height: 40, borderColor: 'gray', borderWidth: 1}}\n * onChangeText={(text) => this.setState({input: text})}\n * />\n * <Text>{'user input: ' + this.state.input}</Text>\n * </View>\n * ```\n *\n * The `value` prop can be used to set the value of the input in order to make\n * the state of the component clear, but <TextInput> does not behave as a true\n * controlled component by default because all operations are asynchronous.\n * Setting `value` once is like setting the default value, but you can change it\n * continuously based on `onChangeText` events as well. If you really want to\n * force the component to always revert to the value you are setting, you can\n * set `controlled={true}`.\n *\n * The `multiline` prop is not supported in all releases, and some props are\n * multiline only.\n */\n\nvar TextInput = React.createClass({\n propTypes: {\n /**\n * Can tell TextInput to automatically capitalize certain characters.\n *\n * - characters: all characters,\n * - words: first letter of each word\n * - sentences: first letter of each sentence (default)\n * - none: don't auto capitalize anything\n */\n autoCapitalize: PropTypes.oneOf([\n 'none',\n 'sentences',\n 'words',\n 'characters',\n ]),\n /**\n * If false, disables auto-correct. Default value is true.\n */\n autoCorrect: PropTypes.bool,\n /**\n * If true, focuses the input on componentDidMount. Default value is false.\n */\n autoFocus: PropTypes.bool,\n /**\n * Set the position of the cursor from where editing will begin.\n */\n textAlign: PropTypes.oneOf([\n 'start',\n 'center',\n 'end',\n ]),\n textAlignVertical: PropTypes.oneOf([\n 'top',\n 'center',\n 'bottom',\n ]),\n /**\n * If false, text is not editable. Default value is true.\n */\n editable: PropTypes.bool,\n /**\n * Determines which keyboard to open, e.g.`numeric`.\n */\n keyboardType: PropTypes.oneOf([\n // Cross-platform\n 'default',\n 'numeric',\n 'email-address',\n // iOS-only\n 'ascii-capable',\n 'numbers-and-punctuation',\n 'url',\n 'number-pad',\n 'phone-pad',\n 'name-phone-pad',\n 'decimal-pad',\n 'twitter',\n 'web-search',\n ]),\n /**\n * Determines how the return key should look.\n */\n returnKeyType: PropTypes.oneOf([\n 'default',\n 'go',\n 'google',\n 'join',\n 'next',\n 'route',\n 'search',\n 'send',\n 'yahoo',\n 'done',\n 'emergency-call',\n ]),\n /**\n * If true, the keyboard disables the return key when there is no text and\n * automatically enables it when there is text. Default value is false.\n */\n enablesReturnKeyAutomatically: PropTypes.bool,\n /**\n * If true, the text input can be multiple lines. Default value is false.\n */\n multiline: PropTypes.bool,\n /**\n * Callback that is called when the text input is blurred\n */\n onBlur: PropTypes.func,\n /**\n * Callback that is called when the text input is focused\n */\n onFocus: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n */\n onChange: PropTypes.func,\n /**\n * Callback that is called when the text input's text changes.\n * Changed text is passed as an argument to the callback handler.\n */\n onChangeText: PropTypes.func,\n /**\n * Callback that is called when text input ends.\n */\n onEndEditing: PropTypes.func,\n /**\n * Callback that is called when the text input's submit button is pressed.\n */\n onSubmitEditing: PropTypes.func,\n /**\n * Invoked on mount and layout changes with {x, y, width, height}.\n */\n onLayout: PropTypes.func,\n /**\n * If true, the text input obscures the text entered so that sensitive text\n * like passwords stay secure. Default value is false.\n */\n password: PropTypes.bool,\n /**\n * The string that will be rendered before text input has been entered\n */\n placeholder: PropTypes.string,\n /**\n * The text color of the placeholder string\n */\n placeholderTextColor: PropTypes.string,\n /**\n * See DocumentSelectionState.js, some state that is responsible for\n * maintaining selection information for a document\n */\n selectionState: PropTypes.instanceOf(DocumentSelectionState),\n /**\n * The default value for the text input\n */\n value: PropTypes.string,\n /**\n * This helps avoid drops characters due to race conditions between JS and\n * the native text input. The default should be fine, but if you're\n * potentially doing very slow operations on every keystroke then you may\n * want to try increasing this.\n */\n bufferDelay: PropTypes.number,\n /**\n * If you really want this to behave as a controlled component, you can set\n * this true, but you will probably see flickering, dropped keystrokes,\n * and/or laggy typing, depending on how you process onChange events.\n */\n controlled: PropTypes.bool,\n /**\n * When the clear button should appear on the right side of the text view\n */\n clearButtonMode: PropTypes.oneOf([\n 'never',\n 'while-editing',\n 'unless-editing',\n 'always',\n ]),\n /**\n * If true, clears the text field automatically when editing begins\n */\n clearTextOnFocus: PropTypes.bool,\n /**\n * If true, selected the text automatically when editing begins\n */\n selectTextOnFocus: PropTypes.bool,\n /**\n * Styles\n */\n style: Text.propTypes.style,\n /**\n * Used to locate this view in end-to-end tests.\n */\n testID: PropTypes.string,\n /**\n * The color of the textInput underline. Is only supported on Android.\n */\n underlineColorAndroid: PropTypes.string,\n },\n\n /**\n * `NativeMethodsMixin` will look for this when invoking `setNativeProps`. We\n * make `this` look like an actual native component class.\n */\n mixins: [NativeMethodsMixin, TimerMixin],\n\n viewConfig: ((Platform.OS === 'ios' ? RCTTextField.viewConfig :\n (Platform.OS === 'android' ? viewConfigAndroid : {})) : Object),\n\n isFocused: function(): boolean {\n return TextInputState.currentlyFocusedField() ===\n React.findNodeHandle(this.refs.input);\n },\n\n getDefaultProps: function(): DefaultProps {\n return {\n bufferDelay: 100,\n };\n },\n\n getInitialState: function() {\n return {\n mostRecentEventCounter: 0,\n bufferedValue: this.props.value,\n };\n },\n\n contextTypes: {\n onFocusRequested: React.PropTypes.func,\n focusEmitter: React.PropTypes.instanceOf(EventEmitter),\n },\n\n _focusSubscription: (undefined: ?Function),\n\n componentDidMount: function() {\n if (!this.context.focusEmitter) {\n if (this.props.autoFocus) {\n this.requestAnimationFrame(this.focus);\n }\n return;\n }\n this._focusSubscription = this.context.focusEmitter.addListener(\n 'focus',\n (el) => {\n if (this === el) {\n this.requestAnimationFrame(this.focus);\n } else if (this.isFocused()) {\n this.blur();\n }\n }\n );\n if (this.props.autoFocus) {\n this.context.onFocusRequested(this);\n }\n },\n\n componentWillUnmount: function() {\n this._focusSubscription && this._focusSubscription.remove();\n if (this.isFocused()) {\n this.blur();\n }\n },\n\n _bufferTimeout: (undefined: ?number),\n\n componentWillReceiveProps: function(newProps: {value: any}) {\n if (newProps.value !== this.props.value) {\n if (!this.isFocused()) {\n // Set the value immediately if the input is not focused since that\n // means there is no risk of the user typing immediately.\n this.setState({bufferedValue: newProps.value});\n } else {\n // The following clear and setTimeout buffers the value such that if more\n // characters are typed in quick succession, generating new values, the\n // out of date values will get cancelled before they are ever sent to\n // native.\n //\n // If we don't do this, it's likely the out of date values will blow\n // away recently typed characters in the native input that JS was not\n // yet aware of (since it is informed asynchronously), then the next\n // character will be appended to the older value, dropping the\n // characters in between. Here is a potential sequence of events\n // (recall we have multiple independently serial, interleaved queues):\n //\n // 1) User types 'R' => send 'R' to JS queue.\n // 2) User types 'e' => send 'Re' to JS queue.\n // 3) JS processes 'R' and sends 'R' back to native.\n // 4) Native recieves 'R' and changes input from 'Re' back to 'R'.\n // 5) User types 'a' => send 'Ra' to JS queue.\n // 6) JS processes 'Re' and sends 'Re' back to native.\n // 7) Native recieves 'Re' and changes input from 'R' back to 'Re'.\n // 8) JS processes 'Ra' and sends 'Ra' back to native.\n // 9) Native recieves final 'Ra' from JS - 'e' has been dropped!\n //\n // This isn't 100% foolproop (e.g. if it takes longer than\n // `props.bufferDelay` ms to process one keystroke), and there are of\n // course other potential algorithms to deal with this, but this is a\n // simple solution that seems to reduce the chance of dropped characters\n // drastically without compromising native input responsiveness (e.g. by\n // introducing delay from a synchronization protocol).\n this.clearTimeout(this._bufferTimeout);\n this._bufferTimeout = this.setTimeout(\n () => this.setState({bufferedValue: newProps.value}),\n this.props.bufferDelay\n );\n }\n }\n },\n\n getChildContext: function(): Object {\n return {isInAParentText: true};\n },\n\n childContextTypes: {\n isInAParentText: React.PropTypes.bool\n },\n\n render: function() {\n if (Platform.OS === 'ios') {\n return this._renderIOS();\n } else if (Platform.OS === 'android') {\n return this._renderAndroid();\n }\n },\n\n _renderIOS: function() {\n var textContainer;\n\n var props = Object.assign({},this.props);\n props.style = [styles.input, this.props.style];\n\n if (!props.multiline) {\n for (var propKey in onlyMultiline) {\n if (props[propKey]) {\n throw new Error(\n 'TextInput prop `' + propKey + '` is only supported with multiline.'\n );\n }\n }\n textContainer =\n <RCTTextField\n ref=\"input\"\n {...props}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onChange={this._onChange}\n onSelectionChangeShouldSetResponder={() => true}\n text={this.state.bufferedValue}\n />;\n } else {\n for (var propKey in notMultiline) {\n if (props[propKey]) {\n throw new Error(\n 'TextInput prop `' + propKey + '` cannot be used with multiline.'\n );\n }\n }\n\n var children = props.children;\n var childCount = 0;\n ReactChildren.forEach(children, () => ++childCount);\n invariant(\n !(props.value && childCount),\n 'Cannot specify both value and children.'\n );\n if (childCount > 1) {\n children = <Text>{children}</Text>;\n }\n if (props.inputView) {\n children = [children, props.inputView];\n }\n textContainer =\n <RCTTextView\n ref=\"input\"\n {...props}\n children={children}\n mostRecentEventCounter={this.state.mostRecentEventCounter}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onChange={this._onChange}\n onSelectionChange={this._onSelectionChange}\n onTextInput={this._onTextInput}\n onSelectionChangeShouldSetResponder={emptyFunction.thatReturnsTrue}\n text={this.state.bufferedValue}\n />;\n }\n\n return (\n <TouchableWithoutFeedback\n onPress={this._onPress}\n rejectResponderTermination={true}\n testID={props.testID}>\n {textContainer}\n </TouchableWithoutFeedback>\n );\n },\n\n _renderAndroid: function() {\n var autoCapitalize = RCTUIManager.UIText.AutocapitalizationType[this.props.autoCapitalize];\n var textAlign =\n RCTUIManager.AndroidTextInput.Constants.TextAlign[this.props.textAlign];\n var textAlignVertical =\n RCTUIManager.AndroidTextInput.Constants.TextAlignVertical[this.props.textAlignVertical];\n var children = this.props.children;\n var childCount = 0;\n ReactChildren.forEach(children, () => ++childCount);\n invariant(\n !(this.props.value && childCount),\n 'Cannot specify both value and children.'\n );\n if (childCount > 1) {\n children = <Text>{children}</Text>;\n }\n var textContainer =\n <AndroidTextInput\n ref=\"input\"\n style={[this.props.style]}\n autoCapitalize={autoCapitalize}\n autoCorrect={this.props.autoCorrect}\n textAlign={textAlign}\n textAlignVertical={textAlignVertical}\n keyboardType={this.props.keyboardType}\n multiline={this.props.multiline}\n onFocus={this._onFocus}\n onBlur={this._onBlur}\n onChange={this._onChange}\n onTextInput={this._onTextInput}\n onEndEditing={this.props.onEndEditing}\n onSubmitEditing={this.props.onSubmitEditing}\n onLayout={this.props.onLayout}\n password={this.props.password || this.props.secureTextEntry}\n placeholder={this.props.placeholder}\n placeholderTextColor={this.props.placeholderTextColor}\n text={this.state.bufferedValue}\n underlineColorAndroid={this.props.underlineColorAndroid}\n children={children}\n />;\n\n return (\n <TouchableWithoutFeedback\n onPress={this._onPress}\n testID={this.props.testID}>\n {textContainer}\n </TouchableWithoutFeedback>\n );\n },\n\n _onFocus: function(event: Event) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n },\n\n _onPress: function(event: Event) {\n this.focus();\n },\n\n _onChange: function(event: Event) {\n if (this.props.controlled && event.nativeEvent.text !== this.props.value) {\n this.refs.input.setNativeProps({text: this.props.value});\n }\n this.props.onChange && this.props.onChange(event);\n this.props.onChangeText && this.props.onChangeText(event.nativeEvent.text);\n },\n\n _onBlur: function(event: Event) {\n this.blur();\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n },\n\n _onSelectionChange: function(event: Event) {\n if (this.props.selectionState) {\n var selection = event.nativeEvent.selection;\n this.props.selectionState.update(selection.start, selection.end);\n }\n this.props.onSelectionChange && this.props.onSelectionChange(event);\n },\n\n _onTextInput: function(event: Event) {\n this.props.onTextInput && this.props.onTextInput(event);\n var counter = event.nativeEvent.eventCounter;\n if (counter > this.state.mostRecentEventCounter) {\n this.setState({mostRecentEventCounter: counter});\n }\n },\n});\n\nvar styles = StyleSheet.create({\n input: {\n alignSelf: 'stretch',\n },\n});\n\nvar AndroidTextInput = createReactNativeComponentClass({\n validAttributes: AndroidTextInputAttributes,\n uiViewClassName: 'AndroidTextInput',\n});\n\nmodule.exports = TextInput;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/TextInput/TextInput.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js":{"data":{"code":"var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar mixInEventEmitter=require('mixInEventEmitter');var \n\n\n\n\n\n\n\n\n\n\nDocumentSelectionState=(function(){\n\n\n\n\nfunction DocumentSelectionState(anchor,focus){_classCallCheck(this,DocumentSelectionState);\nthis._anchorOffset = anchor;\nthis._focusOffset = focus;\nthis._hasFocus = false;}_createClass(DocumentSelectionState,[{key:'update',value:\n\n\n\n\n\n\n\n\n\nfunction update(anchor,focus){\nif(this._anchorOffset !== anchor || this._focusOffset !== focus){\nthis._anchorOffset = anchor;\nthis._focusOffset = focus;\nthis.emit('update');}}},{key:'constrainLength',value:\n\n\n\n\n\n\n\n\n\nfunction constrainLength(maxLength){\nthis.update(\nMath.min(this._anchorOffset,maxLength),\nMath.min(this._focusOffset,maxLength));}},{key:'focus',value:\n\n\n\nfunction focus(){\nif(!this._hasFocus){\nthis._hasFocus = true;\nthis.emit('focus');}}},{key:'blur',value:\n\n\n\nfunction blur(){\nif(this._hasFocus){\nthis._hasFocus = false;\nthis.emit('blur');}}},{key:'hasFocus',value:\n\n\n\n\n\n\nfunction hasFocus(){\nreturn this._hasFocus;}},{key:'isCollapsed',value:\n\n\n\n\n\nfunction isCollapsed(){\nreturn this._anchorOffset === this._focusOffset;}},{key:'isBackward',value:\n\n\n\n\n\nfunction isBackward(){\nreturn this._anchorOffset > this._focusOffset;}},{key:'getAnchorOffset',value:\n\n\n\n\n\nfunction getAnchorOffset(){\nreturn this._hasFocus?this._anchorOffset:null;}},{key:'getFocusOffset',value:\n\n\n\n\n\nfunction getFocusOffset(){\nreturn this._hasFocus?this._focusOffset:null;}},{key:'getStartOffset',value:\n\n\n\n\n\nfunction getStartOffset(){\nreturn (\nthis._hasFocus?Math.min(this._anchorOffset,this._focusOffset):null);}},{key:'getEndOffset',value:\n\n\n\n\n\n\nfunction getEndOffset(){\nreturn (\nthis._hasFocus?Math.max(this._anchorOffset,this._focusOffset):null);}},{key:'overlaps',value:\n\n\n\n\n\n\n\n\nfunction overlaps(start,end){\nreturn (\nthis.hasFocus() && \nthis.getStartOffset() <= end && start <= this.getEndOffset());}}]);return DocumentSelectionState;})();\n\n\n\n\nmixInEventEmitter(DocumentSelectionState,{\n'blur':true,\n'focus':true,\n'update':true});\n\n\nmodule.exports = DocumentSelectionState;","sourceCode":"/**\n * @generated SignedSource<<1f058815818e10d01d2ee1f2f70d0fb1>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule DocumentSelectionState\n * @typechecks\n */\n\nvar mixInEventEmitter = require('mixInEventEmitter');\n\n/**\n * DocumentSelectionState is responsible for maintaining selection information\n * for a document.\n *\n * It is intended for use by AbstractTextEditor-based components for\n * identifying the appropriate start/end positions to modify the\n * DocumentContent, and for programatically setting browser selection when\n * components re-render.\n */\nclass DocumentSelectionState {\n /**\n * @param {number} anchor\n * @param {number} focus\n */\n constructor(anchor, focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this._hasFocus = false;\n }\n\n /**\n * Apply an update to the state. If either offset value has changed,\n * set the values and emit the `change` event. Otherwise no-op.\n *\n * @param {number} anchor\n * @param {number} focus\n */\n update(anchor, focus) {\n if (this._anchorOffset !== anchor || this._focusOffset !== focus) {\n this._anchorOffset = anchor;\n this._focusOffset = focus;\n this.emit('update');\n }\n }\n\n /**\n * Given a max text length, constrain our selection offsets to ensure\n * that the selection remains strictly within the text range.\n *\n * @param {number} maxLength\n */\n constrainLength(maxLength) {\n this.update(\n Math.min(this._anchorOffset, maxLength),\n Math.min(this._focusOffset, maxLength)\n );\n }\n\n focus() {\n if (!this._hasFocus) {\n this._hasFocus = true;\n this.emit('focus');\n }\n }\n\n blur() {\n if (this._hasFocus) {\n this._hasFocus = false;\n this.emit('blur');\n }\n }\n\n /**\n * @return {boolean}\n */\n hasFocus() {\n return this._hasFocus;\n }\n\n /**\n * @return {boolean}\n */\n isCollapsed() {\n return this._anchorOffset === this._focusOffset;\n }\n\n /**\n * @return {boolean}\n */\n isBackward() {\n return this._anchorOffset > this._focusOffset;\n }\n\n /**\n * @return {?number}\n */\n getAnchorOffset() {\n return this._hasFocus ? this._anchorOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getFocusOffset() {\n return this._hasFocus ? this._focusOffset : null;\n }\n\n /**\n * @return {?number}\n */\n getStartOffset() {\n return (\n this._hasFocus ? Math.min(this._anchorOffset, this._focusOffset) : null\n );\n }\n\n /**\n * @return {?number}\n */\n getEndOffset() {\n return (\n this._hasFocus ? Math.max(this._anchorOffset, this._focusOffset) : null\n );\n }\n\n /**\n * @param {number} start\n * @param {number} end\n * @return {boolean}\n */\n overlaps(start, end) {\n return (\n this.hasFocus() &&\n this.getStartOffset() <= end && start <= this.getEndOffset()\n );\n }\n}\n\nmixInEventEmitter(DocumentSelectionState, {\n 'blur': true,\n 'focus': true,\n 'update': true\n});\n\nmodule.exports = DocumentSelectionState;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/document/selection/DocumentSelectionState.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitter=require('EventEmitter');\nvar EventEmitterWithHolding=require('EventEmitterWithHolding');\nvar EventHolder=require('EventHolder');\nvar EventValidator=require('EventValidator');\n\nvar copyProperties=require('copyProperties');\nvar invariant=require('invariant');\nvar keyOf=require('keyOf');\n\nvar TYPES_KEY=keyOf({__types:true});\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction mixInEventEmitter(klass,types){\ninvariant(types,'Must supply set of valid event types');\ninvariant(!this.__eventEmitter,'An active emitter is already mixed in');\n\n\n\nvar target=klass.prototype || klass;\n\nvar ctor=klass.constructor;\nif(ctor){\ninvariant(\nctor === Object || ctor === Function,\n'Mix EventEmitter into a class, not an instance');}\n\n\n\n\n\nif(target.hasOwnProperty(TYPES_KEY)){\ncopyProperties(target.__types,types);}else \nif(target.__types){\ntarget.__types = copyProperties({},target.__types,types);}else \n{\ntarget.__types = types;}\n\ncopyProperties(target,EventEmitterMixin);}\n\n\nvar EventEmitterMixin={\nemit:function(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emit(eventType,a,b,c,d,e,_);},\n\n\nemitAndHold:function(eventType,a,b,c,d,e,_){\nreturn this.__getEventEmitter().emitAndHold(eventType,a,b,c,d,e,_);},\n\n\naddListener:function(eventType,listener,context){\nreturn this.__getEventEmitter().addListener(eventType,listener,context);},\n\n\nonce:function(eventType,listener,context){\nreturn this.__getEventEmitter().once(eventType,listener,context);},\n\n\naddRetroactiveListener:function(eventType,listener,context){\nreturn this.__getEventEmitter().addRetroactiveListener(\neventType,\nlistener,\ncontext);},\n\n\n\naddListenerMap:function(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\naddRetroactiveListenerMap:function(listenerMap,context){\nreturn this.__getEventEmitter().addListenerMap(listenerMap,context);},\n\n\nremoveAllListeners:function(){\nthis.__getEventEmitter().removeAllListeners();},\n\n\nremoveCurrentListener:function(){\nthis.__getEventEmitter().removeCurrentListener();},\n\n\nreleaseHeldEventType:function(eventType){\nthis.__getEventEmitter().releaseHeldEventType(eventType);},\n\n\n__getEventEmitter:function(){\nif(!this.__eventEmitter){\nvar emitter=new EventEmitter();\nemitter = EventValidator.addValidation(emitter,this.__types);\n\nvar holder=new EventHolder();\nthis.__eventEmitter = new EventEmitterWithHolding(emitter,holder);}\n\nreturn this.__eventEmitter;}};\n\n\n\nmodule.exports = mixInEventEmitter;","sourceCode":"/**\n * @generated SignedSource<<c735038726af2daf584b3e7fb3950e8b>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule mixInEventEmitter\n */\n\nvar EventEmitter = require('EventEmitter');\nvar EventEmitterWithHolding = require('EventEmitterWithHolding');\nvar EventHolder = require('EventHolder');\nvar EventValidator = require('EventValidator');\n\nvar copyProperties = require('copyProperties');\nvar invariant = require('invariant');\nvar keyOf = require('keyOf');\n\nvar TYPES_KEY = keyOf({__types: true});\n\n/**\n * API to setup an object or constructor to be able to emit data events.\n *\n * @example\n * function Dog() { ...dog stuff... }\n * mixInEventEmitter(Dog, {bark: true});\n *\n * var puppy = new Dog();\n * puppy.addListener('bark', function (volume) {\n * console.log('Puppy', this, 'barked at volume:', volume);\n * });\n * puppy.emit('bark', 'quiet');\n * // Puppy <puppy> barked at volume: quiet\n *\n *\n * // A \"singleton\" object may also be commissioned:\n *\n * var Singleton = {};\n * mixInEventEmitter(Singleton, {lonely: true});\n * Singleton.emit('lonely', true);\n */\nfunction mixInEventEmitter(klass, types) {\n invariant(types, 'Must supply set of valid event types');\n invariant(!this.__eventEmitter, 'An active emitter is already mixed in');\n\n // If this is a constructor, write to the prototype, otherwise write to the\n // singleton object.\n var target = klass.prototype || klass;\n\n var ctor = klass.constructor;\n if (ctor) {\n invariant(\n ctor === Object || ctor === Function,\n 'Mix EventEmitter into a class, not an instance'\n );\n }\n\n // Keep track of the provided types, union the types if they already exist,\n // which allows for prototype subclasses to provide more types.\n if (target.hasOwnProperty(TYPES_KEY)) {\n copyProperties(target.__types, types);\n } else if (target.__types) {\n target.__types = copyProperties({}, target.__types, types);\n } else {\n target.__types = types;\n }\n copyProperties(target, EventEmitterMixin);\n}\n\nvar EventEmitterMixin = {\n emit: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emit(eventType, a, b, c, d, e, _);\n },\n\n emitAndHold: function(eventType, a, b, c, d, e, _) {\n return this.__getEventEmitter().emitAndHold(eventType, a, b, c, d, e, _);\n },\n\n addListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addListener(eventType, listener, context);\n },\n\n once: function(eventType, listener, context) {\n return this.__getEventEmitter().once(eventType, listener, context);\n },\n\n addRetroactiveListener: function(eventType, listener, context) {\n return this.__getEventEmitter().addRetroactiveListener(\n eventType,\n listener,\n context\n );\n },\n\n addListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n addRetroactiveListenerMap: function(listenerMap, context) {\n return this.__getEventEmitter().addListenerMap(listenerMap, context);\n },\n\n removeAllListeners: function() {\n this.__getEventEmitter().removeAllListeners();\n },\n\n removeCurrentListener: function() {\n this.__getEventEmitter().removeCurrentListener();\n },\n\n releaseHeldEventType: function(eventType) {\n this.__getEventEmitter().releaseHeldEventType(eventType);\n },\n\n __getEventEmitter: function() {\n if (!this.__eventEmitter) {\n var emitter = new EventEmitter();\n emitter = EventValidator.addValidation(emitter, this.__types);\n\n var holder = new EventHolder();\n this.__eventEmitter = new EventEmitterWithHolding(emitter, holder);\n }\n return this.__eventEmitter;\n }\n};\n\nmodule.exports = mixInEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/mixInEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nEventEmitterWithHolding=(function(){\n\n\n\n\n\n\n\nfunction EventEmitterWithHolding(emitter,holder){_classCallCheck(this,EventEmitterWithHolding);\nthis._emitter = emitter;\nthis._eventHolder = holder;\nthis._currentEventToken = null;\nthis._emittingHeldEvents = false;}_createClass(EventEmitterWithHolding,[{key:'addListener',value:\n\n\n\n\n\nfunction addListener(eventType,listener,context){\nreturn this._emitter.addListener(eventType,listener,context);}},{key:'once',value:\n\n\n\n\n\nfunction once(eventType,listener,context){\nreturn this._emitter.once(eventType,listener,context);}},{key:'addRetroactiveListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addRetroactiveListener(\neventType,listener,context){\nvar subscription=this._emitter.addListener(eventType,listener,context);\n\nthis._emittingHeldEvents = true;\nthis._eventHolder.emitToListener(eventType,listener,context);\nthis._emittingHeldEvents = false;\n\nreturn subscription;}},{key:'removeAllListeners',value:\n\n\n\n\n\nfunction removeAllListeners(eventType){\nthis._emitter.removeAllListeners(eventType);}},{key:'removeCurrentListener',value:\n\n\n\n\n\nfunction removeCurrentListener(){\nthis._emitter.removeCurrentListener();}},{key:'listeners',value:\n\n\n\n\n\nfunction listeners(eventType){\nreturn this._emitter.listeners(eventType);}},{key:'emit',value:\n\n\n\n\n\nfunction emit(eventType,a,b,c,d,e,_){\nthis._emitter.emit(eventType,a,b,c,d,e,_);}},{key:'emitAndHold',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction emitAndHold(eventType,a,b,c,d,e,_){\nthis._currentEventToken = this._eventHolder.holdEvent(\neventType,\na,b,c,d,e,_);\n\nthis._emitter.emit(eventType,a,b,c,d,e,_);\nthis._currentEventToken = null;}},{key:'releaseCurrentEvent',value:\n\n\n\n\n\nfunction releaseCurrentEvent(){\nif(this._currentEventToken !== null){\nthis._eventHolder.releaseEvent(this._currentEventToken);}else \nif(this._emittingHeldEvents){\nthis._eventHolder.releaseCurrentEvent();}}},{key:'releaseHeldEventType',value:\n\n\n\n\n\n\n\nfunction releaseHeldEventType(eventType){\nthis._eventHolder.releaseEventType(eventType);}}]);return EventEmitterWithHolding;})();\n\n\n\nmodule.exports = EventEmitterWithHolding;","sourceCode":"/**\n * @generated SignedSource<<fb2bb5c1c402a097a7e1da7413526629>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventEmitterWithHolding\n * @typechecks\n */\n'use strict';\n\n/**\n * @class EventEmitterWithHolding\n * @description\n * An EventEmitterWithHolding decorates an event emitter and enables one to\n * \"hold\" or cache events and then have a handler register later to actually\n * handle them.\n *\n * This is separated into its own decorator so that only those who want to use\n * the holding functionality have to and others can just use an emitter. Since\n * it implements the emitter interface it can also be combined with anything\n * that uses an emitter.\n */\nclass EventEmitterWithHolding {\n /**\n * @constructor\n * @param {object} emitter - The object responsible for emitting the actual\n * events.\n * @param {object} holder - The event holder that is responsible for holding\n * and then emitting held events.\n */\n constructor(emitter, holder) {\n this._emitter = emitter;\n this._eventHolder = holder;\n this._currentEventToken = null;\n this._emittingHeldEvents = false;\n }\n\n /**\n * @see EventEmitter#addListener\n */\n addListener(eventType: String, listener, context: ?Object) {\n return this._emitter.addListener(eventType, listener, context);\n }\n\n /**\n * @see EventEmitter#once\n */\n once(eventType: String, listener, context: ?Object) {\n return this._emitter.once(eventType, listener, context);\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function. In addition to subscribing\n * to all subsequent events, this method will also handle any events that have\n * already been emitted, held, and not released.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n addRetroactiveListener(\n eventType: String, listener, context: ?Object): EmitterSubscription {\n var subscription = this._emitter.addListener(eventType, listener, context);\n\n this._emittingHeldEvents = true;\n this._eventHolder.emitToListener(eventType, listener, context);\n this._emittingHeldEvents = false;\n\n return subscription;\n }\n\n /**\n * @see EventEmitter#removeAllListeners\n */\n removeAllListeners(eventType: String) {\n this._emitter.removeAllListeners(eventType);\n }\n\n /**\n * @see EventEmitter#removeCurrentListener\n */\n removeCurrentListener() {\n this._emitter.removeCurrentListener();\n }\n\n /**\n * @see EventEmitter#listeners\n */\n listeners(eventType: String) /* TODO: Annotate return type here */ {\n return this._emitter.listeners(eventType);\n }\n\n /**\n * @see EventEmitter#emit\n */\n emit(eventType: String, a, b, c, d, e, _) {\n this._emitter.emit(eventType, a, b, c, d, e, _);\n }\n\n /**\n * Emits an event of the given type with the given data, and holds that event\n * in order to be able to dispatch it to a later subscriber when they say they\n * want to handle held events.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.emitAndHold('someEvent', 'abc');\n *\n * emitter.addRetroactiveListener('someEvent', function(message) {\n * console.log(message);\n * }); // logs 'abc'\n */\n emitAndHold(eventType: String, a, b, c, d, e, _) {\n this._currentEventToken = this._eventHolder.holdEvent(\n eventType,\n a, b, c, d, e, _\n );\n this._emitter.emit(eventType, a, b, c, d, e, _);\n this._currentEventToken = null;\n }\n\n /**\n * @see EventHolder#releaseCurrentEvent\n */\n releaseCurrentEvent() {\n if (this._currentEventToken !== null) {\n this._eventHolder.releaseEvent(this._currentEventToken);\n } else if (this._emittingHeldEvents) {\n this._eventHolder.releaseCurrentEvent();\n }\n }\n\n /**\n * @see EventHolder#releaseEventType\n * @param {string} eventType\n */\n releaseHeldEventType(eventType: String) {\n this._eventHolder.releaseEventType(eventType);\n }\n}\n\nmodule.exports = EventEmitterWithHolding;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventEmitterWithHolding.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');var \n\nEventHolder=(function(){\nfunction EventHolder(){_classCallCheck(this,EventHolder);\nthis._heldEvents = {};\nthis._currentEventKey = null;}_createClass(EventHolder,[{key:'holdEvent',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction holdEvent(eventType,a,b,c,d,e,_){\nthis._heldEvents[eventType] = this._heldEvents[eventType] || [];\nvar eventsOfType=this._heldEvents[eventType];\nvar key={\neventType:eventType,\nindex:eventsOfType.length};\n\neventsOfType.push([a,b,c,d,e,_]);\nreturn key;}},{key:'emitToListener',value:\n\n\n\n\n\n\n\n\n\n\nfunction emitToListener(eventType,listener,context){var _this=this;\nvar eventsOfType=this._heldEvents[eventType];\nif(!eventsOfType){\nreturn;}\n\nvar origEventKey=this._currentEventKey;\neventsOfType.forEach(function(eventHeld,index){\nif(!eventHeld){\nreturn;}\n\n_this._currentEventKey = {\neventType:eventType,\nindex:index};\n\nlistener.apply(context,eventHeld);});\n\nthis._currentEventKey = origEventKey;}},{key:'releaseCurrentEvent',value:\n\n\n\n\n\n\n\n\n\n\nfunction releaseCurrentEvent(){\ninvariant(\nthis._currentEventKey !== null,\n'Not in an emitting cycle; there is no current event');\n\nthis.releaseEvent(this._currentEventKey);}},{key:'releaseEvent',value:\n\n\n\n\n\n\n\n\nfunction releaseEvent(token){\ndelete this._heldEvents[token.eventType][token.index];}},{key:'releaseEventType',value:\n\n\n\n\n\n\n\nfunction releaseEventType(type){\nthis._heldEvents[type] = [];}}]);return EventHolder;})();\n\n\n\nmodule.exports = EventHolder;","sourceCode":"/**\n * @generated SignedSource<<0591836c443c735d24e61782320d3d16>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventHolder\n * @typechecks\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nclass EventHolder {\n constructor() {\n this._heldEvents = {};\n this._currentEventKey = null;\n }\n\n /**\n * Holds a given event for processing later.\n *\n * TODO: Annotate return type better. The structural type of the return here\n * is pretty obvious.\n *\n * @param {string} eventType - Name of the event to hold and later emit\n * @param {...*} Arbitrary arguments to be passed to each registered listener\n * @return {object} Token that can be used to release the held event\n *\n * @example\n *\n * holder.holdEvent({someEvent: 'abc'});\n *\n * holder.emitToHandler({\n * someEvent: function(data, event) {\n * console.log(data);\n * }\n * }); //logs 'abc'\n *\n */\n holdEvent(eventType: String, a, b, c, d, e, _) {\n this._heldEvents[eventType] = this._heldEvents[eventType] || [];\n var eventsOfType = this._heldEvents[eventType];\n var key = {\n eventType: eventType,\n index: eventsOfType.length\n };\n eventsOfType.push([a, b, c, d, e, _]);\n return key;\n }\n\n /**\n * Emits the held events of the specified type to the given listener.\n *\n * @param {?string} eventType - Optional name of the events to replay\n * @param {function} listener - The listener to which to dispatch the event\n * @param {?object} context - Optional context object to use when invoking\n * the listener\n */\n emitToListener(eventType: ?String , listener, context: ?Object) {\n var eventsOfType = this._heldEvents[eventType];\n if (!eventsOfType) {\n return;\n }\n var origEventKey = this._currentEventKey;\n eventsOfType.forEach((/*?array*/ eventHeld, /*number*/ index) => {\n if (!eventHeld) {\n return;\n }\n this._currentEventKey = {\n eventType: eventType,\n index: index\n };\n listener.apply(context, eventHeld);\n });\n this._currentEventKey = origEventKey;\n }\n\n /**\n * Provides an API that can be called during an eventing cycle to release\n * the last event that was invoked, so that it is no longer \"held\".\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n */\n releaseCurrentEvent() {\n invariant(\n this._currentEventKey !== null,\n 'Not in an emitting cycle; there is no current event'\n );\n this.releaseEvent(this._currentEventKey);\n }\n\n /**\n * Releases the event corresponding to the handle that was returned when the\n * event was first held.\n *\n * @param {object} token - The token returned from holdEvent\n */\n releaseEvent(token: Object) {\n delete this._heldEvents[token.eventType][token.index];\n }\n\n /**\n * Releases all events of a certain type.\n *\n * @param {string} type\n */\n releaseEventType(type: String) {\n this._heldEvents[type] = [];\n }\n}\n\nmodule.exports = EventHolder;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventHolder.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar copyProperties=require('copyProperties');\n\n\n\n\n\n\n\n\n\n\nvar EventValidator={\n\n\n\n\n\n\n\n\n\n\naddValidation:function(emitter,types){\nvar eventTypes=Object.keys(types);\nvar emitterWithValidation=Object.create(emitter);\n\ncopyProperties(emitterWithValidation,{\nemit:function emit(type,a,b,c,d,e,_){\nassertAllowsEventType(type,eventTypes);\nreturn emitter.emit.call(this,type,a,b,c,d,e,_);}});\n\n\n\nreturn emitterWithValidation;}};\n\n\n\nfunction assertAllowsEventType(type,allowedTypes){\nif(allowedTypes.indexOf(type) === -1){\nthrow new TypeError(errorMessageFor(type,allowedTypes));}}\n\n\n\nfunction errorMessageFor(type,allowedTypes){\nvar message='Unknown event type \"' + type + '\". ';\nif(__DEV__){\nmessage += recommendationFor(type,allowedTypes);}\n\nmessage += 'Known event types: ' + allowedTypes.join(', ') + '.';\nreturn message;}\n\n\n\nif(__DEV__){\nvar recommendationFor=function(type,allowedTypes){\nvar closestTypeRecommendation=closestTypeFor(type,allowedTypes);\nif(isCloseEnough(closestTypeRecommendation,type)){\nreturn 'Did you mean \"' + closestTypeRecommendation.type + '\"? ';}else \n{\nreturn '';}};\n\n\n\nvar closestTypeFor=function(type,allowedTypes){\nvar typeRecommendations=allowedTypes.map(\ntypeRecommendationFor.bind(this,type));\n\nreturn typeRecommendations.sort(recommendationSort)[0];};\n\n\nvar typeRecommendationFor=function(type,recomendedType){\nreturn {\ntype:recomendedType,\ndistance:damerauLevenshteinDistance(type,recomendedType)};};\n\n\n\nvar recommendationSort=function(recommendationA,recommendationB){\nif(recommendationA.distance < recommendationB.distance){\nreturn -1;}else \nif(recommendationA.distance > recommendationB.distance){\nreturn 1;}else \n{\nreturn 0;}};\n\n\n\nvar isCloseEnough=function(closestType,actualType){\nreturn closestType.distance / actualType.length < 0.334;};\n\n\nvar damerauLevenshteinDistance=function(a,b){\nvar i,j;\nvar d=[];\n\nfor(i = 0;i <= a.length;i++) {\nd[i] = [i];}\n\n\nfor(j = 1;j <= b.length;j++) {\nd[0][j] = j;}\n\n\nfor(i = 1;i <= a.length;i++) {\nfor(j = 1;j <= b.length;j++) {\nvar cost=a.charAt(i - 1) === b.charAt(j - 1)?0:1;\n\nd[i][j] = Math.min(\nd[i - 1][j] + 1,\nd[i][j - 1] + 1,\nd[i - 1][j - 1] + cost);\n\n\nif(i > 1 && j > 1 && \na.charAt(i - 1) == b.charAt(j - 2) && \na.charAt(i - 2) == b.charAt(j - 1)){\nd[i][j] = Math.min(d[i][j],d[i - 2][j - 2] + cost);}}}\n\n\n\n\nreturn d[a.length][b.length];};}\n\n\n\nmodule.exports = EventValidator;","sourceCode":"/**\n * @generated SignedSource<<7149bdac6fb48595f245ad6e76938e44>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule EventValidator\n */\n'use strict';\n\nvar copyProperties = require('copyProperties');\n\n/**\n * EventValidator is designed to validate event types to make it easier to catch\n * common mistakes. It accepts a map of all of the different types of events\n * that the emitter can emit. Then, if a user attempts to emit an event that is\n * not one of those specified types the emitter will throw an error. Also, it\n * provides a relatively simple matcher so that if it thinks that you likely\n * mistyped the event name it will suggest what you might have meant to type in\n * the error message.\n */\nvar EventValidator = {\n /**\n * @param {Object} emitter - The object responsible for emitting the actual\n * events\n * @param {Object} types - The collection of valid types that will be used to\n * check for errors\n * @return {Object} A new emitter with event type validation\n * @example\n * var types = {someEvent: true, anotherEvent: true};\n * var emitter = EventValidator.addValidation(emitter, types);\n */\n addValidation: function(emitter: Object, types: Object) {\n var eventTypes = Object.keys(types);\n var emitterWithValidation = Object.create(emitter);\n\n copyProperties(emitterWithValidation, {\n emit: function emit(type, a, b, c, d, e, _) {\n assertAllowsEventType(type, eventTypes);\n return emitter.emit.call(this, type, a, b, c, d, e, _);\n }\n });\n\n return emitterWithValidation;\n }\n};\n\nfunction assertAllowsEventType(type, allowedTypes) {\n if (allowedTypes.indexOf(type) === -1) {\n throw new TypeError(errorMessageFor(type, allowedTypes));\n }\n}\n\nfunction errorMessageFor(type, allowedTypes) {\n var message = 'Unknown event type \"' + type + '\". ';\n if (__DEV__) {\n message += recommendationFor(type, allowedTypes);\n }\n message += 'Known event types: ' + allowedTypes.join(', ') + '.';\n return message;\n}\n\n// Allow for good error messages\nif (__DEV__) {\n var recommendationFor = function (type, allowedTypes) {\n var closestTypeRecommendation = closestTypeFor(type, allowedTypes);\n if (isCloseEnough(closestTypeRecommendation, type)) {\n return 'Did you mean \"' + closestTypeRecommendation.type + '\"? ';\n } else {\n return '';\n }\n };\n\n var closestTypeFor = function (type, allowedTypes) {\n var typeRecommendations = allowedTypes.map(\n typeRecommendationFor.bind(this, type)\n );\n return typeRecommendations.sort(recommendationSort)[0];\n };\n\n var typeRecommendationFor = function (type, recomendedType) {\n return {\n type: recomendedType,\n distance: damerauLevenshteinDistance(type, recomendedType)\n };\n };\n\n var recommendationSort = function (recommendationA, recommendationB) {\n if (recommendationA.distance < recommendationB.distance) {\n return -1;\n } else if (recommendationA.distance > recommendationB.distance) {\n return 1;\n } else {\n return 0;\n }\n };\n\n var isCloseEnough = function (closestType, actualType) {\n return (closestType.distance / actualType.length) < 0.334;\n };\n\n var damerauLevenshteinDistance = function (a, b) {\n var i, j;\n var d = [];\n\n for (i = 0; i <= a.length; i++) {\n d[i] = [i];\n }\n\n for (j = 1; j <= b.length; j++) {\n d[0][j] = j;\n }\n\n for (i = 1; i <= a.length; i++) {\n for (j = 1; j <= b.length; j++) {\n var cost = a.charAt(i - 1) === b.charAt(j - 1) ? 0 : 1;\n\n d[i][j] = Math.min(\n d[i - 1][j] + 1,\n d[i][j - 1] + 1,\n d[i - 1][j - 1] + cost\n );\n\n if (i > 1 && j > 1 &&\n a.charAt(i - 1) == b.charAt(j - 2) &&\n a.charAt(i - 2) == b.charAt(j - 1)) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n\n return d[a.length][b.length];\n };\n}\n\nmodule.exports = EventValidator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/emitter/EventValidator.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/copyProperties.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncopyProperties(obj,a,b,c,d,e,f){\nobj = obj || {};\n\nif(__DEV__){\nif(f){\nthrow new Error('Too many arguments passed to copyProperties');}}\n\n\n\nvar args=[a,b,c,d,e];\nvar ii=0,v;\nwhile(args[ii]) {\nv = args[ii++];\nfor(var k in v) {\nobj[k] = v[k];}\n\n\n\n\nif(v.hasOwnProperty && v.hasOwnProperty('toString') && \ntypeof v.toString != 'undefined' && obj.toString !== v.toString){\nobj.toString = v.toString;}}\n\n\n\nreturn obj;}\n\n\nmodule.exports = copyProperties;","sourceCode":"/**\n * @generated SignedSource<<e8e5ba644b047d0654ca54a100d2f0f3>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule copyProperties\n */\n\n/**\n * Copy properties from one or more objects (up to 5) into the first object.\n * This is a shallow copy. It mutates the first object and also returns it.\n *\n * NOTE: `arguments` has a very significant performance penalty, which is why\n * we don't support unlimited arguments.\n */\nfunction copyProperties(obj, a, b, c, d, e, f) {\n obj = obj || {};\n\n if (__DEV__) {\n if (f) {\n throw new Error('Too many arguments passed to copyProperties');\n }\n }\n\n var args = [a, b, c, d, e];\n var ii = 0, v;\n while (args[ii]) {\n v = args[ii++];\n for (var k in v) {\n obj[k] = v[k];\n }\n\n // IE ignores toString in object iteration.. See:\n // webreflection.blogspot.com/2007/07/quick-fix-internet-explorer-and.html\n if (v.hasOwnProperty && v.hasOwnProperty('toString') &&\n (typeof v.toString != 'undefined') && (obj.toString !== v.toString)) {\n obj.toString = v.toString;\n }\n }\n\n return obj;\n}\n\nmodule.exports = copyProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/copyProperties.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar onlyChild=require('onlyChild');\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\n\n\n\n\n\n\n\nvar TouchableWithoutFeedback=React.createClass({displayName:'TouchableWithoutFeedback',\nmixins:[TimerMixin,Touchable.Mixin],\n\npropTypes:{\n\n\n\n\naccessible:React.PropTypes.bool,\nonPress:React.PropTypes.func,\nonPressIn:React.PropTypes.func,\nonPressOut:React.PropTypes.func,\nonLongPress:React.PropTypes.func,\n\n\n\ndelayPressIn:React.PropTypes.number,\n\n\n\ndelayPressOut:React.PropTypes.number,\n\n\n\ndelayLongPress:React.PropTypes.number},\n\n\ngetInitialState:function(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\n\n\n\n\ntouchableHandlePress:function(e){\nthis.props.onPress && this.props.onPress(e);},\n\n\ntouchableHandleActivePressIn:function(){\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn || 0;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress === 0?0:\nthis.props.delayLongPress || 500;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut || 0;},\n\n\nrender:function(){\n\nreturn React.cloneElement(onlyChild(this.props.children),{\naccessible:this.props.accessible !== false,\ntestID:this.props.testID,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate});}});\n\n\n\n\nmodule.exports = TouchableWithoutFeedback;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableWithoutFeedback\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar onlyChild = require('onlyChild');\n\n/**\n * When the scroll view is disabled, this defines how far your touch may move\n * off of the button, before deactivating the button. Once deactivated, try\n * moving it back and you'll see that the button is once again reactivated!\n * Move it back and forth several times while the scroll view is disabled.\n */\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\ntype Event = Object;\n\n/**\n * Do not use unless you have a very good reason. All the elements that\n * respond to press should have a visual feedback when touched. This is\n * one of the primary reason a \"web\" app doesn't feel \"native\".\n */\nvar TouchableWithoutFeedback = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin],\n\n propTypes: {\n /**\n * Called when the touch is released, but not if cancelled (e.g. by a scroll\n * that steals the responder lock).\n */\n accessible: React.PropTypes.bool,\n onPress: React.PropTypes.func,\n onPressIn: React.PropTypes.func,\n onPressOut: React.PropTypes.func,\n onLongPress: React.PropTypes.func,\n /**\n * Delay in ms, from the start of the touch, before onPressIn is called.\n */\n delayPressIn: React.PropTypes.number,\n /**\n * Delay in ms, from the release of the touch, before onPressOut is called.\n */\n delayPressOut: React.PropTypes.number,\n /**\n * Delay in ms, from onPressIn, before onLongPress is called.\n */\n delayLongPress: React.PropTypes.number,\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n },\n\n componentWillReceiveProps: function(nextProps: Object) {\n ensurePositiveDelayProps(nextProps);\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandlePress: function(e: Event) {\n this.props.onPress && this.props.onPress(e);\n },\n\n touchableHandleActivePressIn: function() {\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function(): typeof PRESS_RECT_OFFSET {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function(): number {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function(): number {\n return this.props.delayLongPress === 0 ? 0 :\n this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function(): number {\n return this.props.delayPressOut || 0;\n },\n\n render: function(): ReactElement {\n // Note(avik): remove dynamic typecast once Flow has been upgraded\n return (React: any).cloneElement(onlyChild(this.props.children), {\n accessible: this.props.accessible !== false,\n testID: this.props.testID,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate\n });\n }\n});\n\nmodule.exports = TouchableWithoutFeedback;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableWithoutFeedback.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar ensurePositiveDelayProps=function(props){\ninvariant(\n!(props.delayPressIn < 0 || props.delayPressOut < 0 || \nprops.delayLongPress < 0),\n'Touchable components cannot have negative delay properties');};\n\n\n\nmodule.exports = ensurePositiveDelayProps;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ensurePositiveDelayProps\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar ensurePositiveDelayProps = function(props: any) {\n invariant(\n !(props.delayPressIn < 0 || props.delayPressOut < 0 ||\n props.delayLongPress < 0),\n 'Touchable components cannot have negative delay properties'\n );\n};\n\nmodule.exports = ensurePositiveDelayProps;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensurePositiveDelayProps.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar React=require('React');\nvar ReactNativeViewAttributes=require('ReactNativeViewAttributes');\nvar StyleSheet=require('StyleSheet');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\nvar View=require('View');\n\nvar cloneWithProps=require('cloneWithProps');\nvar ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar keyOf=require('keyOf');\nvar merge=require('merge');\nvar onlyChild=require('onlyChild');\n\nvar DEFAULT_PROPS={\nactiveOpacity:0.8,\nunderlayColor:'black'};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableHighlight=React.createClass({displayName:'TouchableHighlight',\npropTypes:_extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number,\n\n\n\n\nunderlayColor:React.PropTypes.string,\nstyle:View.propTypes.style,\n\n\n\nonShowUnderlay:React.PropTypes.func,\n\n\n\nonHideUnderlay:React.PropTypes.func}),\n\n\nmixins:[NativeMethodsMixin,TimerMixin,Touchable.Mixin],\n\ngetDefaultProps:function(){return DEFAULT_PROPS;},\n\n\ncomputeSyntheticState:function(props){\nreturn {\nactiveProps:{\nstyle:{\nopacity:props.activeOpacity}},\n\n\nactiveUnderlayProps:{\nstyle:{\nbackgroundColor:props.underlayColor}},\n\n\nunderlayStyle:[\nINACTIVE_UNDERLAY_PROPS.style,\nprops.style]};},\n\n\n\n\ngetInitialState:function(){\nreturn merge(\nthis.touchableGetInitialState(),this.computeSyntheticState(this.props));},\n\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);\nif(nextProps.activeOpacity !== this.props.activeOpacity || \nnextProps.underlayColor !== this.props.underlayColor || \nnextProps.style !== this.props.style){\nthis.setState(this.computeSyntheticState(nextProps));}},\n\n\n\nviewConfig:{\nuiViewClassName:'RCTView',\nvalidAttributes:ReactNativeViewAttributes.RCTView},\n\n\n\n\n\n\ntouchableHandleActivePressIn:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nthis._showUnderlay();\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nif(!this._hideTimeout){\nthis._hideUnderlay();}\n\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandlePress:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._showUnderlay();\nthis._hideTimeout = this.setTimeout(this._hideUnderlay,\nthis.props.delayPressOut || 100);\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut;},\n\n\n_showUnderlay:function(){\nthis.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps);\nthis.refs[CHILD_REF].setNativeProps(this.state.activeProps);\nthis.props.onShowUnderlay && this.props.onShowUnderlay();},\n\n\n_hideUnderlay:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nif(this.refs[UNDERLAY_REF]){\nthis.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\nthis.refs[UNDERLAY_REF].setNativeProps(_extends({},\nINACTIVE_UNDERLAY_PROPS,{\nstyle:this.state.underlayStyle}));\n\nthis.props.onHideUnderlay && this.props.onHideUnderlay();}},\n\n\n\nrender:function(){\nreturn (\nReact.createElement(View,{\nref:UNDERLAY_REF,\nstyle:this.state.underlayStyle,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate},\ncloneWithProps(\nonlyChild(this.props.children),\n{\nref:CHILD_REF,\naccessible:true,\ntestID:this.props.testID})));}});\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\nvar CHILD_REF=keyOf({childRef:null});\nvar UNDERLAY_REF=keyOf({underlayRef:null});\nvar INACTIVE_CHILD_PROPS={\nstyle:StyleSheet.create({x:{opacity:1.0}}).x};\n\nvar INACTIVE_UNDERLAY_PROPS={\nstyle:StyleSheet.create({x:{backgroundColor:'transparent'}}).x};\n\n\nmodule.exports = TouchableHighlight;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableHighlight\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar React = require('React');\nvar ReactNativeViewAttributes = require('ReactNativeViewAttributes');\nvar StyleSheet = require('StyleSheet');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nvar View = require('View');\n\nvar cloneWithProps = require('cloneWithProps');\nvar ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar keyOf = require('keyOf');\nvar merge = require('merge');\nvar onlyChild = require('onlyChild');\n\nvar DEFAULT_PROPS = {\n activeOpacity: 0.8,\n underlayColor: 'black',\n};\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, which allows\n * the underlay color to show through, darkening or tinting the view. The\n * underlay comes from adding a view to the view hierarchy, which can sometimes\n * cause unwanted visual artifacts if not used correctly, for example if the\n * backgroundColor of the wrapped view isn't explicitly set to an opaque color.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * <TouchableHighlight onPress={this._onPressButton}>\n * <Image\n * style={styles.button}\n * source={require('image!myButton')}\n * />\n * </TouchableHighlight>\n * );\n * },\n * ```\n */\n\nvar TouchableHighlight = React.createClass({\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: React.PropTypes.number,\n /**\n * The color of the underlay that will show through when the touch is\n * active.\n */\n underlayColor: React.PropTypes.string,\n style: View.propTypes.style,\n /**\n * Called immediately after the underlay is shown\n */\n onShowUnderlay: React.PropTypes.func,\n /**\n * Called immediately after the underlay is hidden\n */\n onHideUnderlay: React.PropTypes.func,\n },\n\n mixins: [NativeMethodsMixin, TimerMixin, Touchable.Mixin],\n\n getDefaultProps: () => DEFAULT_PROPS,\n\n // Performance optimization to avoid constantly re-generating these objects.\n computeSyntheticState: function(props) {\n return {\n activeProps: {\n style: {\n opacity: props.activeOpacity,\n }\n },\n activeUnderlayProps: {\n style: {\n backgroundColor: props.underlayColor,\n }\n },\n underlayStyle: [\n INACTIVE_UNDERLAY_PROPS.style,\n props.style,\n ]\n };\n },\n\n getInitialState: function() {\n return merge(\n this.touchableGetInitialState(), this.computeSyntheticState(this.props)\n );\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentDidUpdate: function() {\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n if (nextProps.activeOpacity !== this.props.activeOpacity ||\n nextProps.underlayColor !== this.props.underlayColor ||\n nextProps.style !== this.props.style) {\n this.setState(this.computeSyntheticState(nextProps));\n }\n },\n\n viewConfig: {\n uiViewClassName: 'RCTView',\n validAttributes: ReactNativeViewAttributes.RCTView\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._showUnderlay();\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n if (!this._hideTimeout) {\n this._hideUnderlay();\n }\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandlePress: function() {\n this.clearTimeout(this._hideTimeout);\n this._showUnderlay();\n this._hideTimeout = this.setTimeout(this._hideUnderlay,\n this.props.delayPressOut || 100);\n this.props.onPress && this.props.onPress();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function() {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _showUnderlay: function() {\n this.refs[UNDERLAY_REF].setNativeProps(this.state.activeUnderlayProps);\n this.refs[CHILD_REF].setNativeProps(this.state.activeProps);\n this.props.onShowUnderlay && this.props.onShowUnderlay();\n },\n\n _hideUnderlay: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n if (this.refs[UNDERLAY_REF]) {\n this.refs[CHILD_REF].setNativeProps(INACTIVE_CHILD_PROPS);\n this.refs[UNDERLAY_REF].setNativeProps({\n ...INACTIVE_UNDERLAY_PROPS,\n style: this.state.underlayStyle,\n });\n this.props.onHideUnderlay && this.props.onHideUnderlay();\n }\n },\n\n render: function() {\n return (\n <View\n ref={UNDERLAY_REF}\n style={this.state.underlayStyle}\n onStartShouldSetResponder={this.touchableHandleStartShouldSetResponder}\n onResponderTerminationRequest={this.touchableHandleResponderTerminationRequest}\n onResponderGrant={this.touchableHandleResponderGrant}\n onResponderMove={this.touchableHandleResponderMove}\n onResponderRelease={this.touchableHandleResponderRelease}\n onResponderTerminate={this.touchableHandleResponderTerminate}>\n {cloneWithProps(\n onlyChild(this.props.children),\n {\n ref: CHILD_REF,\n accessible: true,\n testID: this.props.testID,\n }\n )}\n </View>\n );\n }\n});\n\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\nvar CHILD_REF = keyOf({childRef: null});\nvar UNDERLAY_REF = keyOf({underlayRef: null});\nvar INACTIVE_CHILD_PROPS = {\n style: StyleSheet.create({x: {opacity: 1.0}}).x,\n};\nvar INACTIVE_UNDERLAY_PROPS = {\n style: StyleSheet.create({x: {backgroundColor: 'transparent'}}).x,\n};\n\nmodule.exports = TouchableHighlight;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableHighlight.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/cloneWithProps.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactElement=require('ReactElement');\nvar ReactPropTransferer=require('ReactPropTransferer');\n\nvar keyOf=require('keyOf');\nvar warning=require('warning');\n\nvar CHILDREN_PROP=keyOf({children:null});\n\n\n\n\n\n\n\n\n\n\nfunction cloneWithProps(child,props){\nif(__DEV__){\nwarning(\n!child.ref,\n'You are calling cloneWithProps() on a child with a ref. This is ' + \n'dangerous because you\\'re creating a new child which will not be ' + \n'added as a ref to its parent.');}\n\n\n\nvar newProps=ReactPropTransferer.mergeProps(props,child.props);\n\n\nif(!newProps.hasOwnProperty(CHILDREN_PROP) && \nchild.props.hasOwnProperty(CHILDREN_PROP)){\nnewProps.children = child.props.children;}\n\n\n\n\nreturn ReactElement.createElement(child.type,newProps);}\n\n\nmodule.exports = cloneWithProps;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks static-only\n * @providesModule cloneWithProps\n */\n\n'use strict';\n\nvar ReactElement = require('ReactElement');\nvar ReactPropTransferer = require('ReactPropTransferer');\n\nvar keyOf = require('keyOf');\nvar warning = require('warning');\n\nvar CHILDREN_PROP = keyOf({children: null});\n\n/**\n * Sometimes you want to change the props of a child passed to you. Usually\n * this is to add a CSS class.\n *\n * @param {ReactElement} child child element you'd like to clone\n * @param {object} props props you'd like to modify. className and style will be\n * merged automatically.\n * @return {ReactElement} a clone of child with props merged in.\n */\nfunction cloneWithProps(child, props) {\n if (__DEV__) {\n warning(\n !child.ref,\n 'You are calling cloneWithProps() on a child with a ref. This is ' +\n 'dangerous because you\\'re creating a new child which will not be ' +\n 'added as a ref to its parent.'\n );\n }\n\n var newProps = ReactPropTransferer.mergeProps(props, child.props);\n\n // Use `child.props.children` if it is provided.\n if (!newProps.hasOwnProperty(CHILDREN_PROP) &&\n child.props.hasOwnProperty(CHILDREN_PROP)) {\n newProps.children = child.props.children;\n }\n\n // The current API doesn't retain _owner and _context, which is why this\n // doesn't use ReactElement.cloneAndReplaceProps.\n return ReactElement.createElement(child.type, newProps);\n}\n\nmodule.exports = cloneWithProps;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/cloneWithProps.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactPropTransferer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar emptyFunction=require('emptyFunction');\nvar joinClasses=require('joinClasses');\n\n\n\n\n\n\n\n\nfunction createTransferStrategy(mergeStrategy){\nreturn function(props,key,value){\nif(!props.hasOwnProperty(key)){\nprops[key] = value;}else \n{\nprops[key] = mergeStrategy(props[key],value);}};}\n\n\n\n\nvar transferStrategyMerge=createTransferStrategy(function(a,b){\n\n\n\nreturn assign({},b,a);});\n\n\n\n\n\n\n\nvar TransferStrategies={\n\n\n\nchildren:emptyFunction,\n\n\n\nclassName:createTransferStrategy(joinClasses),\n\n\n\nstyle:transferStrategyMerge};\n\n\n\n\n\n\n\n\n\n\nfunction transferInto(props,newProps){\nfor(var thisKey in newProps) {\nif(!newProps.hasOwnProperty(thisKey)){\ncontinue;}\n\n\nvar transferStrategy=TransferStrategies[thisKey];\n\nif(transferStrategy && TransferStrategies.hasOwnProperty(thisKey)){\ntransferStrategy(props,thisKey,newProps[thisKey]);}else \nif(!props.hasOwnProperty(thisKey)){\nprops[thisKey] = newProps[thisKey];}}\n\n\nreturn props;}\n\n\n\n\n\n\n\n\nvar ReactPropTransferer={\n\n\n\n\n\n\n\n\nmergeProps:function(oldProps,newProps){\nreturn transferInto(assign({},oldProps),newProps);}};\n\n\n\n\nmodule.exports = ReactPropTransferer;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactPropTransferer\n */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar emptyFunction = require('emptyFunction');\nvar joinClasses = require('joinClasses');\n\n/**\n * Creates a transfer strategy that will merge prop values using the supplied\n * `mergeStrategy`. If a prop was previously unset, this just sets it.\n *\n * @param {function} mergeStrategy\n * @return {function}\n */\nfunction createTransferStrategy(mergeStrategy) {\n return function(props, key, value) {\n if (!props.hasOwnProperty(key)) {\n props[key] = value;\n } else {\n props[key] = mergeStrategy(props[key], value);\n }\n };\n}\n\nvar transferStrategyMerge = createTransferStrategy(function(a, b) {\n // `merge` overrides the first object's (`props[key]` above) keys using the\n // second object's (`value`) keys. An object's style's existing `propA` would\n // get overridden. Flip the order here.\n return assign({}, b, a);\n});\n\n/**\n * Transfer strategies dictate how props are transferred by `transferPropsTo`.\n * NOTE: if you add any more exceptions to this list you should be sure to\n * update `cloneWithProps()` accordingly.\n */\nvar TransferStrategies = {\n /**\n * Never transfer `children`.\n */\n children: emptyFunction,\n /**\n * Transfer the `className` prop by merging them.\n */\n className: createTransferStrategy(joinClasses),\n /**\n * Transfer the `style` prop (which is an object) by merging them.\n */\n style: transferStrategyMerge\n};\n\n/**\n * Mutates the first argument by transferring the properties from the second\n * argument.\n *\n * @param {object} props\n * @param {object} newProps\n * @return {object}\n */\nfunction transferInto(props, newProps) {\n for (var thisKey in newProps) {\n if (!newProps.hasOwnProperty(thisKey)) {\n continue;\n }\n\n var transferStrategy = TransferStrategies[thisKey];\n\n if (transferStrategy && TransferStrategies.hasOwnProperty(thisKey)) {\n transferStrategy(props, thisKey, newProps[thisKey]);\n } else if (!props.hasOwnProperty(thisKey)) {\n props[thisKey] = newProps[thisKey];\n }\n }\n return props;\n}\n\n/**\n * ReactPropTransferer are capable of transferring props to another component\n * using a `transferPropsTo` method.\n *\n * @class ReactPropTransferer\n */\nvar ReactPropTransferer = {\n\n /**\n * Merge two props objects using TransferStrategies.\n *\n * @param {object} oldProps original props (they take precedence)\n * @param {object} newProps new props to merge in\n * @return {object} a new object containing both sets of props merged.\n */\n mergeProps: function(oldProps, newProps) {\n return transferInto(assign({}, oldProps), newProps);\n }\n\n};\n\nmodule.exports = ReactPropTransferer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactPropTransferer.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/joinClasses.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction joinClasses(className){\nif(!className){\nclassName = '';}\n\nvar nextClass;\nvar argLength=arguments.length;\nif(argLength > 1){\nfor(var ii=1;ii < argLength;ii++) {\nnextClass = arguments[ii];\nif(nextClass){\nclassName = (className?className + ' ':'') + nextClass;}}}\n\n\n\nreturn className;}\n\n\nmodule.exports = joinClasses;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule joinClasses\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Combines multiple className strings into one.\n * http://jsperf.com/joinclasses-args-vs-array\n *\n * @param {...?string} classes\n * @return {string}\n */\nfunction joinClasses(className/*, ... */) {\n if (!className) {\n className = '';\n }\n var nextClass;\n var argLength = arguments.length;\n if (argLength > 1) {\n for (var ii = 1; ii < argLength; ii++) {\n nextClass = arguments[ii];\n if (nextClass) {\n className = (className ? className + ' ' : '') + nextClass;\n }\n }\n }\n return className;\n}\n\nmodule.exports = joinClasses;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/joinClasses.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nvar ensureComponentIsNative=function(component){\ninvariant(\ncomponent && typeof component.setNativeProps === 'function',\n'Touchable child must either be native or forward setNativeProps to a ' + \n'native component');};\n\n\n\nmodule.exports = ensureComponentIsNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ensureComponentIsNative\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\n\nvar ensureComponentIsNative = function(component: any) {\n invariant(\n component && typeof component.setNativeProps === 'function',\n 'Touchable child must either be native or forward setNativeProps to a ' +\n 'native component'\n );\n};\n\nmodule.exports = ensureComponentIsNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/ensureComponentIsNative.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeMethodsMixin=require('NativeMethodsMixin');\nvar POPAnimationMixin=require('POPAnimationMixin');\nvar React=require('React');\nvar TimerMixin=require('react-timer-mixin');\nvar Touchable=require('Touchable');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\n\nvar cloneWithProps=require('cloneWithProps');\nvar ensureComponentIsNative=require('ensureComponentIsNative');\nvar ensurePositiveDelayProps=require('ensurePositiveDelayProps');\nvar flattenStyle=require('flattenStyle');\nvar keyOf=require('keyOf');\nvar onlyChild=require('onlyChild');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar TouchableOpacity=React.createClass({displayName:'TouchableOpacity',\nmixins:[TimerMixin,Touchable.Mixin,NativeMethodsMixin,POPAnimationMixin],\n\npropTypes:_extends({},\nTouchableWithoutFeedback.propTypes,{\n\n\n\n\nactiveOpacity:React.PropTypes.number}),\n\n\ngetDefaultProps:function(){\nreturn {\nactiveOpacity:0.2};},\n\n\n\ngetInitialState:function(){\nreturn this.touchableGetInitialState();},\n\n\ncomponentDidMount:function(){\nensurePositiveDelayProps(this.props);\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentDidUpdate:function(){\nensureComponentIsNative(this.refs[CHILD_REF]);},\n\n\ncomponentWillReceiveProps:function(nextProps){\nensurePositiveDelayProps(nextProps);},\n\n\nsetOpacityTo:function(value){\nif(POPAnimationMixin){\n\nthis.stopAllAnimations();\nvar anim={\ntype:this.AnimationTypes.linear,\nproperty:this.AnimationProperties.opacity,\nduration:0.15,\ntoValue:value};\n\nthis.startAnimation(CHILD_REF,anim);}else \n{\n\nthis.refs[CHILD_REF].setNativeProps({\nopacity:value});}},\n\n\n\n\n\n\n\n\ntouchableHandleActivePressIn:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nthis._opacityActive();\nthis.props.onPressIn && this.props.onPressIn();},\n\n\ntouchableHandleActivePressOut:function(){\nif(!this._hideTimeout){\nthis._opacityInactive();}\n\nthis.props.onPressOut && this.props.onPressOut();},\n\n\ntouchableHandlePress:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._opacityActive();\nthis._hideTimeout = this.setTimeout(\nthis._opacityInactive,\nthis.props.delayPressOut || 100);\n\nthis.props.onPress && this.props.onPress();},\n\n\ntouchableHandleLongPress:function(){\nthis.props.onLongPress && this.props.onLongPress();},\n\n\ntouchableGetPressRectOffset:function(){\nreturn PRESS_RECT_OFFSET;},\n\n\ntouchableGetHighlightDelayMS:function(){\nreturn this.props.delayPressIn || 0;},\n\n\ntouchableGetLongPressDelayMS:function(){\nreturn this.props.delayLongPress === 0?0:\nthis.props.delayLongPress || 500;},\n\n\ntouchableGetPressOutDelayMS:function(){\nreturn this.props.delayPressOut;},\n\n\n_opacityActive:function(){\nthis.setOpacityTo(this.props.activeOpacity);},\n\n\n_opacityInactive:function(){\nthis.clearTimeout(this._hideTimeout);\nthis._hideTimeout = null;\nvar child=onlyChild(this.props.children);\nvar childStyle=flattenStyle(child.props.style) || {};\nthis.setOpacityTo(\nchildStyle.opacity === undefined?1:childStyle.opacity);},\n\n\n\nrender:function(){\nreturn cloneWithProps(onlyChild(this.props.children),{\nref:CHILD_REF,\naccessible:true,\ntestID:this.props.testID,\nonStartShouldSetResponder:this.touchableHandleStartShouldSetResponder,\nonResponderTerminationRequest:this.touchableHandleResponderTerminationRequest,\nonResponderGrant:this.touchableHandleResponderGrant,\nonResponderMove:this.touchableHandleResponderMove,\nonResponderRelease:this.touchableHandleResponderRelease,\nonResponderTerminate:this.touchableHandleResponderTerminate});}});\n\n\n\n\n\n\n\n\n\n\nvar PRESS_RECT_OFFSET={top:20,left:20,right:20,bottom:30};\n\nvar CHILD_REF=keyOf({childRef:null});\n\nmodule.exports = TouchableOpacity;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule TouchableOpacity\n */\n'use strict';\n\n// Note (avik): add @flow when Flow supports spread properties in propTypes\n\nvar NativeMethodsMixin = require('NativeMethodsMixin');\nvar POPAnimationMixin = require('POPAnimationMixin');\nvar React = require('React');\nvar TimerMixin = require('react-timer-mixin');\nvar Touchable = require('Touchable');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\n\nvar cloneWithProps = require('cloneWithProps');\nvar ensureComponentIsNative = require('ensureComponentIsNative');\nvar ensurePositiveDelayProps = require('ensurePositiveDelayProps');\nvar flattenStyle = require('flattenStyle');\nvar keyOf = require('keyOf');\nvar onlyChild = require('onlyChild');\n\n/**\n * A wrapper for making views respond properly to touches.\n * On press down, the opacity of the wrapped view is decreased, dimming it.\n * This is done without actually changing the view hierarchy, and in general is\n * easy to add to an app without weird side-effects.\n *\n * Example:\n *\n * ```\n * renderButton: function() {\n * return (\n * <TouchableOpacity onPress={this._onPressButton}>\n * <Image\n * style={styles.button}\n * source={require('image!myButton')}\n * />\n * </TouchableOpacity>\n * );\n * },\n * ```\n * > **NOTE**: TouchableOpacity supports only one child\n * >\n * > If you wish to have to have several child components, wrap them in a View.\n */\n\nvar TouchableOpacity = React.createClass({\n mixins: [TimerMixin, Touchable.Mixin, NativeMethodsMixin, POPAnimationMixin],\n\n propTypes: {\n ...TouchableWithoutFeedback.propTypes,\n /**\n * Determines what the opacity of the wrapped view should be when touch is\n * active.\n */\n activeOpacity: React.PropTypes.number,\n },\n\n getDefaultProps: function() {\n return {\n activeOpacity: 0.2,\n };\n },\n\n getInitialState: function() {\n return this.touchableGetInitialState();\n },\n\n componentDidMount: function() {\n ensurePositiveDelayProps(this.props);\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentDidUpdate: function() {\n ensureComponentIsNative(this.refs[CHILD_REF]);\n },\n\n componentWillReceiveProps: function(nextProps) {\n ensurePositiveDelayProps(nextProps);\n },\n\n setOpacityTo: function(value) {\n if (POPAnimationMixin) {\n // Reset with animation if POP is available\n this.stopAllAnimations();\n var anim = {\n type: this.AnimationTypes.linear,\n property: this.AnimationProperties.opacity,\n duration: 0.15,\n toValue: value,\n };\n this.startAnimation(CHILD_REF, anim);\n } else {\n // Reset immediately if POP is unavailable\n this.refs[CHILD_REF].setNativeProps({\n opacity: value\n });\n }\n },\n\n /**\n * `Touchable.Mixin` self callbacks. The mixin will invoke these if they are\n * defined on your component.\n */\n touchableHandleActivePressIn: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n this._opacityActive();\n this.props.onPressIn && this.props.onPressIn();\n },\n\n touchableHandleActivePressOut: function() {\n if (!this._hideTimeout) {\n this._opacityInactive();\n }\n this.props.onPressOut && this.props.onPressOut();\n },\n\n touchableHandlePress: function() {\n this.clearTimeout(this._hideTimeout);\n this._opacityActive();\n this._hideTimeout = this.setTimeout(\n this._opacityInactive,\n this.props.delayPressOut || 100\n );\n this.props.onPress && this.props.onPress();\n },\n\n touchableHandleLongPress: function() {\n this.props.onLongPress && this.props.onLongPress();\n },\n\n touchableGetPressRectOffset: function() {\n return PRESS_RECT_OFFSET; // Always make sure to predeclare a constant!\n },\n\n touchableGetHighlightDelayMS: function() {\n return this.props.delayPressIn || 0;\n },\n\n touchableGetLongPressDelayMS: function() {\n return this.props.delayLongPress === 0 ? 0 :\n this.props.delayLongPress || 500;\n },\n\n touchableGetPressOutDelayMS: function() {\n return this.props.delayPressOut;\n },\n\n _opacityActive: function() {\n this.setOpacityTo(this.props.activeOpacity);\n },\n\n _opacityInactive: function() {\n this.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n var child = onlyChild(this.props.children);\n var childStyle = flattenStyle(child.props.style) || {};\n this.setOpacityTo(\n childStyle.opacity === undefined ? 1 : childStyle.opacity\n );\n },\n\n render: function() {\n return cloneWithProps(onlyChild(this.props.children), {\n ref: CHILD_REF,\n accessible: true,\n testID: this.props.testID,\n onStartShouldSetResponder: this.touchableHandleStartShouldSetResponder,\n onResponderTerminationRequest: this.touchableHandleResponderTerminationRequest,\n onResponderGrant: this.touchableHandleResponderGrant,\n onResponderMove: this.touchableHandleResponderMove,\n onResponderRelease: this.touchableHandleResponderRelease,\n onResponderTerminate: this.touchableHandleResponderTerminate,\n });\n },\n});\n\n/**\n * When the scroll view is disabled, this defines how far your touch may move\n * off of the button, before deactivating the button. Once deactivated, try\n * moving it back and you'll see that the button is once again reactivated!\n * Move it back and forth several times while the scroll view is disabled.\n */\nvar PRESS_RECT_OFFSET = {top: 20, left: 20, right: 20, bottom: 30};\n\nvar CHILD_REF = keyOf({childRef: null});\n\nmodule.exports = TouchableOpacity;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/Touchable/TouchableOpacity.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/POPAnimationMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar POPAnimationOrNull=require('POPAnimation');\nvar React=require('React');\n\nif(!POPAnimationOrNull){\n\n\nmodule.exports = null;}else \n{\n\n\n\nvar POPAnimation=POPAnimationOrNull;\n\nvar invariant=require('invariant');\nvar warning=require('warning');\n\nvar POPAnimationMixin={\n\n\n\n\nAnimationTypes:POPAnimation.Types,\nAnimationProperties:POPAnimation.Properties,\n\ngetInitialState:function(){\nthis._popAnimationEnqueuedAnimationTimeouts = [];\nreturn {\n_currentAnimationsByNodeHandle:{}};},\n\n\n\n_ensureBookkeepingSetup:function(nodeHandle){\nif(!this.state._currentAnimationsByNodeHandle[nodeHandle]){\nthis.state._currentAnimationsByNodeHandle[nodeHandle] = [];}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nstartAnimation:function(\nrefKey,\nanim,\ndoneCallback)\n{\nvar animID=0;\nif(typeof anim === 'number'){\nanimID = anim;}else \n{\ninvariant(\nanim instanceof Object && \nanim.type !== undefined && \nanim.property !== undefined,\n'Animation definitions must specify a type of animation and a ' + \n'property to animate.');\n\nanimID = POPAnimation.createAnimation(anim.type,anim);}\n\ninvariant(\nthis.refs[refKey],\n'Invalid refKey ' + refKey + ' for anim:\\n' + JSON.stringify(anim) + \n'\\nvalid refs: ' + JSON.stringify(Object.keys(this.refs)));\n\nvar refNodeHandle=React.findNodeHandle(this.refs[refKey]);\nthis.startAnimationWithNodeHandle(refNodeHandle,animID,doneCallback);},\n\n\n\n\n\n\n\n\nstartAnimationWithNodeHandle:function(\nnodeHandle,\nanimID,\ndoneCallback)\n{var _this=this;\nthis._ensureBookkeepingSetup(nodeHandle);\nvar animations=this.state._currentAnimationsByNodeHandle[nodeHandle];\nvar animIndex=animations.length;\nanimations.push(animID);\nvar cleanupWrapper=function(finished){\nif(!_this.isMounted()){\nreturn;}\n\nanimations[animIndex] = 0;\nvar allDone=true;\nfor(var ii=0;ii < animations.length;ii++) {\nif(animations[ii]){\nallDone = false;\nbreak;}}\n\n\nif(allDone){\n_this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;}\n\ndoneCallback && doneCallback(finished);};\n\n\nvar animationTimeoutHandler=setTimeout(function(){\nPOPAnimation.addAnimation(nodeHandle,animID,cleanupWrapper);},\n1);\nthis._popAnimationEnqueuedAnimationTimeouts.push(animationTimeoutHandler);},\n\n\n\n\n\n\n\n\n\n\n\n\n\nstartAnimations:function(\nanimations,\nonSuccess,\nonFailure)\n{var _this2=this;\nvar numReturned=0;\nvar numFinished=0;\nvar numAnimations=animations.length;\nvar metaCallback=function(finished){\nif(finished){\n++numFinished;}\n\nif(++numReturned === numAnimations){\nonSuccess && onSuccess(numFinished === numAnimations);}};\n\n\nanimations.forEach(function(anim){\nwarning(\nanim.ref != null || anim.nodeHandle != null && \n!anim.ref !== !anim.nodeHandle,\n'Animations must be specified with either ref xor nodeHandle');\n\nif(anim.ref){\n_this2.startAnimation(anim.ref,anim.anim,metaCallback);}else \nif(anim.nodeHandle){\n_this2.startAnimationWithNodeHandle(anim.nodeHandle,anim.anim,metaCallback);}});},\n\n\n\n\n\n\n\n\n\n\n\nstopNodeHandleAnimations:function(nodeHandle){\nif(!this.state._currentAnimationsByNodeHandle[nodeHandle]){\nreturn;}\n\nvar anims=this.state._currentAnimationsByNodeHandle[nodeHandle];\nfor(var i=0;i < anims.length;i++) {\nvar anim=anims[i];\nif(anim){\n\nPOPAnimation.removeAnimation(+nodeHandle,anim);}}\n\n\nthis.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;},\n\n\n\n\n\n\n\nstopAnimations:function(refKey){\ninvariant(this.refs[refKey],'invalid ref');\nthis.stopNodeHandleAnimations(React.findNodeHandle(this.refs[refKey]));},\n\n\n\n\n\n\nstopAllAnimations:function(){\nfor(var nodeHandle in this.state._currentAnimationsByNodeHandle) {\nthis.stopNodeHandleAnimations(nodeHandle);}},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nanimateToFrame:function(\nrefKey,\nframe,\ntype,\nvelocity,\ndoneCallback)\n{\nvar animFrame={\nx:frame.left + frame.width / 2,\ny:frame.top + frame.height / 2,\nw:frame.width,\nh:frame.height};\n\nvar posAnim=POPAnimation.createAnimation(type,{\nproperty:POPAnimation.Properties.position,\ntoValue:[animFrame.x,animFrame.y],\nvelocity:velocity || [0,0]});\n\nvar sizeAnim=POPAnimation.createAnimation(type,{\nproperty:POPAnimation.Properties.size,\ntoValue:[animFrame.w,animFrame.h]});\n\nthis.startAnimation(refKey,posAnim,doneCallback);\nthis.startAnimation(refKey,sizeAnim);},\n\n\n\ncomponentWillUnmount:function(){\nthis.stopAllAnimations();\nthis._popAnimationEnqueuedAnimationTimeouts.forEach(function(animationTimeoutHandler){\nclearTimeout(animationTimeoutHandler);});\n\nthis._popAnimationEnqueuedAnimationTimeouts = [];}};\n\n\n\nmodule.exports = POPAnimationMixin;}","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule POPAnimationMixin\n * @flow\n */\n'use strict';\n\nvar POPAnimationOrNull = require('POPAnimation');\nvar React = require('React');\n\nif (!POPAnimationOrNull) {\n // POP animation isn't available in the OSS fork - this is a temporary\n // workaround to enable its availability to be determined at runtime.\n module.exports = (null : ?{});\n} else {\n\n// At this point, POPAnimationOrNull is guaranteed to be\n// non-null. Bring it local to preserve type refinement.\nvar POPAnimation = POPAnimationOrNull;\n\nvar invariant = require('invariant');\nvar warning = require('warning');\n\nvar POPAnimationMixin = {\n /**\n * Different ways to interpolate between beginning and end states\n * of properties during animation, such as spring, linear, and decay.\n */\n AnimationTypes: POPAnimation.Types,\n AnimationProperties: POPAnimation.Properties,\n\n getInitialState: function(): Object {\n this._popAnimationEnqueuedAnimationTimeouts = [];\n return {\n _currentAnimationsByNodeHandle: {},\n };\n },\n\n _ensureBookkeepingSetup: function(nodeHandle: any) {\n if (!this.state._currentAnimationsByNodeHandle[nodeHandle]) {\n this.state._currentAnimationsByNodeHandle[nodeHandle] = [];\n }\n },\n\n /**\n * Start animating the View with ref `refKey`.\n *\n * @param {key} refKey The key to reference the View to be animated.\n *\n * @param {number|Object} anim Either the identifier returned by\n * POPAnimation.create* or an object defining all the necessary\n * properties of the animation you wish to start (including type, matching\n * an entry in AnimationTypes).\n *\n * @param {func} doneCallback A callback fired when the animation is done, and\n * is passed a `finished` param that indicates whether the animation\n * completely finished, or was interrupted.\n */\n startAnimation: function(\n refKey: string,\n anim: number | {type: number; property: number;},\n doneCallback: (finished: bool) => void\n ) {\n var animID: number = 0;\n if (typeof anim === 'number') {\n animID = anim;\n } else {\n invariant(\n anim instanceof Object &&\n anim.type !== undefined &&\n anim.property !== undefined,\n 'Animation definitions must specify a type of animation and a ' +\n 'property to animate.'\n );\n animID = POPAnimation.createAnimation(anim.type, anim);\n }\n invariant(\n this.refs[refKey],\n 'Invalid refKey ' + refKey + ' for anim:\\n' + JSON.stringify(anim) +\n '\\nvalid refs: ' + JSON.stringify(Object.keys(this.refs))\n );\n var refNodeHandle = React.findNodeHandle(this.refs[refKey]);\n this.startAnimationWithNodeHandle(refNodeHandle, animID, doneCallback);\n },\n\n /**\n * Starts an animation on a native node.\n *\n * @param {NodeHandle} nodeHandle Handle to underlying native node.\n * @see `startAnimation`.\n */\n startAnimationWithNodeHandle: function(\n nodeHandle: any,\n animID: number,\n doneCallback: (finished: bool) => void\n ) {\n this._ensureBookkeepingSetup(nodeHandle);\n var animations = this.state._currentAnimationsByNodeHandle[nodeHandle];\n var animIndex = animations.length;\n animations.push(animID);\n var cleanupWrapper = (finished) => {\n if (!this.isMounted()) {\n return;\n }\n animations[animIndex] = 0; // zero it out so we don't try to stop it\n var allDone = true;\n for (var ii = 0; ii < animations.length; ii++) {\n if (animations[ii]) {\n allDone = false;\n break;\n }\n }\n if (allDone) {\n this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;\n }\n doneCallback && doneCallback(finished);\n };\n // Hack to aviod race condition in POP:\n var animationTimeoutHandler = setTimeout(() => {\n POPAnimation.addAnimation(nodeHandle, animID, cleanupWrapper);\n }, 1);\n this._popAnimationEnqueuedAnimationTimeouts.push(animationTimeoutHandler);\n },\n\n /**\n * Starts multiple animations with one shared callback that is called when all\n * animations complete.\n *\n * @param {Array(Object} animations Array of objects defining all the\n * animations to start, each with shape `{ref|nodeHandle, anim}`.\n * @param {func} onSuccess A callback fired when all animations have returned,\n * and is passed a finished arg that is true if all animations finished\n * completely.\n * @param {func} onFailure Not supported yet.\n */\n startAnimations: function(\n animations: Array<Object>,\n onSuccess: (finished: boolean) => void,\n onFailure: () => void\n ) {\n var numReturned = 0;\n var numFinished = 0;\n var numAnimations = animations.length;\n var metaCallback = (finished) => {\n if (finished) {\n ++numFinished;\n }\n if (++numReturned === numAnimations) {\n onSuccess && onSuccess(numFinished === numAnimations);\n }\n };\n animations.forEach((anim) => {\n warning(\n anim.ref != null || anim.nodeHandle != null &&\n !anim.ref !== !anim.nodeHandle,\n 'Animations must be specified with either ref xor nodeHandle'\n );\n if (anim.ref) {\n this.startAnimation(anim.ref, anim.anim, metaCallback);\n } else if (anim.nodeHandle) {\n this.startAnimationWithNodeHandle(anim.nodeHandle, anim.anim, metaCallback);\n }\n });\n },\n\n /**\n * Stop any and all animations operating on the View with native node handle\n * `nodeHandle`.\n *\n * @param {NodeHandle} component The instance to stop animations\n * on. Do not pass a composite component.\n */\n stopNodeHandleAnimations: function(nodeHandle: any) {\n if (!this.state._currentAnimationsByNodeHandle[nodeHandle]) {\n return;\n }\n var anims = this.state._currentAnimationsByNodeHandle[nodeHandle];\n for (var i = 0; i < anims.length; i++) {\n var anim = anims[i];\n if (anim) {\n // Note: Converting the string key to a number `nodeHandle`.\n POPAnimation.removeAnimation(+nodeHandle, anim);\n }\n }\n this.state._currentAnimationsByNodeHandle[nodeHandle] = undefined;\n },\n\n /**\n * Stop any and all animations operating on the View with ref `refKey`.\n *\n * @param {key} refKey The key to reference the View to be animated.\n */\n stopAnimations: function(refKey: string) {\n invariant(this.refs[refKey], 'invalid ref');\n this.stopNodeHandleAnimations(React.findNodeHandle(this.refs[refKey]));\n },\n\n /**\n * Stop any and all animations created by this component on itself and\n * subviews.\n */\n stopAllAnimations: function() {\n for (var nodeHandle in this.state._currentAnimationsByNodeHandle) {\n this.stopNodeHandleAnimations(nodeHandle);\n }\n },\n\n /**\n * Animates size and position of a view referenced by `refKey` to a specific\n * frame.\n *\n * @param {key} refKey ref key for view to animate.\n * @param {Object} frame The frame to animate the view to, specified as {left,\n * top, width, height}.\n * @param {const} type What type of interpolation to use, selected from\n * `inperpolationTypes`.\n * @param {Object} event Event encapsulating synthetic and native data that\n * may have triggered this animation. Velocity is extracted from it if\n * possible and applied to the animation.\n * @param {func} doneCallback A callback fired when the animation is done, and\n * is passed a `finished` param that indicates whether the animation\n * completely finished, or was interrupted.\n */\n animateToFrame: function(\n refKey: string,\n frame: {left: number; top: number; width: number; height: number;},\n type: number,\n velocity: number,\n doneCallback: (finished: boolean) => void\n ) {\n var animFrame = { // Animations use a centered coordinate system.\n x: frame.left + frame.width / 2,\n y: frame.top + frame.height / 2,\n w: frame.width,\n h: frame.height\n };\n var posAnim = POPAnimation.createAnimation(type, {\n property: POPAnimation.Properties.position,\n toValue: [animFrame.x, animFrame.y],\n velocity: velocity || [0, 0],\n });\n var sizeAnim = POPAnimation.createAnimation(type, {\n property: POPAnimation.Properties.size,\n toValue: [animFrame.w, animFrame.h]\n });\n this.startAnimation(refKey, posAnim, doneCallback);\n this.startAnimation(refKey, sizeAnim);\n },\n\n // Cleanup any potentially leaked animations.\n componentWillUnmount: function() {\n this.stopAllAnimations();\n this._popAnimationEnqueuedAnimationTimeouts.forEach(animationTimeoutHandler => {\n clearTimeout(animationTimeoutHandler);\n });\n this._popAnimationEnqueuedAnimationTimeouts = [];\n }\n};\n\nmodule.exports = POPAnimationMixin;\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/POPAnimationMixin.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/POPAnimation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\nvar RCTPOPAnimationManager=require('NativeModules').POPAnimationManager;\nif(!RCTPOPAnimationManager){\n\n\n\n\nmodule.exports = null;}else \n{\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar getObjectValues=require('getObjectValues');\nvar invariant=require('invariant');\nvar merge=require('merge');\n\nvar RCTTypes=RCTPOPAnimationManager.Types;\nvar RCTProperties=RCTPOPAnimationManager.Properties;\n\nvar Properties={\nbounds:RCTProperties.bounds,\nopacity:RCTProperties.opacity,\nposition:RCTProperties.position,\npositionX:RCTProperties.positionX,\npositionY:RCTProperties.positionY,\nzPosition:RCTProperties.zPosition,\nrotation:RCTProperties.rotation,\nrotationX:RCTProperties.rotationX,\nrotationY:RCTProperties.rotationY,\nscaleX:RCTProperties.scaleX,\nscaleXY:RCTProperties.scaleXY,\nscaleY:RCTProperties.scaleY,\nshadowColor:RCTProperties.shadowColor,\nshadowOffset:RCTProperties.shadowOffset,\nshadowOpacity:RCTProperties.shadowOpacity,\nshadowRadius:RCTProperties.shadowRadius,\nsize:RCTProperties.size,\nsubscaleXY:RCTProperties.subscaleXY,\nsubtranslationX:RCTProperties.subtranslationX,\nsubtranslationXY:RCTProperties.subtranslationXY,\nsubtranslationY:RCTProperties.subtranslationY,\nsubtranslationZ:RCTProperties.subtranslationZ,\ntranslationX:RCTProperties.translationX,\ntranslationXY:RCTProperties.translationXY,\ntranslationY:RCTProperties.translationY,\ntranslationZ:RCTProperties.translationZ};\n\n\nvar Types={\ndecay:RCTTypes.decay,\neaseIn:RCTTypes.easeIn,\neaseInEaseOut:RCTTypes.easeInEaseOut,\neaseOut:RCTTypes.easeOut,\nlinear:RCTTypes.linear,\nspring:RCTTypes.spring};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar POPAnimation={\nTypes:Types,\nProperties:Properties,\n\nattributeChecker:createStrictShapeTypeChecker({\ntype:ReactPropTypes.oneOf(getObjectValues(Types)),\nproperty:ReactPropTypes.oneOf(getObjectValues(Properties)),\nfromValue:ReactPropTypes.any,\ntoValue:ReactPropTypes.any,\nduration:ReactPropTypes.any,\nvelocity:ReactPropTypes.any,\ndeceleration:ReactPropTypes.any,\nspringBounciness:ReactPropTypes.any,\ndynamicsFriction:ReactPropTypes.any,\ndynamicsMass:ReactPropTypes.any,\ndynamicsTension:ReactPropTypes.any}),\n\n\nlastUsedTag:0,\nallocateTagForAnimation:function(){\nreturn ++this.lastUsedTag;},\n\n\ncreateAnimation:function(typeName,attrs){\nvar tag=this.allocateTagForAnimation();\n\nif(__DEV__){\nPOPAnimation.attributeChecker(\n{attrs:attrs},\n'attrs',\n'POPAnimation.createAnimation');\n\nPOPAnimation.attributeChecker(\n{attrs:{type:typeName}},\n'attrs',\n'POPAnimation.createAnimation');}\n\n\n\nRCTPOPAnimationManager.createAnimationInternal(tag,typeName,attrs);\nreturn tag;},\n\n\ncreateSpringAnimation:function(attrs){\nreturn this.createAnimation(this.Types.spring,attrs);},\n\n\ncreateDecayAnimation:function(attrs){\nreturn this.createAnimation(this.Types.decay,attrs);},\n\n\ncreateLinearAnimation:function(attrs){\nreturn this.createAnimation(this.Types.linear,attrs);},\n\n\ncreateEaseInAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeIn,attrs);},\n\n\ncreateEaseOutAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeOut,attrs);},\n\n\ncreateEaseInEaseOutAnimation:function(attrs){\nreturn this.createAnimation(this.Types.easeInEaseOut,attrs);},\n\n\naddAnimation:function(nodeHandle,anim,callback){\nRCTPOPAnimationManager.addAnimation(nodeHandle,anim,callback);},\n\n\nremoveAnimation:function(nodeHandle,anim){\nRCTPOPAnimationManager.removeAnimation(nodeHandle,anim);}};\n\n\n\n\n\nif(__DEV__){\nvar allProperties=merge(\nRCTPOPAnimationManager.Properties,\nRCTPOPAnimationManager.Properties);\n\nfor(var key in allProperties) {\ninvariant(\nPOPAnimation.Properties[key] === RCTPOPAnimationManager.Properties[key],\n'POPAnimation doesn\\'t copy property ' + key + ' correctly');}\n\n\n\nvar allTypes=merge(\nRCTPOPAnimationManager.Types,\nRCTPOPAnimationManager.Types);\n\nfor(var key in allTypes) {\ninvariant(\nPOPAnimation.Types[key] === RCTPOPAnimationManager.Types[key],\n'POPAnimation doesn\\'t copy type ' + key + ' correctly');}}\n\n\n\n\nmodule.exports = POPAnimation;}","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule POPAnimation\n */\n'use strict';\n\nvar RCTPOPAnimationManager = require('NativeModules').POPAnimationManager;\nif (!RCTPOPAnimationManager) {\n // POP animation isn't available in the OSS fork - this is a temporary\n // workaround to enable its availability to be determined at runtime.\n // For Flow let's pretend like we always export POPAnimation\n // so all our users don't need to do null checks\n module.exports = null;\n} else {\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar getObjectValues = require('getObjectValues');\nvar invariant = require('invariant');\nvar merge = require('merge');\n\nvar RCTTypes = RCTPOPAnimationManager.Types;\nvar RCTProperties = RCTPOPAnimationManager.Properties;\n\nvar Properties = {\n bounds: RCTProperties.bounds,\n opacity: RCTProperties.opacity,\n position: RCTProperties.position,\n positionX: RCTProperties.positionX,\n positionY: RCTProperties.positionY,\n zPosition: RCTProperties.zPosition,\n rotation: RCTProperties.rotation,\n rotationX: RCTProperties.rotationX,\n rotationY: RCTProperties.rotationY,\n scaleX: RCTProperties.scaleX,\n scaleXY: RCTProperties.scaleXY,\n scaleY: RCTProperties.scaleY,\n shadowColor: RCTProperties.shadowColor,\n shadowOffset: RCTProperties.shadowOffset,\n shadowOpacity: RCTProperties.shadowOpacity,\n shadowRadius: RCTProperties.shadowRadius,\n size: RCTProperties.size,\n subscaleXY: RCTProperties.subscaleXY,\n subtranslationX: RCTProperties.subtranslationX,\n subtranslationXY: RCTProperties.subtranslationXY,\n subtranslationY: RCTProperties.subtranslationY,\n subtranslationZ: RCTProperties.subtranslationZ,\n translationX: RCTProperties.translationX,\n translationXY: RCTProperties.translationXY,\n translationY: RCTProperties.translationY,\n translationZ: RCTProperties.translationZ,\n};\n\nvar Types = {\n decay: RCTTypes.decay,\n easeIn: RCTTypes.easeIn,\n easeInEaseOut: RCTTypes.easeInEaseOut,\n easeOut: RCTTypes.easeOut,\n linear: RCTTypes.linear,\n spring: RCTTypes.spring,\n};\n\ntype Attrs = {\n type?: $Enum<typeof Types>;\n property?: $Enum<typeof Properties>;\n fromValue?: any;\n toValue?: any;\n duration?: any;\n velocity?: any;\n deceleration?: any;\n springBounciness?: any;\n dynamicsFriction?: any;\n dynamicsMass?: any;\n dynamicsTension?: any;\n}\n\nvar POPAnimation = {\n Types: Types,\n Properties: Properties,\n\n attributeChecker: createStrictShapeTypeChecker({\n type: ReactPropTypes.oneOf(getObjectValues(Types)),\n property: ReactPropTypes.oneOf(getObjectValues(Properties)),\n fromValue: ReactPropTypes.any,\n toValue: ReactPropTypes.any,\n duration: ReactPropTypes.any,\n velocity: ReactPropTypes.any,\n deceleration: ReactPropTypes.any,\n springBounciness: ReactPropTypes.any,\n dynamicsFriction: ReactPropTypes.any,\n dynamicsMass: ReactPropTypes.any,\n dynamicsTension: ReactPropTypes.any,\n }),\n\n lastUsedTag: 0,\n allocateTagForAnimation: function(): number {\n return ++this.lastUsedTag;\n },\n\n createAnimation: function(typeName: number, attrs: Attrs): number {\n var tag = this.allocateTagForAnimation();\n\n if (__DEV__) {\n POPAnimation.attributeChecker(\n {attrs},\n 'attrs',\n 'POPAnimation.createAnimation'\n );\n POPAnimation.attributeChecker(\n {attrs: {type: typeName}},\n 'attrs',\n 'POPAnimation.createAnimation'\n );\n }\n\n RCTPOPAnimationManager.createAnimationInternal(tag, typeName, attrs);\n return tag;\n },\n\n createSpringAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.spring, attrs);\n },\n\n createDecayAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.decay, attrs);\n },\n\n createLinearAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.linear, attrs);\n },\n\n createEaseInAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeIn, attrs);\n },\n\n createEaseOutAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeOut, attrs);\n },\n\n createEaseInEaseOutAnimation: function(attrs: Attrs): number {\n return this.createAnimation(this.Types.easeInEaseOut, attrs);\n },\n\n addAnimation: function(nodeHandle: any, anim: number, callback: Function) {\n RCTPOPAnimationManager.addAnimation(nodeHandle, anim, callback);\n },\n\n removeAnimation: function(nodeHandle: any, anim: number) {\n RCTPOPAnimationManager.removeAnimation(nodeHandle, anim);\n },\n};\n\n// Make sure that we correctly propagate RCTPOPAnimationManager constants\n// to POPAnimation\nif (__DEV__) {\n var allProperties = merge(\n RCTPOPAnimationManager.Properties,\n RCTPOPAnimationManager.Properties\n );\n for (var key in allProperties) {\n invariant(\n POPAnimation.Properties[key] === RCTPOPAnimationManager.Properties[key],\n 'POPAnimation doesn\\'t copy property ' + key + ' correctly'\n );\n }\n\n var allTypes = merge(\n RCTPOPAnimationManager.Types,\n RCTPOPAnimationManager.Types\n );\n for (var key in allTypes) {\n invariant(\n POPAnimation.Types[key] === RCTPOPAnimationManager.Types[key],\n 'POPAnimation doesn\\'t copy type ' + key + ' correctly'\n );\n }\n}\n\nmodule.exports = POPAnimation;\n\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/BatchedBridge/BatchedBridgedModules/POPAnimation.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/getObjectValues.js":{"data":{"code":"function \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ngetObjectValues(obj){\nvar values=[];\nfor(var key in obj) {\nvalues.push(obj[key]);}\n\nreturn values;}\n\n\nmodule.exports = getObjectValues;","sourceCode":"/**\n * @generated SignedSource<<d15b8e694c4a339791cddebd93264270>>\n *\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n * !! This file is a check-in of a static_upstream project! !!\n * !! !!\n * !! You should not modify this file directly. Instead: !!\n * !! 1) Use `fjs use-upstream` to temporarily replace this with !!\n * !! the latest version from upstream. !!\n * !! 2) Make your changes, test them, etc. !!\n * !! 3) Use `fjs push-upstream` to copy your changes back to !!\n * !! static_upstream. !!\n * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n *\n * @providesModule getObjectValues\n * @typechecks\n */\n\n/**\n * Retrieve an object's values as an array.\n *\n * If you are looking for a function that creates an Array instance based\n * on an \"Array-like\" object, use createArrayFrom instead.\n *\n * @param {object} obj An object.\n * @return {array} The object's values.\n */\nfunction getObjectValues(obj) {\n var values = [];\n for (var key in obj) {\n values.push(obj[key]);\n }\n return values;\n}\n\nmodule.exports = getObjectValues;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/vendor/core/getObjectValues.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ActivityIndicatorIOS=require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType=require('EdgeInsetsPropType');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\n\nvar invariant=require('invariant');\nvar keyMirror=require('keyMirror');\nvar requireNativeComponent=require('requireNativeComponent');\n\nvar PropTypes=React.PropTypes;\nvar RCTWebViewManager=require('NativeModules').WebViewManager;\n\nvar BGWASH='rgba(255,255,255,0.8)';\nvar RCT_WEBVIEW_REF='webview';\n\nvar WebViewState=keyMirror({\nIDLE:null,\nLOADING:null,\nERROR:null});\n\n\nvar NavigationType={\nclick:RCTWebViewManager.NavigationType.LinkClicked,\nformsubmit:RCTWebViewManager.NavigationType.FormSubmitted,\nbackforward:RCTWebViewManager.NavigationType.BackForward,\nreload:RCTWebViewManager.NavigationType.Reload,\nformresubmit:RCTWebViewManager.NavigationType.FormResubmitted,\nother:RCTWebViewManager.NavigationType.Other};\n\n\nvar JSNavigationScheme=RCTWebViewManager.JSNavigationScheme;\n\n\n\n\n\n\n\n\n\nvar defaultRenderLoading=function(){return (\nReact.createElement(View,{style:styles.loadingView},\nReact.createElement(ActivityIndicatorIOS,null)));};\n\n\nvar defaultRenderError=function(errorDomain,errorCode,errorDesc){return (\nReact.createElement(View,{style:styles.errorContainer},\nReact.createElement(Text,{style:styles.errorTextTitle},'Error loading page'),\n\n\nReact.createElement(Text,{style:styles.errorText},\n'Domain: ' + errorDomain),\n\nReact.createElement(Text,{style:styles.errorText},\n'Error Code: ' + errorCode),\n\nReact.createElement(Text,{style:styles.errorText},\n'Description: ' + errorDesc)));};\n\n\n\n\nvar WebView=React.createClass({displayName:'WebView',\nstatics:{\nJSNavigationScheme:JSNavigationScheme,\nNavigationType:NavigationType},\n\n\npropTypes:{\nurl:PropTypes.string,\nhtml:PropTypes.string,\nrenderError:PropTypes.func,\nrenderLoading:PropTypes.func,\nbounces:PropTypes.bool,\nscrollEnabled:PropTypes.bool,\nautomaticallyAdjustContentInsets:PropTypes.bool,\ncontentInset:EdgeInsetsPropType,\nonNavigationStateChange:PropTypes.func,\nstartInLoadingState:PropTypes.bool,\nstyle:View.propTypes.style,\n\n\n\njavaScriptEnabledAndroid:PropTypes.bool,\n\n\n\ninjectedJavaScript:PropTypes.string,\n\n\n\n\n\nscalesPageToFit:PropTypes.bool},\n\n\ngetInitialState:function(){\nreturn {\nviewState:WebViewState.IDLE,\nlastErrorEvent:null,\nstartInLoadingState:true};},\n\n\n\ncomponentWillMount:function(){\nif(this.props.startInLoadingState){\nthis.setState({viewState:WebViewState.LOADING});}},\n\n\n\nrender:function(){\nvar otherView=null;\n\nif(this.state.viewState === WebViewState.LOADING){\notherView = (this.props.renderLoading || defaultRenderLoading)();}else \nif(this.state.viewState === WebViewState.ERROR){\nvar errorEvent=this.state.lastErrorEvent;\ninvariant(\nerrorEvent != null,\n'lastErrorEvent expected to be non-null');\n\notherView = (this.props.renderError || defaultRenderError)(\nerrorEvent.domain,\nerrorEvent.code,\nerrorEvent.description);}else \n\nif(this.state.viewState !== WebViewState.IDLE){\nconsole.error(\n'RCTWebView invalid state encountered: ' + this.state.loading);}\n\n\n\nvar webViewStyles=[styles.container,styles.webView,this.props.style];\nif(this.state.viewState === WebViewState.LOADING || \nthis.state.viewState === WebViewState.ERROR){\n\nwebViewStyles.push(styles.hidden);}\n\n\nvar webView=\nReact.createElement(RCTWebView,{\nref:RCT_WEBVIEW_REF,\nkey:'webViewKey',\nstyle:webViewStyles,\nurl:this.props.url,\nhtml:this.props.html,\ninjectedJavaScript:this.props.injectedJavaScript,\nbounces:this.props.bounces,\nscrollEnabled:this.props.scrollEnabled,\ncontentInset:this.props.contentInset,\nautomaticallyAdjustContentInsets:this.props.automaticallyAdjustContentInsets,\nonLoadingStart:this.onLoadingStart,\nonLoadingFinish:this.onLoadingFinish,\nonLoadingError:this.onLoadingError,\nscalesPageToFit:this.props.scalesPageToFit});\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\nwebView,\notherView));},\n\n\n\n\ngoForward:function(){\nRCTWebViewManager.goForward(this.getWebViewHandle());},\n\n\ngoBack:function(){\nRCTWebViewManager.goBack(this.getWebViewHandle());},\n\n\nreload:function(){\nRCTWebViewManager.reload(this.getWebViewHandle());},\n\n\n\n\n\n\nupdateNavigationState:function(event){\nif(this.props.onNavigationStateChange){\nthis.props.onNavigationStateChange(event.nativeEvent);}},\n\n\n\ngetWebViewHandle:function(){\nreturn React.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);},\n\n\nonLoadingStart:function(event){\nthis.updateNavigationState(event);},\n\n\nonLoadingError:function(event){\nevent.persist();\nconsole.error('Encountered an error loading page',event.nativeEvent);\n\nthis.setState({\nlastErrorEvent:event.nativeEvent,\nviewState:WebViewState.ERROR});},\n\n\n\nonLoadingFinish:function(event){\nthis.setState({\nviewState:WebViewState.IDLE});\n\nthis.updateNavigationState(event);}});\n\n\n\nvar RCTWebView=requireNativeComponent('RCTWebView',WebView);\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1},\n\nerrorContainer:{\nflex:1,\njustifyContent:'center',\nalignItems:'center',\nbackgroundColor:BGWASH},\n\nerrorText:{\nfontSize:14,\ntextAlign:'center',\nmarginBottom:2},\n\nerrorTextTitle:{\nfontSize:15,\nfontWeight:'500',\nmarginBottom:10},\n\nhidden:{\nheight:0,\nflex:0},\n\nloadingView:{\nbackgroundColor:BGWASH,\nflex:1,\njustifyContent:'center',\nalignItems:'center'},\n\nwebView:{\nbackgroundColor:'#ffffff'}});\n\n\n\nmodule.exports = WebView;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WebView\n * @flow\n */\n'use strict';\n\nvar ActivityIndicatorIOS = require('ActivityIndicatorIOS');\nvar EdgeInsetsPropType = require('EdgeInsetsPropType');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nvar invariant = require('invariant');\nvar keyMirror = require('keyMirror');\nvar requireNativeComponent = require('requireNativeComponent');\n\nvar PropTypes = React.PropTypes;\nvar RCTWebViewManager = require('NativeModules').WebViewManager;\n\nvar BGWASH = 'rgba(255,255,255,0.8)';\nvar RCT_WEBVIEW_REF = 'webview';\n\nvar WebViewState = keyMirror({\n IDLE: null,\n LOADING: null,\n ERROR: null,\n});\n\nvar NavigationType = {\n click: RCTWebViewManager.NavigationType.LinkClicked,\n formsubmit: RCTWebViewManager.NavigationType.FormSubmitted,\n backforward: RCTWebViewManager.NavigationType.BackForward,\n reload: RCTWebViewManager.NavigationType.Reload,\n formresubmit: RCTWebViewManager.NavigationType.FormResubmitted,\n other: RCTWebViewManager.NavigationType.Other,\n};\n\nvar JSNavigationScheme = RCTWebViewManager.JSNavigationScheme;\n\ntype ErrorEvent = {\n domain: any;\n code: any;\n description: any;\n}\n\ntype Event = Object;\n\nvar defaultRenderLoading = () => (\n <View style={styles.loadingView}>\n <ActivityIndicatorIOS />\n </View>\n);\nvar defaultRenderError = (errorDomain, errorCode, errorDesc) => (\n <View style={styles.errorContainer}>\n <Text style={styles.errorTextTitle}>\n Error loading page\n </Text>\n <Text style={styles.errorText}>\n {'Domain: ' + errorDomain}\n </Text>\n <Text style={styles.errorText}>\n {'Error Code: ' + errorCode}\n </Text>\n <Text style={styles.errorText}>\n {'Description: ' + errorDesc}\n </Text>\n </View>\n);\n\nvar WebView = React.createClass({\n statics: {\n JSNavigationScheme: JSNavigationScheme,\n NavigationType: NavigationType,\n },\n\n propTypes: {\n url: PropTypes.string,\n html: PropTypes.string,\n renderError: PropTypes.func, // view to show if there's an error\n renderLoading: PropTypes.func, // loading indicator to show\n bounces: PropTypes.bool,\n scrollEnabled: PropTypes.bool,\n automaticallyAdjustContentInsets: PropTypes.bool,\n contentInset: EdgeInsetsPropType,\n onNavigationStateChange: PropTypes.func,\n startInLoadingState: PropTypes.bool, // force WebView to show loadingView on first load\n style: View.propTypes.style,\n /**\n * Used for android only, JS is enabled by default for WebView on iOS\n */\n javaScriptEnabledAndroid: PropTypes.bool,\n /**\n * Sets the JS to be injected when the webpage loads.\n */\n injectedJavaScript: PropTypes.string,\n\n /**\n * Used for iOS only, sets whether the webpage scales to fit the view and the\n * user can change the scale\n */\n scalesPageToFit: PropTypes.bool,\n },\n\n getInitialState: function() {\n return {\n viewState: WebViewState.IDLE,\n lastErrorEvent: (null: ?ErrorEvent),\n startInLoadingState: true,\n };\n },\n\n componentWillMount: function() {\n if (this.props.startInLoadingState) {\n this.setState({viewState: WebViewState.LOADING});\n }\n },\n\n render: function() {\n var otherView = null;\n\n if (this.state.viewState === WebViewState.LOADING) {\n otherView = (this.props.renderLoading || defaultRenderLoading)();\n } else if (this.state.viewState === WebViewState.ERROR) {\n var errorEvent = this.state.lastErrorEvent;\n invariant(\n errorEvent != null,\n 'lastErrorEvent expected to be non-null'\n );\n otherView = (this.props.renderError || defaultRenderError)(\n errorEvent.domain,\n errorEvent.code,\n errorEvent.description\n );\n } else if (this.state.viewState !== WebViewState.IDLE) {\n console.error(\n 'RCTWebView invalid state encountered: ' + this.state.loading\n );\n }\n\n var webViewStyles = [styles.container, styles.webView, this.props.style];\n if (this.state.viewState === WebViewState.LOADING ||\n this.state.viewState === WebViewState.ERROR) {\n // if we're in either LOADING or ERROR states, don't show the webView\n webViewStyles.push(styles.hidden);\n }\n\n var webView =\n <RCTWebView\n ref={RCT_WEBVIEW_REF}\n key=\"webViewKey\"\n style={webViewStyles}\n url={this.props.url}\n html={this.props.html}\n injectedJavaScript={this.props.injectedJavaScript}\n bounces={this.props.bounces}\n scrollEnabled={this.props.scrollEnabled}\n contentInset={this.props.contentInset}\n automaticallyAdjustContentInsets={this.props.automaticallyAdjustContentInsets}\n onLoadingStart={this.onLoadingStart}\n onLoadingFinish={this.onLoadingFinish}\n onLoadingError={this.onLoadingError}\n scalesPageToFit={this.props.scalesPageToFit}\n />;\n\n return (\n <View style={styles.container}>\n {webView}\n {otherView}\n </View>\n );\n },\n\n goForward: function() {\n RCTWebViewManager.goForward(this.getWebViewHandle());\n },\n\n goBack: function() {\n RCTWebViewManager.goBack(this.getWebViewHandle());\n },\n\n reload: function() {\n RCTWebViewManager.reload(this.getWebViewHandle());\n },\n\n /**\n * We return an event with a bunch of fields including:\n * url, title, loading, canGoBack, canGoForward\n */\n updateNavigationState: function(event: Event) {\n if (this.props.onNavigationStateChange) {\n this.props.onNavigationStateChange(event.nativeEvent);\n }\n },\n\n getWebViewHandle: function(): any {\n return React.findNodeHandle(this.refs[RCT_WEBVIEW_REF]);\n },\n\n onLoadingStart: function(event: Event) {\n this.updateNavigationState(event);\n },\n\n onLoadingError: function(event: Event) {\n event.persist(); // persist this event because we need to store it\n console.error('Encountered an error loading page', event.nativeEvent);\n\n this.setState({\n lastErrorEvent: event.nativeEvent,\n viewState: WebViewState.ERROR\n });\n },\n\n onLoadingFinish: function(event: Event) {\n this.setState({\n viewState: WebViewState.IDLE,\n });\n this.updateNavigationState(event);\n },\n});\n\nvar RCTWebView = requireNativeComponent('RCTWebView', WebView);\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n errorContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: BGWASH,\n },\n errorText: {\n fontSize: 14,\n textAlign: 'center',\n marginBottom: 2,\n },\n errorTextTitle: {\n fontSize: 15,\n fontWeight: '500',\n marginBottom: 10,\n },\n hidden: {\n height: 0,\n flex: 0, // disable 'flex:1' when hiding a View\n },\n loadingView: {\n backgroundColor: BGWASH,\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n webView: {\n backgroundColor: '#ffffff',\n }\n});\n\nmodule.exports = WebView;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTActionSheetManager=require('NativeModules').ActionSheetManager;\n\nvar invariant=require('invariant');\n\nvar ActionSheetIOS={\nshowActionSheetWithOptions:function(options,callback){\ninvariant(\ntypeof options === 'object' && options !== null,\n'Options must a valid object');\n\ninvariant(\ntypeof callback === 'function',\n'Must provide a valid callback');\n\nRCTActionSheetManager.showActionSheetWithOptions(\noptions,\nfunction(){},\ncallback);},\n\n\n\nshowShareActionSheetWithOptions:function(\noptions,\nfailureCallback,\nsuccessCallback)\n{\ninvariant(\ntypeof options === 'object' && options !== null,\n'Options must a valid object');\n\ninvariant(\ntypeof failureCallback === 'function',\n'Must provide a valid failureCallback');\n\ninvariant(\ntypeof successCallback === 'function',\n'Must provide a valid successCallback');\n\nRCTActionSheetManager.showShareActionSheetWithOptions(\noptions,\nfailureCallback,\nsuccessCallback);}};\n\n\n\n\nmodule.exports = ActionSheetIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ActionSheetIOS\n * @flow\n */\n'use strict';\n\nvar RCTActionSheetManager = require('NativeModules').ActionSheetManager;\n\nvar invariant = require('invariant');\n\nvar ActionSheetIOS = {\n showActionSheetWithOptions(options: Object, callback: Function) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must a valid object'\n );\n invariant(\n typeof callback === 'function',\n 'Must provide a valid callback'\n );\n RCTActionSheetManager.showActionSheetWithOptions(\n options,\n () => {}, // RKActionSheet compatibility hack\n callback\n );\n },\n\n showShareActionSheetWithOptions(\n options: Object,\n failureCallback: Function,\n successCallback: Function\n ) {\n invariant(\n typeof options === 'object' && options !== null,\n 'Options must a valid object'\n );\n invariant(\n typeof failureCallback === 'function',\n 'Must provide a valid failureCallback'\n );\n invariant(\n typeof successCallback === 'function',\n 'Must provide a valid successCallback'\n );\n RCTActionSheetManager.showShareActionSheetWithOptions(\n options,\n failureCallback,\n successCallback\n );\n }\n};\n\nmodule.exports = ActionSheetIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ActionSheetIOS/ActionSheetIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AdSupport/AdSupportIOS.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar AdSupport=require('NativeModules').AdSupport;\n\nmodule.exports = {\ngetAdvertisingId:function(onSuccess,onFailure){\nAdSupport.getAdvertisingId(onSuccess,onFailure);},\n\n\ngetAdvertisingTrackingEnabled:function(onSuccess,onFailure){\nAdSupport.getAdvertisingTrackingEnabled(onSuccess,onFailure);}};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AdSupportIOS\n * @flow\n */\n'use strict';\n\nvar AdSupport = require('NativeModules').AdSupport;\n\nmodule.exports = {\n getAdvertisingId: function(onSuccess: Function, onFailure: Function) {\n AdSupport.getAdvertisingId(onSuccess, onFailure);\n },\n\n getAdvertisingTrackingEnabled: function(onSuccess: Function, onFailure: Function) {\n AdSupport.getAdvertisingTrackingEnabled(onSuccess, onFailure);\n },\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AdSupport/AdSupportIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/AlertIOS.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTAlertManager=require('NativeModules').AlertManager;\nvar invariant=require('invariant');\n\nvar DEFAULT_BUTTON_TEXT='OK';\nvar DEFAULT_BUTTON={\ntext:DEFAULT_BUTTON_TEXT,\nonPress:null};var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAlertIOS=(function(){function AlertIOS(){_classCallCheck(this,AlertIOS);}_createClass(AlertIOS,null,[{key:'alert',value:\nfunction alert(\ntitle,\nmessage,\nbuttons,\n\n\n\ntype)\n{\nvar callbacks=[];\nvar buttonsSpec=[];\ntitle = title || '';\nmessage = message || '';\nbuttons = buttons || [DEFAULT_BUTTON];\ntype = type || '';\n\nbuttons.forEach(function(btn,index){\ncallbacks[index] = btn.onPress;\nvar btnDef={};\nbtnDef[index] = btn.text || DEFAULT_BUTTON_TEXT;\nbuttonsSpec.push(btnDef);});\n\nRCTAlertManager.alertWithArgs({\ntitle:title,\nmessage:message,\nbuttons:buttonsSpec,\ntype:type},\nfunction(id,value){\nvar cb=callbacks[id];\ncb && cb(value);});}},{key:'prompt',value:\n\n\n\nfunction prompt(\ntitle,\nvalue,\nbuttons,\n\n\n\ncallback)\n{\nif(arguments.length === 2){\nif(typeof value === 'object'){\nbuttons = value;\nvalue = undefined;}else \nif(typeof value === 'function'){\ncallback = value;\nvalue = undefined;}}else \n\nif(arguments.length === 3 && typeof buttons === 'function'){\ncallback = buttons;\nbuttons = undefined;}\n\n\ninvariant(\n!(callback && buttons) && (callback || buttons),\n'Must provide either a button list or a callback, but not both');\n\n\nif(!buttons){\nbuttons = [{\ntext:'Cancel'},\n{\ntext:'OK',\nonPress:callback}];}\n\n\nthis.alert(title,value,buttons,'plain-text');}}]);return AlertIOS;})();\n\n\n\nmodule.exports = AlertIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AlertIOS\n * @flow\n */\n'use strict';\n\nvar RCTAlertManager = require('NativeModules').AlertManager;\nvar invariant = require('invariant');\n\nvar DEFAULT_BUTTON_TEXT = 'OK';\nvar DEFAULT_BUTTON = {\n text: DEFAULT_BUTTON_TEXT,\n onPress: null,\n};\n\n/**\n * Launches an alert dialog with the specified title and message.\n *\n * Optionally provide a list of buttons. Tapping any button will fire the\n * respective onPress callback and dismiss the alert. By default, the only\n * button will be an 'OK' button\n *\n * The last button in the list will be considered the 'Primary' button and\n * it will appear bold.\n *\n * ```\n * AlertIOS.alert(\n * 'Foo Title',\n * 'My Alert Msg',\n * [\n * {text: 'Foo', onPress: () => console.log('Foo Pressed!')},\n * {text: 'Bar', onPress: () => console.log('Bar Pressed!')},\n * ]\n * )\n * ```\n */\n\nclass AlertIOS {\n static alert(\n title: ?string,\n message?: ?string,\n buttons?: Array<{\n text: ?string;\n onPress?: ?Function;\n }>,\n type?: ?string\n ): void {\n var callbacks = [];\n var buttonsSpec = [];\n title = title || '';\n message = message || '';\n buttons = buttons || [DEFAULT_BUTTON];\n type = type || '';\n\n buttons.forEach((btn, index) => {\n callbacks[index] = btn.onPress;\n var btnDef = {};\n btnDef[index] = btn.text || DEFAULT_BUTTON_TEXT;\n buttonsSpec.push(btnDef);\n });\n RCTAlertManager.alertWithArgs({\n title,\n message,\n buttons: buttonsSpec,\n type,\n }, (id, value) => {\n var cb = callbacks[id];\n cb && cb(value);\n });\n }\n\n static prompt(\n title: string,\n value?: string,\n buttons?: Array<{\n text: ?string;\n onPress?: ?Function;\n }>,\n callback?: ?Function\n ): void {\n if (arguments.length === 2) {\n if (typeof value === 'object') {\n buttons = value;\n value = undefined;\n } else if (typeof value === 'function') {\n callback = value;\n value = undefined;\n }\n } else if (arguments.length === 3 && typeof buttons === 'function') {\n callback = buttons;\n buttons = undefined;\n }\n\n invariant(\n !(callback && buttons) && (callback || buttons),\n 'Must provide either a button list or a callback, but not both'\n );\n\n if (!buttons) {\n buttons = [{\n text: 'Cancel',\n }, {\n text: 'OK',\n onPress: callback\n }];\n }\n this.alert(title, value, buttons, 'plain-text');\n }\n}\n\nmodule.exports = AlertIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/AlertIOS.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Animated.js":{"data":{"code":"var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n'use strict';\n\nvar Easing=require('Easing');\nvar Image=require('Image');\nvar InteractionManager=require('InteractionManager');\nvar Interpolation=require('Interpolation');\nvar React=require('React');\nvar Set=require('Set');\nvar Text=require('Text');\nvar View=require('View');\nvar invariant=require('invariant');\n\nvar flattenStyle=require('flattenStyle');\nvar rebound=require('rebound');\nvar requestAnimationFrame=require('requestAnimationFrame');var \n\n\n\n\n\n\n\n\nAnimated=(function(){function Animated(){_classCallCheck(this,Animated);}_createClass(Animated,[{key:'attach',value:\nfunction attach(){}},{key:'detach',value:\nfunction detach(){}},{key:'__getValue',value:\nfunction __getValue(){}},{key:'getAnimatedValue',value:\nfunction getAnimatedValue(){return this.__getValue();}},{key:'addChild',value:\nfunction addChild(child){}},{key:'removeChild',value:\nfunction removeChild(child){}},{key:'getChildren',value:\nfunction getChildren(){return [];}}]);return Animated;})();var \n\n\n\n\n\nAnimation=(function(){function Animation(){_classCallCheck(this,Animation);}_createClass(Animation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation)\n{}},{key:'stop',value:\nfunction stop(){}},{key:'__debouncedOnEnd',value:\n\nfunction __debouncedOnEnd(result){\nvar onEnd=this.__onEnd;\nthis.__onEnd = null;\nonEnd && onEnd(result);}}]);return Animation;})();var \n\n\n\nAnimatedWithChildren=(function(_Animated){_inherits(AnimatedWithChildren,_Animated);\n\n\nfunction AnimatedWithChildren(){_classCallCheck(this,AnimatedWithChildren);\n_get(Object.getPrototypeOf(AnimatedWithChildren.prototype),'constructor',this).call(this);\nthis._children = [];}_createClass(AnimatedWithChildren,[{key:'addChild',value:\n\n\nfunction addChild(child){\nif(this._children.length === 0){\nthis.attach();}\n\nthis._children.push(child);}},{key:'removeChild',value:\n\n\nfunction removeChild(child){\nvar index=this._children.indexOf(child);\nif(index === -1){\nconsole.warn('Trying to remove a child that doesn\\'t exist');\nreturn;}\n\nthis._children.splice(index,1);\nif(this._children.length === 0){\nthis.detach();}}},{key:'getChildren',value:\n\n\n\nfunction getChildren(){\nreturn this._children;}}]);return AnimatedWithChildren;})(Animated);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction _flush(rootNode){\nvar animatedStyles=new Set();\nfunction findAnimatedStyles(node){\nif(typeof node.update === 'function'){\nanimatedStyles.add(node);}else \n{\nnode.getChildren().forEach(findAnimatedStyles);}}\n\n\nfindAnimatedStyles(rootNode);\nanimatedStyles.forEach(function(animatedStyle){return animatedStyle.update();});}\n\n\n\n\n\n\n\n\n\nvar easeInOut=Easing.inOut(Easing.ease);var \n\nTimingAnimation=(function(_Animation){_inherits(TimingAnimation,_Animation);\n\n\n\n\n\n\n\n\n\n\nfunction TimingAnimation(\nconfig)\n{_classCallCheck(this,TimingAnimation);\n_get(Object.getPrototypeOf(TimingAnimation.prototype),'constructor',this).call(this);\nthis._toValue = config.toValue;\nthis._easing = config.easing || easeInOut;\nthis._duration = config.duration !== undefined?config.duration:500;\nthis._delay = config.delay || 0;}_createClass(TimingAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd)\n{var _this=this;\nthis.__active = true;\nthis._fromValue = fromValue;\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\n\nvar start=function(){\nif(_this._duration === 0){\n_this._onUpdate(_this._toValue);\n_this.__debouncedOnEnd({finished:true});}else \n{\n_this._startTime = Date.now();\n_this._animationFrame = requestAnimationFrame(_this.onUpdate.bind(_this));}};\n\n\nif(this._delay){\nthis._timeout = setTimeout(start,this._delay);}else \n{\nstart();}}},{key:'onUpdate',value:\n\n\n\nfunction onUpdate(){\nvar now=Date.now();\nif(now >= this._startTime + this._duration){\nif(this._duration === 0){\nthis._onUpdate(this._toValue);}else \n{\nthis._onUpdate(\nthis._fromValue + this._easing(1) * (this._toValue - this._fromValue));}\n\n\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\n\nthis._onUpdate(\nthis._fromValue + \nthis._easing((now - this._startTime) / this._duration) * (\nthis._toValue - this._fromValue));\n\nif(this.__active){\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}}},{key:'stop',value:\n\n\n\nfunction stop(){\nthis.__active = false;\nclearTimeout(this._timeout);\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return TimingAnimation;})(Animation);var \n\n\n\n\n\n\n\n\n\n\n\n\n\nDecayAnimation=(function(_Animation2){_inherits(DecayAnimation,_Animation2);\n\n\n\n\n\n\n\n\nfunction DecayAnimation(\nconfig)\n{_classCallCheck(this,DecayAnimation);\n_get(Object.getPrototypeOf(DecayAnimation.prototype),'constructor',this).call(this);\nthis._deceleration = config.deceleration || 0.998;\nthis._velocity = config.velocity;}_createClass(DecayAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd)\n{\nthis.__active = true;\nthis._lastValue = fromValue;\nthis._fromValue = fromValue;\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\nthis._startTime = Date.now();\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}},{key:'onUpdate',value:\n\n\nfunction onUpdate(){\nvar now=Date.now();\n\nvar value=this._fromValue + \nthis._velocity / (1 - this._deceleration) * (\n1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\nthis._onUpdate(value);\n\nif(Math.abs(this._lastValue - value) < 0.1){\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\n\nthis._lastValue = value;\nif(this.__active){\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}}},{key:'stop',value:\n\n\n\nfunction stop(){\nthis.__active = false;\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return DecayAnimation;})(Animation);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction withDefault(value,defaultValue){\nif(value === undefined || value === null){\nreturn defaultValue;}\n\nreturn value;}var \n\n\nSpringAnimation=(function(_Animation3){_inherits(SpringAnimation,_Animation3);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction SpringAnimation(\nconfig)\n{_classCallCheck(this,SpringAnimation);\n_get(Object.getPrototypeOf(SpringAnimation.prototype),'constructor',this).call(this);\n\nthis._overshootClamping = withDefault(config.overshootClamping,false);\nthis._restDisplacementThreshold = withDefault(config.restDisplacementThreshold,0.001);\nthis._restSpeedThreshold = withDefault(config.restSpeedThreshold,0.001);\nthis._initialVelocity = config.velocity;\nthis._lastVelocity = withDefault(config.velocity,0);\nthis._toValue = config.toValue;\n\nvar springConfig;\nif(config.bounciness !== undefined || config.speed !== undefined){\ninvariant(\nconfig.tension === undefined && config.friction === undefined,\n'You can only define bounciness/speed or tension/friction but not both');\n\nspringConfig = rebound.SpringConfig.fromBouncinessAndSpeed(\nwithDefault(config.bounciness,8),\nwithDefault(config.speed,12));}else \n\n{\nspringConfig = rebound.SpringConfig.fromOrigamiTensionAndFriction(\nwithDefault(config.tension,40),\nwithDefault(config.friction,7));}\n\n\nthis._tension = springConfig.tension;\nthis._friction = springConfig.friction;}_createClass(SpringAnimation,[{key:'start',value:\n\n\nfunction start(\nfromValue,\nonUpdate,\nonEnd,\npreviousAnimation)\n{\nthis.__active = true;\nthis._startPosition = fromValue;\nthis._lastPosition = this._startPosition;\n\nthis._onUpdate = onUpdate;\nthis.__onEnd = onEnd;\nthis._lastTime = Date.now();\n\nif(previousAnimation instanceof SpringAnimation){\nvar internalState=previousAnimation.getInternalState();\nthis._lastPosition = internalState.lastPosition;\nthis._lastVelocity = internalState.lastVelocity;\nthis._lastTime = internalState.lastTime;}\n\nif(this._initialVelocity !== undefined && \nthis._initialVelocity !== null){\nthis._lastVelocity = this._initialVelocity;}\n\nthis.onUpdate();}},{key:'getInternalState',value:\n\n\nfunction getInternalState(){\nreturn {\nlastPosition:this._lastPosition,\nlastVelocity:this._lastVelocity,\nlastTime:this._lastTime};}},{key:'onUpdate',value:\n\n\n\nfunction onUpdate(){\nvar position=this._lastPosition;\nvar velocity=this._lastVelocity;\n\nvar tempPosition=this._lastPosition;\nvar tempVelocity=this._lastVelocity;\n\n\n\n\n\nvar MAX_STEPS=64;\nvar now=Date.now();\nif(now > this._lastTime + MAX_STEPS){\nnow = this._lastTime + MAX_STEPS;}\n\n\n\n\n\nvar TIMESTEP_MSEC=1;\nvar numSteps=Math.floor((now - this._lastTime) / TIMESTEP_MSEC);\n\nfor(var i=0;i < numSteps;++i) {\n\nvar step=TIMESTEP_MSEC / 1000;\n\n\n\nvar aVelocity=velocity;\nvar aAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\nvar tempPosition=position + aVelocity * step / 2;\nvar tempVelocity=velocity + aAcceleration * step / 2;\n\nvar bVelocity=tempVelocity;\nvar bAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + bVelocity * step / 2;\ntempVelocity = velocity + bAcceleration * step / 2;\n\nvar cVelocity=tempVelocity;\nvar cAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + cVelocity * step / 2;\ntempVelocity = velocity + cAcceleration * step / 2;\n\nvar dVelocity=tempVelocity;\nvar dAcceleration=this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\ntempPosition = position + cVelocity * step / 2;\ntempVelocity = velocity + cAcceleration * step / 2;\n\nvar dxdt=(aVelocity + 2 * (bVelocity + cVelocity) + dVelocity) / 6;\nvar dvdt=(aAcceleration + 2 * (bAcceleration + cAcceleration) + dAcceleration) / 6;\n\nposition += dxdt * step;\nvelocity += dvdt * step;}\n\n\nthis._lastTime = now;\nthis._lastPosition = position;\nthis._lastVelocity = velocity;\n\nthis._onUpdate(position);\nif(!this.__active){\nreturn;}\n\n\n\nvar isOvershooting=false;\nif(this._overshootClamping && this._tension !== 0){\nif(this._startPosition < this._toValue){\nisOvershooting = position > this._toValue;}else \n{\nisOvershooting = position < this._toValue;}}\n\n\nvar isVelocity=Math.abs(velocity) <= this._restSpeedThreshold;\nvar isDisplacement=true;\nif(this._tension !== 0){\nisDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;}\n\nif(isOvershooting || isVelocity && isDisplacement){\nthis.__debouncedOnEnd({finished:true});\nreturn;}\n\nthis._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));}},{key:'stop',value:\n\n\nfunction stop(){\nthis.__active = false;\nwindow.cancelAnimationFrame(this._animationFrame);\nthis.__debouncedOnEnd({finished:false});}}]);return SpringAnimation;})(Animation);\n\n\n\n\n\nvar _uniqueId=1;var \n\nAnimatedValue=(function(_AnimatedWithChildren){_inherits(AnimatedValue,_AnimatedWithChildren);\n\n\n\n\n\n\nfunction AnimatedValue(value){_classCallCheck(this,AnimatedValue);\n_get(Object.getPrototypeOf(AnimatedValue.prototype),'constructor',this).call(this);\nthis._value = value;\nthis._offset = 0;\nthis._animation = null;\nthis._listeners = {};}_createClass(AnimatedValue,[{key:'detach',value:\n\n\nfunction detach(){\nthis.stopAnimation();}},{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._value + this._offset;}},{key:'setValue',value:\n\n\nfunction setValue(value){\nif(this._animation){\nthis._animation.stop();\nthis._animation = null;}\n\nthis._updateValue(value);}},{key:'setOffset',value:\n\n\nfunction setOffset(offset){\nthis._offset = offset;}},{key:'flattenOffset',value:\n\n\nfunction flattenOffset(){\nthis._value += this._offset;\nthis._offset = 0;}},{key:'addListener',value:\n\n\nfunction addListener(callback){\nvar id=String(_uniqueId++);\nthis._listeners[id] = callback;\nreturn id;}},{key:'removeListener',value:\n\n\nfunction removeListener(id){\ndelete this._listeners[id];}},{key:'removeAllListeners',value:\n\n\nfunction removeAllListeners(){\nthis._listeners = {};}},{key:'animate',value:\n\n\nfunction animate(animation,callback){var _this2=this;\nvar handle=InteractionManager.createInteractionHandle();\nvar previousAnimation=this._animation;\nthis._animation && this._animation.stop();\nthis._animation = animation;\nanimation.start(\nthis._value,\nfunction(value){\n_this2._updateValue(value);},\n\nfunction(result){\n_this2._animation = null;\nInteractionManager.clearInteractionHandle(handle);\ncallback && callback(result);},\n\npreviousAnimation);}},{key:'stopAnimation',value:\n\n\n\nfunction stopAnimation(callback){\nthis.stopTracking();\nthis._animation && this._animation.stop();\nthis._animation = null;\ncallback && callback(this.__getValue());}},{key:'stopTracking',value:\n\n\nfunction stopTracking(){\nthis._tracking && this._tracking.detach();\nthis._tracking = null;}},{key:'track',value:\n\n\nfunction track(tracking){\nthis.stopTracking();\nthis._tracking = tracking;}},{key:'interpolate',value:\n\n\nfunction interpolate(config){\nreturn new AnimatedInterpolation(this,Interpolation.create(config));}},{key:'_updateValue',value:\n\n\nfunction _updateValue(value){\nthis._value = value;\n_flush(this);\nfor(var key in this._listeners) {\nthis._listeners[key]({value:this.__getValue()});}}}]);return AnimatedValue;})(AnimatedWithChildren);var \n\n\n\n\n\nAnimatedValueXY=(function(_AnimatedWithChildren2){_inherits(AnimatedValueXY,_AnimatedWithChildren2);\n\n\n\n\nfunction AnimatedValueXY(valueIn){_classCallCheck(this,AnimatedValueXY);\n_get(Object.getPrototypeOf(AnimatedValueXY.prototype),'constructor',this).call(this);\nvar value=valueIn || {x:0,y:0};\nif(typeof value.x === 'number' && typeof value.y === 'number'){\nthis.x = new AnimatedValue(value.x);\nthis.y = new AnimatedValue(value.y);}else \n{\ninvariant(\nvalue.x instanceof AnimatedValue && \nvalue.y instanceof AnimatedValue,\n'AnimatedValueXY must be initalized with an object of numbers or ' + \n'AnimatedValues.');\n\nthis.x = value.x;\nthis.y = value.y;}\n\nthis._listeners = {};}_createClass(AnimatedValueXY,[{key:'setValue',value:\n\n\nfunction setValue(value){\nthis.x.setValue(value.x);\nthis.y.setValue(value.y);}},{key:'setOffset',value:\n\n\nfunction setOffset(offset){\nthis.x.setOffset(offset.x);\nthis.y.setOffset(offset.y);}},{key:'flattenOffset',value:\n\n\nfunction flattenOffset(){\nthis.x.flattenOffset();\nthis.y.flattenOffset();}},{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn {\nx:this.x.__getValue(),\ny:this.y.__getValue()};}},{key:'stopAnimation',value:\n\n\n\nfunction stopAnimation(callback){\nthis.x.stopAnimation();\nthis.y.stopAnimation();\ncallback && callback(this.__getValue());}},{key:'addListener',value:\n\n\nfunction addListener(callback){var _this3=this;\nvar id=String(_uniqueId++);\nvar jointCallback=function(_ref){var number=_ref.value;\ncallback(_this3.__getValue());};\n\nthis._listeners[id] = {\nx:this.x.addListener(jointCallback),\ny:this.y.addListener(jointCallback)};\n\nreturn id;}},{key:'removeListener',value:\n\n\nfunction removeListener(id){\nthis.x.removeListener(this._listeners[id].x);\nthis.y.removeListener(this._listeners[id].y);\ndelete this._listeners[id];}},{key:'getLayout',value:\n\n\nfunction getLayout(){\nreturn {\nleft:this.x,\ntop:this.y};}},{key:'getTranslateTransform',value:\n\n\n\nfunction getTranslateTransform(){\nreturn [\n{translateX:this.x},\n{translateY:this.y}];}}]);return AnimatedValueXY;})(AnimatedWithChildren);var \n\n\n\n\nAnimatedInterpolation=(function(_AnimatedWithChildren3){_inherits(AnimatedInterpolation,_AnimatedWithChildren3);\n\n\n\nfunction AnimatedInterpolation(parent,interpolation){_classCallCheck(this,AnimatedInterpolation);\n_get(Object.getPrototypeOf(AnimatedInterpolation.prototype),'constructor',this).call(this);\nthis._parent = parent;\nthis._interpolation = interpolation;}_createClass(AnimatedInterpolation,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar parentValue=this._parent.__getValue();\ninvariant(\ntypeof parentValue === 'number',\n'Cannot interpolate an input which is not a number.');\n\nreturn this._interpolation(parentValue);}},{key:'interpolate',value:\n\n\nfunction interpolate(config){\nreturn new AnimatedInterpolation(this,Interpolation.create(config));}},{key:'attach',value:\n\n\nfunction attach(){\nthis._parent.addChild(this);}},{key:'detach',value:\n\n\nfunction detach(){\nthis._parent.removeChild(this);}}]);return AnimatedInterpolation;})(AnimatedWithChildren);var \n\n\n\nAnimatedTransform=(function(_AnimatedWithChildren4){_inherits(AnimatedTransform,_AnimatedWithChildren4);\n\n\nfunction AnimatedTransform(transforms){_classCallCheck(this,AnimatedTransform);\n_get(Object.getPrototypeOf(AnimatedTransform.prototype),'constructor',this).call(this);\nthis._transforms = transforms;}_createClass(AnimatedTransform,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._transforms.map(function(transform){\nvar result={};\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nresult[key] = value.__getValue();}else \n{\nresult[key] = value;}}\n\n\nreturn result;});}},{key:'getAnimatedValue',value:\n\n\n\nfunction getAnimatedValue(){\nreturn this._transforms.map(function(transform){\nvar result={};\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nresult[key] = value.getAnimatedValue();}else \n{\n\nresult[key] = value;}}\n\n\nreturn result;});}},{key:'attach',value:\n\n\n\nfunction attach(){var _this4=this;\nthis._transforms.forEach(function(transform){\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nvalue.addChild(_this4);}}});}},{key:'detach',value:\n\n\n\n\n\nfunction detach(){var _this5=this;\nthis._transforms.forEach(function(transform){\nfor(var key in transform) {\nvar value=transform[key];\nif(value instanceof Animated){\nvalue.removeChild(_this5);}}});}}]);return AnimatedTransform;})(AnimatedWithChildren);var \n\n\n\n\n\n\nAnimatedStyle=(function(_AnimatedWithChildren5){_inherits(AnimatedStyle,_AnimatedWithChildren5);\n\n\nfunction AnimatedStyle(style){_classCallCheck(this,AnimatedStyle);\n_get(Object.getPrototypeOf(AnimatedStyle.prototype),'constructor',this).call(this);\nstyle = flattenStyle(style) || {};\nif(style.transform){\nstyle = _extends({},\nstyle,{\ntransform:new AnimatedTransform(style.transform)});}\n\n\nthis._style = style;}_createClass(AnimatedStyle,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar style={};\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nstyle[key] = value.__getValue();}else \n{\nstyle[key] = value;}}\n\n\nreturn style;}},{key:'getAnimatedValue',value:\n\n\nfunction getAnimatedValue(){\nvar style={};\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nstyle[key] = value.getAnimatedValue();}}\n\n\nreturn style;}},{key:'attach',value:\n\n\nfunction attach(){\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nvalue.addChild(this);}}}},{key:'detach',value:\n\n\n\n\nfunction detach(){\nfor(var key in this._style) {\nvar value=this._style[key];\nif(value instanceof Animated){\nvalue.removeChild(this);}}}}]);return AnimatedStyle;})(AnimatedWithChildren);var \n\n\n\n\n\nAnimatedProps=(function(_Animated2){_inherits(AnimatedProps,_Animated2);\n\n\n\nfunction AnimatedProps(\nprops,\ncallback)\n{_classCallCheck(this,AnimatedProps);\n_get(Object.getPrototypeOf(AnimatedProps.prototype),'constructor',this).call(this);\nif(props.style){\nprops = _extends({},\nprops,{\nstyle:new AnimatedStyle(props.style)});}\n\n\nthis._props = props;\nthis._callback = callback;\nthis.attach();}_createClass(AnimatedProps,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nvar props={};\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nprops[key] = value.__getValue();}else \n{\nprops[key] = value;}}\n\n\nreturn props;}},{key:'getAnimatedValue',value:\n\n\nfunction getAnimatedValue(){\nvar props={};\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nprops[key] = value.getAnimatedValue();}}\n\n\nreturn props;}},{key:'attach',value:\n\n\nfunction attach(){\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nvalue.addChild(this);}}}},{key:'detach',value:\n\n\n\n\nfunction detach(){\nfor(var key in this._props) {\nvar value=this._props[key];\nif(value instanceof Animated){\nvalue.removeChild(this);}}}},{key:'update',value:\n\n\n\n\nfunction update(){\nthis._callback();}}]);return AnimatedProps;})(Animated);\n\n\n\nfunction createAnimatedComponent(Component){\nvar refName='node';var \n\nAnimatedComponent=(function(_React$Component){_inherits(AnimatedComponent,_React$Component);function AnimatedComponent(){_classCallCheck(this,AnimatedComponent);_get(Object.getPrototypeOf(AnimatedComponent.prototype),'constructor',this).apply(this,arguments);}_createClass(AnimatedComponent,[{key:'componentWillUnmount',value:\n\n\nfunction componentWillUnmount(){\nthis._propsAnimated && this._propsAnimated.detach();}},{key:'setNativeProps',value:\n\n\nfunction setNativeProps(props){\nthis.refs[refName].setNativeProps(props);}},{key:'componentWillMount',value:\n\n\nfunction componentWillMount(){\nthis.attachProps(this.props);}},{key:'attachProps',value:\n\n\nfunction attachProps(nextProps){var _this6=this;\nvar oldPropsAnimated=this._propsAnimated;\n\n\n\n\n\n\n\nvar callback=function(){\nif(_this6.refs[refName].setNativeProps){\nvar value=_this6._propsAnimated.getAnimatedValue();\n_this6.refs[refName].setNativeProps(value);}else \n{\n_this6.forceUpdate();}};\n\n\n\nthis._propsAnimated = new AnimatedProps(\nnextProps,\ncallback);\n\n\n\n\n\n\n\n\n\n\noldPropsAnimated && oldPropsAnimated.detach();}},{key:'componentWillReceiveProps',value:\n\n\nfunction componentWillReceiveProps(nextProps){\nthis.attachProps(nextProps);}},{key:'render',value:\n\n\nfunction render(){\nreturn (\nReact.createElement(Component,_extends({},\nthis._propsAnimated.__getValue(),{\nref:refName})));}}]);return AnimatedComponent;})(React.Component);\n\n\n\n\n\nreturn AnimatedComponent;}var \n\n\nAnimatedTracking=(function(_Animated3){_inherits(AnimatedTracking,_Animated3);\n\n\n\n\n\n\nfunction AnimatedTracking(\nvalue,\nparent,\nanimationClass,\nanimationConfig,\ncallback)\n{_classCallCheck(this,AnimatedTracking);\n_get(Object.getPrototypeOf(AnimatedTracking.prototype),'constructor',this).call(this);\nthis._value = value;\nthis._parent = parent;\nthis._animationClass = animationClass;\nthis._animationConfig = animationConfig;\nthis._callback = callback;\nthis.attach();}_createClass(AnimatedTracking,[{key:'__getValue',value:\n\n\nfunction __getValue(){\nreturn this._parent.__getValue();}},{key:'attach',value:\n\n\nfunction attach(){\nthis._parent.addChild(this);}},{key:'detach',value:\n\n\nfunction detach(){\nthis._parent.removeChild(this);}},{key:'update',value:\n\n\nfunction update(){\nthis._value.animate(new this._animationClass(_extends({},\nthis._animationConfig,{\ntoValue:this._animationConfig.toValue.__getValue()})),\nthis._callback);}}]);return AnimatedTracking;})(Animated);\n\n\n\n\n\n\n\n\nvar maybeVectorAnim=function(\nvalue,\nconfig,\nanim)\n{\nif(value instanceof AnimatedValueXY){\nvar configX=_extends({},config);\nvar configY=_extends({},config);\nfor(var key in config) {var _config$key=\nconfig[key];var x=_config$key.x;var y=_config$key.y;\nif(x !== undefined && y !== undefined){\nconfigX[key] = x;\nconfigY[key] = y;}}\n\n\nvar aX=anim(value.x,configX);\nvar aY=anim(value.y,configY);\n\n\nreturn parallel([aX,aY],{stopTogether:false});}\n\nreturn null;};\n\n\nvar spring=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,spring) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nif(config.toValue instanceof Animated){\nsingleValue.track(new AnimatedTracking(\nsingleValue,\nconfig.toValue,\nSpringAnimation,\nsingleConfig,\ncallback));}else \n\n{\nsingleValue.animate(new SpringAnimation(singleConfig),callback);}},\n\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar timing=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,timing) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nif(config.toValue instanceof Animated){\nsingleValue.track(new AnimatedTracking(\nsingleValue,\nconfig.toValue,\nTimingAnimation,\nsingleConfig,\ncallback));}else \n\n{\nsingleValue.animate(new TimingAnimation(singleConfig),callback);}},\n\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar decay=function(\nvalue,\nconfig)\n{\nreturn maybeVectorAnim(value,config,decay) || {\nstart:function(callback){\nvar singleValue=value;\nvar singleConfig=config;\nsingleValue.stopTracking();\nsingleValue.animate(new DecayAnimation(singleConfig),callback);},\n\n\nstop:function(){\nvalue.stopAnimation();}};};\n\n\n\n\nvar sequence=function(\nanimations)\n{\nvar current=0;\nreturn {\nstart:function(callback){\nvar onComplete=function(result){\nif(!result.finished){\ncallback && callback(result);\nreturn;}\n\n\ncurrent++;\n\nif(current === animations.length){\ncallback && callback(result);\nreturn;}\n\n\nanimations[current].start(onComplete);};\n\n\nif(animations.length === 0){\ncallback && callback({finished:true});}else \n{\nanimations[current].start(onComplete);}},\n\n\n\nstop:function(){\nif(current < animations.length){\nanimations[current].stop();}}};};\n\n\n\n\n\n\n\n\nvar parallel=function(\nanimations,\nconfig)\n{\nvar doneCount=0;\n\nvar hasEnded={};\nvar stopTogether=!(config && config.stopTogether === false);\n\nvar result={\nstart:function(callback){\nif(doneCount === animations.length){\ncallback && callback({finished:true});\nreturn;}\n\n\nanimations.forEach(function(animation,idx){\nanimation.start(function(endResult){\nhasEnded[idx] = true;\ndoneCount++;\nif(doneCount === animations.length){\ndoneCount = 0;\ncallback && callback(endResult);\nreturn;}\n\n\nif(!endResult.finished && stopTogether){\nresult.stop();}});});},\n\n\n\n\n\nstop:function(){\nanimations.forEach(function(animation,idx){\n!hasEnded[idx] && animation.stop();\nhasEnded[idx] = true;});}};\n\n\n\n\nreturn result;};\n\n\nvar delay=function(time){\n\nreturn timing(new AnimatedValue(0),{toValue:0,delay:time,duration:0});};\n\n\nvar stagger=function(\ntime,\nanimations)\n{\nreturn parallel(animations.map(function(animation,i){\nreturn sequence([\ndelay(time * i),\nanimation]);}));};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar event=function(\nargMapping,\nconfig)\n{\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nvar traverse=function(recMapping,recEvt,key){\nif(typeof recEvt === 'number'){\ninvariant(\nrecMapping instanceof AnimatedValue,\n'Bad mapping of type ' + typeof recMapping + ' for key ' + key + \n', event value must map to AnimatedValue');\n\nrecMapping.setValue(recEvt);\nreturn;}\n\ninvariant(\ntypeof recMapping === 'object',\n'Bad mapping of type ' + typeof recMapping + ' for key ' + key);\n\ninvariant(\ntypeof recEvt === 'object',\n'Bad event of type ' + typeof recEvt + ' for key ' + key);\n\nfor(var key in recMapping) {\ntraverse(recMapping[key],recEvt[key],key);}};\n\n\nargMapping.forEach(function(mapping,idx){\ntraverse(mapping,args[idx],'arg' + idx);});\n\nif(config && config.listener){\nconfig.listener.apply(null,args);}};};\n\n\n\n\nmodule.exports = {\ndelay:delay,\nsequence:sequence,\nparallel:parallel,\nstagger:stagger,\n\ndecay:decay,\ntiming:timing,\nspring:spring,\n\nevent:event,\n\nValue:AnimatedValue,\nValueXY:AnimatedValueXY,\n__PropsOnlyForTests:AnimatedProps,\nView:createAnimatedComponent(View),\nText:createAnimatedComponent(Text),\nImage:createAnimatedComponent(Image),\ncreateAnimatedComponent:createAnimatedComponent};","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Animated\n * @flow\n */\n'use strict';\n\nvar Easing = require('Easing');\nvar Image = require('Image');\nvar InteractionManager = require('InteractionManager');\nvar Interpolation = require('Interpolation');\nvar React = require('React');\nvar Set = require('Set');\nvar Text = require('Text');\nvar View = require('View');\nvar invariant = require('invariant');\n\nvar flattenStyle = require('flattenStyle');\nvar rebound = require('rebound');\nvar requestAnimationFrame = require('requestAnimationFrame');\n\nimport type InterpolationConfigType from 'Interpolation';\n\ntype EndResult = {finished: bool};\ntype EndCallback = (result: EndResult) => void;\n\n// Note(vjeux): this would be better as an interface but flow doesn't\n// support them yet\nclass Animated {\n attach(): void {}\n detach(): void {}\n __getValue(): any {}\n getAnimatedValue(): any { return this.__getValue(); }\n addChild(child: Animated) {}\n removeChild(child: Animated) {}\n getChildren(): Array<Animated> { return []; }\n}\n\n// Important note: start() and stop() will only be called at most once.\n// Once an animation has been stopped or finished its course, it will\n// not be reused.\nclass Animation {\n __active: bool;\n __onEnd: ?EndCallback;\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n ): void {}\n stop(): void {}\n // Helper function for subclasses to make sure onEnd is only called once.\n __debouncedOnEnd(result: EndResult) {\n var onEnd = this.__onEnd;\n this.__onEnd = null;\n onEnd && onEnd(result);\n }\n}\n\nclass AnimatedWithChildren extends Animated {\n _children: Array<Animated>;\n\n constructor() {\n super();\n this._children = [];\n }\n\n addChild(child: Animated): void {\n if (this._children.length === 0) {\n this.attach();\n }\n this._children.push(child);\n }\n\n removeChild(child: Animated): void {\n var index = this._children.indexOf(child);\n if (index === -1) {\n console.warn('Trying to remove a child that doesn\\'t exist');\n return;\n }\n this._children.splice(index, 1);\n if (this._children.length === 0) {\n this.detach();\n }\n }\n\n getChildren(): Array<Animated> {\n return this._children;\n }\n}\n\n/**\n * Animated works by building a directed acyclic graph of dependencies\n * transparently when you render your Animated components.\n *\n * new Animated.Value(0)\n * .interpolate() .interpolate() new Animated.Value(1)\n * opacity translateY scale\n * style transform\n * View#234 style\n * View#123\n *\n * A) Top Down phase\n * When an Animated.Value is updated, we recursively go down through this\n * graph in order to find leaf nodes: the views that we flag as needing\n * an update.\n *\n * B) Bottom Up phase\n * When a view is flagged as needing an update, we recursively go back up\n * in order to build the new value that it needs. The reason why we need\n * this two-phases process is to deal with composite props such as\n * transform which can receive values from multiple parents.\n */\nfunction _flush(rootNode: AnimatedValue): void {\n var animatedStyles = new Set();\n function findAnimatedStyles(node) {\n if (typeof node.update === 'function') {\n animatedStyles.add(node);\n } else {\n node.getChildren().forEach(findAnimatedStyles);\n }\n }\n findAnimatedStyles(rootNode);\n animatedStyles.forEach(animatedStyle => animatedStyle.update());\n}\n\ntype TimingAnimationConfig = {\n toValue: number;\n easing?: (value: number) => number;\n duration?: number;\n delay?: number;\n};\n\nvar easeInOut = Easing.inOut(Easing.ease);\n\nclass TimingAnimation extends Animation {\n _startTime: number;\n _fromValue: number;\n _toValue: number;\n _duration: number;\n _delay: number;\n _easing: (value: number) => number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n _timeout: any;\n\n constructor(\n config: TimingAnimationConfig,\n ) {\n super();\n this._toValue = config.toValue;\n this._easing = config.easing || easeInOut;\n this._duration = config.duration !== undefined ? config.duration : 500;\n this._delay = config.delay || 0;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n ): void {\n this.__active = true;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n\n var start = () => {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n this.__debouncedOnEnd({finished: true});\n } else {\n this._startTime = Date.now();\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n };\n if (this._delay) {\n this._timeout = setTimeout(start, this._delay);\n } else {\n start();\n }\n }\n\n onUpdate(): void {\n var now = Date.now();\n if (now >= this._startTime + this._duration) {\n if (this._duration === 0) {\n this._onUpdate(this._toValue);\n } else {\n this._onUpdate(\n this._fromValue + this._easing(1) * (this._toValue - this._fromValue)\n );\n }\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._onUpdate(\n this._fromValue +\n this._easing((now - this._startTime) / this._duration) *\n (this._toValue - this._fromValue)\n );\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n this.__active = false;\n clearTimeout(this._timeout);\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype DecayAnimationConfig = {\n velocity: number | {x: number, y: number};\n deceleration?: number;\n};\n\ntype DecayAnimationConfigSingle = {\n velocity: number;\n deceleration?: number;\n};\n\nclass DecayAnimation extends Animation {\n _startTime: number;\n _lastValue: number;\n _fromValue: number;\n _deceleration: number;\n _velocity: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n\n constructor(\n config: DecayAnimationConfigSingle,\n ) {\n super();\n this._deceleration = config.deceleration || 0.998;\n this._velocity = config.velocity;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n ): void {\n this.__active = true;\n this._lastValue = fromValue;\n this._fromValue = fromValue;\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._startTime = Date.now();\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n onUpdate(): void {\n var now = Date.now();\n\n var value = this._fromValue +\n (this._velocity / (1 - this._deceleration)) *\n (1 - Math.exp(-(1 - this._deceleration) * (now - this._startTime)));\n\n this._onUpdate(value);\n\n if (Math.abs(this._lastValue - value) < 0.1) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n\n this._lastValue = value;\n if (this.__active) {\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n }\n\n stop(): void {\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype SpringAnimationConfig = {\n toValue: number | AnimatedValue | {x: number, y: number} | AnimatedValueXY;\n overshootClamping?: bool;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number | {x: number, y: number};\n bounciness?: number;\n speed?: number;\n tension?: number;\n friction?: number;\n};\n\ntype SpringAnimationConfigSingle = {\n toValue: number | AnimatedValue;\n overshootClamping?: bool;\n restDisplacementThreshold?: number;\n restSpeedThreshold?: number;\n velocity?: number;\n bounciness?: number;\n speed?: number;\n tension?: number;\n friction?: number;\n};\n\nfunction withDefault<T>(value: ?T, defaultValue: T): T {\n if (value === undefined || value === null) {\n return defaultValue;\n }\n return value;\n}\n\nclass SpringAnimation extends Animation {\n _overshootClamping: bool;\n _restDisplacementThreshold: number;\n _restSpeedThreshold: number;\n _initialVelocity: ?number;\n _lastVelocity: number;\n _startPosition: number;\n _lastPosition: number;\n _fromValue: number;\n _toValue: any;\n _tension: number;\n _friction: number;\n _lastTime: number;\n _onUpdate: (value: number) => void;\n _animationFrame: any;\n\n constructor(\n config: SpringAnimationConfigSingle,\n ) {\n super();\n\n this._overshootClamping = withDefault(config.overshootClamping, false);\n this._restDisplacementThreshold = withDefault(config.restDisplacementThreshold, 0.001);\n this._restSpeedThreshold = withDefault(config.restSpeedThreshold, 0.001);\n this._initialVelocity = config.velocity;\n this._lastVelocity = withDefault(config.velocity, 0);\n this._toValue = config.toValue;\n\n var springConfig;\n if (config.bounciness !== undefined || config.speed !== undefined) {\n invariant(\n config.tension === undefined && config.friction === undefined,\n 'You can only define bounciness/speed or tension/friction but not both',\n );\n springConfig = rebound.SpringConfig.fromBouncinessAndSpeed(\n withDefault(config.bounciness, 8),\n withDefault(config.speed, 12),\n );\n } else {\n springConfig = rebound.SpringConfig.fromOrigamiTensionAndFriction(\n withDefault(config.tension, 40),\n withDefault(config.friction, 7),\n );\n }\n this._tension = springConfig.tension;\n this._friction = springConfig.friction;\n }\n\n start(\n fromValue: number,\n onUpdate: (value: number) => void,\n onEnd: ?EndCallback,\n previousAnimation: ?Animation,\n ): void {\n this.__active = true;\n this._startPosition = fromValue;\n this._lastPosition = this._startPosition;\n\n this._onUpdate = onUpdate;\n this.__onEnd = onEnd;\n this._lastTime = Date.now();\n\n if (previousAnimation instanceof SpringAnimation) {\n var internalState = previousAnimation.getInternalState();\n this._lastPosition = internalState.lastPosition;\n this._lastVelocity = internalState.lastVelocity;\n this._lastTime = internalState.lastTime;\n }\n if (this._initialVelocity !== undefined &&\n this._initialVelocity !== null) {\n this._lastVelocity = this._initialVelocity;\n }\n this.onUpdate();\n }\n\n getInternalState(): Object {\n return {\n lastPosition: this._lastPosition,\n lastVelocity: this._lastVelocity,\n lastTime: this._lastTime,\n };\n }\n\n onUpdate(): void {\n var position = this._lastPosition;\n var velocity = this._lastVelocity;\n\n var tempPosition = this._lastPosition;\n var tempVelocity = this._lastVelocity;\n\n // If for some reason we lost a lot of frames (e.g. process large payload or\n // stopped in the debugger), we only advance by 4 frames worth of\n // computation and will continue on the next frame. It's better to have it\n // running at faster speed than jumping to the end.\n var MAX_STEPS = 64;\n var now = Date.now();\n if (now > this._lastTime + MAX_STEPS) {\n now = this._lastTime + MAX_STEPS;\n }\n\n // We are using a fixed time step and a maximum number of iterations.\n // The following post provides a lot of thoughts into how to build this\n // loop: http://gafferongames.com/game-physics/fix-your-timestep/\n var TIMESTEP_MSEC = 1;\n var numSteps = Math.floor((now - this._lastTime) / TIMESTEP_MSEC);\n\n for (var i = 0; i < numSteps; ++i) {\n // Velocity is based on seconds instead of milliseconds\n var step = TIMESTEP_MSEC / 1000;\n\n // This is using RK4. A good blog post to understand how it works:\n // http://gafferongames.com/game-physics/integration-basics/\n var aVelocity = velocity;\n var aAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n var tempPosition = position + aVelocity * step / 2;\n var tempVelocity = velocity + aAcceleration * step / 2;\n\n var bVelocity = tempVelocity;\n var bAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + bVelocity * step / 2;\n tempVelocity = velocity + bAcceleration * step / 2;\n\n var cVelocity = tempVelocity;\n var cAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + cVelocity * step / 2;\n tempVelocity = velocity + cAcceleration * step / 2;\n\n var dVelocity = tempVelocity;\n var dAcceleration = this._tension * (this._toValue - tempPosition) - this._friction * tempVelocity;\n tempPosition = position + cVelocity * step / 2;\n tempVelocity = velocity + cAcceleration * step / 2;\n\n var dxdt = (aVelocity + 2 * (bVelocity + cVelocity) + dVelocity) / 6;\n var dvdt = (aAcceleration + 2 * (bAcceleration + cAcceleration) + dAcceleration) / 6;\n\n position += dxdt * step;\n velocity += dvdt * step;\n }\n\n this._lastTime = now;\n this._lastPosition = position;\n this._lastVelocity = velocity;\n\n this._onUpdate(position);\n if (!this.__active) { // a listener might have stopped us in _onUpdate\n return;\n }\n\n // Conditions for stopping the spring animation\n var isOvershooting = false;\n if (this._overshootClamping && this._tension !== 0) {\n if (this._startPosition < this._toValue) {\n isOvershooting = position > this._toValue;\n } else {\n isOvershooting = position < this._toValue;\n }\n }\n var isVelocity = Math.abs(velocity) <= this._restSpeedThreshold;\n var isDisplacement = true;\n if (this._tension !== 0) {\n isDisplacement = Math.abs(this._toValue - position) <= this._restDisplacementThreshold;\n }\n if (isOvershooting || (isVelocity && isDisplacement)) {\n this.__debouncedOnEnd({finished: true});\n return;\n }\n this._animationFrame = requestAnimationFrame(this.onUpdate.bind(this));\n }\n\n stop(): void {\n this.__active = false;\n window.cancelAnimationFrame(this._animationFrame);\n this.__debouncedOnEnd({finished: false});\n }\n}\n\ntype ValueListenerCallback = (state: {value: number}) => void;\n\nvar _uniqueId = 1;\n\nclass AnimatedValue extends AnimatedWithChildren {\n _value: number;\n _offset: number;\n _animation: ?Animation;\n _tracking: ?Animated;\n _listeners: {[key: string]: ValueListenerCallback};\n\n constructor(value: number) {\n super();\n this._value = value;\n this._offset = 0;\n this._animation = null;\n this._listeners = {};\n }\n\n detach() {\n this.stopAnimation();\n }\n\n __getValue(): number {\n return this._value + this._offset;\n }\n\n setValue(value: number): void {\n if (this._animation) {\n this._animation.stop();\n this._animation = null;\n }\n this._updateValue(value);\n }\n\n setOffset(offset: number): void {\n this._offset = offset;\n }\n\n flattenOffset(): void {\n this._value += this._offset;\n this._offset = 0;\n }\n\n addListener(callback: ValueListenerCallback): string {\n var id = String(_uniqueId++);\n this._listeners[id] = callback;\n return id;\n }\n\n removeListener(id: string): void {\n delete this._listeners[id];\n }\n\n removeAllListeners(): void {\n this._listeners = {};\n }\n\n animate(animation: Animation, callback: ?EndCallback): void {\n var handle = InteractionManager.createInteractionHandle();\n var previousAnimation = this._animation;\n this._animation && this._animation.stop();\n this._animation = animation;\n animation.start(\n this._value,\n (value) => {\n this._updateValue(value);\n },\n (result) => {\n this._animation = null;\n InteractionManager.clearInteractionHandle(handle);\n callback && callback(result);\n },\n previousAnimation,\n );\n }\n\n stopAnimation(callback?: ?(value: number) => void): void {\n this.stopTracking();\n this._animation && this._animation.stop();\n this._animation = null;\n callback && callback(this.__getValue());\n }\n\n stopTracking(): void {\n this._tracking && this._tracking.detach();\n this._tracking = null;\n }\n\n track(tracking: Animated): void {\n this.stopTracking();\n this._tracking = tracking;\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, Interpolation.create(config));\n }\n\n _updateValue(value: number): void {\n this._value = value;\n _flush(this);\n for (var key in this._listeners) {\n this._listeners[key]({value: this.__getValue()});\n }\n }\n}\n\ntype ValueXYListenerCallback = (value: {x: number; y: number}) => void;\nclass AnimatedValueXY extends AnimatedWithChildren {\n x: AnimatedValue;\n y: AnimatedValue;\n _listeners: {[key: string]: {x: string; y: string}};\n\n constructor(valueIn?: ?{x: number | AnimatedValue; y: number | AnimatedValue}) {\n super();\n var value: any = valueIn || {x: 0, y: 0}; // @flowfixme: shouldn't need `: any`\n if (typeof value.x === 'number' && typeof value.y === 'number') {\n this.x = new AnimatedValue(value.x);\n this.y = new AnimatedValue(value.y);\n } else {\n invariant(\n value.x instanceof AnimatedValue &&\n value.y instanceof AnimatedValue,\n 'AnimatedValueXY must be initalized with an object of numbers or ' +\n 'AnimatedValues.'\n );\n this.x = value.x;\n this.y = value.y;\n }\n this._listeners = {};\n }\n\n setValue(value: {x: number; y: number}) {\n this.x.setValue(value.x);\n this.y.setValue(value.y);\n }\n\n setOffset(offset: {x: number; y: number}) {\n this.x.setOffset(offset.x);\n this.y.setOffset(offset.y);\n }\n\n flattenOffset(): void {\n this.x.flattenOffset();\n this.y.flattenOffset();\n }\n\n __getValue(): {x: number; y: number} {\n return {\n x: this.x.__getValue(),\n y: this.y.__getValue(),\n };\n }\n\n stopAnimation(callback?: ?() => number): void {\n this.x.stopAnimation();\n this.y.stopAnimation();\n callback && callback(this.__getValue());\n }\n\n addListener(callback: ValueXYListenerCallback): string {\n var id = String(_uniqueId++);\n var jointCallback = ({value: number}) => {\n callback(this.__getValue());\n };\n this._listeners[id] = {\n x: this.x.addListener(jointCallback),\n y: this.y.addListener(jointCallback),\n };\n return id;\n }\n\n removeListener(id: string): void {\n this.x.removeListener(this._listeners[id].x);\n this.y.removeListener(this._listeners[id].y);\n delete this._listeners[id];\n }\n\n getLayout(): {[key: string]: AnimatedValue} {\n return {\n left: this.x,\n top: this.y,\n };\n }\n\n getTranslateTransform(): Array<{[key: string]: AnimatedValue}> {\n return [\n {translateX: this.x},\n {translateY: this.y}\n ];\n }\n}\n\nclass AnimatedInterpolation extends AnimatedWithChildren {\n _parent: Animated;\n _interpolation: (input: number) => number | string;\n\n constructor(parent: Animated, interpolation: (input: number) => number | string) {\n super();\n this._parent = parent;\n this._interpolation = interpolation;\n }\n\n __getValue(): number | string {\n var parentValue: number = this._parent.__getValue();\n invariant(\n typeof parentValue === 'number',\n 'Cannot interpolate an input which is not a number.'\n );\n return this._interpolation(parentValue);\n }\n\n interpolate(config: InterpolationConfigType): AnimatedInterpolation {\n return new AnimatedInterpolation(this, Interpolation.create(config));\n }\n\n attach(): void {\n this._parent.addChild(this);\n }\n\n detach(): void {\n this._parent.removeChild(this);\n }\n}\n\nclass AnimatedTransform extends AnimatedWithChildren {\n _transforms: Array<Object>;\n\n constructor(transforms: Array<Object>) {\n super();\n this._transforms = transforms;\n }\n\n __getValue(): Array<Object> {\n return this._transforms.map(transform => {\n var result = {};\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n result[key] = value.__getValue();\n } else {\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n getAnimatedValue(): Array<Object> {\n return this._transforms.map(transform => {\n var result = {};\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n result[key] = value.getAnimatedValue();\n } else {\n // All transform components needed to recompose matrix\n result[key] = value;\n }\n }\n return result;\n });\n }\n\n attach(): void {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n });\n }\n\n detach(): void {\n this._transforms.forEach(transform => {\n for (var key in transform) {\n var value = transform[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n });\n }\n}\n\nclass AnimatedStyle extends AnimatedWithChildren {\n _style: Object;\n\n constructor(style: any) {\n super();\n style = flattenStyle(style) || {};\n if (style.transform) {\n style = {\n ...style,\n transform: new AnimatedTransform(style.transform),\n };\n }\n this._style = style;\n }\n\n __getValue(): Object {\n var style = {};\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n style[key] = value.__getValue();\n } else {\n style[key] = value;\n }\n }\n return style;\n }\n\n getAnimatedValue(): Object {\n var style = {};\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n style[key] = value.getAnimatedValue();\n }\n }\n return style;\n }\n\n attach(): void {\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n }\n\n detach(): void {\n for (var key in this._style) {\n var value = this._style[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n }\n}\n\nclass AnimatedProps extends Animated {\n _props: Object;\n _callback: () => void;\n\n constructor(\n props: Object,\n callback: () => void,\n ) {\n super();\n if (props.style) {\n props = {\n ...props,\n style: new AnimatedStyle(props.style),\n };\n }\n this._props = props;\n this._callback = callback;\n this.attach();\n }\n\n __getValue(): Object {\n var props = {};\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n props[key] = value.__getValue();\n } else {\n props[key] = value;\n }\n }\n return props;\n }\n\n getAnimatedValue(): Object {\n var props = {};\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n props[key] = value.getAnimatedValue();\n }\n }\n return props;\n }\n\n attach(): void {\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.addChild(this);\n }\n }\n }\n\n detach(): void {\n for (var key in this._props) {\n var value = this._props[key];\n if (value instanceof Animated) {\n value.removeChild(this);\n }\n }\n }\n\n update(): void {\n this._callback();\n }\n}\n\nfunction createAnimatedComponent(Component: any): any {\n var refName = 'node';\n\n class AnimatedComponent extends React.Component {\n _propsAnimated: AnimatedProps;\n\n componentWillUnmount() {\n this._propsAnimated && this._propsAnimated.detach();\n }\n\n setNativeProps(props) {\n this.refs[refName].setNativeProps(props);\n }\n\n componentWillMount() {\n this.attachProps(this.props);\n }\n\n attachProps(nextProps) {\n var oldPropsAnimated = this._propsAnimated;\n\n // The system is best designed when setNativeProps is implemented. It is\n // able to avoid re-rendering and directly set the attributes that\n // changed. However, setNativeProps can only be implemented on leaf\n // native components. If you want to animate a composite component, you\n // need to re-render it. In this case, we have a fallback that uses\n // forceUpdate.\n var callback = () => {\n if (this.refs[refName].setNativeProps) {\n var value = this._propsAnimated.getAnimatedValue();\n this.refs[refName].setNativeProps(value);\n } else {\n this.forceUpdate();\n }\n };\n\n this._propsAnimated = new AnimatedProps(\n nextProps,\n callback,\n );\n\n // When you call detach, it removes the element from the parent list\n // of children. If it goes to 0, then the parent also detaches itself\n // and so on.\n // An optimization is to attach the new elements and THEN detach the old\n // ones instead of detaching and THEN attaching.\n // This way the intermediate state isn't to go to 0 and trigger\n // this expensive recursive detaching to then re-attach everything on\n // the very next operation.\n oldPropsAnimated && oldPropsAnimated.detach();\n }\n\n componentWillReceiveProps(nextProps) {\n this.attachProps(nextProps);\n }\n\n render() {\n return (\n <Component\n {...this._propsAnimated.__getValue()}\n ref={refName}\n />\n );\n }\n }\n\n return AnimatedComponent;\n}\n\nclass AnimatedTracking extends Animated {\n _value: AnimatedValue;\n _parent: Animated;\n _callback: ?EndCallback;\n _animationConfig: Object;\n _animationClass: any;\n\n constructor(\n value: AnimatedValue,\n parent: Animated,\n animationClass: any,\n animationConfig: Object,\n callback?: ?EndCallback,\n ) {\n super();\n this._value = value;\n this._parent = parent;\n this._animationClass = animationClass;\n this._animationConfig = animationConfig;\n this._callback = callback;\n this.attach();\n }\n\n __getValue(): Object {\n return this._parent.__getValue();\n }\n\n attach(): void {\n this._parent.addChild(this);\n }\n\n detach(): void {\n this._parent.removeChild(this);\n }\n\n update(): void {\n this._value.animate(new this._animationClass({\n ...this._animationConfig,\n toValue: (this._animationConfig.toValue: any).__getValue(),\n }), this._callback);\n }\n}\n\ntype CompositeAnimation = {\n start: (callback?: ?EndCallback) => void;\n stop: () => void;\n};\n\nvar maybeVectorAnim = function(\n value: AnimatedValue | AnimatedValueXY,\n config: Object,\n anim: (value: AnimatedValue, config: Object) => CompositeAnimation\n): ?CompositeAnimation {\n if (value instanceof AnimatedValueXY) {\n var configX = {...config};\n var configY = {...config};\n for (var key in config) {\n var {x, y} = config[key];\n if (x !== undefined && y !== undefined) {\n configX[key] = x;\n configY[key] = y;\n }\n }\n var aX = anim((value: AnimatedValueXY).x, configX);\n var aY = anim((value: AnimatedValueXY).y, configY);\n // We use `stopTogether: false` here because otherwise tracking will break\n // because the second animation will get stopped before it can update.\n return parallel([aX, aY], {stopTogether: false});\n }\n return null;\n};\n\nvar spring = function(\n value: AnimatedValue | AnimatedValueXY,\n config: SpringAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, spring) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n if (config.toValue instanceof Animated) {\n singleValue.track(new AnimatedTracking(\n singleValue,\n config.toValue,\n SpringAnimation,\n singleConfig,\n callback\n ));\n } else {\n singleValue.animate(new SpringAnimation(singleConfig), callback);\n }\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar timing = function(\n value: AnimatedValue | AnimatedValueXY,\n config: TimingAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, timing) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n if (config.toValue instanceof Animated) {\n singleValue.track(new AnimatedTracking(\n singleValue,\n config.toValue,\n TimingAnimation,\n singleConfig,\n callback\n ));\n } else {\n singleValue.animate(new TimingAnimation(singleConfig), callback);\n }\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar decay = function(\n value: AnimatedValue | AnimatedValueXY,\n config: DecayAnimationConfig,\n): CompositeAnimation {\n return maybeVectorAnim(value, config, decay) || {\n start: function(callback?: ?EndCallback): void {\n var singleValue: any = value;\n var singleConfig: any = config;\n singleValue.stopTracking();\n singleValue.animate(new DecayAnimation(singleConfig), callback);\n },\n\n stop: function(): void {\n value.stopAnimation();\n },\n };\n};\n\nvar sequence = function(\n animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n var current = 0;\n return {\n start: function(callback?: ?EndCallback) {\n var onComplete = function(result) {\n if (!result.finished) {\n callback && callback(result);\n return;\n }\n\n current++;\n\n if (current === animations.length) {\n callback && callback(result);\n return;\n }\n\n animations[current].start(onComplete);\n };\n\n if (animations.length === 0) {\n callback && callback({finished: true});\n } else {\n animations[current].start(onComplete);\n }\n },\n\n stop: function() {\n if (current < animations.length) {\n animations[current].stop();\n }\n }\n };\n};\n\ntype ParallelConfig = {\n stopTogether?: bool; // If one is stopped, stop all. default: true\n}\nvar parallel = function(\n animations: Array<CompositeAnimation>,\n config?: ?ParallelConfig,\n): CompositeAnimation {\n var doneCount = 0;\n // Make sure we only call stop() at most once for each animation\n var hasEnded = {};\n var stopTogether = !(config && config.stopTogether === false);\n\n var result = {\n start: function(callback?: ?EndCallback) {\n if (doneCount === animations.length) {\n callback && callback({finished: true});\n return;\n }\n\n animations.forEach((animation, idx) => {\n animation.start(endResult => {\n hasEnded[idx] = true;\n doneCount++;\n if (doneCount === animations.length) {\n doneCount = 0;\n callback && callback(endResult);\n return;\n }\n\n if (!endResult.finished && stopTogether) {\n result.stop();\n }\n });\n });\n },\n\n stop: function(): void {\n animations.forEach((animation, idx) => {\n !hasEnded[idx] && animation.stop();\n hasEnded[idx] = true;\n });\n }\n };\n\n return result;\n};\n\nvar delay = function(time: number): CompositeAnimation {\n // Would be nice to make a specialized implementation\n return timing(new AnimatedValue(0), {toValue: 0, delay: time, duration: 0});\n};\n\nvar stagger = function(\n time: number,\n animations: Array<CompositeAnimation>,\n): CompositeAnimation {\n return parallel(animations.map((animation, i) => {\n return sequence([\n delay(time * i),\n animation,\n ]);\n }));\n};\n\ntype Mapping = {[key: string]: Mapping} | AnimatedValue;\n\n/**\n * Takes an array of mappings and extracts values from each arg accordingly,\n * then calls setValue on the mapped outputs. e.g.\n *\n * onScroll={this.AnimatedEvent(\n * [{nativeEvent: {contentOffset: {x: this._scrollX}}}]\n * {listener} // optional listener invoked asynchronously\n * )\n * ...\n * onPanResponderMove: this.AnimatedEvent([\n * null, // raw event arg\n * {dx: this._panX}, // gestureState arg\n * ]),\n *\n */\ntype EventConfig = {listener?: ?Function};\nvar event = function(\n argMapping: Array<?Mapping>,\n config?: ?EventConfig,\n): () => void {\n return function(...args): void {\n var traverse = function(recMapping, recEvt, key) {\n if (typeof recEvt === 'number') {\n invariant(\n recMapping instanceof AnimatedValue,\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key +\n ', event value must map to AnimatedValue'\n );\n recMapping.setValue(recEvt);\n return;\n }\n invariant(\n typeof recMapping === 'object',\n 'Bad mapping of type ' + typeof recMapping + ' for key ' + key\n );\n invariant(\n typeof recEvt === 'object',\n 'Bad event of type ' + typeof recEvt + ' for key ' + key\n );\n for (var key in recMapping) {\n traverse(recMapping[key], recEvt[key], key);\n }\n };\n argMapping.forEach((mapping, idx) => {\n traverse(mapping, args[idx], 'arg' + idx);\n });\n if (config && config.listener) {\n config.listener.apply(null, args);\n }\n };\n};\n\nmodule.exports = {\n delay,\n sequence,\n parallel,\n stagger,\n\n decay,\n timing,\n spring,\n\n event,\n\n Value: AnimatedValue,\n ValueXY: AnimatedValueXY,\n __PropsOnlyForTests: AnimatedProps,\n View: createAnimatedComponent(View),\n Text: createAnimatedComponent(Text),\n Image: createAnimatedComponent(Image),\n createAnimatedComponent,\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Animated.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Interpolation.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=function(condition,message){\nif(!condition){\nvar error=new Error(message);\nerror.framesToPop = 1;\nthrow error;}};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar linear=function(t){return t;};var \n\n\n\n\n\nInterpolation=(function(){function Interpolation(){_classCallCheck(this,Interpolation);}_createClass(Interpolation,null,[{key:'create',value:\nfunction create(config){\n\nif(config.outputRange && typeof config.outputRange[0] === 'string'){\nreturn createInterpolationFromStringOutputRange(config);}\n\n\nvar outputRange=config.outputRange;\ncheckInfiniteRange('outputRange',outputRange);\n\nvar inputRange=config.inputRange;\ncheckInfiniteRange('inputRange',inputRange);\ncheckValidInputRange(inputRange);\n\ninvariant(\ninputRange.length === outputRange.length,\n'inputRange (' + inputRange.length + ') and outputRange (' + \noutputRange.length + ') must have the same length');\n\n\nvar easing=config.easing || linear;\n\nvar extrapolateLeft='extend';\nif(config.extrapolateLeft !== undefined){\nextrapolateLeft = config.extrapolateLeft;}else \nif(config.extrapolate !== undefined){\nextrapolateLeft = config.extrapolate;}\n\n\nvar extrapolateRight='extend';\nif(config.extrapolateRight !== undefined){\nextrapolateRight = config.extrapolateRight;}else \nif(config.extrapolate !== undefined){\nextrapolateRight = config.extrapolate;}\n\n\nreturn function(input){\ninvariant(\ntypeof input === 'number',\n'Cannot interpolation an input which is not a number');\n\n\nvar range=findRange(input,inputRange);\nreturn interpolate(\ninput,\ninputRange[range],\ninputRange[range + 1],\noutputRange[range],\noutputRange[range + 1],\neasing,\nextrapolateLeft,\nextrapolateRight);};}}]);return Interpolation;})();\n\n\n\n\n\nfunction interpolate(\ninput,\ninputMin,\ninputMax,\noutputMin,\noutputMax,\neasing,\nextrapolateLeft,\nextrapolateRight)\n{\nvar result=input;\n\n\nif(result < inputMin){\nif(extrapolateLeft === 'identity'){\nreturn result;}else \nif(extrapolateLeft === 'clamp'){\nresult = inputMin;}else \nif(extrapolateLeft === 'extend'){}}\n\n\n\n\nif(result > inputMax){\nif(extrapolateRight === 'identity'){\nreturn result;}else \nif(extrapolateRight === 'clamp'){\nresult = inputMax;}else \nif(extrapolateRight === 'extend'){}}\n\n\n\n\nif(outputMin === outputMax){\nreturn outputMin;}\n\n\nif(inputMin === inputMax){\nif(input <= inputMin){\nreturn outputMin;}\n\nreturn outputMax;}\n\n\n\nif(inputMin === -Infinity){\nresult = -result;}else \nif(inputMax === Infinity){\nresult = result - inputMin;}else \n{\nresult = (result - inputMin) / (inputMax - inputMin);}\n\n\n\nresult = easing(result);\n\n\nif(outputMin === -Infinity){\nresult = -result;}else \nif(outputMax === Infinity){\nresult = result + outputMin;}else \n{\nresult = result * (outputMax - outputMin) + outputMin;}\n\n\nreturn result;}\n\n\nvar stringShapeRegex=/[0-9\\.-]+/g;\n\n\n\n\n\n\n\n\n\nfunction createInterpolationFromStringOutputRange(\nconfig)\n{\nvar outputRange=config.outputRange;\ninvariant(outputRange.length >= 2,'Bad output range');\ncheckPattern(outputRange);\n\n\n\n\n\n\n\n\n\nvar outputRanges=outputRange[0].match(stringShapeRegex).map(function(){return [];});\noutputRange.forEach(function(value){\nvalue.match(stringShapeRegex).forEach(function(number,i){\noutputRanges[i].push(+number);});});\n\n\n\nvar interpolations=outputRange[0].match(stringShapeRegex).map(function(value,i){\nreturn Interpolation.create(_extends({},\nconfig,{\noutputRange:outputRanges[i]}));});\n\n\n\nreturn function(input){\nvar i=0;\n\n\n\nreturn outputRange[0].replace(stringShapeRegex,function(){\nreturn String(interpolations[i++](input));});};}\n\n\n\n\nfunction checkPattern(arr){\nvar pattern=arr[0].replace(stringShapeRegex,'');\nfor(var i=1;i < arr.length;++i) {\ninvariant(\npattern === arr[i].replace(stringShapeRegex,''),\n'invalid pattern ' + arr[0] + ' and ' + arr[i]);}}\n\n\n\n\nfunction findRange(input,inputRange){\nfor(var i=1;i < inputRange.length - 1;++i) {\nif(inputRange[i] >= input){\nbreak;}}\n\n\nreturn i - 1;}\n\n\nfunction checkValidInputRange(arr){\ninvariant(arr.length >= 2,'inputRange must have at least 2 elements');\nfor(var i=1;i < arr.length;++i) {\ninvariant(\narr[i] >= arr[i - 1],\n\n\n\n\n\n\n'inputRange must be monotonically increasing ' + arr);}}\n\n\n\n\nfunction checkInfiniteRange(name,arr){\ninvariant(arr.length >= 2,name + ' must have at least 2 elements');\ninvariant(\narr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n\n\n\n\n\n\nname + 'cannot be ]-infinity;+infinity[ ' + arr);}\n\n\n\nmodule.exports = Interpolation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Interpolation\n * @flow\n */\n'use strict';\n\n// TODO(#7644673): fix this hack once github jest actually checks invariants\nvar invariant = function(condition, message) {\n if (!condition) {\n var error = new Error(message);\n (error: any).framesToPop = 1; // $FlowIssue\n throw error;\n }\n};\n\ntype ExtrapolateType = 'extend' | 'identity' | 'clamp';\n\n// $FlowFixMe D2163827\nexport type InterpolationConfigType = {\n inputRange: Array<number>;\n outputRange: (Array<number> | Array<string>);\n easing?: ((input: number) => number);\n extrapolate?: ExtrapolateType;\n extrapolateLeft?: ExtrapolateType;\n extrapolateRight?: ExtrapolateType;\n};\n\nvar linear = (t) => t;\n\n/**\n * Very handy helper to map input ranges to output ranges with an easing\n * function and custom behavior outside of the ranges.\n */\nclass Interpolation {\n static create(config: InterpolationConfigType): (input: number) => number | string {\n\n if (config.outputRange && typeof config.outputRange[0] === 'string') {\n return createInterpolationFromStringOutputRange(config);\n }\n\n var outputRange: Array<number> = (config.outputRange: any);\n checkInfiniteRange('outputRange', outputRange);\n\n var inputRange = config.inputRange;\n checkInfiniteRange('inputRange', inputRange);\n checkValidInputRange(inputRange);\n\n invariant(\n inputRange.length === outputRange.length,\n 'inputRange (' + inputRange.length + ') and outputRange (' +\n outputRange.length + ') must have the same length'\n );\n\n var easing = config.easing || linear;\n\n var extrapolateLeft: ExtrapolateType = 'extend';\n if (config.extrapolateLeft !== undefined) {\n extrapolateLeft = config.extrapolateLeft;\n } else if (config.extrapolate !== undefined) {\n extrapolateLeft = config.extrapolate;\n }\n\n var extrapolateRight: ExtrapolateType = 'extend';\n if (config.extrapolateRight !== undefined) {\n extrapolateRight = config.extrapolateRight;\n } else if (config.extrapolate !== undefined) {\n extrapolateRight = config.extrapolate;\n }\n\n return (input) => {\n invariant(\n typeof input === 'number',\n 'Cannot interpolation an input which is not a number'\n );\n\n var range = findRange(input, inputRange);\n return interpolate(\n input,\n inputRange[range],\n inputRange[range + 1],\n outputRange[range],\n outputRange[range + 1],\n easing,\n extrapolateLeft,\n extrapolateRight,\n );\n };\n }\n}\n\nfunction interpolate(\n input: number,\n inputMin: number,\n inputMax: number,\n outputMin: number,\n outputMax: number,\n easing: ((input: number) => number),\n extrapolateLeft: ExtrapolateType,\n extrapolateRight: ExtrapolateType,\n) {\n var result = input;\n\n // Extrapolate\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') {\n return result;\n } else if (extrapolateLeft === 'clamp') {\n result = inputMin;\n } else if (extrapolateLeft === 'extend') {\n // noop\n }\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') {\n return result;\n } else if (extrapolateRight === 'clamp') {\n result = inputMax;\n } else if (extrapolateRight === 'extend') {\n // noop\n }\n }\n\n if (outputMin === outputMax) {\n return outputMin;\n }\n\n if (inputMin === inputMax) {\n if (input <= inputMin) {\n return outputMin;\n }\n return outputMax;\n }\n\n // Input Range\n if (inputMin === -Infinity) {\n result = -result;\n } else if (inputMax === Infinity) {\n result = result - inputMin;\n } else {\n result = (result - inputMin) / (inputMax - inputMin);\n }\n\n // Easing\n result = easing(result);\n\n // Output Range\n if (outputMin === -Infinity) {\n result = -result;\n } else if (outputMax === Infinity) {\n result = result + outputMin;\n } else {\n result = result * (outputMax - outputMin) + outputMin;\n }\n\n return result;\n}\n\nvar stringShapeRegex = /[0-9\\.-]+/g;\n\n/**\n * Supports string shapes by extracting numbers so new values can be computed,\n * and recombines those values into new strings of the same shape. Supports\n * things like:\n *\n * rgba(123, 42, 99, 0.36) // colors\n * -45deg // values with units\n */\nfunction createInterpolationFromStringOutputRange(\n config: InterpolationConfigType,\n): (input: number) => string {\n var outputRange: Array<string> = (config.outputRange: any);\n invariant(outputRange.length >= 2, 'Bad output range');\n checkPattern(outputRange);\n\n // ['rgba(0, 100, 200, 0)', 'rgba(50, 150, 250, 0.5)']\n // ->\n // [\n // [0, 50],\n // [100, 150],\n // [200, 250],\n // [0, 0.5],\n // ]\n var outputRanges = outputRange[0].match(stringShapeRegex).map(() => []);\n outputRange.forEach(value => {\n value.match(stringShapeRegex).forEach((number, i) => {\n outputRanges[i].push(+number);\n });\n });\n\n var interpolations = outputRange[0].match(stringShapeRegex).map((value, i) => {\n return Interpolation.create({\n ...config,\n outputRange: outputRanges[i],\n });\n });\n\n return (input) => {\n var i = 0;\n // 'rgba(0, 100, 200, 0)'\n // ->\n // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'\n return outputRange[0].replace(stringShapeRegex, () => {\n return String(interpolations[i++](input));\n });\n };\n}\n\nfunction checkPattern(arr: Array<string>) {\n var pattern = arr[0].replace(stringShapeRegex, '');\n for (var i = 1; i < arr.length; ++i) {\n invariant(\n pattern === arr[i].replace(stringShapeRegex, ''),\n 'invalid pattern ' + arr[0] + ' and ' + arr[i],\n );\n }\n}\n\nfunction findRange(input: number, inputRange: Array<number>) {\n for (var i = 1; i < inputRange.length - 1; ++i) {\n if (inputRange[i] >= input) {\n break;\n }\n }\n return i - 1;\n}\n\nfunction checkValidInputRange(arr: Array<number>) {\n invariant(arr.length >= 2, 'inputRange must have at least 2 elements');\n for (var i = 1; i < arr.length; ++i) {\n invariant(\n arr[i] >= arr[i - 1],\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly\n * convert to a string, like undefined, null, and object, etc. If you really\n * mean this implicit string conversion, you can do something like\n * String(myThing)\n */\n 'inputRange must be monotonically increasing ' + arr\n );\n }\n}\n\nfunction checkInfiniteRange(name: string, arr: Array<number>) {\n invariant(arr.length >= 2, name + ' must have at least 2 elements');\n invariant(\n arr.length !== 2 || arr[0] !== -Infinity || arr[1] !== Infinity,\n /* $FlowFixMe(>=0.13.0) - In the addition expression below this comment,\n * one or both of the operands may be something that doesn't cleanly convert\n * to a string, like undefined, null, and object, etc. If you really mean\n * this implicit string conversion, you can do something like\n * String(myThing)\n */\n name + 'cannot be ]-infinity;+infinity[ ' + arr\n );\n}\n\nmodule.exports = Interpolation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Interpolation.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Easing.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar _bezier=require('bezier');var \n\n\n\n\n\n\nEasing=(function(){function Easing(){_classCallCheck(this,Easing);}_createClass(Easing,null,[{key:'step0',value:\nfunction step0(n){\nreturn n > 0?1:0;}},{key:'step1',value:\n\n\nfunction step1(n){\nreturn n >= 1?1:0;}},{key:'linear',value:\n\n\nfunction linear(t){\nreturn t;}},{key:'ease',value:(function(_ease){function ease(_x){return _ease.apply(this,arguments);}ease.toString = function(){return _ease.toString();};return ease;})(\n\n\nfunction(t){\nreturn ease(t);})},{key:'quad',value:\n\n\nfunction quad(t){\nreturn t * t;}},{key:'cubic',value:\n\n\nfunction cubic(t){\nreturn t * t * t;}},{key:'poly',value:\n\n\nfunction poly(n){\nreturn function(t){return Math.pow(t,n);};}},{key:'sin',value:\n\n\nfunction sin(t){\nreturn 1 - Math.cos(t * Math.PI / 2);}},{key:'circle',value:\n\n\nfunction circle(t){\nreturn 1 - Math.sqrt(1 - t * t);}},{key:'exp',value:\n\n\nfunction exp(t){\nreturn Math.pow(2,10 * (t - 1));}},{key:'elastic',value:\n\n\nfunction elastic(a,p){\nvar tau=Math.PI * 2;\n\n\nvar s;\nif(arguments.length < 2){\np = 0.45;}\n\nif(arguments.length){\ns = p / tau * Math.asin(1 / a);}else \n{\na = 1;\ns = p / 4;}\n\nreturn function(t){return 1 + a * Math.pow(2,-10 * t) * Math.sin((t - s) * tau / p);};}},{key:'back',value:\n\n\nfunction back(s){\nif(s === undefined){\ns = 1.70158;}\n\nreturn function(t){return t * t * ((s + 1) * t - s);};}},{key:'bounce',value:\n\n\nfunction bounce(t){\nif(t < 1 / 2.75){\nreturn 7.5625 * t * t;}\n\n\nif(t < 2 / 2.75){\nt -= 1.5 / 2.75;\nreturn 7.5625 * t * t + 0.75;}\n\n\nif(t < 2.5 / 2.75){\nt -= 2.25 / 2.75;\nreturn 7.5625 * t * t + 0.9375;}\n\n\nt -= 2.625 / 2.75;\nreturn 7.5625 * t * t + 0.984375;}},{key:'bezier',value:\n\n\nfunction bezier(\nx1,\ny1,\nx2,\ny2,\nepsilon)\n{\nif(epsilon === undefined){\n\n\nvar duration=500;\nepsilon = 1000 / 60 / duration / 4;}\n\n\nreturn _bezier(x1,y1,x2,y2,epsilon);}},{key:'in',value:\n\n\nfunction _in(\neasing)\n{\nreturn easing;}},{key:'out',value:\n\n\nfunction out(\neasing)\n{\nreturn function(t){return 1 - easing(1 - t);};}},{key:'inOut',value:\n\n\nfunction inOut(\neasing)\n{\nreturn function(t){\nif(t < 0.5){\nreturn easing(t * 2) / 2;}\n\nreturn 1 - easing((1 - t) * 2) / 2;};}}]);return Easing;})();\n\n\n\n\nvar ease=Easing.bezier(0.42,0,1,1);\n\nmodule.exports = Easing;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Easing\n * @flow\n */\n'use strict';\n\nvar bezier = require('bezier');\n\n/**\n * This class implements common easing functions. The math is pretty obscure,\n * but this cool website has nice visual illustrations of what they represent:\n * http://xaedes.de/dev/transitions/\n */\nclass Easing {\n static step0(n) {\n return n > 0 ? 1 : 0;\n }\n\n static step1(n) {\n return n >= 1 ? 1 : 0;\n }\n\n static linear(t) {\n return t;\n }\n\n static ease(t: number): number {\n return ease(t);\n }\n\n static quad(t) {\n return t * t;\n }\n\n static cubic(t) {\n return t * t * t;\n }\n\n static poly(n) {\n return (t) => Math.pow(t, n);\n }\n\n static sin(t) {\n return 1 - Math.cos(t * Math.PI / 2);\n }\n\n static circle(t) {\n return 1 - Math.sqrt(1 - t * t);\n }\n\n static exp(t) {\n return Math.pow(2, 10 * (t - 1));\n }\n\n static elastic(a: number, p: number): (t: number) => number {\n var tau = Math.PI * 2;\n // flow isn't smart enough to figure out that s is always assigned to a\n // number before being used in the returned function\n var s: any;\n if (arguments.length < 2) {\n p = 0.45;\n }\n if (arguments.length) {\n s = p / tau * Math.asin(1 / a);\n } else {\n a = 1;\n s = p / 4;\n }\n return (t) => 1 + a * Math.pow(2, -10 * t) * Math.sin((t - s) * tau / p);\n };\n\n static back(s: number): (t: number) => number {\n if (s === undefined) {\n s = 1.70158;\n }\n return (t) => t * t * ((s + 1) * t - s);\n };\n\n static bounce(t: number): number {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n t -= 1.5 / 2.75;\n return 7.5625 * t * t + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n t -= 2.25 / 2.75;\n return 7.5625 * t * t + 0.9375;\n }\n\n t -= 2.625 / 2.75;\n return 7.5625 * t * t + 0.984375;\n };\n\n static bezier(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n epsilon?: ?number,\n ): (t: number) => number {\n if (epsilon === undefined) {\n // epsilon determines the precision of the solved values\n // a good approximation is:\n var duration = 500; // duration of animation in milliseconds.\n epsilon = (1000 / 60 / duration) / 4;\n }\n\n return bezier(x1, y1, x2, y2, epsilon);\n }\n\n static in(\n easing: (t: number) => number,\n ): (t: number) => number {\n return easing;\n }\n\n static out(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => 1 - easing(1 - t);\n }\n\n static inOut(\n easing: (t: number) => number,\n ): (t: number) => number {\n return (t) => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n return 1 - easing((1 - t) * 2) / 2;\n };\n }\n}\n\nvar ease = Easing.bezier(0.42, 0, 1, 1);\n\nmodule.exports = Easing;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/Animated/Easing.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/bezier.js":{"data":{"code":"module.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexports = function(x1,y1,x2,y2,epsilon){\n\nvar curveX=function(t){\nvar v=1 - t;\nreturn 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;};\n\n\nvar curveY=function(t){\nvar v=1 - t;\nreturn 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;};\n\n\nvar derivativeCurveX=function(t){\nvar v=1 - t;\nreturn 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (-t * t * t + 2 * v * t) * x2;};\n\n\nreturn function(t){\n\nvar x=t,t0,t1,t2,x2,d2,i;\n\n\nfor(t2 = x,i = 0;i < 8;i++) {\nx2 = curveX(t2) - x;\nif(Math.abs(x2) < epsilon)return curveY(t2);\nd2 = derivativeCurveX(t2);\nif(Math.abs(d2) < 1e-6)break;\nt2 = t2 - x2 / d2;}\n\n\nt0 = 0,t1 = 1,t2 = x;\n\nif(t2 < t0)return curveY(t0);\nif(t2 > t1)return curveY(t1);\n\n\nwhile(t0 < t1) {\nx2 = curveX(t2);\nif(Math.abs(x2 - x) < epsilon)return curveY(t2);\nif(x > x2)t0 = t2;else \nt1 = t2;\nt2 = (t1 - t0) * .5 + t0;}\n\n\n\nreturn curveY(t2);};};","sourceCode":"/**\n * https://github.com/arian/cubic-bezier\n *\n * MIT License\n *\n * Copyright (c) 2013 Arian Stolwijk\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n * @providesModule bezier\n * @nolint\n */\n\nmodule.exports = function(x1, y1, x2, y2, epsilon){\n\n var curveX = function(t){\n var v = 1 - t;\n return 3 * v * v * t * x1 + 3 * v * t * t * x2 + t * t * t;\n };\n\n var curveY = function(t){\n var v = 1 - t;\n return 3 * v * v * t * y1 + 3 * v * t * t * y2 + t * t * t;\n };\n\n var derivativeCurveX = function(t){\n var v = 1 - t;\n return 3 * (2 * (t - 1) * t + v * v) * x1 + 3 * (- t * t * t + 2 * v * t) * x2;\n };\n\n return function(t){\n\n var x = t, t0, t1, t2, x2, d2, i;\n\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++){\n x2 = curveX(t2) - x;\n if (Math.abs(x2) < epsilon) return curveY(t2);\n d2 = derivativeCurveX(t2);\n if (Math.abs(d2) < 1e-6) break;\n t2 = t2 - x2 / d2;\n }\n\n t0 = 0, t1 = 1, t2 = x;\n\n if (t2 < t0) return curveY(t0);\n if (t2 > t1) return curveY(t1);\n\n // Fallback to the bisection method for reliability.\n while (t0 < t1){\n x2 = curveX(t2);\n if (Math.abs(x2 - x) < epsilon) return curveY(t2);\n if (x > x2) t0 = t2;\n else t1 = t2;\n t2 = (t1 - t0) * .5 + t0;\n }\n\n // Failure\n return curveY(t2);\n\n };\n\n};\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/bezier.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/requestAnimationFrame.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nemptyFunction=require('emptyFunction');\nvar nativeRequestAnimationFrame=require('nativeRequestAnimationFrame');\n\nvar lastTime=0;\n\nvar requestAnimationFrame=\nnativeRequestAnimationFrame || \nfunction(callback){\nvar currTime=Date.now();\nvar timeDelay=Math.max(0,16 - (currTime - lastTime));\nlastTime = currTime + timeDelay;\nreturn global.setTimeout(function(){\ncallback(Date.now());},\ntimeDelay);};\n\n\n\nrequestAnimationFrame(emptyFunction);\n\nmodule.exports = requestAnimationFrame;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule requestAnimationFrame\n */\n\nvar emptyFunction = require('emptyFunction');\nvar nativeRequestAnimationFrame = require('nativeRequestAnimationFrame');\n\nvar lastTime = 0;\n\nvar requestAnimationFrame =\n nativeRequestAnimationFrame ||\n function(callback) {\n var currTime = Date.now();\n var timeDelay = Math.max(0, 16 - (currTime - lastTime));\n lastTime = currTime + timeDelay;\n return global.setTimeout(function() {\n callback(Date.now());\n }, timeDelay);\n };\n\n// Works around a rare bug in Safari 6 where the first request is never invoked.\nrequestAnimationFrame(emptyFunction);\n\nmodule.exports = requestAnimationFrame;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/requestAnimationFrame.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/nativeRequestAnimationFrame.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nnativeRequestAnimationFrame=\nglobal.requestAnimationFrame || \nglobal.webkitRequestAnimationFrame || \nglobal.mozRequestAnimationFrame || \nglobal.oRequestAnimationFrame || \nglobal.msRequestAnimationFrame;\n\nmodule.exports = nativeRequestAnimationFrame;","sourceCode":"/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule nativeRequestAnimationFrame\n */\n\nvar nativeRequestAnimationFrame =\n global.requestAnimationFrame ||\n global.webkitRequestAnimationFrame ||\n global.mozRequestAnimationFrame ||\n global.oRequestAnimationFrame ||\n global.msRequestAnimationFrame;\n\nmodule.exports = nativeRequestAnimationFrame;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/nativeRequestAnimationFrame.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppRegistry/AppRegistry.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\nvar renderApplication=require('renderApplication');\n\nif(__DEV__){\n\n\nrequire('RCTRenderingPerf');}\n\n\nvar runnables={};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AppRegistry={\nregisterConfig:function(config){\nfor(var i=0;i < config.length;++i) {\nvar appConfig=config[i];\nif(appConfig.run){\nAppRegistry.registerRunnable(appConfig.appKey,appConfig.run);}else \n{\nAppRegistry.registerComponent(appConfig.appKey,appConfig.component);}}},\n\n\n\n\nregisterComponent:function(appKey,getComponentFunc){\nrunnables[appKey] = {\nrun:function(appParameters){return (\nrenderApplication(getComponentFunc(),appParameters.initialProps,appParameters.rootTag));}};\n\nreturn appKey;},\n\n\nregisterRunnable:function(appKey,func){\nrunnables[appKey] = {run:func};\nreturn appKey;},\n\n\nrunApplication:function(appKey,appParameters){\nconsole.log(\n'Running application \"' + appKey + '\" with appParams: ' + \nJSON.stringify(appParameters) + '. ' + \n'__DEV__ === ' + String(__DEV__) + \n', development-level warning are ' + (__DEV__?'ON':'OFF') + \n', performance optimizations are ' + (__DEV__?'OFF':'ON'));\n\ninvariant(\nrunnables[appKey] && runnables[appKey].run,\n'Application ' + appKey + ' has not been registered. This ' + \n'is either due to a require() error during initialization ' + \n'or failure to call AppRegistry.registerComponent.');\n\nrunnables[appKey].run(appParameters);}};\n\n\n\nmodule.exports = AppRegistry;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AppRegistry\n * @flow\n */\n'use strict';\n\nvar invariant = require('invariant');\nvar renderApplication = require('renderApplication');\n\nif (__DEV__) {\n // In order to use Cmd+P to record/dump perf data, we need to make sure\n // this module is available in the bundle\n require('RCTRenderingPerf');\n}\n\nvar runnables = {};\n\ntype AppConfig = {\n appKey: string;\n component: ReactClass<any, any, any>;\n run?: Function;\n};\n\n/**\n * `AppRegistry` is the JS entry point to running all React Native apps. App\n * root components should register themselves with\n * `AppRegistry.registerComponent`, then the native system can load the bundle\n * for the app and then actually run the app when it's ready by invoking\n * `AppRegistry.runApplication`.\n *\n * `AppRegistry` should be `require`d early in the `require` sequence to make\n * sure the JS execution environment is setup before other modules are\n * `require`d.\n */\nvar AppRegistry = {\n registerConfig: function(config: Array<AppConfig>) {\n for (var i = 0; i < config.length; ++i) {\n var appConfig = config[i];\n if (appConfig.run) {\n AppRegistry.registerRunnable(appConfig.appKey, appConfig.run);\n } else {\n AppRegistry.registerComponent(appConfig.appKey, appConfig.component);\n }\n }\n },\n\n registerComponent: function(appKey: string, getComponentFunc: Function): string {\n runnables[appKey] = {\n run: (appParameters) =>\n renderApplication(getComponentFunc(), appParameters.initialProps, appParameters.rootTag)\n };\n return appKey;\n },\n\n registerRunnable: function(appKey: string, func: Function): string {\n runnables[appKey] = {run: func};\n return appKey;\n },\n\n runApplication: function(appKey: string, appParameters: any): void {\n console.log(\n 'Running application \"' + appKey + '\" with appParams: ' +\n JSON.stringify(appParameters) + '. ' +\n '__DEV__ === ' + String(__DEV__) +\n ', development-level warning are ' + (__DEV__ ? 'ON' : 'OFF') +\n ', performance optimizations are ' + (__DEV__ ? 'OFF' : 'ON')\n );\n invariant(\n runnables[appKey] && runnables[appKey].run,\n 'Application ' + appKey + ' has not been registered. This ' +\n 'is either due to a require() error during initialization ' +\n 'or failure to call AppRegistry.registerComponent.'\n );\n runnables[appKey].run(appParameters);\n },\n};\n\nmodule.exports = AppRegistry;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppRegistry/AppRegistry.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\nvar Inspector=require('Inspector');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Subscribable=require('Subscribable');\nvar View=require('View');\nvar WarningBox=require('WarningBox');\n\nvar invariant=require('invariant');\n\nvar AppContainer=React.createClass({displayName:'AppContainer',\nmixins:[Subscribable.Mixin],\n\ngetInitialState:function(){\nreturn {inspector:null};},\n\n\ntoggleElementInspector:function(){\nvar inspector=this.state.inspector?\nnull:\nReact.createElement(Inspector,{\nrootTag:this.props.rootTag,\ninspectedViewTag:React.findNodeHandle(this.refs.main)});\n\nthis.setState({inspector:inspector});},\n\n\ncomponentDidMount:function(){\nthis.addListenerOn(\nRCTDeviceEventEmitter,\n'toggleElementInspector',\nthis.toggleElementInspector);},\n\n\n\nrender:function(){\nvar shouldRenderWarningBox=__DEV__ && console.yellowBoxEnabled;\nvar warningBox=shouldRenderWarningBox?React.createElement(WarningBox,null):null;\nreturn (\nReact.createElement(View,{style:styles.appContainer},\nReact.createElement(View,{collapsible:false,style:styles.appContainer,ref:'main'},\nthis.props.children),\n\nwarningBox,\nthis.state.inspector));}});\n\n\n\n\n\nfunction renderApplication(\nRootComponent,\ninitialProps,\nrootTag)\n{\ninvariant(\nrootTag,\n'Expect to have a valid rootTag, instead got ',rootTag);\n\nReact.render(\nReact.createElement(AppContainer,{rootTag:rootTag},\nReact.createElement(RootComponent,_extends({},\ninitialProps,{\nrootTag:rootTag}))),\n\n\nrootTag);}\n\n\n\nvar styles=StyleSheet.create({\nappContainer:{\nposition:'absolute',\nleft:0,\ntop:0,\nright:0,\nbottom:0}});\n\n\n\nmodule.exports = renderApplication;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule renderApplication\n */\n'use strict';\n\nvar Inspector = require('Inspector');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Subscribable = require('Subscribable');\nvar View = require('View');\nvar WarningBox = require('WarningBox');\n\nvar invariant = require('invariant');\n\nvar AppContainer = React.createClass({\n mixins: [Subscribable.Mixin],\n\n getInitialState: function() {\n return { inspector: null };\n },\n\n toggleElementInspector: function() {\n var inspector = this.state.inspector\n ? null\n : <Inspector\n rootTag={this.props.rootTag}\n inspectedViewTag={React.findNodeHandle(this.refs.main)}\n />;\n this.setState({inspector});\n },\n\n componentDidMount: function() {\n this.addListenerOn(\n RCTDeviceEventEmitter,\n 'toggleElementInspector',\n this.toggleElementInspector\n );\n },\n\n render: function() {\n var shouldRenderWarningBox = __DEV__ && console.yellowBoxEnabled;\n var warningBox = shouldRenderWarningBox ? <WarningBox /> : null;\n return (\n <View style={styles.appContainer}>\n <View collapsible={false} style={styles.appContainer} ref=\"main\">\n {this.props.children}\n </View>\n {warningBox}\n {this.state.inspector}\n </View>\n );\n }\n});\n\nfunction renderApplication<D, P, S>(\n RootComponent: ReactClass<D, P, S>,\n initialProps: P,\n rootTag: any\n) {\n invariant(\n rootTag,\n 'Expect to have a valid rootTag, instead got ', rootTag\n );\n React.render(\n <AppContainer rootTag={rootTag}>\n <RootComponent\n {...initialProps}\n rootTag={rootTag}\n />\n </AppContainer>,\n rootTag\n );\n}\n\nvar styles = StyleSheet.create({\n appContainer: {\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n },\n});\n\nmodule.exports = renderApplication;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/renderApplication.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/Inspector.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar InspectorOverlay=require('InspectorOverlay');\nvar InspectorPanel=require('InspectorPanel');\nvar InspectorUtils=require('InspectorUtils');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');var \n\nInspector=(function(_React$Component){_inherits(Inspector,_React$Component);\nfunction Inspector(props){_classCallCheck(this,Inspector);\n_get(Object.getPrototypeOf(Inspector.prototype),'constructor',this).call(this,props);\nthis.state = {\npanelPos:'bottom',\ninspecting:true,\nperfing:false,\ninspected:null};}_createClass(Inspector,[{key:'setSelection',value:\n\n\n\nfunction setSelection(i){var _this=this;\nvar instance=this.state.hierarchy[i];\nvar publicInstance=instance.getPublicInstance();\nUIManager.measure(React.findNodeHandle(instance),function(x,y,width,height,left,top){\n_this.setState({\ninspected:{\nframe:{left:left,top:top,width:width,height:height},\nstyle:publicInstance.props?publicInstance.props.style:{}},\n\nselection:i});});}},{key:'onTouchInstance',value:\n\n\n\n\nfunction onTouchInstance(instance,frame,pointerY){\nvar hierarchy=InspectorUtils.getOwnerHierarchy(instance);\nvar publicInstance=instance.getPublicInstance();\nvar props=publicInstance.props || {};\nthis.setState({\npanelPos:pointerY > Dimensions.get('window').height / 2?'top':'bottom',\nselection:hierarchy.length - 1,\nhierarchy:hierarchy,\ninspected:{\nstyle:props.style || {},\nframe:frame}});}},{key:'setPerfing',value:\n\n\n\n\nfunction setPerfing(val){\nthis.setState({\nperfing:val,\ninspecting:false,\ninspected:null});}},{key:'setInspecting',value:\n\n\n\nfunction setInspecting(val){\nthis.setState({\ninspecting:val,\ninspected:null});}},{key:'render',value:\n\n\n\nfunction render(){\nvar panelContainerStyle=this.state.panelPos === 'bottom'?{bottom:0}:{top:0};\nreturn (\nReact.createElement(View,{style:styles.container,pointerEvents:'box-none'},\nthis.state.inspecting && \nReact.createElement(InspectorOverlay,{\nrootTag:this.props.rootTag,\ninspected:this.state.inspected,\ninspectedViewTag:this.props.inspectedViewTag,\nonTouchInstance:this.onTouchInstance.bind(this)}),\n\nReact.createElement(View,{style:[styles.panelContainer,panelContainerStyle]},\nReact.createElement(InspectorPanel,{\ninspecting:this.state.inspecting,\nperfing:this.state.perfing,\nsetPerfing:this.setPerfing.bind(this),\nsetInspecting:this.setInspecting.bind(this),\ninspected:this.state.inspected,\nhierarchy:this.state.hierarchy,\nselection:this.state.selection,\nsetSelection:this.setSelection.bind(this)}))));}}]);return Inspector;})(React.Component);\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nposition:'absolute',\nbackgroundColor:'transparent',\ntop:0,\nleft:0,\nright:0,\nbottom:0},\n\npanelContainer:{\nposition:'absolute',\nleft:0,\nright:0}});\n\n\n\nmodule.exports = Inspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Inspector\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar InspectorOverlay = require('InspectorOverlay');\nvar InspectorPanel = require('InspectorPanel');\nvar InspectorUtils = require('InspectorUtils');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\n\nclass Inspector extends React.Component {\n constructor(props: Object) {\n super(props);\n this.state = {\n panelPos: 'bottom',\n inspecting: true,\n perfing: false,\n inspected: null,\n };\n }\n\n setSelection(i: number) {\n var instance = this.state.hierarchy[i];\n var publicInstance = instance.getPublicInstance();\n UIManager.measure(React.findNodeHandle(instance), (x, y, width, height, left, top) => {\n this.setState({\n inspected: {\n frame: {left, top, width, height},\n style: publicInstance.props ? publicInstance.props.style : {},\n },\n selection: i,\n });\n });\n }\n\n onTouchInstance(instance: Object, frame: Object, pointerY: number) {\n var hierarchy = InspectorUtils.getOwnerHierarchy(instance);\n var publicInstance = instance.getPublicInstance();\n var props = publicInstance.props || {};\n this.setState({\n panelPos: pointerY > Dimensions.get('window').height / 2 ? 'top' : 'bottom',\n selection: hierarchy.length - 1,\n hierarchy,\n inspected: {\n style: props.style || {},\n frame,\n },\n });\n }\n\n setPerfing(val: bool) {\n this.setState({\n perfing: val,\n inspecting: false,\n inspected: null,\n });\n }\n\n setInspecting(val: bool) {\n this.setState({\n inspecting: val,\n inspected: null\n });\n }\n\n render() {\n var panelContainerStyle = (this.state.panelPos === 'bottom') ? {bottom: 0} : {top: 0};\n return (\n <View style={styles.container} pointerEvents=\"box-none\">\n {this.state.inspecting &&\n <InspectorOverlay\n rootTag={this.props.rootTag}\n inspected={this.state.inspected}\n inspectedViewTag={this.props.inspectedViewTag}\n onTouchInstance={this.onTouchInstance.bind(this)}\n />}\n <View style={[styles.panelContainer, panelContainerStyle]}>\n <InspectorPanel\n inspecting={this.state.inspecting}\n perfing={this.state.perfing}\n setPerfing={this.setPerfing.bind(this)}\n setInspecting={this.setInspecting.bind(this)}\n inspected={this.state.inspected}\n hierarchy={this.state.hierarchy}\n selection={this.state.selection}\n setSelection={this.setSelection.bind(this)}\n />\n </View>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n container: {\n position: 'absolute',\n backgroundColor: 'transparent',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n panelContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n },\n});\n\nmodule.exports = Inspector;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/Inspector.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Dimensions=require('Dimensions');\nvar InspectorUtils=require('InspectorUtils');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar UIManager=require('NativeModules').UIManager;\nvar View=require('View');\nvar ElementBox=require('ElementBox');\n\nvar PropTypes=React.PropTypes;\n\n\n\n\n\nvar InspectorOverlay=React.createClass({displayName:'InspectorOverlay',\npropTypes:{\ninspectedViewTag:PropTypes.object,\nonTouchInstance:PropTypes.func.isRequired},\n\n\nfindViewForTouchEvent:function(e){var _this=this;var _e$nativeEvent$touches$0=\ne.nativeEvent.touches[0];var locationX=_e$nativeEvent$touches$0.locationX;var locationY=_e$nativeEvent$touches$0.locationY;\nUIManager.findSubviewIn(\nthis.props.inspectedViewTag,\n[locationX,locationY],\nfunction(nativeViewTag,left,top,width,height){\nvar instance=InspectorUtils.findInstanceByNativeTag(_this.props.rootTag,nativeViewTag);\nif(!instance){\nreturn;}\n\n_this.props.onTouchInstance(instance,{left:left,top:top,width:width,height:height},locationY);});},\n\n\n\n\nshouldSetResponser:function(e){\nthis.findViewForTouchEvent(e);\nreturn true;},\n\n\nrender:function(){\nvar content=null;\nif(this.props.inspected){\ncontent = React.createElement(ElementBox,{frame:this.props.inspected.frame,style:this.props.inspected.style});}\n\n\nreturn (\nReact.createElement(View,{\nonStartShouldSetResponder:this.shouldSetResponser,\nonResponderMove:this.findViewForTouchEvent,\nstyle:[styles.inspector,{height:Dimensions.get('window').height}]},\ncontent));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ninspector:{\nbackgroundColor:'transparent',\nposition:'absolute',\nleft:0,\ntop:0,\nright:0}});\n\n\n\nmodule.exports = InspectorOverlay;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorOverlay\n * @flow\n */\n'use strict';\n\nvar Dimensions = require('Dimensions');\nvar InspectorUtils = require('InspectorUtils');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar UIManager = require('NativeModules').UIManager;\nvar View = require('View');\nvar ElementBox = require('ElementBox');\n\nvar PropTypes = React.PropTypes;\n\ntype EventLike = {\n nativeEvent: Object;\n};\n\nvar InspectorOverlay = React.createClass({\n propTypes: {\n inspectedViewTag: PropTypes.object,\n onTouchInstance: PropTypes.func.isRequired,\n },\n\n findViewForTouchEvent: function(e: EventLike) {\n var {locationX, locationY} = e.nativeEvent.touches[0];\n UIManager.findSubviewIn(\n this.props.inspectedViewTag,\n [locationX, locationY],\n (nativeViewTag, left, top, width, height) => {\n var instance = InspectorUtils.findInstanceByNativeTag(this.props.rootTag, nativeViewTag);\n if (!instance) {\n return;\n }\n this.props.onTouchInstance(instance, {left, top, width, height}, locationY);\n }\n );\n },\n\n shouldSetResponser: function(e: EventLike): bool {\n this.findViewForTouchEvent(e);\n return true;\n },\n\n render: function() {\n var content = null;\n if (this.props.inspected) {\n content = <ElementBox frame={this.props.inspected.frame} style={this.props.inspected.style} />;\n }\n\n return (\n <View\n onStartShouldSetResponder={this.shouldSetResponser}\n onResponderMove={this.findViewForTouchEvent}\n style={[styles.inspector, {height: Dimensions.get('window').height}]}>\n {content}\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n inspector: {\n backgroundColor: 'transparent',\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n },\n});\n\nmodule.exports = InspectorOverlay;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorOverlay.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementBox.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar View=require('View');\nvar StyleSheet=require('StyleSheet');\nvar BorderBox=require('BorderBox');\nvar resolveBoxStyle=require('resolveBoxStyle');\n\nvar flattenStyle=require('flattenStyle');var \n\nElementBox=(function(_React$Component){_inherits(ElementBox,_React$Component);function ElementBox(){_classCallCheck(this,ElementBox);_get(Object.getPrototypeOf(ElementBox.prototype),'constructor',this).apply(this,arguments);}_createClass(ElementBox,[{key:'render',value:\nfunction render(){\nvar style=flattenStyle(this.props.style) || {};\nvar margin=resolveBoxStyle('margin',style);\nvar padding=resolveBoxStyle('padding',style);\nvar frameStyle=this.props.frame;\nif(margin){\nframeStyle = {\ntop:frameStyle.top - margin.top,\nleft:frameStyle.left - margin.left,\nheight:frameStyle.height + margin.top + margin.bottom,\nwidth:frameStyle.width + margin.left + margin.right};}\n\n\nvar contentStyle={\nwidth:this.props.frame.width,\nheight:this.props.frame.height};\n\nif(padding){\ncontentStyle = {\nwidth:contentStyle.width - padding.left - padding.right,\nheight:contentStyle.height - padding.top - padding.bottom};}\n\n\nreturn (\nReact.createElement(View,{style:[styles.frame,frameStyle],pointerEvents:'none'},\nReact.createElement(BorderBox,{box:margin,style:styles.margin},\nReact.createElement(BorderBox,{box:padding,style:styles.padding},\nReact.createElement(View,{style:[styles.content,contentStyle]})))));}}]);return ElementBox;})(React.Component);\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nframe:{\nposition:'absolute'},\n\ncontent:{\nbackgroundColor:'rgba(200, 230, 255, 0.8)'},\n\npadding:{\nborderColor:'rgba(77, 255, 0, 0.3)'},\n\nmargin:{\nborderColor:'rgba(255, 132, 0, 0.3)'}});\n\n\n\nmodule.exports = ElementBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ElementBox\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar View = require('View');\nvar StyleSheet = require('StyleSheet');\nvar BorderBox = require('BorderBox');\nvar resolveBoxStyle = require('resolveBoxStyle');\n\nvar flattenStyle = require('flattenStyle');\n\nclass ElementBox extends React.Component {\n render() {\n var style = flattenStyle(this.props.style) || {};\n var margin = resolveBoxStyle('margin', style);\n var padding = resolveBoxStyle('padding', style);\n var frameStyle = this.props.frame;\n if (margin) {\n frameStyle = {\n top: frameStyle.top - margin.top,\n left: frameStyle.left - margin.left,\n height: frameStyle.height + margin.top + margin.bottom,\n width: frameStyle.width + margin.left + margin.right,\n };\n }\n var contentStyle = {\n width: this.props.frame.width,\n height: this.props.frame.height,\n };\n if (padding) {\n contentStyle = {\n width: contentStyle.width - padding.left - padding.right,\n height: contentStyle.height - padding.top - padding.bottom,\n };\n }\n return (\n <View style={[styles.frame, frameStyle]} pointerEvents=\"none\">\n <BorderBox box={margin} style={styles.margin}>\n <BorderBox box={padding} style={styles.padding}>\n <View style={[styles.content, contentStyle]} />\n </BorderBox>\n </BorderBox>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n frame: {\n position: 'absolute',\n },\n content: {\n backgroundColor: 'rgba(200, 230, 255, 0.8)',\n },\n padding: {\n borderColor: 'rgba(77, 255, 0, 0.3)',\n },\n margin: {\n borderColor: 'rgba(255, 132, 0, 0.3)',\n },\n});\n\nmodule.exports = ElementBox;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementBox.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BorderBox.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar View=require('View');var \n\nBorderBox=(function(_React$Component){_inherits(BorderBox,_React$Component);function BorderBox(){_classCallCheck(this,BorderBox);_get(Object.getPrototypeOf(BorderBox.prototype),'constructor',this).apply(this,arguments);}_createClass(BorderBox,[{key:'render',value:\nfunction render(){\nvar box=this.props.box;\nif(!box){\nreturn this.props.children;}\n\nvar style={\nborderTopWidth:box.top,\nborderBottomWidth:box.bottom,\nborderLeftWidth:box.left,\nborderRightWidth:box.right};\n\nreturn (\nReact.createElement(View,{style:[style,this.props.style]},\nthis.props.children));}}]);return BorderBox;})(React.Component);\n\n\n\n\n\nmodule.exports = BorderBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BorderBox\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar View = require('View');\n\nclass BorderBox extends React.Component {\n render() {\n var box = this.props.box;\n if (!box) {\n return this.props.children;\n }\n var style = {\n borderTopWidth: box.top,\n borderBottomWidth: box.bottom,\n borderLeftWidth: box.left,\n borderRightWidth: box.right,\n };\n return (\n <View style={[style, this.props.style]}>\n {this.props.children}\n </View>\n );\n }\n}\n\nmodule.exports = BorderBox;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BorderBox.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction resolveBoxStyle(prefix,style){\nvar res={};\nvar subs=['top','left','bottom','right'];\nvar set=false;\nsubs.forEach(function(sub){\nres[sub] = style[prefix] || 0;});\n\nif(style[prefix]){\nset = true;}\n\nif(style[prefix + 'Vertical']){\nres.top = res.bottom = style[prefix + 'Vertical'];\nset = true;}\n\nif(style[prefix + 'Horizontal']){\nres.left = res.right = style[prefix + 'Horizontal'];\nset = true;}\n\nsubs.forEach(function(sub){\nvar val=style[prefix + capFirst(sub)];\nif(val){\nres[sub] = val;\nset = true;}});\n\n\nif(!set){\nreturn;}\n\nreturn res;}\n\n\nfunction capFirst(text){\nreturn text[0].toUpperCase() + text.slice(1);}\n\n\nmodule.exports = resolveBoxStyle;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule resolveBoxStyle\n * @flow\n */\n'use strict';\n\n/**\n * Resolve a style property into it's component parts, e.g.\n *\n * resolveProperties('margin', {margin: 5, marginBottom: 10})\n * ->\n * {top: 5, left: 5, right: 5, bottom: 10}\n *\n * If none are set, returns false.\n */\nfunction resolveBoxStyle(prefix: string, style: Object): ?Object {\n var res = {};\n var subs = ['top', 'left', 'bottom', 'right'];\n var set = false;\n subs.forEach(sub => {\n res[sub] = style[prefix] || 0;\n });\n if (style[prefix]) {\n set = true;\n }\n if (style[prefix + 'Vertical']) {\n res.top = res.bottom = style[prefix + 'Vertical'];\n set = true;\n }\n if (style[prefix + 'Horizontal']) {\n res.left = res.right = style[prefix + 'Horizontal'];\n set = true;\n }\n subs.forEach(sub => {\n var val = style[prefix + capFirst(sub)];\n if (val) {\n res[sub] = val;\n set = true;\n }\n });\n if (!set) {\n return;\n }\n return res;\n}\n\nfunction capFirst(text) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\nmodule.exports = resolveBoxStyle;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/resolveBoxStyle.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorPanel.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\nvar ElementProperties=require('ElementProperties');\nvar PerformanceOverlay=require('PerformanceOverlay');\nvar TouchableHighlight=require('TouchableHighlight');\n\nvar PropTypes=React.PropTypes;var \n\nInspectorPanel=(function(_React$Component){_inherits(InspectorPanel,_React$Component);function InspectorPanel(){_classCallCheck(this,InspectorPanel);_get(Object.getPrototypeOf(InspectorPanel.prototype),'constructor',this).apply(this,arguments);}_createClass(InspectorPanel,[{key:'renderWaiting',value:\nfunction renderWaiting(){\nif(this.props.inspecting){\nreturn (\nReact.createElement(Text,{style:styles.waitingText},'Tap something to inspect it'));}\n\n\n\n\nreturn React.createElement(Text,{style:styles.waitingText},'Nothing is inspected');}},{key:'render',value:\n\n\nfunction render(){\nvar contents;\nif(this.props.inspected){\ncontents = \nReact.createElement(ElementProperties,{\nstyle:this.props.inspected.style,\nframe:this.props.inspected.frame,\nhierarchy:this.props.hierarchy,\nselection:this.props.selection,\nsetSelection:this.props.setSelection});}else \n\n\nif(this.props.perfing){\ncontents = \nReact.createElement(PerformanceOverlay,null);}else \n\n{\ncontents = \nReact.createElement(View,{style:styles.waiting},\nthis.renderWaiting());}\n\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\ncontents,\nReact.createElement(View,{style:styles.buttonRow},\nReact.createElement(Button,{\ntitle:'Inspect',\npressed:this.props.inspecting,\nonClick:this.props.setInspecting}),\n\nReact.createElement(Button,{title:'Perf',\npressed:this.props.perfing,\nonClick:this.props.setPerfing}))));}}]);return InspectorPanel;})(React.Component);\n\n\n\n\n\n\n\nInspectorPanel.propTypes = {\ninspecting:PropTypes.bool,\nsetInspecting:PropTypes.func,\ninspected:PropTypes.object,\nperfing:PropTypes.bool,\nsetPerfing:PropTypes.func};var \n\n\nButton=(function(_React$Component2){_inherits(Button,_React$Component2);function Button(){_classCallCheck(this,Button);_get(Object.getPrototypeOf(Button.prototype),'constructor',this).apply(this,arguments);}_createClass(Button,[{key:'render',value:\nfunction render(){var _this=this;\nreturn (\nReact.createElement(TouchableHighlight,{onPress:function(){return _this.props.onClick(!_this.props.pressed);},style:[\nstyles.button,\nthis.props.pressed && styles.buttonPressed]},\n\nReact.createElement(Text,{style:styles.buttonText},this.props.title)));}}]);return Button;})(React.Component);\n\n\n\n\n\nvar styles=StyleSheet.create({\nbuttonRow:{\nflexDirection:'row'},\n\nbutton:{\nbackgroundColor:'rgba(0, 0, 0, 0.3)',\nmargin:2,\nheight:30,\njustifyContent:'center',\nalignItems:'center'},\n\nbuttonPressed:{\nbackgroundColor:'rgba(255, 255, 255, 0.3)'},\n\nbuttonText:{\ntextAlign:'center',\ncolor:'white',\nmargin:5},\n\ncontainer:{\nbackgroundColor:'rgba(0, 0, 0, 0.7)'},\n\nwaiting:{\nheight:100},\n\nwaitingText:{\nfontSize:20,\ntextAlign:'center',\nmarginVertical:20}});\n\n\n\nmodule.exports = InspectorPanel;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule InspectorPanel\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\nvar ElementProperties = require('ElementProperties');\nvar PerformanceOverlay = require('PerformanceOverlay');\nvar TouchableHighlight = require('TouchableHighlight');\n\nvar PropTypes = React.PropTypes;\n\nclass InspectorPanel extends React.Component {\n renderWaiting() {\n if (this.props.inspecting) {\n return (\n <Text style={styles.waitingText}>\n Tap something to inspect it\n </Text>\n );\n }\n return <Text style={styles.waitingText}>Nothing is inspected</Text>;\n }\n\n render() {\n var contents;\n if (this.props.inspected) {\n contents = (\n <ElementProperties\n style={this.props.inspected.style}\n frame={this.props.inspected.frame}\n hierarchy={this.props.hierarchy}\n selection={this.props.selection}\n setSelection={this.props.setSelection}\n />\n );\n } else if (this.props.perfing) {\n contents = (\n <PerformanceOverlay />\n );\n } else {\n contents = (\n <View style={styles.waiting}>\n {this.renderWaiting()}\n </View>\n );\n }\n return (\n <View style={styles.container}>\n {contents}\n <View style={styles.buttonRow}>\n <Button\n title={'Inspect'}\n pressed={this.props.inspecting}\n onClick={this.props.setInspecting}\n />\n <Button title={'Perf'}\n pressed={this.props.perfing}\n onClick={this.props.setPerfing}\n />\n </View>\n </View>\n );\n }\n}\n\nInspectorPanel.propTypes = {\n inspecting: PropTypes.bool,\n setInspecting: PropTypes.func,\n inspected: PropTypes.object,\n perfing: PropTypes.bool,\n setPerfing: PropTypes.func,\n};\n\nclass Button extends React.Component {\n render() {\n return (\n <TouchableHighlight onPress={() => this.props.onClick(!this.props.pressed)} style={[\n styles.button,\n this.props.pressed && styles.buttonPressed\n ]}>\n <Text style={styles.buttonText}>{this.props.title}</Text>\n </TouchableHighlight>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n buttonRow: {\n flexDirection: 'row',\n },\n button: {\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n margin: 2,\n height: 30,\n justifyContent: 'center',\n alignItems: 'center',\n },\n buttonPressed: {\n backgroundColor: 'rgba(255, 255, 255, 0.3)',\n },\n buttonText: {\n textAlign: 'center',\n color: 'white',\n margin: 5,\n },\n container: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n },\n waiting: {\n height: 100,\n },\n waitingText: {\n fontSize: 20,\n textAlign: 'center',\n marginVertical: 20,\n },\n});\n\nmodule.exports = InspectorPanel;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/InspectorPanel.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementProperties.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar BoxInspector=require('BoxInspector');\nvar PropTypes=require('ReactPropTypes');\nvar React=require('React');\nvar StyleInspector=require('StyleInspector');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TouchableHighlight=require('TouchableHighlight');\nvar TouchableWithoutFeedback=require('TouchableWithoutFeedback');\nvar View=require('View');\n\nvar flattenStyle=require('flattenStyle');\nvar mapWithSeparator=require('mapWithSeparator');\n\nvar ElementProperties=React.createClass({displayName:'ElementProperties',\npropTypes:{\nhierarchy:PropTypes.array.isRequired,\nstyle:PropTypes.array.isRequired},\n\n\nrender:function(){var _this=this;\nvar style=flattenStyle(this.props.style);\nvar selection=this.props.selection;\n\n\nreturn (\nReact.createElement(TouchableWithoutFeedback,null,\nReact.createElement(View,{style:styles.info},\nReact.createElement(View,{style:styles.breadcrumb},\nmapWithSeparator(\nthis.props.hierarchy,\nfunction(item,i){return (\nReact.createElement(TouchableHighlight,{\nstyle:[styles.breadItem,i === selection && styles.selected],\nonPress:function(){return _this.props.setSelection(i);}},\nReact.createElement(Text,{style:styles.breadItemText},\nitem.getName?item.getName():'Unknown')));},\n\n\n\nfunction(){return React.createElement(Text,{style:styles.breadSep},'▸');})),\n\n\nReact.createElement(View,{style:styles.row},\nReact.createElement(StyleInspector,{style:style}),\nReact.createElement(BoxInspector,{style:style,frame:this.props.frame})))));}});\n\n\n\n\n\n\n\nvar styles=StyleSheet.create({\nbreadSep:{\nfontSize:8,\ncolor:'white'},\n\nbreadcrumb:{\nflexDirection:'row',\nflexWrap:'wrap',\nmarginBottom:5},\n\nselected:{\nborderColor:'white',\nborderRadius:5},\n\nbreadItem:{\nborderWidth:1,\nborderColor:'transparent',\nmarginHorizontal:2},\n\nbreadItemText:{\nfontSize:10,\ncolor:'white',\nmarginHorizontal:5},\n\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-between'},\n\ninfo:{\npadding:10},\n\npath:{\ncolor:'white',\nfontSize:9}});\n\n\n\nmodule.exports = ElementProperties;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ElementProperties\n * @flow\n */\n'use strict';\n\nvar BoxInspector = require('BoxInspector');\nvar PropTypes = require('ReactPropTypes');\nvar React = require('React');\nvar StyleInspector = require('StyleInspector');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TouchableHighlight = require('TouchableHighlight');\nvar TouchableWithoutFeedback = require('TouchableWithoutFeedback');\nvar View = require('View');\n\nvar flattenStyle = require('flattenStyle');\nvar mapWithSeparator = require('mapWithSeparator');\n\nvar ElementProperties = React.createClass({\n propTypes: {\n hierarchy: PropTypes.array.isRequired,\n style: PropTypes.array.isRequired,\n },\n\n render: function() {\n var style = flattenStyle(this.props.style);\n var selection = this.props.selection;\n // Without the `TouchableWithoutFeedback`, taps on this inspector pane\n // would change the inspected element to whatever is under the inspector\n return (\n <TouchableWithoutFeedback>\n <View style={styles.info}>\n <View style={styles.breadcrumb}>\n {mapWithSeparator(\n this.props.hierarchy,\n (item, i) => (\n <TouchableHighlight\n style={[styles.breadItem, i === selection && styles.selected]}\n onPress={() => this.props.setSelection(i)}>\n <Text style={styles.breadItemText}>\n {item.getName ? item.getName() : 'Unknown'}\n </Text>\n </TouchableHighlight>\n ),\n () => <Text style={styles.breadSep}>▸</Text>\n )}\n </View>\n <View style={styles.row}>\n <StyleInspector style={style} />\n <BoxInspector style={style} frame={this.props.frame} />\n </View>\n </View>\n </TouchableWithoutFeedback>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n breadSep: {\n fontSize: 8,\n color: 'white',\n },\n breadcrumb: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n marginBottom: 5,\n },\n selected: {\n borderColor: 'white',\n borderRadius: 5,\n },\n breadItem: {\n borderWidth: 1,\n borderColor: 'transparent',\n marginHorizontal: 2,\n },\n breadItemText: {\n fontSize: 10,\n color: 'white',\n marginHorizontal: 5,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n info: {\n padding: 10,\n },\n path: {\n color: 'white',\n fontSize: 9,\n },\n});\n\nmodule.exports = ElementProperties;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/ElementProperties.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BoxInspector.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\nvar resolveBoxStyle=require('resolveBoxStyle');\n\nvar blank={\ntop:0,\nleft:0,\nright:0,\nbottom:0};var \n\n\nBoxInspector=(function(_React$Component){_inherits(BoxInspector,_React$Component);function BoxInspector(){_classCallCheck(this,BoxInspector);_get(Object.getPrototypeOf(BoxInspector.prototype),'constructor',this).apply(this,arguments);}_createClass(BoxInspector,[{key:'render',value:\nfunction render(){\nvar frame=this.props.frame;\nvar style=this.props.style;\nvar margin=style && resolveBoxStyle('margin',style) || blank;\nvar padding=style && resolveBoxStyle('padding',style) || blank;\nreturn (\nReact.createElement(BoxContainer,{title:'margin',titleStyle:styles.marginLabel,box:margin},\nReact.createElement(BoxContainer,{title:'padding',box:padding},\nReact.createElement(View,null,\nReact.createElement(Text,{style:styles.innerText},'(',\nframe.left,', ',frame.top,')'),\n\nReact.createElement(Text,{style:styles.innerText},\nframe.width,' × ',frame.height)))));}}]);return BoxInspector;})(React.Component);var \n\n\n\n\n\n\n\n\nBoxContainer=(function(_React$Component2){_inherits(BoxContainer,_React$Component2);function BoxContainer(){_classCallCheck(this,BoxContainer);_get(Object.getPrototypeOf(BoxContainer.prototype),'constructor',this).apply(this,arguments);}_createClass(BoxContainer,[{key:'render',value:\nfunction render(){\nvar box=this.props.box;\nreturn (\nReact.createElement(View,{style:styles.box},\nReact.createElement(View,{style:styles.row},\nReact.createElement(Text,{style:[this.props.titleStyle,styles.label]},this.props.title),\nReact.createElement(Text,{style:styles.boxText},box.top)),\n\nReact.createElement(View,{style:styles.row},\nReact.createElement(Text,{style:styles.boxText},box.left),\nthis.props.children,\nReact.createElement(Text,{style:styles.boxText},box.right)),\n\nReact.createElement(Text,{style:styles.boxText},box.bottom)));}}]);return BoxContainer;})(React.Component);\n\n\n\n\n\nvar styles=StyleSheet.create({\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-around'},\n\nmarginLabel:{\nwidth:60},\n\nlabel:{\nfontSize:10,\ncolor:'rgb(255,100,0)',\nmarginLeft:5,\nflex:1,\ntextAlign:'left',\ntop:-3},\n\nbuffer:{\nfontSize:10,\ncolor:'yellow',\nflex:1,\ntextAlign:'center'},\n\ninnerText:{\ncolor:'yellow',\nfontSize:12,\ntextAlign:'center',\nwidth:70},\n\nbox:{\nborderWidth:1,\nborderColor:'grey'},\n\nboxText:{\ncolor:'white',\nfontSize:12,\nmarginHorizontal:3,\nmarginVertical:2,\ntextAlign:'center'}});\n\n\n\nmodule.exports = BoxInspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BoxInspector\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\nvar resolveBoxStyle = require('resolveBoxStyle');\n\nvar blank = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n};\n\nclass BoxInspector extends React.Component {\n render() {\n var frame = this.props.frame;\n var style = this.props.style;\n var margin = style && resolveBoxStyle('margin', style) || blank;\n var padding = style && resolveBoxStyle('padding', style) || blank;\n return (\n <BoxContainer title=\"margin\" titleStyle={styles.marginLabel} box={margin}>\n <BoxContainer title=\"padding\" box={padding}>\n <View>\n <Text style={styles.innerText}>\n ({frame.left}, {frame.top})\n </Text>\n <Text style={styles.innerText}>\n {frame.width} × {frame.height}\n </Text>\n </View>\n </BoxContainer>\n </BoxContainer>\n );\n }\n}\n\nclass BoxContainer extends React.Component {\n render() {\n var box = this.props.box;\n return (\n <View style={styles.box}>\n <View style={styles.row}>\n <Text style={[this.props.titleStyle, styles.label]}>{this.props.title}</Text>\n <Text style={styles.boxText}>{box.top}</Text>\n </View>\n <View style={styles.row}>\n <Text style={styles.boxText}>{box.left}</Text>\n {this.props.children}\n <Text style={styles.boxText}>{box.right}</Text>\n </View>\n <Text style={styles.boxText}>{box.bottom}</Text>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n },\n marginLabel: {\n width: 60,\n },\n label: {\n fontSize: 10,\n color: 'rgb(255,100,0)',\n marginLeft: 5,\n flex: 1,\n textAlign: 'left',\n top: -3,\n },\n buffer: {\n fontSize: 10,\n color: 'yellow',\n flex: 1,\n textAlign: 'center',\n },\n innerText: {\n color: 'yellow',\n fontSize: 12,\n textAlign: 'center',\n width: 70,\n },\n box: {\n borderWidth: 1,\n borderColor: 'grey',\n },\n boxText: {\n color: 'white',\n fontSize: 12,\n marginHorizontal: 3,\n marginVertical: 2,\n textAlign: 'center',\n },\n});\n\nmodule.exports = BoxInspector;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/BoxInspector.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/StyleInspector.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();var _get=function get(object,property,receiver){if(object === null)object = Function.prototype;var desc=Object.getOwnPropertyDescriptor(object,property);if(desc === undefined){var parent=Object.getPrototypeOf(object);if(parent === null){return undefined;}else {return get(parent,property,receiver);}}else if('value' in desc){return desc.value;}else {var getter=desc.get;if(getter === undefined){return undefined;}return getter.call(receiver);}};function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}function _inherits(subClass,superClass){if(typeof superClass !== 'function' && superClass !== null){throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);}subClass.prototype = Object.create(superClass && superClass.prototype,{constructor:{value:subClass,enumerable:false,writable:true,configurable:true}});if(superClass)Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__ = superClass;}\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');var \n\nStyleInspector=(function(_React$Component){_inherits(StyleInspector,_React$Component);function StyleInspector(){_classCallCheck(this,StyleInspector);_get(Object.getPrototypeOf(StyleInspector.prototype),'constructor',this).apply(this,arguments);}_createClass(StyleInspector,[{key:'render',value:\nfunction render(){var _this=this;\nif(!this.props.style){\nreturn React.createElement(Text,{style:styles.noStyle},'No style');}\n\nvar names=Object.keys(this.props.style);\nreturn (\nReact.createElement(View,{style:styles.container},\nReact.createElement(View,null,\nnames.map(function(name){return React.createElement(Text,{style:styles.attr},name,':');})),\n\nReact.createElement(View,null,\nnames.map(function(name){return React.createElement(Text,{style:styles.value},_this.props.style[name]);}))));}}]);return StyleInspector;})(React.Component);\n\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflexDirection:'row'},\n\nrow:{\nflexDirection:'row',\nalignItems:'center',\njustifyContent:'space-around'},\n\nattr:{\nfontSize:10,\ncolor:'#ccc'},\n\nvalue:{\nfontSize:10,\ncolor:'white',\nmarginLeft:10},\n\nnoStyle:{\ncolor:'white',\nfontSize:10}});\n\n\n\nmodule.exports = StyleInspector;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StyleInspector\n * @flow\n */\n'use strict';\n\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nclass StyleInspector extends React.Component {\n render() {\n if (!this.props.style) {\n return <Text style={styles.noStyle}>No style</Text>;\n }\n var names = Object.keys(this.props.style);\n return (\n <View style={styles.container}>\n <View>\n {names.map(name => <Text style={styles.attr}>{name}:</Text>)}\n </View>\n <View>\n {names.map(name => <Text style={styles.value}>{this.props.style[name]}</Text>)}\n </View>\n </View>\n );\n }\n}\n\nvar styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-around',\n },\n attr: {\n fontSize: 10,\n color: '#ccc',\n },\n value: {\n fontSize: 10,\n color: 'white',\n marginLeft: 10,\n },\n noStyle: {\n color: 'white',\n fontSize: 10,\n },\n});\n\nmodule.exports = StyleInspector;\n\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/StyleInspector.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mapWithSeparator.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nfunction mapWithSeparator(array,valueFunction,separatorFunction){\nvar results=[];\nfor(var i=0;i < array.length;i++) {\nresults.push(valueFunction(array[i],i,array));\nif(i !== array.length - 1){\nresults.push(separatorFunction(i));}}\n\n\nreturn results;}\n\n\nmodule.exports = mapWithSeparator;","sourceCode":"/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule mapWithSeparator\n */\n'use strict';\n\nfunction mapWithSeparator(array, valueFunction, separatorFunction) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n results.push(valueFunction(array[i], i, array));\n if (i !== array.length - 1) {\n results.push(separatorFunction(i));\n }\n }\n return results;\n}\n\nmodule.exports = mapWithSeparator;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/mapWithSeparator.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/PerformanceOverlay.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PerformanceLogger=require('PerformanceLogger');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar View=require('View');\n\nvar PerformanceOverlay=React.createClass({displayName:'PerformanceOverlay',\nrender:function(){\nvar perfLogs=PerformanceLogger.getTimespans();\nvar items=[];\n\nfor(var key in perfLogs) {\nif(perfLogs[key].totalTime){\nitems.push(\nReact.createElement(View,{style:styles.row},\nReact.createElement(Text,{style:[styles.text,styles.label]},key),\nReact.createElement(Text,{style:[styles.text,styles.totalTime]},\nperfLogs[key].totalTime + 'ms')));}}\n\n\n\n\n\n\nreturn (\nReact.createElement(View,{style:styles.container},\nitems));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nheight:100,\npaddingTop:10},\n\nlabel:{\nflex:1},\n\nrow:{\nflexDirection:'row',\npaddingHorizontal:10},\n\ntext:{\ncolor:'white',\nfontSize:12},\n\ntotalTime:{\npaddingRight:100}});\n\n\n\nmodule.exports = PerformanceOverlay;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PerformanceOverlay\n * @flow\n */\n'use strict';\n\nvar PerformanceLogger = require('PerformanceLogger');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar View = require('View');\n\nvar PerformanceOverlay = React.createClass({\n render: function() {\n var perfLogs = PerformanceLogger.getTimespans();\n var items = [];\n\n for (var key in perfLogs) {\n if (perfLogs[key].totalTime) {\n items.push(\n <View style={styles.row}>\n <Text style={[styles.text, styles.label]}>{key}</Text>\n <Text style={[styles.text, styles.totalTime]}>\n {perfLogs[key].totalTime + 'ms'}\n </Text>\n </View>\n );\n }\n }\n\n return (\n <View style={styles.container}>\n {items}\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n height: 100,\n paddingTop: 10,\n },\n label: {\n flex: 1,\n },\n row: {\n flexDirection: 'row',\n paddingHorizontal: 10,\n },\n text: {\n color: 'white',\n fontSize: 12,\n },\n totalTime: {\n paddingRight: 100,\n },\n});\n\nmodule.exports = PerformanceOverlay;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Inspector/PerformanceOverlay.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/WarningBox.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\nvar AsyncStorage=require('AsyncStorage');\nvar EventEmitter=require('EventEmitter');\nvar Map=require('Map');\nvar PanResponder=require('PanResponder');\nvar React=require('React');\nvar StyleSheet=require('StyleSheet');\nvar Text=require('Text');\nvar TouchableOpacity=require('TouchableOpacity');\nvar View=require('View');\n\nvar invariant=require('invariant');\nvar rebound=require('rebound');\nvar stringifySafe=require('stringifySafe');\n\nvar SCREEN_WIDTH=require('Dimensions').get('window').width;\nvar IGNORED_WARNINGS_KEY='__DEV_WARNINGS_IGNORED';\n\nvar consoleWarn=console.warn.bind(console);\n\nvar warningCounts=new Map();\nvar ignoredWarnings=[];\nvar totalWarningCount=0;\nvar warningCountEvents=new EventEmitter();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nif(__DEV__){\nconsole.warn = function(){\nconsoleWarn.apply(null,arguments);\nif(!console.yellowBoxEnabled){\nreturn;}\n\nvar warning=Array.prototype.map.call(arguments,stringifySafe).join(' ');\nif(!console.yellowBoxResetIgnored && \nignoredWarnings.indexOf(warning) !== -1){\nreturn;}\n\nvar count=warningCounts.has(warning)?warningCounts.get(warning) + 1:1;\nwarningCounts.set(warning,count);\ntotalWarningCount += 1;\nwarningCountEvents.emit('count',totalWarningCount);};}\n\n\n\nfunction saveIgnoredWarnings(){\nAsyncStorage.setItem(\nIGNORED_WARNINGS_KEY,\nJSON.stringify(ignoredWarnings),\nfunction(err){\nif(err){\nconsole.warn('Could not save ignored warnings.',err);}});}\n\n\n\n\n\nAsyncStorage.getItem(IGNORED_WARNINGS_KEY,function(err,data){\nif(!err && data && !console.yellowBoxResetIgnored){\nignoredWarnings = JSON.parse(data);}});\n\n\n\nvar WarningRow=React.createClass({displayName:'WarningRow',\ncomponentWillMount:function(){var _this=this;\nthis.springSystem = new rebound.SpringSystem();\nthis.dismissalSpring = this.springSystem.createSpring();\nthis.dismissalSpring.setRestSpeedThreshold(0.05);\nthis.dismissalSpring.setCurrentValue(0);\nthis.dismissalSpring.addListener({\nonSpringUpdate:function(){\nvar val=_this.dismissalSpring.getCurrentValue();\n_this.text && _this.text.setNativeProps({\nleft:SCREEN_WIDTH * val});\n\n_this.container && _this.container.setNativeProps({\nopacity:1 - val});\n\n_this.closeButton && _this.closeButton.setNativeProps({\nopacity:1 - val * 5});},\n\n\nonSpringAtRest:function(){\nif(_this.dismissalSpring.getCurrentValue()){\n_this.collapseSpring.setEndValue(1);}}});\n\n\n\nthis.collapseSpring = this.springSystem.createSpring();\nthis.collapseSpring.setRestSpeedThreshold(0.05);\nthis.collapseSpring.setCurrentValue(0);\nthis.collapseSpring.getSpringConfig().friction = 20;\nthis.collapseSpring.getSpringConfig().tension = 200;\nthis.collapseSpring.addListener({\nonSpringUpdate:function(){\nvar val=_this.collapseSpring.getCurrentValue();\n_this.container && _this.container.setNativeProps({\nheight:Math.abs(46 - val * 46)});},\n\n\nonSpringAtRest:function(){\n_this.props.onDismissed();}});\n\n\nthis.panGesture = PanResponder.create({\nonStartShouldSetPanResponder:function(){\nreturn !!_this.dismissalSpring.getCurrentValue();},\n\nonMoveShouldSetPanResponder:function(){return true;},\nonPanResponderGrant:function(){\n_this.isResponderOnlyToBlockTouches = \n!!_this.dismissalSpring.getCurrentValue();},\n\nonPanResponderMove:function(e,gestureState){\nif(_this.isResponderOnlyToBlockTouches){\nreturn;}\n\n_this.dismissalSpring.setCurrentValue(gestureState.dx / SCREEN_WIDTH);},\n\nonPanResponderRelease:function(e,gestureState){\nif(_this.isResponderOnlyToBlockTouches){\nreturn;}\n\nvar gestureCompletion=gestureState.dx / SCREEN_WIDTH;\nvar doesGestureRelease=gestureState.vx + gestureCompletion > 0.5;\n_this.dismissalSpring.setEndValue(doesGestureRelease?1:0);}});},\n\n\n\nrender:function(){var _this2=this;\nvar countText;\nif(warningCounts.get(this.props.warning) > 1){\ncountText = \nReact.createElement(Text,{style:styles.bold},'(',\nwarningCounts.get(this.props.warning),')',\" \");}\n\n\n\nreturn (\nReact.createElement(View,_extends({\nstyle:styles.warningBox,\nref:function(container){_this2.container = container;}},\nthis.panGesture.panHandlers),\nReact.createElement(TouchableOpacity,{\nonPress:this.props.onOpened},\nReact.createElement(View,null,\nReact.createElement(Text,{\nstyle:styles.warningText,\nnumberOfLines:2,\nref:function(text){_this2.text = text;}},\ncountText,\nthis.props.warning))),\n\n\n\nReact.createElement(View,{\nref:function(closeButton){_this2.closeButton = closeButton;},\nstyle:styles.closeButton},\nReact.createElement(TouchableOpacity,{\nonPress:function(){\n_this2.dismissalSpring.setEndValue(1);}},\n\nReact.createElement(Text,{style:styles.closeButtonText},'✕')))));}});\n\n\n\n\n\n\n\nvar WarningBoxOpened=React.createClass({displayName:'WarningBoxOpened',\nrender:function(){\nvar countText;\nif(warningCounts.get(this.props.warning) > 1){\ncountText = \nReact.createElement(Text,{style:styles.bold},'(',\nwarningCounts.get(this.props.warning),')',\" \");}\n\n\n\nreturn (\nReact.createElement(TouchableOpacity,{\nactiveOpacity:0.9,\nonPress:this.props.onClose},\nReact.createElement(View,{style:styles.yellowBox},\nReact.createElement(Text,{style:styles.yellowBoxText},\ncountText,\nthis.props.warning),\n\nReact.createElement(View,{style:styles.yellowBoxButtons},\nReact.createElement(View,{style:styles.yellowBoxButton},\nReact.createElement(TouchableOpacity,{\nonPress:this.props.onDismissed},\nReact.createElement(Text,{style:styles.yellowBoxButtonText},'Dismiss'))),\n\n\n\n\nReact.createElement(View,{style:styles.yellowBoxButton},\nReact.createElement(TouchableOpacity,{\nonPress:this.props.onIgnored},\nReact.createElement(Text,{style:styles.yellowBoxButtonText},'Ignore')))))));}});\n\n\n\n\n\n\n\n\n\n\n\nvar canMountWarningBox=true;\n\nvar WarningBox=React.createClass({displayName:'WarningBox',\ngetInitialState:function(){\nreturn {\ntotalWarningCount:totalWarningCount,\nopenWarning:null};},\n\n\ncomponentWillMount:function(){\nif(console.yellowBoxResetIgnored){\nAsyncStorage.setItem(IGNORED_WARNINGS_KEY,'[]',function(err){\nif(err){\nconsole.warn('Could not reset ignored warnings.',err);}});\n\n\nignoredWarnings = [];}},\n\n\ncomponentDidMount:function(){\ninvariant(\ncanMountWarningBox,\n'There can only be one WarningBox');\n\ncanMountWarningBox = false;\nwarningCountEvents.addListener(\n'count',\nthis._onWarningCount);},\n\n\ncomponentWillUnmount:function(){\nwarningCountEvents.removeAllListeners();\ncanMountWarningBox = true;},\n\n_onWarningCount:function(totalWarningCount){var _this3=this;\n\n\nsetImmediate(function(){\n_this3.setState({totalWarningCount:totalWarningCount});});},\n\n\n_onDismiss:function(warning){\nwarningCounts.delete(warning);\nthis.setState({\nopenWarning:null});},\n\n\nrender:function(){var _this4=this;\nif(warningCounts.size === 0){\nreturn React.createElement(View,null);}\n\nif(this.state.openWarning){\nreturn (\nReact.createElement(WarningBoxOpened,{\nwarning:this.state.openWarning,\nonClose:function(){\n_this4.setState({openWarning:null});},\n\nonDismissed:this._onDismiss.bind(this,this.state.openWarning),\nonIgnored:function(){\nignoredWarnings.push(_this4.state.openWarning);\nsaveIgnoredWarnings();\n_this4._onDismiss(_this4.state.openWarning);}}));}\n\n\n\n\nvar warningRows=[];\nwarningCounts.forEach(function(count,warning){\nwarningRows.push(\nReact.createElement(WarningRow,{\nkey:warning,\nonOpened:function(){\n_this4.setState({openWarning:warning});},\n\nonDismissed:_this4._onDismiss.bind(_this4,warning),\nwarning:warning}));});\n\n\n\nreturn (\nReact.createElement(View,{style:styles.warningContainer},\nwarningRows));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\nbold:{\nfontWeight:'bold'},\n\ncloseButton:{\nposition:'absolute',\nright:0,\nheight:46,\nwidth:46},\n\ncloseButtonText:{\ncolor:'white',\nfontSize:32,\nposition:'relative',\nleft:8},\n\nwarningContainer:{\nposition:'absolute',\nleft:0,\nright:0,\nbottom:0},\n\nwarningBox:{\nposition:'relative',\nbackgroundColor:'rgba(171, 124, 36, 0.9)',\nflex:1,\nheight:46},\n\nwarningText:{\ncolor:'white',\nposition:'absolute',\nleft:0,\nmarginLeft:15,\nmarginRight:46,\ntop:7},\n\nyellowBox:{\nbackgroundColor:'rgba(171, 124, 36, 0.9)',\nposition:'absolute',\nleft:0,\nright:0,\ntop:0,\nbottom:0,\npadding:15,\npaddingTop:35},\n\nyellowBoxText:{\ncolor:'white',\nfontSize:20},\n\nyellowBoxButtons:{\nflexDirection:'row',\nposition:'absolute',\nbottom:0},\n\nyellowBoxButton:{\nflex:1,\npadding:25},\n\nyellowBoxButtonText:{\ncolor:'white',\nfontSize:16}});\n\n\n\nmodule.exports = WarningBox;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule WarningBox\n */\n'use strict';\n\nvar AsyncStorage = require('AsyncStorage');\nvar EventEmitter = require('EventEmitter');\nvar Map = require('Map');\nvar PanResponder = require('PanResponder');\nvar React = require('React');\nvar StyleSheet = require('StyleSheet');\nvar Text = require('Text');\nvar TouchableOpacity = require('TouchableOpacity');\nvar View = require('View');\n\nvar invariant = require('invariant');\nvar rebound = require('rebound');\nvar stringifySafe = require('stringifySafe');\n\nvar SCREEN_WIDTH = require('Dimensions').get('window').width;\nvar IGNORED_WARNINGS_KEY = '__DEV_WARNINGS_IGNORED';\n\nvar consoleWarn = console.warn.bind(console);\n\nvar warningCounts = new Map();\nvar ignoredWarnings: Array<string> = [];\nvar totalWarningCount = 0;\nvar warningCountEvents = new EventEmitter();\n\n/**\n * WarningBox renders warnings on top of the app being developed. Warnings help\n * guard against subtle yet significant issues that can impact the quality of\n * your application, such as accessibility and memory leaks. This \"in your\n * face\" style of warning allows developers to notice and correct these issues\n * as quickly as possible.\n *\n * The warning box is currently opt-in. Set the following flag to enable it:\n *\n * `console.yellowBoxEnabled = true;`\n *\n * If \"ignore\" is tapped on a warning, the WarningBox will record that warning\n * and will not display it again. This is useful for hiding errors that already\n * exist or have been introduced elsewhere. To re-enable all of the errors, set\n * the following:\n *\n * `console.yellowBoxResetIgnored = true;`\n *\n * This can also be set permanently, and ignore will only silence the warnings\n * until the next refresh.\n */\n\nif (__DEV__) {\n console.warn = function() {\n consoleWarn.apply(null, arguments);\n if (!console.yellowBoxEnabled) {\n return;\n }\n var warning = Array.prototype.map.call(arguments, stringifySafe).join(' ');\n if (!console.yellowBoxResetIgnored &&\n ignoredWarnings.indexOf(warning) !== -1) {\n return;\n }\n var count = warningCounts.has(warning) ? warningCounts.get(warning) + 1 : 1;\n warningCounts.set(warning, count);\n totalWarningCount += 1;\n warningCountEvents.emit('count', totalWarningCount);\n };\n}\n\nfunction saveIgnoredWarnings() {\n AsyncStorage.setItem(\n IGNORED_WARNINGS_KEY,\n JSON.stringify(ignoredWarnings),\n function(err) {\n if (err) {\n console.warn('Could not save ignored warnings.', err);\n }\n }\n );\n}\n\nAsyncStorage.getItem(IGNORED_WARNINGS_KEY, function(err, data) {\n if (!err && data && !console.yellowBoxResetIgnored) {\n ignoredWarnings = JSON.parse(data);\n }\n});\n\nvar WarningRow = React.createClass({\n componentWillMount: function() {\n this.springSystem = new rebound.SpringSystem();\n this.dismissalSpring = this.springSystem.createSpring();\n this.dismissalSpring.setRestSpeedThreshold(0.05);\n this.dismissalSpring.setCurrentValue(0);\n this.dismissalSpring.addListener({\n onSpringUpdate: () => {\n var val = this.dismissalSpring.getCurrentValue();\n this.text && this.text.setNativeProps({\n left: SCREEN_WIDTH * val,\n });\n this.container && this.container.setNativeProps({\n opacity: 1 - val,\n });\n this.closeButton && this.closeButton.setNativeProps({\n opacity: 1 - (val * 5),\n });\n },\n onSpringAtRest: () => {\n if (this.dismissalSpring.getCurrentValue()) {\n this.collapseSpring.setEndValue(1);\n }\n },\n });\n this.collapseSpring = this.springSystem.createSpring();\n this.collapseSpring.setRestSpeedThreshold(0.05);\n this.collapseSpring.setCurrentValue(0);\n this.collapseSpring.getSpringConfig().friction = 20;\n this.collapseSpring.getSpringConfig().tension = 200;\n this.collapseSpring.addListener({\n onSpringUpdate: () => {\n var val = this.collapseSpring.getCurrentValue();\n this.container && this.container.setNativeProps({\n height: Math.abs(46 - (val * 46)),\n });\n },\n onSpringAtRest: () => {\n this.props.onDismissed();\n },\n });\n this.panGesture = PanResponder.create({\n onStartShouldSetPanResponder: () => {\n return !! this.dismissalSpring.getCurrentValue();\n },\n onMoveShouldSetPanResponder: () => true,\n onPanResponderGrant: () => {\n this.isResponderOnlyToBlockTouches =\n !! this.dismissalSpring.getCurrentValue();\n },\n onPanResponderMove: (e, gestureState) => {\n if (this.isResponderOnlyToBlockTouches) {\n return;\n }\n this.dismissalSpring.setCurrentValue(gestureState.dx / SCREEN_WIDTH);\n },\n onPanResponderRelease: (e, gestureState) => {\n if (this.isResponderOnlyToBlockTouches) {\n return;\n }\n var gestureCompletion = gestureState.dx / SCREEN_WIDTH;\n var doesGestureRelease = (gestureState.vx + gestureCompletion) > 0.5;\n this.dismissalSpring.setEndValue(doesGestureRelease ? 1 : 0);\n }\n });\n },\n render: function() {\n var countText;\n if (warningCounts.get(this.props.warning) > 1) {\n countText = (\n <Text style={styles.bold}>\n ({warningCounts.get(this.props.warning)}){\" \"}\n </Text>\n );\n }\n return (\n <View\n style={styles.warningBox}\n ref={container => { this.container = container; }}\n {...this.panGesture.panHandlers}>\n <TouchableOpacity\n onPress={this.props.onOpened}>\n <View>\n <Text\n style={styles.warningText}\n numberOfLines={2}\n ref={text => { this.text = text; }}>\n {countText}\n {this.props.warning}\n </Text>\n </View>\n </TouchableOpacity>\n <View\n ref={closeButton => { this.closeButton = closeButton; }}\n style={styles.closeButton}>\n <TouchableOpacity\n onPress={() => {\n this.dismissalSpring.setEndValue(1);\n }}>\n <Text style={styles.closeButtonText}>✕</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n});\n\nvar WarningBoxOpened = React.createClass({\n render: function() {\n var countText;\n if (warningCounts.get(this.props.warning) > 1) {\n countText = (\n <Text style={styles.bold}>\n ({warningCounts.get(this.props.warning)}){\" \"}\n </Text>\n );\n }\n return (\n <TouchableOpacity\n activeOpacity={0.9}\n onPress={this.props.onClose}>\n <View style={styles.yellowBox}>\n <Text style={styles.yellowBoxText}>\n {countText}\n {this.props.warning}\n </Text>\n <View style={styles.yellowBoxButtons}>\n <View style={styles.yellowBoxButton}>\n <TouchableOpacity\n onPress={this.props.onDismissed}>\n <Text style={styles.yellowBoxButtonText}>\n Dismiss\n </Text>\n </TouchableOpacity>\n </View>\n <View style={styles.yellowBoxButton}>\n <TouchableOpacity\n onPress={this.props.onIgnored}>\n <Text style={styles.yellowBoxButtonText}>\n Ignore\n </Text>\n </TouchableOpacity>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n },\n});\n\nvar canMountWarningBox = true;\n\nvar WarningBox = React.createClass({\n getInitialState: function() {\n return {\n totalWarningCount,\n openWarning: null,\n };\n },\n componentWillMount: function() {\n if (console.yellowBoxResetIgnored) {\n AsyncStorage.setItem(IGNORED_WARNINGS_KEY, '[]', function(err) {\n if (err) {\n console.warn('Could not reset ignored warnings.', err);\n }\n });\n ignoredWarnings = [];\n }\n },\n componentDidMount: function() {\n invariant(\n canMountWarningBox,\n 'There can only be one WarningBox'\n );\n canMountWarningBox = false;\n warningCountEvents.addListener(\n 'count',\n this._onWarningCount\n );\n },\n componentWillUnmount: function() {\n warningCountEvents.removeAllListeners();\n canMountWarningBox = true;\n },\n _onWarningCount: function(totalWarningCount) {\n // Must use setImmediate because warnings often happen during render and\n // state cannot be set while rendering\n setImmediate(() => {\n this.setState({ totalWarningCount, });\n });\n },\n _onDismiss: function(warning) {\n warningCounts.delete(warning);\n this.setState({\n openWarning: null,\n });\n },\n render: function() {\n if (warningCounts.size === 0) {\n return <View />;\n }\n if (this.state.openWarning) {\n return (\n <WarningBoxOpened\n warning={this.state.openWarning}\n onClose={() => {\n this.setState({ openWarning: null });\n }}\n onDismissed={this._onDismiss.bind(this, this.state.openWarning)}\n onIgnored={() => {\n ignoredWarnings.push(this.state.openWarning);\n saveIgnoredWarnings();\n this._onDismiss(this.state.openWarning);\n }}\n />\n );\n }\n var warningRows = [];\n warningCounts.forEach((count, warning) => {\n warningRows.push(\n <WarningRow\n key={warning}\n onOpened={() => {\n this.setState({ openWarning: warning });\n }}\n onDismissed={this._onDismiss.bind(this, warning)}\n warning={warning}\n />\n );\n });\n return (\n <View style={styles.warningContainer}>\n {warningRows}\n </View>\n );\n },\n});\n\nvar styles = StyleSheet.create({\n bold: {\n fontWeight: 'bold',\n },\n closeButton: {\n position: 'absolute',\n right: 0,\n height: 46,\n width: 46,\n },\n closeButtonText: {\n color: 'white',\n fontSize: 32,\n position: 'relative',\n left: 8,\n },\n warningContainer: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0\n },\n warningBox: {\n position: 'relative',\n backgroundColor: 'rgba(171, 124, 36, 0.9)',\n flex: 1,\n height: 46,\n },\n warningText: {\n color: 'white',\n position: 'absolute',\n left: 0,\n marginLeft: 15,\n marginRight: 46,\n top: 7,\n },\n yellowBox: {\n backgroundColor: 'rgba(171, 124, 36, 0.9)',\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n padding: 15,\n paddingTop: 35,\n },\n yellowBoxText: {\n color: 'white',\n fontSize: 20,\n },\n yellowBoxButtons: {\n flexDirection: 'row',\n position: 'absolute',\n bottom: 0,\n },\n yellowBoxButton: {\n flex: 1,\n padding: 25,\n },\n yellowBoxButtonText: {\n color: 'white',\n fontSize: 16,\n }\n});\n\nmodule.exports = WarningBox;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/ReactIOS/WarningBox.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Storage/AsyncStorage.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar NativeModules=require('NativeModules');\nvar RCTAsyncLocalStorage=NativeModules.AsyncLocalStorage;\nvar RCTAsyncRocksDBStorage=NativeModules.AsyncRocksDBStorage;\n\n\nvar RCTAsyncStorage=RCTAsyncRocksDBStorage || RCTAsyncLocalStorage;\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AsyncStorage={\n\n\n\n\ngetItem:function(\nkey,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiGet([key],function(errors,result){\n\nvar value=result && result[0] && result[0][1]?result[0][1]:null;\ncallback && callback(errors && convertError(errors[0]) || null,value);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(value);}});});},\n\n\n\n\n\n\n\n\n\nsetItem:function(\nkey,\nvalue,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiSet([[key,value]],function(errors){\ncallback && callback(errors && convertError(errors[0]) || null);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\nremoveItem:function(\nkey,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiRemove([key],function(errors){\ncallback && callback(errors && convertError(errors[0]) || null);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\nmergeItem:function(\nkey,\nvalue,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiMerge([[key,value]],function(errors){\ncallback && callback(errors && convertError(errors[0]) || null);\nif(errors){\nreject(convertError(errors[0]));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\nclear:function(callback){\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.clear(function(error){\ncallback && callback(convertError(error));\nif(error && convertError(error)){\nreject(convertError(error));}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\ngetAllKeys:function(callback){\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.getAllKeys(function(error,keys){\ncallback && callback(convertError(error),keys);\nif(error){\nreject(convertError(error));}else \n{\nresolve(keys);}});});},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmultiGet:function(\nkeys,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiGet(keys,function(errors,result){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error,result);\nif(errors){\nreject(error);}else \n{\nresolve(result);}});});},\n\n\n\n\n\n\n\n\n\n\n\nmultiSet:function(\nkeyValuePairs,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiSet(keyValuePairs,function(errors){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error);\nif(errors){\nreject(error);}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\nmultiRemove:function(\nkeys,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiRemove(keys,function(errors){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error);\nif(errors){\nreject(error);}else \n{\nresolve(null);}});});},\n\n\n\n\n\n\n\n\n\n\n\nmultiMerge:function(\nkeyValuePairs,\ncallback)\n{\nreturn new Promise(function(resolve,reject){\nRCTAsyncStorage.multiMerge(keyValuePairs,function(errors){\nvar error=errors && errors.map(function(error){return convertError(error);}) || null;\ncallback && callback(error);\nif(errors){\nreject(error);}else \n{\nresolve(null);}});});}};\n\n\n\n\n\n\n\nif(!RCTAsyncStorage.multiMerge){\ndelete AsyncStorage.mergeItem;\ndelete AsyncStorage.multiMerge;}\n\n\nfunction convertError(error){\nif(!error){\nreturn null;}\n\nvar out=new Error(error.message);\nout.key = error.key;\nreturn out;}\n\n\nmodule.exports = AsyncStorage;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AsyncStorage\n * @flow-weak\n */\n'use strict';\n\nvar NativeModules = require('NativeModules');\nvar RCTAsyncLocalStorage = NativeModules.AsyncLocalStorage;\nvar RCTAsyncRocksDBStorage = NativeModules.AsyncRocksDBStorage;\n\n// We use RocksDB if available.\nvar RCTAsyncStorage = RCTAsyncRocksDBStorage || RCTAsyncLocalStorage;\n\n/**\n * AsyncStorage is a simple, asynchronous, persistent, key-value storage\n * system that is global to the app. It should be used instead of LocalStorage.\n *\n * It is recommended that you use an abstraction on top of AsyncStorage instead\n * of AsyncStorage directly for anything more than light usage since it\n * operates globally.\n *\n * This JS code is a simple facade over the native iOS implementation to provide\n * a clear JS API, real Error objects, and simple non-multi functions. Each\n * method returns a `Promise` object.\n */\nvar AsyncStorage = {\n /**\n * Fetches `key` and passes the result to `callback`, along with an `Error` if\n * there is any. Returns a `Promise` object.\n */\n getItem: function(\n key: string,\n callback?: ?(error: ?Error, result: ?string) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiGet([key], function(errors, result) {\n // Unpack result to get value from [[key,value]]\n var value = (result && result[0] && result[0][1]) ? result[0][1] : null;\n callback && callback((errors && convertError(errors[0])) || null, value);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(value);\n }\n });\n });\n },\n\n /**\n * Sets `value` for `key` and calls `callback` on completion, along with an\n * `Error` if there is any. Returns a `Promise` object.\n */\n setItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet([[key,value]], function(errors) {\n callback && callback((errors && convertError(errors[0])) || null);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(null);\n }\n });\n });\n },\n /**\n * Returns a `Promise` object.\n */\n removeItem: function(\n key: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove([key], function(errors) {\n callback && callback((errors && convertError(errors[0])) || null);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges existing value with input value, assuming they are stringified json. Returns a `Promise` object.\n *\n * Not supported by all native implementations.\n */\n mergeItem: function(\n key: string,\n value: string,\n callback?: ?(error: ?Error) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge([[key,value]], function(errors) {\n callback && callback((errors && convertError(errors[0])) || null);\n if (errors) {\n reject(convertError(errors[0]));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Erases *all* AsyncStorage for all clients, libraries, etc. You probably\n * don't want to call this - use removeItem or multiRemove to clear only your\n * own keys instead. Returns a `Promise` object.\n */\n clear: function(callback?: ?(error: ?Error) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.clear(function(error) {\n callback && callback(convertError(error));\n if (error && convertError(error)){\n reject(convertError(error));\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Gets *all* keys known to the app, for all callers, libraries, etc. Returns a `Promise` object.\n */\n getAllKeys: function(callback?: ?(error: ?Error, keys: ?Array<string>) => void): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.getAllKeys(function(error, keys) {\n callback && callback(convertError(error), keys);\n if (error) {\n reject(convertError(error));\n } else {\n resolve(keys);\n }\n });\n });\n },\n\n /**\n * The following batched functions are useful for executing a lot of\n * operations at once, allowing for native optimizations and provide the\n * convenience of a single callback after all operations are complete.\n *\n * These functions return arrays of errors, potentially one for every key.\n * For key-specific errors, the Error object will have a key property to\n * indicate which key caused the error.\n */\n\n /**\n * multiGet invokes callback with an array of key-value pair arrays that\n * matches the input format of multiSet. Returns a `Promise` object.\n *\n * multiGet(['k1', 'k2'], cb) -> cb([['k1', 'val1'], ['k2', 'val2']])\n */\n multiGet: function(\n keys: Array<string>,\n callback?: ?(errors: ?Array<Error>, result: ?Array<Array<string>>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiGet(keys, function(errors, result) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error, result);\n if (errors) {\n reject(error);\n } else {\n resolve(result);\n }\n });\n });\n },\n\n /**\n * multiSet and multiMerge take arrays of key-value array pairs that match\n * the output of multiGet. Returns a `Promise` object.\n *\n * multiSet([['k1', 'val1'], ['k2', 'val2']], cb);\n */\n multiSet: function(\n keyValuePairs: Array<Array<string>>,\n callback?: ?(errors: ?Array<Error>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiSet(keyValuePairs, function(errors) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error);\n if (errors) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Delete all the keys in the `keys` array. Returns a `Promise` object.\n */\n multiRemove: function(\n keys: Array<string>,\n callback?: ?(errors: ?Array<Error>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiRemove(keys, function(errors) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error);\n if (errors) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n\n /**\n * Merges existing values with input values, assuming they are stringified\n * json. Returns a `Promise` object.\n *\n * Not supported by all native implementations.\n */\n multiMerge: function(\n keyValuePairs: Array<Array<string>>,\n callback?: ?(errors: ?Array<Error>) => void\n ): Promise {\n return new Promise((resolve, reject) => {\n RCTAsyncStorage.multiMerge(keyValuePairs, function(errors) {\n var error = (errors && errors.map((error) => convertError(error))) || null;\n callback && callback(error);\n if (errors) {\n reject(error);\n } else {\n resolve(null);\n }\n });\n });\n },\n};\n\n// Not all native implementations support merge.\nif (!RCTAsyncStorage.multiMerge) {\n delete AsyncStorage.mergeItem;\n delete AsyncStorage.multiMerge;\n}\n\nfunction convertError(error) {\n if (!error) {\n return null;\n }\n var out = new Error(error.message);\n out.key = error.key; // flow doesn't like this :(\n return out;\n}\n\nmodule.exports = AsyncStorage;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Storage/AsyncStorage.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTRenderingPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactDefaultPerf=require('ReactDefaultPerf');\n\nvar invariant=require('invariant');\n\n\n\n\n\n\nvar perfModules=[];\nvar enabled=false;\n\nvar RCTRenderingPerf={\n\ntoggle:function(){\nconsole.log('Render perfomance measurements enabled');\nenabled = true;},\n\n\nstart:function(){\nif(!enabled){\nreturn;}\n\n\nReactDefaultPerf.start();\nperfModules.forEach(function(module){return module.start();});},\n\n\nstop:function(){\nif(!enabled){\nreturn;}\n\n\nReactDefaultPerf.stop();\nReactDefaultPerf.printInclusive();\nReactDefaultPerf.printWasted();\n\nvar totalRender=0;\nvar totalTime=0;\nvar measurements=ReactDefaultPerf.getLastMeasurements();\nfor(var ii=0;ii < measurements.length;ii++) {\nvar render=measurements[ii].render;\nfor(var nodeName in render) {\ntotalRender += render[nodeName];}\n\ntotalTime += measurements[ii].totalTime;}\n\nconsole.log('Total time spent in render(): ' + totalRender + 'ms');\n\nperfModules.forEach(function(module){return module.stop();});},\n\n\nregister:function(module){\ninvariant(\ntypeof module.start === 'function',\n'Perf module should have start() function');\n\ninvariant(\ntypeof module.stop === 'function',\n'Perf module should have stop() function');\n\nperfModules.push(module);}};\n\n\n\nmodule.exports = RCTRenderingPerf;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTRenderingPerf\n * @flow\n */\n'use strict';\n\nvar ReactDefaultPerf = require('ReactDefaultPerf');\n\nvar invariant = require('invariant');\n\ntype perfModule = {\n start: () => void;\n stop: () => void;\n}\n\nvar perfModules = [];\nvar enabled = false;\n\nvar RCTRenderingPerf = {\n // Once perf is enabled, it stays enabled\n toggle: function() {\n console.log('Render perfomance measurements enabled');\n enabled = true;\n },\n\n start: function() {\n if (!enabled) {\n return;\n }\n\n ReactDefaultPerf.start();\n perfModules.forEach((module) => module.start());\n },\n\n stop: function() {\n if (!enabled) {\n return;\n }\n\n ReactDefaultPerf.stop();\n ReactDefaultPerf.printInclusive();\n ReactDefaultPerf.printWasted();\n\n var totalRender = 0;\n var totalTime = 0;\n var measurements = ReactDefaultPerf.getLastMeasurements();\n for (var ii = 0; ii < measurements.length; ii++) {\n var render = measurements[ii].render;\n for (var nodeName in render) {\n totalRender += render[nodeName];\n }\n totalTime += measurements[ii].totalTime;\n }\n console.log('Total time spent in render(): ' + totalRender + 'ms');\n\n perfModules.forEach((module) => module.stop());\n },\n\n register: function(module: perfModule) {\n invariant(\n typeof module.start === 'function',\n 'Perf module should have start() function'\n );\n invariant(\n typeof module.stop === 'function',\n 'Perf module should have stop() function'\n );\n perfModules.push(module);\n }\n};\n\nmodule.exports = RCTRenderingPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Utilities/RCTRenderingPerf.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerf.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOMProperty=require('DOMProperty');\nvar ReactDefaultPerfAnalysis=require('ReactDefaultPerfAnalysis');\nvar ReactMount=require('ReactMount');\nvar ReactPerf=require('ReactPerf');\n\nvar performanceNow=require('performanceNow');\n\nfunction roundFloat(val){\nreturn Math.floor(val * 100) / 100;}\n\n\nfunction addValue(obj,key,val){\nobj[key] = (obj[key] || 0) + val;}\n\n\nvar ReactDefaultPerf={\n_allMeasurements:[],\n_mountStack:[0],\n_injected:false,\n\nstart:function(){\nif(!ReactDefaultPerf._injected){\nReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);}\n\n\nReactDefaultPerf._allMeasurements.length = 0;\nReactPerf.enableMeasure = true;},\n\n\nstop:function(){\nReactPerf.enableMeasure = false;},\n\n\ngetLastMeasurements:function(){\nreturn ReactDefaultPerf._allMeasurements;},\n\n\nprintExclusive:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nvar summary=ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);\nconsole.table(summary.map(function(item){\nreturn {\n'Component class name':item.componentName,\n'Total inclusive time (ms)':roundFloat(item.inclusive),\n'Exclusive mount time (ms)':roundFloat(item.exclusive),\n'Exclusive render time (ms)':roundFloat(item.render),\n'Mount time per instance (ms)':roundFloat(item.exclusive / item.count),\n'Render time per instance (ms)':roundFloat(item.render / item.count),\n'Instances':item.count};}));},\n\n\n\n\n\n\nprintInclusive:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nvar summary=ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);\nconsole.table(summary.map(function(item){\nreturn {\n'Owner > component':item.componentName,\n'Inclusive time (ms)':roundFloat(item.time),\n'Instances':item.count};}));\n\n\nconsole.log(\n'Total time:',\nReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');},\n\n\n\ngetMeasurementsSummaryMap:function(measurements){\nvar summary=ReactDefaultPerfAnalysis.getInclusiveSummary(\nmeasurements,\ntrue);\n\nreturn summary.map(function(item){\nreturn {\n'Owner > component':item.componentName,\n'Wasted time (ms)':item.time,\n'Instances':item.count};});},\n\n\n\n\nprintWasted:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nconsole.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));\nconsole.log(\n'Total time:',\nReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');},\n\n\n\nprintDOM:function(measurements){\nmeasurements = measurements || ReactDefaultPerf._allMeasurements;\nvar summary=ReactDefaultPerfAnalysis.getDOMSummary(measurements);\nconsole.table(summary.map(function(item){\nvar result={};\nresult[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;\nresult['type'] = item.type;\nresult['args'] = JSON.stringify(item.args);\nreturn result;}));\n\nconsole.log(\n'Total time:',\nReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');},\n\n\n\n_recordWrite:function(id,fnName,totalTime,args){\n\nvar writes=\nReactDefaultPerf.\n_allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].\nwrites;\nwrites[id] = writes[id] || [];\nwrites[id].push({\ntype:fnName,\ntime:totalTime,\nargs:args});},\n\n\n\nmeasure:function(moduleName,fnName,func){\nreturn function(){for(var _len=arguments.length,args=Array(_len),_key=0;_key < _len;_key++) {args[_key] = arguments[_key];}\nvar totalTime;\nvar rv;\nvar start;\n\nif(fnName === '_renderNewRootComponent' || \nfnName === 'flushBatchedUpdates'){\n\n\n\n\nReactDefaultPerf._allMeasurements.push({\nexclusive:{},\ninclusive:{},\nrender:{},\ncounts:{},\nwrites:{},\ndisplayNames:{},\ntotalTime:0});\n\nstart = performanceNow();\nrv = func.apply(this,args);\nReactDefaultPerf._allMeasurements[\nReactDefaultPerf._allMeasurements.length - 1].\ntotalTime = performanceNow() - start;\nreturn rv;}else \nif(fnName === '_mountImageIntoNode' || \nmoduleName === 'ReactDOMIDOperations'){\nstart = performanceNow();\nrv = func.apply(this,args);\ntotalTime = performanceNow() - start;\n\nif(fnName === '_mountImageIntoNode'){\nvar mountID=ReactMount.getID(args[1]);\nReactDefaultPerf._recordWrite(mountID,fnName,totalTime,args[0]);}else \nif(fnName === 'dangerouslyProcessChildrenUpdates'){\n\nargs[0].forEach(function(update){\nvar writeArgs={};\nif(update.fromIndex !== null){\nwriteArgs.fromIndex = update.fromIndex;}\n\nif(update.toIndex !== null){\nwriteArgs.toIndex = update.toIndex;}\n\nif(update.textContent !== null){\nwriteArgs.textContent = update.textContent;}\n\nif(update.markupIndex !== null){\nwriteArgs.markup = args[1][update.markupIndex];}\n\nReactDefaultPerf._recordWrite(\nupdate.parentID,\nupdate.type,\ntotalTime,\nwriteArgs);});}else \n\n\n{\n\nReactDefaultPerf._recordWrite(\nargs[0],\nfnName,\ntotalTime,\nArray.prototype.slice.call(args,1));}\n\n\nreturn rv;}else \nif(moduleName === 'ReactCompositeComponent' && (\nfnName === 'mountComponent' || \nfnName === 'updateComponent' || \nfnName === '_renderValidatedComponent')){\n\nif(typeof this._currentElement.type === 'string'){\nreturn func.apply(this,args);}\n\n\nvar rootNodeID=fnName === 'mountComponent'?\nargs[0]:\nthis._rootNodeID;\nvar isRender=fnName === '_renderValidatedComponent';\nvar isMount=fnName === 'mountComponent';\n\nvar mountStack=ReactDefaultPerf._mountStack;\nvar entry=ReactDefaultPerf._allMeasurements[\nReactDefaultPerf._allMeasurements.length - 1];\n\n\nif(isRender){\naddValue(entry.counts,rootNodeID,1);}else \nif(isMount){\nmountStack.push(0);}\n\n\nstart = performanceNow();\nrv = func.apply(this,args);\ntotalTime = performanceNow() - start;\n\nif(isRender){\naddValue(entry.render,rootNodeID,totalTime);}else \nif(isMount){\nvar subMountTime=mountStack.pop();\nmountStack[mountStack.length - 1] += totalTime;\naddValue(entry.exclusive,rootNodeID,totalTime - subMountTime);\naddValue(entry.inclusive,rootNodeID,totalTime);}else \n{\naddValue(entry.inclusive,rootNodeID,totalTime);}\n\n\nentry.displayNames[rootNodeID] = {\ncurrent:this.getName(),\nowner:this._currentElement._owner?\nthis._currentElement._owner.getName():\n'<root>'};\n\n\nreturn rv;}else \n{\nreturn func.apply(this,args);}};}};\n\n\n\n\n\nmodule.exports = ReactDefaultPerf;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultPerf\n * @typechecks static-only\n */\n\n'use strict';\n\nvar DOMProperty = require('DOMProperty');\nvar ReactDefaultPerfAnalysis = require('ReactDefaultPerfAnalysis');\nvar ReactMount = require('ReactMount');\nvar ReactPerf = require('ReactPerf');\n\nvar performanceNow = require('performanceNow');\n\nfunction roundFloat(val) {\n return Math.floor(val * 100) / 100;\n}\n\nfunction addValue(obj, key, val) {\n obj[key] = (obj[key] || 0) + val;\n}\n\nvar ReactDefaultPerf = {\n _allMeasurements: [], // last item in the list is the current one\n _mountStack: [0],\n _injected: false,\n\n start: function() {\n if (!ReactDefaultPerf._injected) {\n ReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);\n }\n\n ReactDefaultPerf._allMeasurements.length = 0;\n ReactPerf.enableMeasure = true;\n },\n\n stop: function() {\n ReactPerf.enableMeasure = false;\n },\n\n getLastMeasurements: function() {\n return ReactDefaultPerf._allMeasurements;\n },\n\n printExclusive: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n var summary = ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);\n console.table(summary.map(function(item) {\n return {\n 'Component class name': item.componentName,\n 'Total inclusive time (ms)': roundFloat(item.inclusive),\n 'Exclusive mount time (ms)': roundFloat(item.exclusive),\n 'Exclusive render time (ms)': roundFloat(item.render),\n 'Mount time per instance (ms)': roundFloat(item.exclusive / item.count),\n 'Render time per instance (ms)': roundFloat(item.render / item.count),\n 'Instances': item.count\n };\n }));\n // TODO: ReactDefaultPerfAnalysis.getTotalTime() does not return the correct\n // number.\n },\n\n printInclusive: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);\n console.table(summary.map(function(item) {\n return {\n 'Owner > component': item.componentName,\n 'Inclusive time (ms)': roundFloat(item.time),\n 'Instances': item.count\n };\n }));\n console.log(\n 'Total time:',\n ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'\n );\n },\n\n getMeasurementsSummaryMap: function(measurements) {\n var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(\n measurements,\n true\n );\n return summary.map(function(item) {\n return {\n 'Owner > component': item.componentName,\n 'Wasted time (ms)': item.time,\n 'Instances': item.count\n };\n });\n },\n\n printWasted: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n console.table(ReactDefaultPerf.getMeasurementsSummaryMap(measurements));\n console.log(\n 'Total time:',\n ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'\n );\n },\n\n printDOM: function(measurements) {\n measurements = measurements || ReactDefaultPerf._allMeasurements;\n var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);\n console.table(summary.map(function(item) {\n var result = {};\n result[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;\n result['type'] = item.type;\n result['args'] = JSON.stringify(item.args);\n return result;\n }));\n console.log(\n 'Total time:',\n ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms'\n );\n },\n\n _recordWrite: function(id, fnName, totalTime, args) {\n // TODO: totalTime isn't that useful since it doesn't count paints/reflows\n var writes =\n ReactDefaultPerf\n ._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1]\n .writes;\n writes[id] = writes[id] || [];\n writes[id].push({\n type: fnName,\n time: totalTime,\n args: args\n });\n },\n\n measure: function(moduleName, fnName, func) {\n return function(...args) {\n var totalTime;\n var rv;\n var start;\n\n if (fnName === '_renderNewRootComponent' ||\n fnName === 'flushBatchedUpdates') {\n // A \"measurement\" is a set of metrics recorded for each flush. We want\n // to group the metrics for a given flush together so we can look at the\n // components that rendered and the DOM operations that actually\n // happened to determine the amount of \"wasted work\" performed.\n ReactDefaultPerf._allMeasurements.push({\n exclusive: {},\n inclusive: {},\n render: {},\n counts: {},\n writes: {},\n displayNames: {},\n totalTime: 0\n });\n start = performanceNow();\n rv = func.apply(this, args);\n ReactDefaultPerf._allMeasurements[\n ReactDefaultPerf._allMeasurements.length - 1\n ].totalTime = performanceNow() - start;\n return rv;\n } else if (fnName === '_mountImageIntoNode' ||\n moduleName === 'ReactDOMIDOperations') {\n start = performanceNow();\n rv = func.apply(this, args);\n totalTime = performanceNow() - start;\n\n if (fnName === '_mountImageIntoNode') {\n var mountID = ReactMount.getID(args[1]);\n ReactDefaultPerf._recordWrite(mountID, fnName, totalTime, args[0]);\n } else if (fnName === 'dangerouslyProcessChildrenUpdates') {\n // special format\n args[0].forEach(function(update) {\n var writeArgs = {};\n if (update.fromIndex !== null) {\n writeArgs.fromIndex = update.fromIndex;\n }\n if (update.toIndex !== null) {\n writeArgs.toIndex = update.toIndex;\n }\n if (update.textContent !== null) {\n writeArgs.textContent = update.textContent;\n }\n if (update.markupIndex !== null) {\n writeArgs.markup = args[1][update.markupIndex];\n }\n ReactDefaultPerf._recordWrite(\n update.parentID,\n update.type,\n totalTime,\n writeArgs\n );\n });\n } else {\n // basic format\n ReactDefaultPerf._recordWrite(\n args[0],\n fnName,\n totalTime,\n Array.prototype.slice.call(args, 1)\n );\n }\n return rv;\n } else if (moduleName === 'ReactCompositeComponent' && (\n fnName === 'mountComponent' ||\n fnName === 'updateComponent' || // TODO: receiveComponent()?\n fnName === '_renderValidatedComponent')) {\n\n if (typeof this._currentElement.type === 'string') {\n return func.apply(this, args);\n }\n\n var rootNodeID = fnName === 'mountComponent' ?\n args[0] :\n this._rootNodeID;\n var isRender = fnName === '_renderValidatedComponent';\n var isMount = fnName === 'mountComponent';\n\n var mountStack = ReactDefaultPerf._mountStack;\n var entry = ReactDefaultPerf._allMeasurements[\n ReactDefaultPerf._allMeasurements.length - 1\n ];\n\n if (isRender) {\n addValue(entry.counts, rootNodeID, 1);\n } else if (isMount) {\n mountStack.push(0);\n }\n\n start = performanceNow();\n rv = func.apply(this, args);\n totalTime = performanceNow() - start;\n\n if (isRender) {\n addValue(entry.render, rootNodeID, totalTime);\n } else if (isMount) {\n var subMountTime = mountStack.pop();\n mountStack[mountStack.length - 1] += totalTime;\n addValue(entry.exclusive, rootNodeID, totalTime - subMountTime);\n addValue(entry.inclusive, rootNodeID, totalTime);\n } else {\n addValue(entry.inclusive, rootNodeID, totalTime);\n }\n\n entry.displayNames[rootNodeID] = {\n current: this.getName(),\n owner: this._currentElement._owner ?\n this._currentElement._owner.getName() :\n '<root>'\n };\n\n return rv;\n } else {\n return func.apply(this, args);\n }\n };\n }\n};\n\nmodule.exports = ReactDefaultPerf;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerf.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/DOMProperty.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar invariant=require('invariant');\n\nfunction checkMask(value,bitmask){\nreturn (value & bitmask) === bitmask;}\n\n\nvar DOMPropertyInjection={\n\n\n\n\nMUST_USE_ATTRIBUTE:0x1,\nMUST_USE_PROPERTY:0x2,\nHAS_SIDE_EFFECTS:0x4,\nHAS_BOOLEAN_VALUE:0x8,\nHAS_NUMERIC_VALUE:0x10,\nHAS_POSITIVE_NUMERIC_VALUE:0x20 | 0x10,\nHAS_OVERLOADED_BOOLEAN_VALUE:0x40,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ninjectDOMPropertyConfig:function(domPropertyConfig){\nvar Properties=domPropertyConfig.Properties || {};\nvar DOMAttributeNames=domPropertyConfig.DOMAttributeNames || {};\nvar DOMPropertyNames=domPropertyConfig.DOMPropertyNames || {};\nvar DOMMutationMethods=domPropertyConfig.DOMMutationMethods || {};\n\nif(domPropertyConfig.isCustomAttribute){\nDOMProperty._isCustomAttributeFunctions.push(\ndomPropertyConfig.isCustomAttribute);}\n\n\n\nfor(var propName in Properties) {\ninvariant(\n!DOMProperty.isStandardName.hasOwnProperty(propName),\n'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' + \n'\\'%s\\' which has already been injected. You may be accidentally ' + \n'injecting the same DOM property config twice, or you may be ' + \n'injecting two configs that have conflicting property names.',\npropName);\n\n\nDOMProperty.isStandardName[propName] = true;\n\nvar lowerCased=propName.toLowerCase();\nDOMProperty.getPossibleStandardName[lowerCased] = propName;\n\nif(DOMAttributeNames.hasOwnProperty(propName)){\nvar attributeName=DOMAttributeNames[propName];\nDOMProperty.getPossibleStandardName[attributeName] = propName;\nDOMProperty.getAttributeName[propName] = attributeName;}else \n{\nDOMProperty.getAttributeName[propName] = lowerCased;}\n\n\nDOMProperty.getPropertyName[propName] = \nDOMPropertyNames.hasOwnProperty(propName)?\nDOMPropertyNames[propName]:\npropName;\n\nif(DOMMutationMethods.hasOwnProperty(propName)){\nDOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];}else \n{\nDOMProperty.getMutationMethod[propName] = null;}\n\n\nvar propConfig=Properties[propName];\nDOMProperty.mustUseAttribute[propName] = \ncheckMask(propConfig,DOMPropertyInjection.MUST_USE_ATTRIBUTE);\nDOMProperty.mustUseProperty[propName] = \ncheckMask(propConfig,DOMPropertyInjection.MUST_USE_PROPERTY);\nDOMProperty.hasSideEffects[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_SIDE_EFFECTS);\nDOMProperty.hasBooleanValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_BOOLEAN_VALUE);\nDOMProperty.hasNumericValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_NUMERIC_VALUE);\nDOMProperty.hasPositiveNumericValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\nDOMProperty.hasOverloadedBooleanValue[propName] = \ncheckMask(propConfig,DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\ninvariant(\n!DOMProperty.mustUseAttribute[propName] || \n!DOMProperty.mustUseProperty[propName],\n'DOMProperty: Cannot require using both attribute and property: %s',\npropName);\n\ninvariant(\nDOMProperty.mustUseProperty[propName] || \n!DOMProperty.hasSideEffects[propName],\n'DOMProperty: Properties that have side effects must use property: %s',\npropName);\n\ninvariant(\n!!DOMProperty.hasBooleanValue[propName] + \n!!DOMProperty.hasNumericValue[propName] + \n!!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n'DOMProperty: Value can be one of boolean, overloaded boolean, or ' + \n'numeric value, but not a combination: %s',\npropName);}}};\n\n\n\n\nvar defaultValueCache={};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOMProperty={\n\nID_ATTRIBUTE_NAME:'data-reactid',\n\n\n\n\n\nisStandardName:{},\n\n\n\n\n\n\ngetPossibleStandardName:{},\n\n\n\n\n\n\ngetAttributeName:{},\n\n\n\n\n\n\ngetPropertyName:{},\n\n\n\n\n\n\ngetMutationMethod:{},\n\n\n\n\n\nmustUseAttribute:{},\n\n\n\n\n\n\nmustUseProperty:{},\n\n\n\n\n\n\n\nhasSideEffects:{},\n\n\n\n\n\nhasBooleanValue:{},\n\n\n\n\n\n\nhasNumericValue:{},\n\n\n\n\n\n\nhasPositiveNumericValue:{},\n\n\n\n\n\n\n\nhasOverloadedBooleanValue:{},\n\n\n\n\n_isCustomAttributeFunctions:[],\n\n\n\n\n\nisCustomAttribute:function(attributeName){\nfor(var i=0;i < DOMProperty._isCustomAttributeFunctions.length;i++) {\nvar isCustomAttributeFn=DOMProperty._isCustomAttributeFunctions[i];\nif(isCustomAttributeFn(attributeName)){\nreturn true;}}\n\n\nreturn false;},\n\n\n\n\n\n\n\n\n\n\ngetDefaultValueForProperty:function(nodeName,prop){\nvar nodeDefaults=defaultValueCache[nodeName];\nvar testElement;\nif(!nodeDefaults){\ndefaultValueCache[nodeName] = nodeDefaults = {};}\n\nif(!(prop in nodeDefaults)){\ntestElement = document.createElement(nodeName);\nnodeDefaults[prop] = testElement[prop];}\n\nreturn nodeDefaults[prop];},\n\n\ninjection:DOMPropertyInjection};\n\n\nmodule.exports = DOMProperty;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule DOMProperty\n * @typechecks static-only\n */\n\n/*jslint bitwise: true */\n\n'use strict';\n\nvar invariant = require('invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_ATTRIBUTE: 0x1,\n MUST_USE_PROPERTY: 0x2,\n HAS_SIDE_EFFECTS: 0x4,\n HAS_BOOLEAN_VALUE: 0x8,\n HAS_NUMERIC_VALUE: 0x10,\n HAS_POSITIVE_NUMERIC_VALUE: 0x20 | 0x10,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x40,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function(domPropertyConfig) {\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(\n domPropertyConfig.isCustomAttribute\n );\n }\n\n for (var propName in Properties) {\n invariant(\n !DOMProperty.isStandardName.hasOwnProperty(propName),\n 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property ' +\n '\\'%s\\' which has already been injected. You may be accidentally ' +\n 'injecting the same DOM property config twice, or you may be ' +\n 'injecting two configs that have conflicting property names.',\n propName\n );\n\n DOMProperty.isStandardName[propName] = true;\n\n var lowerCased = propName.toLowerCase();\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n DOMProperty.getAttributeName[propName] = attributeName;\n } else {\n DOMProperty.getAttributeName[propName] = lowerCased;\n }\n\n DOMProperty.getPropertyName[propName] =\n DOMPropertyNames.hasOwnProperty(propName) ?\n DOMPropertyNames[propName] :\n propName;\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n DOMProperty.getMutationMethod[propName] = DOMMutationMethods[propName];\n } else {\n DOMProperty.getMutationMethod[propName] = null;\n }\n\n var propConfig = Properties[propName];\n DOMProperty.mustUseAttribute[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_ATTRIBUTE);\n DOMProperty.mustUseProperty[propName] =\n checkMask(propConfig, DOMPropertyInjection.MUST_USE_PROPERTY);\n DOMProperty.hasSideEffects[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_SIDE_EFFECTS);\n DOMProperty.hasBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_BOOLEAN_VALUE);\n DOMProperty.hasNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_NUMERIC_VALUE);\n DOMProperty.hasPositiveNumericValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE);\n DOMProperty.hasOverloadedBooleanValue[propName] =\n checkMask(propConfig, DOMPropertyInjection.HAS_OVERLOADED_BOOLEAN_VALUE);\n\n invariant(\n !DOMProperty.mustUseAttribute[propName] ||\n !DOMProperty.mustUseProperty[propName],\n 'DOMProperty: Cannot require using both attribute and property: %s',\n propName\n );\n invariant(\n DOMProperty.mustUseProperty[propName] ||\n !DOMProperty.hasSideEffects[propName],\n 'DOMProperty: Properties that have side effects must use property: %s',\n propName\n );\n invariant(\n !!DOMProperty.hasBooleanValue[propName] +\n !!DOMProperty.hasNumericValue[propName] +\n !!DOMProperty.hasOverloadedBooleanValue[propName] <= 1,\n 'DOMProperty: Value can be one of boolean, overloaded boolean, or ' +\n 'numeric value, but not a combination: %s',\n propName\n );\n }\n }\n};\nvar defaultValueCache = {};\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n\n /**\n * Checks whether a property name is a standard property.\n * @type {Object}\n */\n isStandardName: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties.\n * @type {Object}\n */\n getPossibleStandardName: {},\n\n /**\n * Mapping from normalized names to attribute names that differ. Attribute\n * names are used when rendering markup or with `*Attribute()`.\n * @type {Object}\n */\n getAttributeName: {},\n\n /**\n * Mapping from normalized names to properties on DOM node instances.\n * (This includes properties that mutate due to external factors.)\n * @type {Object}\n */\n getPropertyName: {},\n\n /**\n * Mapping from normalized names to mutation methods. This will only exist if\n * mutation cannot be set simply by the property or `setAttribute()`.\n * @type {Object}\n */\n getMutationMethod: {},\n\n /**\n * Whether the property must be accessed and mutated as an object property.\n * @type {Object}\n */\n mustUseAttribute: {},\n\n /**\n * Whether the property must be accessed and mutated using `*Attribute()`.\n * (This includes anything that fails `<propName> in <element>`.)\n * @type {Object}\n */\n mustUseProperty: {},\n\n /**\n * Whether or not setting a value causes side effects such as triggering\n * resources to be loaded or text selection changes. We must ensure that\n * the value is only set if it has changed.\n * @type {Object}\n */\n hasSideEffects: {},\n\n /**\n * Whether the property should be removed when set to a falsey value.\n * @type {Object}\n */\n hasBooleanValue: {},\n\n /**\n * Whether the property must be numeric or parse as a\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasNumericValue: {},\n\n /**\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * @type {Object}\n */\n hasPositiveNumericValue: {},\n\n /**\n * Whether the property can be used as a flag as well as with a value. Removed\n * when strictly equal to false; present without a value when strictly equal\n * to true; present with a value otherwise.\n * @type {Object}\n */\n hasOverloadedBooleanValue: {},\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Returns the default property value for a DOM property (i.e., not an\n * attribute). Most default values are '' or false, but not all. Worse yet,\n * some (in particular, `type`) vary depending on the type of element.\n *\n * TODO: Is it better to grab all the possible properties when creating an\n * element to avoid having to create the same element twice?\n */\n getDefaultValueForProperty: function(nodeName, prop) {\n var nodeDefaults = defaultValueCache[nodeName];\n var testElement;\n if (!nodeDefaults) {\n defaultValueCache[nodeName] = nodeDefaults = {};\n }\n if (!(prop in nodeDefaults)) {\n testElement = document.createElement(nodeName);\n nodeDefaults[prop] = testElement[prop];\n }\n return nodeDefaults[prop];\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/DOMProperty.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerfAnalysis.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\nassign=require('Object.assign');\n\n\nvar DONT_CARE_THRESHOLD=1.2;\nvar DOM_OPERATION_TYPES={\n'_mountImageIntoNode':'set innerHTML',\nINSERT_MARKUP:'set innerHTML',\nMOVE_EXISTING:'move',\nREMOVE_NODE:'remove',\nTEXT_CONTENT:'set textContent',\n'updatePropertyByID':'update attribute',\n'deletePropertyByID':'delete attribute',\n'updateStylesByID':'update styles',\n'updateInnerHTMLByID':'set innerHTML',\n'dangerouslyReplaceNodeWithMarkupByID':'replace'};\n\n\nfunction getTotalTime(measurements){\n\n\n\n\nvar totalTime=0;\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\ntotalTime += measurement.totalTime;}\n\nreturn totalTime;}\n\n\nfunction getDOMSummary(measurements){\nvar items=[];\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\nvar id;\n\nfor(id in measurement.writes) {\nmeasurement.writes[id].forEach(function(write){\nitems.push({\nid:id,\ntype:DOM_OPERATION_TYPES[write.type] || write.type,\nargs:write.args});});}}\n\n\n\n\nreturn items;}\n\n\nfunction getExclusiveSummary(measurements){\nvar candidates={};\nvar displayName;\n\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\nvar allIDs=assign(\n{},\nmeasurement.exclusive,\nmeasurement.inclusive);\n\n\nfor(var id in allIDs) {\ndisplayName = measurement.displayNames[id].current;\n\ncandidates[displayName] = candidates[displayName] || {\ncomponentName:displayName,\ninclusive:0,\nexclusive:0,\nrender:0,\ncount:0};\n\nif(measurement.render[id]){\ncandidates[displayName].render += measurement.render[id];}\n\nif(measurement.exclusive[id]){\ncandidates[displayName].exclusive += measurement.exclusive[id];}\n\nif(measurement.inclusive[id]){\ncandidates[displayName].inclusive += measurement.inclusive[id];}\n\nif(measurement.counts[id]){\ncandidates[displayName].count += measurement.counts[id];}}}\n\n\n\n\n\nvar arr=[];\nfor(displayName in candidates) {\nif(candidates[displayName].exclusive >= DONT_CARE_THRESHOLD){\narr.push(candidates[displayName]);}}\n\n\n\narr.sort(function(a,b){\nreturn b.exclusive - a.exclusive;});\n\n\nreturn arr;}\n\n\nfunction getInclusiveSummary(measurements,onlyClean){\nvar candidates={};\nvar inclusiveKey;\n\nfor(var i=0;i < measurements.length;i++) {\nvar measurement=measurements[i];\nvar allIDs=assign(\n{},\nmeasurement.exclusive,\nmeasurement.inclusive);\n\nvar cleanComponents;\n\nif(onlyClean){\ncleanComponents = getUnchangedComponents(measurement);}\n\n\nfor(var id in allIDs) {\nif(onlyClean && !cleanComponents[id]){\ncontinue;}\n\n\nvar displayName=measurement.displayNames[id];\n\n\n\n\ninclusiveKey = displayName.owner + ' > ' + displayName.current;\n\ncandidates[inclusiveKey] = candidates[inclusiveKey] || {\ncomponentName:inclusiveKey,\ntime:0,\ncount:0};\n\n\nif(measurement.inclusive[id]){\ncandidates[inclusiveKey].time += measurement.inclusive[id];}\n\nif(measurement.counts[id]){\ncandidates[inclusiveKey].count += measurement.counts[id];}}}\n\n\n\n\n\nvar arr=[];\nfor(inclusiveKey in candidates) {\nif(candidates[inclusiveKey].time >= DONT_CARE_THRESHOLD){\narr.push(candidates[inclusiveKey]);}}\n\n\n\narr.sort(function(a,b){\nreturn b.time - a.time;});\n\n\nreturn arr;}\n\n\nfunction getUnchangedComponents(measurement){\n\n\n\nvar cleanComponents={};\nvar dirtyLeafIDs=Object.keys(measurement.writes);\nvar allIDs=assign({},measurement.exclusive,measurement.inclusive);\n\nfor(var id in allIDs) {\nvar isDirty=false;\n\n\nfor(var i=0;i < dirtyLeafIDs.length;i++) {\nif(dirtyLeafIDs[i].indexOf(id) === 0){\nisDirty = true;\nbreak;}}\n\n\nif(!isDirty && measurement.counts[id] > 0){\ncleanComponents[id] = true;}}\n\n\nreturn cleanComponents;}\n\n\nvar ReactDefaultPerfAnalysis={\ngetExclusiveSummary:getExclusiveSummary,\ngetInclusiveSummary:getInclusiveSummary,\ngetDOMSummary:getDOMSummary,\ngetTotalTime:getTotalTime};\n\n\nmodule.exports = ReactDefaultPerfAnalysis;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactDefaultPerfAnalysis\n */\n\nvar assign = require('Object.assign');\n\n// Don't try to save users less than 1.2ms (a number I made up)\nvar DONT_CARE_THRESHOLD = 1.2;\nvar DOM_OPERATION_TYPES = {\n '_mountImageIntoNode': 'set innerHTML',\n INSERT_MARKUP: 'set innerHTML',\n MOVE_EXISTING: 'move',\n REMOVE_NODE: 'remove',\n TEXT_CONTENT: 'set textContent',\n 'updatePropertyByID': 'update attribute',\n 'deletePropertyByID': 'delete attribute',\n 'updateStylesByID': 'update styles',\n 'updateInnerHTMLByID': 'set innerHTML',\n 'dangerouslyReplaceNodeWithMarkupByID': 'replace'\n};\n\nfunction getTotalTime(measurements) {\n // TODO: return number of DOM ops? could be misleading.\n // TODO: measure dropped frames after reconcile?\n // TODO: log total time of each reconcile and the top-level component\n // class that triggered it.\n var totalTime = 0;\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n totalTime += measurement.totalTime;\n }\n return totalTime;\n}\n\nfunction getDOMSummary(measurements) {\n var items = [];\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n var id;\n\n for (id in measurement.writes) {\n measurement.writes[id].forEach(function(write) {\n items.push({\n id: id,\n type: DOM_OPERATION_TYPES[write.type] || write.type,\n args: write.args\n });\n });\n }\n }\n return items;\n}\n\nfunction getExclusiveSummary(measurements) {\n var candidates = {};\n var displayName;\n\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n var allIDs = assign(\n {},\n measurement.exclusive,\n measurement.inclusive\n );\n\n for (var id in allIDs) {\n displayName = measurement.displayNames[id].current;\n\n candidates[displayName] = candidates[displayName] || {\n componentName: displayName,\n inclusive: 0,\n exclusive: 0,\n render: 0,\n count: 0\n };\n if (measurement.render[id]) {\n candidates[displayName].render += measurement.render[id];\n }\n if (measurement.exclusive[id]) {\n candidates[displayName].exclusive += measurement.exclusive[id];\n }\n if (measurement.inclusive[id]) {\n candidates[displayName].inclusive += measurement.inclusive[id];\n }\n if (measurement.counts[id]) {\n candidates[displayName].count += measurement.counts[id];\n }\n }\n }\n\n // Now make a sorted array with the results.\n var arr = [];\n for (displayName in candidates) {\n if (candidates[displayName].exclusive >= DONT_CARE_THRESHOLD) {\n arr.push(candidates[displayName]);\n }\n }\n\n arr.sort(function(a, b) {\n return b.exclusive - a.exclusive;\n });\n\n return arr;\n}\n\nfunction getInclusiveSummary(measurements, onlyClean) {\n var candidates = {};\n var inclusiveKey;\n\n for (var i = 0; i < measurements.length; i++) {\n var measurement = measurements[i];\n var allIDs = assign(\n {},\n measurement.exclusive,\n measurement.inclusive\n );\n var cleanComponents;\n\n if (onlyClean) {\n cleanComponents = getUnchangedComponents(measurement);\n }\n\n for (var id in allIDs) {\n if (onlyClean && !cleanComponents[id]) {\n continue;\n }\n\n var displayName = measurement.displayNames[id];\n\n // Inclusive time is not useful for many components without knowing where\n // they are instantiated. So we aggregate inclusive time with both the\n // owner and current displayName as the key.\n inclusiveKey = displayName.owner + ' > ' + displayName.current;\n\n candidates[inclusiveKey] = candidates[inclusiveKey] || {\n componentName: inclusiveKey,\n time: 0,\n count: 0\n };\n\n if (measurement.inclusive[id]) {\n candidates[inclusiveKey].time += measurement.inclusive[id];\n }\n if (measurement.counts[id]) {\n candidates[inclusiveKey].count += measurement.counts[id];\n }\n }\n }\n\n // Now make a sorted array with the results.\n var arr = [];\n for (inclusiveKey in candidates) {\n if (candidates[inclusiveKey].time >= DONT_CARE_THRESHOLD) {\n arr.push(candidates[inclusiveKey]);\n }\n }\n\n arr.sort(function(a, b) {\n return b.time - a.time;\n });\n\n return arr;\n}\n\nfunction getUnchangedComponents(measurement) {\n // For a given reconcile, look at which components did not actually\n // render anything to the DOM and return a mapping of their ID to\n // the amount of time it took to render the entire subtree.\n var cleanComponents = {};\n var dirtyLeafIDs = Object.keys(measurement.writes);\n var allIDs = assign({}, measurement.exclusive, measurement.inclusive);\n\n for (var id in allIDs) {\n var isDirty = false;\n // For each component that rendered, see if a component that triggered\n // a DOM op is in its subtree.\n for (var i = 0; i < dirtyLeafIDs.length; i++) {\n if (dirtyLeafIDs[i].indexOf(id) === 0) {\n isDirty = true;\n break;\n }\n }\n if (!isDirty && measurement.counts[id] > 0) {\n cleanComponents[id] = true;\n }\n }\n return cleanComponents;\n}\n\nvar ReactDefaultPerfAnalysis = {\n getExclusiveSummary: getExclusiveSummary,\n getInclusiveSummary: getInclusiveSummary,\n getDOMSummary: getDOMSummary,\n getTotalTime: getTotalTime\n};\n\nmodule.exports = ReactDefaultPerfAnalysis;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactDefaultPerfAnalysis.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/ReactMount.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOMProperty=require('DOMProperty');\nvar ReactBrowserEventEmitter=require('ReactBrowserEventEmitter');\nvar ReactCurrentOwner=require('ReactCurrentOwner');\nvar ReactElement=require('ReactElement');\nvar ReactElementValidator=require('ReactElementValidator');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactMarkupChecksum=require('ReactMarkupChecksum');\nvar ReactPerf=require('ReactPerf');\nvar ReactReconciler=require('ReactReconciler');\nvar ReactUpdateQueue=require('ReactUpdateQueue');\nvar ReactUpdates=require('ReactUpdates');\n\nvar emptyObject=require('emptyObject');\nvar containsNode=require('containsNode');\nvar getReactRootElementInContainer=require('getReactRootElementInContainer');\nvar instantiateReactComponent=require('instantiateReactComponent');\nvar invariant=require('invariant');\nvar setInnerHTML=require('setInnerHTML');\nvar shouldUpdateReactComponent=require('shouldUpdateReactComponent');\nvar warning=require('warning');\n\nvar SEPARATOR=ReactInstanceHandles.SEPARATOR;\n\nvar ATTR_NAME=DOMProperty.ID_ATTRIBUTE_NAME;\nvar nodeCache={};\n\nvar ELEMENT_NODE_TYPE=1;\nvar DOC_NODE_TYPE=9;\n\n\nvar instancesByReactRootID={};\n\n\nvar containersByReactRootID={};\n\nif(__DEV__){\n\nvar rootElementsByReactRootID={};}\n\n\n\nvar findComponentRootReusableArray=[];\n\n\n\n\n\n\n\nfunction firstDifferenceIndex(string1,string2){\nvar minLen=Math.min(string1.length,string2.length);\nfor(var i=0;i < minLen;i++) {\nif(string1.charAt(i) !== string2.charAt(i)){\nreturn i;}}\n\n\nreturn string1.length === string2.length?-1:minLen;}\n\n\n\n\n\n\nfunction getReactRootID(container){\nvar rootElement=getReactRootElementInContainer(container);\nreturn rootElement && ReactMount.getID(rootElement);}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getID(node){\nvar id=internalGetID(node);\nif(id){\nif(nodeCache.hasOwnProperty(id)){\nvar cached=nodeCache[id];\nif(cached !== node){\ninvariant(\n!isValid(cached,id),\n'ReactMount: Two valid but unequal nodes with the same `%s`: %s',\nATTR_NAME,id);\n\n\nnodeCache[id] = node;}}else \n\n{\nnodeCache[id] = node;}}\n\n\n\nreturn id;}\n\n\nfunction internalGetID(node){\n\n\n\nreturn node && node.getAttribute && node.getAttribute(ATTR_NAME) || '';}\n\n\n\n\n\n\n\n\nfunction setID(node,id){\nvar oldID=internalGetID(node);\nif(oldID !== id){\ndelete nodeCache[oldID];}\n\nnode.setAttribute(ATTR_NAME,id);\nnodeCache[id] = node;}\n\n\n\n\n\n\n\n\n\nfunction getNode(id){\nif(!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id],id)){\nnodeCache[id] = ReactMount.findReactNodeByID(id);}\n\nreturn nodeCache[id];}\n\n\n\n\n\n\n\n\n\nfunction getNodeFromInstance(instance){\nvar id=ReactInstanceMap.get(instance)._rootNodeID;\nif(ReactEmptyComponent.isNullComponentID(id)){\nreturn null;}\n\nif(!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id],id)){\nnodeCache[id] = ReactMount.findReactNodeByID(id);}\n\nreturn nodeCache[id];}\n\n\n\n\n\n\n\n\n\n\n\n\nfunction isValid(node,id){\nif(node){\ninvariant(\ninternalGetID(node) === id,\n'ReactMount: Unexpected modification of `%s`',\nATTR_NAME);\n\n\nvar container=ReactMount.findReactContainerForID(id);\nif(container && containsNode(container,node)){\nreturn true;}}\n\n\n\nreturn false;}\n\n\n\n\n\n\n\nfunction purgeID(id){\ndelete nodeCache[id];}\n\n\nvar deepestNodeSoFar=null;\nfunction findDeepestCachedAncestorImpl(ancestorID){\nvar ancestor=nodeCache[ancestorID];\nif(ancestor && isValid(ancestor,ancestorID)){\ndeepestNodeSoFar = ancestor;}else \n{\n\n\nreturn false;}}\n\n\n\n\n\n\nfunction findDeepestCachedAncestor(targetID){\ndeepestNodeSoFar = null;\nReactInstanceHandles.traverseAncestors(\ntargetID,\nfindDeepestCachedAncestorImpl);\n\n\nvar foundNode=deepestNodeSoFar;\ndeepestNodeSoFar = null;\nreturn foundNode;}\n\n\n\n\n\n\n\n\n\n\n\nfunction mountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\ntransaction,\nshouldReuseMarkup){\nvar markup=ReactReconciler.mountComponent(\ncomponentInstance,rootID,transaction,emptyObject);\n\ncomponentInstance._isTopLevel = true;\nReactMount._mountImageIntoNode(markup,container,shouldReuseMarkup);}\n\n\n\n\n\n\n\n\n\n\nfunction batchedMountComponentIntoNode(\ncomponentInstance,\nrootID,\ncontainer,\nshouldReuseMarkup){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\ntransaction.perform(\nmountComponentIntoNode,\nnull,\ncomponentInstance,\nrootID,\ncontainer,\ntransaction,\nshouldReuseMarkup);\n\nReactUpdates.ReactReconcileTransaction.release(transaction);}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactMount={\n\n_instancesByReactRootID:instancesByReactRootID,\n\n\n\n\n\n\n\n\n\nscrollMonitor:function(container,renderCallback){\nrenderCallback();},\n\n\n\n\n\n\n\n\n\n_updateRootComponent:function(\nprevComponent,\nnextElement,\ncontainer,\ncallback){\nif(__DEV__){\nReactElementValidator.checkAndWarnForMutatedProps(nextElement);}\n\n\nReactMount.scrollMonitor(container,function(){\nReactUpdateQueue.enqueueElementInternal(prevComponent,nextElement);\nif(callback){\nReactUpdateQueue.enqueueCallbackInternal(prevComponent,callback);}});\n\n\n\nif(__DEV__){\n\nrootElementsByReactRootID[getReactRootID(container)] = \ngetReactRootElementInContainer(container);}\n\n\nreturn prevComponent;},\n\n\n\n\n\n\n\n\n\n_registerComponent:function(nextComponent,container){\ninvariant(\ncontainer && (\ncontainer.nodeType === ELEMENT_NODE_TYPE || \ncontainer.nodeType === DOC_NODE_TYPE),\n\n'_registerComponent(...): Target container is not a DOM element.');\n\n\nReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\nvar reactRootID=ReactMount.registerContainer(container);\ninstancesByReactRootID[reactRootID] = nextComponent;\nreturn reactRootID;},\n\n\n\n\n\n\n\n\n\n_renderNewRootComponent:function(\nnextElement,\ncontainer,\nshouldReuseMarkup)\n{\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'_renderNewRootComponent(): Render methods should be a pure function ' + \n'of props and state; triggering nested component updates from ' + \n'render is not allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\nvar componentInstance=instantiateReactComponent(nextElement,null);\nvar reactRootID=ReactMount._registerComponent(\ncomponentInstance,\ncontainer);\n\n\n\n\n\n\nReactUpdates.batchedUpdates(\nbatchedMountComponentIntoNode,\ncomponentInstance,\nreactRootID,\ncontainer,\nshouldReuseMarkup);\n\n\nif(__DEV__){\n\nrootElementsByReactRootID[reactRootID] = \ngetReactRootElementInContainer(container);}\n\n\nreturn componentInstance;},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nrender:function(nextElement,container,callback){\ninvariant(\nReactElement.isValidElement(nextElement),\n'React.render(): Invalid component element.%s',\n\ntypeof nextElement === 'string'?\n' Instead of passing an element string, make sure to instantiate ' + \n'it by passing it to React.createElement.':\ntypeof nextElement === 'function'?\n' Instead of passing a component class, make sure to instantiate ' + \n'it by passing it to React.createElement.':\n\nnextElement != null && nextElement.props !== undefined?\n' This may be caused by unintentionally loading two independent ' + \n'copies of React.':\n'');\n\n\n\nvar prevComponent=instancesByReactRootID[getReactRootID(container)];\n\nif(prevComponent){\nvar prevElement=prevComponent._currentElement;\nif(shouldUpdateReactComponent(prevElement,nextElement)){\nreturn ReactMount._updateRootComponent(\nprevComponent,\nnextElement,\ncontainer,\ncallback).\ngetPublicInstance();}else \n{\nReactMount.unmountComponentAtNode(container);}}\n\n\n\nvar reactRootElement=getReactRootElementInContainer(container);\nvar containerHasReactMarkup=\nreactRootElement && ReactMount.isRenderedByReact(reactRootElement);\n\nif(__DEV__){\nif(!containerHasReactMarkup || reactRootElement.nextSibling){\nvar rootElementSibling=reactRootElement;\nwhile(rootElementSibling) {\nif(ReactMount.isRenderedByReact(rootElementSibling)){\nwarning(\nfalse,\n'render(): Target node has markup rendered by React, but there ' + \n'are unrelated nodes as well. This is most commonly caused by ' + \n'white-space inserted around server-rendered markup.');\n\nbreak;}\n\n\nrootElementSibling = rootElementSibling.nextSibling;}}}\n\n\n\n\nvar shouldReuseMarkup=containerHasReactMarkup && !prevComponent;\n\nvar component=ReactMount._renderNewRootComponent(\nnextElement,\ncontainer,\nshouldReuseMarkup).\ngetPublicInstance();\nif(callback){\ncallback.call(component);}\n\nreturn component;},\n\n\n\n\n\n\n\n\n\n\n\nconstructAndRenderComponent:function(constructor,props,container){\nvar element=ReactElement.createElement(constructor,props);\nreturn ReactMount.render(element,container);},\n\n\n\n\n\n\n\n\n\n\n\nconstructAndRenderComponentByID:function(constructor,props,id){\nvar domNode=document.getElementById(id);\ninvariant(\ndomNode,\n'Tried to get element with id of \"%s\" but it is not present on the page.',\nid);\n\nreturn ReactMount.constructAndRenderComponent(constructor,props,domNode);},\n\n\n\n\n\n\n\n\n\n\nregisterContainer:function(container){\nvar reactRootID=getReactRootID(container);\nif(reactRootID){\n\nreactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);}\n\nif(!reactRootID){\n\nreactRootID = ReactInstanceHandles.createReactRootID();}\n\ncontainersByReactRootID[reactRootID] = container;\nreturn reactRootID;},\n\n\n\n\n\n\n\n\n\nunmountComponentAtNode:function(container){\n\n\n\n\nwarning(\nReactCurrentOwner.current == null,\n'unmountComponentAtNode(): Render methods should be a pure function of ' + \n'props and state; triggering nested component updates from render is ' + \n'not allowed. If necessary, trigger nested updates in ' + \n'componentDidUpdate.');\n\n\ninvariant(\ncontainer && (\ncontainer.nodeType === ELEMENT_NODE_TYPE || \ncontainer.nodeType === DOC_NODE_TYPE),\n\n'unmountComponentAtNode(...): Target container is not a DOM element.');\n\n\nvar reactRootID=getReactRootID(container);\nvar component=instancesByReactRootID[reactRootID];\nif(!component){\nreturn false;}\n\nReactMount.unmountComponentFromNode(component,container);\ndelete instancesByReactRootID[reactRootID];\ndelete containersByReactRootID[reactRootID];\nif(__DEV__){\ndelete rootElementsByReactRootID[reactRootID];}\n\nreturn true;},\n\n\n\n\n\n\n\n\n\n\n\nunmountComponentFromNode:function(instance,container){\nReactReconciler.unmountComponent(instance);\n\nif(container.nodeType === DOC_NODE_TYPE){\ncontainer = container.documentElement;}\n\n\n\nwhile(container.lastChild) {\ncontainer.removeChild(container.lastChild);}},\n\n\n\n\n\n\n\n\n\n\nfindReactContainerForID:function(id){\nvar reactRootID=ReactInstanceHandles.getReactRootIDFromNodeID(id);\nvar container=containersByReactRootID[reactRootID];\n\nif(__DEV__){\nvar rootElement=rootElementsByReactRootID[reactRootID];\nif(rootElement && rootElement.parentNode !== container){\ninvariant(\n\n\ninternalGetID(rootElement) === reactRootID,\n'ReactMount: Root element ID differed from reactRootID.');\n\n\nvar containerChild=container.firstChild;\nif(containerChild && \nreactRootID === internalGetID(containerChild)){\n\n\n\n\nrootElementsByReactRootID[reactRootID] = containerChild;}else \n{\nwarning(\nfalse,\n'ReactMount: Root element has been removed from its original ' + \n'container. New container:',rootElement.parentNode);}}}\n\n\n\n\n\nreturn container;},\n\n\n\n\n\n\n\n\nfindReactNodeByID:function(id){\nvar reactRoot=ReactMount.findReactContainerForID(id);\nreturn ReactMount.findComponentRoot(reactRoot,id);},\n\n\n\n\n\n\n\n\n\nisRenderedByReact:function(node){\nif(node.nodeType !== 1){\n\nreturn false;}\n\nvar id=ReactMount.getID(node);\nreturn id?id.charAt(0) === SEPARATOR:false;},\n\n\n\n\n\n\n\n\n\n\ngetFirstReactDOM:function(node){\nvar current=node;\nwhile(current && current.parentNode !== current) {\nif(ReactMount.isRenderedByReact(current)){\nreturn current;}\n\ncurrent = current.parentNode;}\n\nreturn null;},\n\n\n\n\n\n\n\n\n\n\n\n\nfindComponentRoot:function(ancestorNode,targetID){\nvar firstChildren=findComponentRootReusableArray;\nvar childIndex=0;\n\nvar deepestAncestor=findDeepestCachedAncestor(targetID) || ancestorNode;\n\nfirstChildren[0] = deepestAncestor.firstChild;\nfirstChildren.length = 1;\n\nwhile(childIndex < firstChildren.length) {\nvar child=firstChildren[childIndex++];\nvar targetChild;\n\nwhile(child) {\nvar childID=ReactMount.getID(child);\nif(childID){\n\n\n\n\n\nif(targetID === childID){\ntargetChild = child;}else \nif(ReactInstanceHandles.isAncestorIDOf(childID,targetID)){\n\n\n\n\nfirstChildren.length = childIndex = 0;\nfirstChildren.push(child.firstChild);}}else \n\n\n{\n\n\n\n\n\nfirstChildren.push(child.firstChild);}\n\n\nchild = child.nextSibling;}\n\n\nif(targetChild){\n\n\n\nfirstChildren.length = 0;\n\nreturn targetChild;}}\n\n\n\nfirstChildren.length = 0;\n\ninvariant(\nfalse,\n'findComponentRoot(..., %s): Unable to find element. This probably ' + \n'means the DOM was unexpectedly mutated (e.g., by the browser), ' + \n'usually due to forgetting a <tbody> when using tables, nesting tags ' + \n'like <form>, <p>, or <a>, or using non-SVG elements in an <svg> ' + \n'parent. ' + \n'Try inspecting the child nodes of the element with React ID `%s`.',\ntargetID,\nReactMount.getID(ancestorNode));},\n\n\n\n_mountImageIntoNode:function(markup,container,shouldReuseMarkup){\ninvariant(\ncontainer && (\ncontainer.nodeType === ELEMENT_NODE_TYPE || \ncontainer.nodeType === DOC_NODE_TYPE),\n\n'mountComponentIntoNode(...): Target container is not valid.');\n\n\nif(shouldReuseMarkup){\nvar rootElement=getReactRootElementInContainer(container);\nif(ReactMarkupChecksum.canReuseMarkup(markup,rootElement)){\nreturn;}else \n{\nvar checksum=rootElement.getAttribute(\nReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\nrootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\nvar rootMarkup=rootElement.outerHTML;\nrootElement.setAttribute(\nReactMarkupChecksum.CHECKSUM_ATTR_NAME,\nchecksum);\n\n\nvar diffIndex=firstDifferenceIndex(markup,rootMarkup);\nvar difference=' (client) ' + \nmarkup.substring(diffIndex - 20,diffIndex + 20) + \n'\\n (server) ' + rootMarkup.substring(diffIndex - 20,diffIndex + 20);\n\ninvariant(\ncontainer.nodeType !== DOC_NODE_TYPE,\n'You\\'re trying to render a component to the document using ' + \n'server rendering but the checksum was invalid. This usually ' + \n'means you rendered a different component type or props on ' + \n'the client from the one on the server, or your render() ' + \n'methods are impure. React cannot handle this case due to ' + \n'cross-browser quirks by rendering at the document root. You ' + \n'should look for environment dependent code in your components ' + \n'and ensure the props are the same client and server side:\\n%s',\ndifference);\n\n\nif(__DEV__){\nwarning(\nfalse,\n'React attempted to reuse markup in a container but the ' + \n'checksum was invalid. This generally means that you are ' + \n'using server rendering and the markup generated on the ' + \n'server was not what the client was expecting. React injected ' + \n'new markup to compensate which works but you have lost many ' + \n'of the benefits of server rendering. Instead, figure out ' + \n'why the markup being generated is different on the client ' + \n'or server:\\n%s',\ndifference);}}}\n\n\n\n\n\ninvariant(\ncontainer.nodeType !== DOC_NODE_TYPE,\n'You\\'re trying to render a component to the document but ' + \n'you didn\\'t use server rendering. We can\\'t do this ' + \n'without using server rendering due to cross-browser quirks. ' + \n'See React.renderToString() for server rendering.');\n\n\nsetInnerHTML(container,markup);},\n\n\n\n\n\n\ngetReactRootID:getReactRootID,\n\ngetID:getID,\n\nsetID:setID,\n\ngetNode:getNode,\n\ngetNodeFromInstance:getNodeFromInstance,\n\npurgeID:purgeID};\n\n\nReactPerf.measureMethods(ReactMount,'ReactMount',{\n_renderNewRootComponent:'_renderNewRootComponent',\n_mountImageIntoNode:'_mountImageIntoNode'});\n\n\nmodule.exports = ReactMount;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMount\n */\n\n'use strict';\n\nvar DOMProperty = require('DOMProperty');\nvar ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('ReactCurrentOwner');\nvar ReactElement = require('ReactElement');\nvar ReactElementValidator = require('ReactElementValidator');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactMarkupChecksum = require('ReactMarkupChecksum');\nvar ReactPerf = require('ReactPerf');\nvar ReactReconciler = require('ReactReconciler');\nvar ReactUpdateQueue = require('ReactUpdateQueue');\nvar ReactUpdates = require('ReactUpdates');\n\nvar emptyObject = require('emptyObject');\nvar containsNode = require('containsNode');\nvar getReactRootElementInContainer = require('getReactRootElementInContainer');\nvar instantiateReactComponent = require('instantiateReactComponent');\nvar invariant = require('invariant');\nvar setInnerHTML = require('setInnerHTML');\nvar shouldUpdateReactComponent = require('shouldUpdateReactComponent');\nvar warning = require('warning');\n\nvar SEPARATOR = ReactInstanceHandles.SEPARATOR;\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar nodeCache = {};\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\n\n/** Mapping from reactRootID to React component instance. */\nvar instancesByReactRootID = {};\n\n/** Mapping from reactRootID to `container` nodes. */\nvar containersByReactRootID = {};\n\nif (__DEV__) {\n /** __DEV__-only mapping from reactRootID to root elements. */\n var rootElementsByReactRootID = {};\n}\n\n// Used to store breadth-first search state in findComponentRoot.\nvar findComponentRootReusableArray = [];\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement} container DOM element that may contain a React component.\n * @return {?string} A \"reactRoot\" ID, if a React component is rendered.\n */\nfunction getReactRootID(container) {\n var rootElement = getReactRootElementInContainer(container);\n return rootElement && ReactMount.getID(rootElement);\n}\n\n/**\n * Accessing node[ATTR_NAME] or calling getAttribute(ATTR_NAME) on a form\n * element can return its control whose name or ID equals ATTR_NAME. All\n * DOM nodes support `getAttributeNode` but this can also get called on\n * other objects so just return '' if we're given something other than a\n * DOM node (such as window).\n *\n * @param {?DOMElement|DOMWindow|DOMDocument|DOMTextNode} node DOM node.\n * @return {string} ID of the supplied `domNode`.\n */\nfunction getID(node) {\n var id = internalGetID(node);\n if (id) {\n if (nodeCache.hasOwnProperty(id)) {\n var cached = nodeCache[id];\n if (cached !== node) {\n invariant(\n !isValid(cached, id),\n 'ReactMount: Two valid but unequal nodes with the same `%s`: %s',\n ATTR_NAME, id\n );\n\n nodeCache[id] = node;\n }\n } else {\n nodeCache[id] = node;\n }\n }\n\n return id;\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node && node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Sets the React-specific ID of the given node.\n *\n * @param {DOMElement} node The DOM node whose ID will be set.\n * @param {string} id The value of the ID attribute.\n */\nfunction setID(node, id) {\n var oldID = internalGetID(node);\n if (oldID !== id) {\n delete nodeCache[oldID];\n }\n node.setAttribute(ATTR_NAME, id);\n nodeCache[id] = node;\n}\n\n/**\n * Finds the node with the supplied React-generated DOM ID.\n *\n * @param {string} id A React-generated DOM ID.\n * @return {DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNode(id) {\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * Finds the node with the supplied public React instance.\n *\n * @param {*} instance A public React instance.\n * @return {?DOMElement} DOM node with the suppled `id`.\n * @internal\n */\nfunction getNodeFromInstance(instance) {\n var id = ReactInstanceMap.get(instance)._rootNodeID;\n if (ReactEmptyComponent.isNullComponentID(id)) {\n return null;\n }\n if (!nodeCache.hasOwnProperty(id) || !isValid(nodeCache[id], id)) {\n nodeCache[id] = ReactMount.findReactNodeByID(id);\n }\n return nodeCache[id];\n}\n\n/**\n * A node is \"valid\" if it is contained by a currently mounted container.\n *\n * This means that the node does not have to be contained by a document in\n * order to be considered valid.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @param {string} id The expected ID of the node.\n * @return {boolean} Whether the node is contained by a mounted container.\n */\nfunction isValid(node, id) {\n if (node) {\n invariant(\n internalGetID(node) === id,\n 'ReactMount: Unexpected modification of `%s`',\n ATTR_NAME\n );\n\n var container = ReactMount.findReactContainerForID(id);\n if (container && containsNode(container, node)) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Causes the cache to forget about one React-specific ID.\n *\n * @param {string} id The ID to forget.\n */\nfunction purgeID(id) {\n delete nodeCache[id];\n}\n\nvar deepestNodeSoFar = null;\nfunction findDeepestCachedAncestorImpl(ancestorID) {\n var ancestor = nodeCache[ancestorID];\n if (ancestor && isValid(ancestor, ancestorID)) {\n deepestNodeSoFar = ancestor;\n } else {\n // This node isn't populated in the cache, so presumably none of its\n // descendants are. Break out of the loop.\n return false;\n }\n}\n\n/**\n * Return the deepest cached node whose ID is a prefix of `targetID`.\n */\nfunction findDeepestCachedAncestor(targetID) {\n deepestNodeSoFar = null;\n ReactInstanceHandles.traverseAncestors(\n targetID,\n findDeepestCachedAncestorImpl\n );\n\n var foundNode = deepestNodeSoFar;\n deepestNodeSoFar = null;\n return foundNode;\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n transaction,\n shouldReuseMarkup) {\n var markup = ReactReconciler.mountComponent(\n componentInstance, rootID, transaction, emptyObject\n );\n componentInstance._isTopLevel = true;\n ReactMount._mountImageIntoNode(markup, container, shouldReuseMarkup);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {string} rootID DOM ID of the root node.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(\n componentInstance,\n rootID,\n container,\n shouldReuseMarkup) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n transaction.perform(\n mountComponentIntoNode,\n null,\n componentInstance,\n rootID,\n container,\n transaction,\n shouldReuseMarkup\n );\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n /** Exposed for debugging purposes **/\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function(container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function(\n prevComponent,\n nextElement,\n container,\n callback) {\n if (__DEV__) {\n ReactElementValidator.checkAndWarnForMutatedProps(nextElement);\n }\n\n ReactMount.scrollMonitor(container, function() {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n if (__DEV__) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[getReactRootID(container)] =\n getReactRootElementInContainer(container);\n }\n\n return prevComponent;\n },\n\n /**\n * Register a component into the instance map and starts scroll value\n * monitoring\n * @param {ReactComponent} nextComponent component instance to render\n * @param {DOMElement} container container to render into\n * @return {string} reactRoot ID prefix\n */\n _registerComponent: function(nextComponent, container) {\n invariant(\n container && (\n container.nodeType === ELEMENT_NODE_TYPE ||\n container.nodeType === DOC_NODE_TYPE\n ),\n '_registerComponent(...): Target container is not a DOM element.'\n );\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\n var reactRootID = ReactMount.registerContainer(container);\n instancesByReactRootID[reactRootID] = nextComponent;\n return reactRootID;\n },\n\n /**\n * Render a new component into the DOM.\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function(\n nextElement,\n container,\n shouldReuseMarkup\n ) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n warning(\n ReactCurrentOwner.current == null,\n '_renderNewRootComponent(): Render methods should be a pure function ' +\n 'of props and state; triggering nested component updates from ' +\n 'render is not allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n var componentInstance = instantiateReactComponent(nextElement, null);\n var reactRootID = ReactMount._registerComponent(\n componentInstance,\n container\n );\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(\n batchedMountComponentIntoNode,\n componentInstance,\n reactRootID,\n container,\n shouldReuseMarkup\n );\n\n if (__DEV__) {\n // Record the root element in case it later gets transplanted.\n rootElementsByReactRootID[reactRootID] =\n getReactRootElementInContainer(container);\n }\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function(nextElement, container, callback) {\n invariant(\n ReactElement.isValidElement(nextElement),\n 'React.render(): Invalid component element.%s',\n (\n typeof nextElement === 'string' ?\n ' Instead of passing an element string, make sure to instantiate ' +\n 'it by passing it to React.createElement.' :\n typeof nextElement === 'function' ?\n ' Instead of passing a component class, make sure to instantiate ' +\n 'it by passing it to React.createElement.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ?\n ' This may be caused by unintentionally loading two independent ' +\n 'copies of React.' :\n ''\n )\n );\n\n var prevComponent = instancesByReactRootID[getReactRootID(container)];\n\n if (prevComponent) {\n var prevElement = prevComponent._currentElement;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n return ReactMount._updateRootComponent(\n prevComponent,\n nextElement,\n container,\n callback\n ).getPublicInstance();\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup =\n reactRootElement && ReactMount.isRenderedByReact(reactRootElement);\n\n if (__DEV__) {\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (ReactMount.isRenderedByReact(rootElementSibling)) {\n warning(\n false,\n 'render(): Target node has markup rendered by React, but there ' +\n 'are unrelated nodes as well. This is most commonly caused by ' +\n 'white-space inserted around server-rendered markup.'\n );\n break;\n }\n\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent;\n\n var component = ReactMount._renderNewRootComponent(\n nextElement,\n container,\n shouldReuseMarkup\n ).getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Constructs a component instance of `constructor` with `initialProps` and\n * renders it into the supplied `container`.\n *\n * @param {function} constructor React component constructor.\n * @param {?object} props Initial props of the component instance.\n * @param {DOMElement} container DOM element to render into.\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n constructAndRenderComponent: function(constructor, props, container) {\n var element = ReactElement.createElement(constructor, props);\n return ReactMount.render(element, container);\n },\n\n /**\n * Constructs a component instance of `constructor` with `initialProps` and\n * renders it into a container node identified by supplied `id`.\n *\n * @param {function} componentConstructor React component constructor\n * @param {?object} props Initial props of the component instance.\n * @param {string} id ID of the DOM element to render into.\n * @return {ReactComponent} Component instance rendered in the container node.\n */\n constructAndRenderComponentByID: function(constructor, props, id) {\n var domNode = document.getElementById(id);\n invariant(\n domNode,\n 'Tried to get element with id of \"%s\" but it is not present on the page.',\n id\n );\n return ReactMount.constructAndRenderComponent(constructor, props, domNode);\n },\n\n /**\n * Registers a container node into which React components will be rendered.\n * This also creates the \"reactRoot\" ID that will be assigned to the element\n * rendered within.\n *\n * @param {DOMElement} container DOM element to register as a container.\n * @return {string} The \"reactRoot\" ID of elements rendered within.\n */\n registerContainer: function(container) {\n var reactRootID = getReactRootID(container);\n if (reactRootID) {\n // If one exists, make sure it is a valid \"reactRoot\" ID.\n reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(reactRootID);\n }\n if (!reactRootID) {\n // No valid \"reactRoot\" ID found, create one.\n reactRootID = ReactInstanceHandles.createReactRootID();\n }\n containersByReactRootID[reactRootID] = container;\n return reactRootID;\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function(container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n warning(\n ReactCurrentOwner.current == null,\n 'unmountComponentAtNode(): Render methods should be a pure function of ' +\n 'props and state; triggering nested component updates from render is ' +\n 'not allowed. If necessary, trigger nested updates in ' +\n 'componentDidUpdate.'\n );\n\n invariant(\n container && (\n container.nodeType === ELEMENT_NODE_TYPE ||\n container.nodeType === DOC_NODE_TYPE\n ),\n 'unmountComponentAtNode(...): Target container is not a DOM element.'\n );\n\n var reactRootID = getReactRootID(container);\n var component = instancesByReactRootID[reactRootID];\n if (!component) {\n return false;\n }\n ReactMount.unmountComponentFromNode(component, container);\n delete instancesByReactRootID[reactRootID];\n delete containersByReactRootID[reactRootID];\n if (__DEV__) {\n delete rootElementsByReactRootID[reactRootID];\n }\n return true;\n },\n\n /**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\n unmountComponentFromNode: function(instance, container) {\n ReactReconciler.unmountComponent(instance);\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n },\n\n /**\n * Finds the container DOM element that contains React component to which the\n * supplied DOM `id` belongs.\n *\n * @param {string} id The ID of an element rendered by a React component.\n * @return {?DOMElement} DOM element that contains the `id`.\n */\n findReactContainerForID: function(id) {\n var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(id);\n var container = containersByReactRootID[reactRootID];\n\n if (__DEV__) {\n var rootElement = rootElementsByReactRootID[reactRootID];\n if (rootElement && rootElement.parentNode !== container) {\n invariant(\n // Call internalGetID here because getID calls isValid which calls\n // findReactContainerForID (this function).\n internalGetID(rootElement) === reactRootID,\n 'ReactMount: Root element ID differed from reactRootID.'\n );\n\n var containerChild = container.firstChild;\n if (containerChild &&\n reactRootID === internalGetID(containerChild)) {\n // If the container has a new child with the same ID as the old\n // root element, then rootElementsByReactRootID[reactRootID] is\n // just stale and needs to be updated. The case that deserves a\n // warning is when the container is empty.\n rootElementsByReactRootID[reactRootID] = containerChild;\n } else {\n warning(\n false,\n 'ReactMount: Root element has been removed from its original ' +\n 'container. New container:', rootElement.parentNode\n );\n }\n }\n }\n\n return container;\n },\n\n /**\n * Finds an element rendered by React with the supplied ID.\n *\n * @param {string} id ID of a DOM node in the React component.\n * @return {DOMElement} Root DOM node of the React component.\n */\n findReactNodeByID: function(id) {\n var reactRoot = ReactMount.findReactContainerForID(id);\n return ReactMount.findComponentRoot(reactRoot, id);\n },\n\n /**\n * True if the supplied `node` is rendered by React.\n *\n * @param {*} node DOM Element to check.\n * @return {boolean} True if the DOM Element appears to be rendered by React.\n * @internal\n */\n isRenderedByReact: function(node) {\n if (node.nodeType !== 1) {\n // Not a DOMElement, therefore not a React component\n return false;\n }\n var id = ReactMount.getID(node);\n return id ? id.charAt(0) === SEPARATOR : false;\n },\n\n /**\n * Traverses up the ancestors of the supplied node to find a node that is a\n * DOM representation of a React component.\n *\n * @param {*} node\n * @return {?DOMEventTarget}\n * @internal\n */\n getFirstReactDOM: function(node) {\n var current = node;\n while (current && current.parentNode !== current) {\n if (ReactMount.isRenderedByReact(current)) {\n return current;\n }\n current = current.parentNode;\n }\n return null;\n },\n\n /**\n * Finds a node with the supplied `targetID` inside of the supplied\n * `ancestorNode`. Exploits the ID naming scheme to perform the search\n * quickly.\n *\n * @param {DOMEventTarget} ancestorNode Search from this root.\n * @pararm {string} targetID ID of the DOM representation of the component.\n * @return {DOMEventTarget} DOM node with the supplied `targetID`.\n * @internal\n */\n findComponentRoot: function(ancestorNode, targetID) {\n var firstChildren = findComponentRootReusableArray;\n var childIndex = 0;\n\n var deepestAncestor = findDeepestCachedAncestor(targetID) || ancestorNode;\n\n firstChildren[0] = deepestAncestor.firstChild;\n firstChildren.length = 1;\n\n while (childIndex < firstChildren.length) {\n var child = firstChildren[childIndex++];\n var targetChild;\n\n while (child) {\n var childID = ReactMount.getID(child);\n if (childID) {\n // Even if we find the node we're looking for, we finish looping\n // through its siblings to ensure they're cached so that we don't have\n // to revisit this node again. Otherwise, we make n^2 calls to getID\n // when visiting the many children of a single node in order.\n\n if (targetID === childID) {\n targetChild = child;\n } else if (ReactInstanceHandles.isAncestorIDOf(childID, targetID)) {\n // If we find a child whose ID is an ancestor of the given ID,\n // then we can be sure that we only want to search the subtree\n // rooted at this child, so we can throw out the rest of the\n // search state.\n firstChildren.length = childIndex = 0;\n firstChildren.push(child.firstChild);\n }\n\n } else {\n // If this child had no ID, then there's a chance that it was\n // injected automatically by the browser, as when a `<table>`\n // element sprouts an extra `<tbody>` child as a side effect of\n // `.innerHTML` parsing. Optimistically continue down this\n // branch, but not before examining the other siblings.\n firstChildren.push(child.firstChild);\n }\n\n child = child.nextSibling;\n }\n\n if (targetChild) {\n // Emptying firstChildren/findComponentRootReusableArray is\n // not necessary for correctness, but it helps the GC reclaim\n // any nodes that were left at the end of the search.\n firstChildren.length = 0;\n\n return targetChild;\n }\n }\n\n firstChildren.length = 0;\n\n invariant(\n false,\n 'findComponentRoot(..., %s): Unable to find element. This probably ' +\n 'means the DOM was unexpectedly mutated (e.g., by the browser), ' +\n 'usually due to forgetting a <tbody> when using tables, nesting tags ' +\n 'like <form>, <p>, or <a>, or using non-SVG elements in an <svg> ' +\n 'parent. ' +\n 'Try inspecting the child nodes of the element with React ID `%s`.',\n targetID,\n ReactMount.getID(ancestorNode)\n );\n },\n\n _mountImageIntoNode: function(markup, container, shouldReuseMarkup) {\n invariant(\n container && (\n container.nodeType === ELEMENT_NODE_TYPE ||\n container.nodeType === DOC_NODE_TYPE\n ),\n 'mountComponentIntoNode(...): Target container is not valid.'\n );\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n return;\n } else {\n var checksum = rootElement.getAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME\n );\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME,\n checksum\n );\n\n var diffIndex = firstDifferenceIndex(markup, rootMarkup);\n var difference = ' (client) ' +\n markup.substring(diffIndex - 20, diffIndex + 20) +\n '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n invariant(\n container.nodeType !== DOC_NODE_TYPE,\n 'You\\'re trying to render a component to the document using ' +\n 'server rendering but the checksum was invalid. This usually ' +\n 'means you rendered a different component type or props on ' +\n 'the client from the one on the server, or your render() ' +\n 'methods are impure. React cannot handle this case due to ' +\n 'cross-browser quirks by rendering at the document root. You ' +\n 'should look for environment dependent code in your components ' +\n 'and ensure the props are the same client and server side:\\n%s',\n difference\n );\n\n if (__DEV__) {\n warning(\n false,\n 'React attempted to reuse markup in a container but the ' +\n 'checksum was invalid. This generally means that you are ' +\n 'using server rendering and the markup generated on the ' +\n 'server was not what the client was expecting. React injected ' +\n 'new markup to compensate which works but you have lost many ' +\n 'of the benefits of server rendering. Instead, figure out ' +\n 'why the markup being generated is different on the client ' +\n 'or server:\\n%s',\n difference\n );\n }\n }\n }\n\n invariant(\n container.nodeType !== DOC_NODE_TYPE,\n 'You\\'re trying to render a component to the document but ' +\n 'you didn\\'t use server rendering. We can\\'t do this ' +\n 'without using server rendering due to cross-browser quirks. ' +\n 'See React.renderToString() for server rendering.'\n );\n\n setInnerHTML(container, markup);\n },\n\n /**\n * React ID utilities.\n */\n\n getReactRootID: getReactRootID,\n\n getID: getID,\n\n setID: setID,\n\n getNode: getNode,\n\n getNodeFromInstance: getNodeFromInstance,\n\n purgeID: purgeID\n};\n\nReactPerf.measureMethods(ReactMount, 'ReactMount', {\n _renderNewRootComponent: '_renderNewRootComponent',\n _mountImageIntoNode: '_mountImageIntoNode'\n});\n\nmodule.exports = ReactMount;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/ReactMount.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ReactBrowserEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPluginRegistry=require('EventPluginRegistry');\nvar ReactEventEmitterMixin=require('ReactEventEmitterMixin');\nvar ViewportMetrics=require('ViewportMetrics');\n\nvar assign=require('Object.assign');\nvar isEventSupported=require('isEventSupported');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar alreadyListeningTo={};\nvar isMonitoringScrollValue=false;\nvar reactTopListenersCounter=0;\n\n\n\n\nvar topEventMapping={\ntopBlur:'blur',\ntopChange:'change',\ntopClick:'click',\ntopCompositionEnd:'compositionend',\ntopCompositionStart:'compositionstart',\ntopCompositionUpdate:'compositionupdate',\ntopContextMenu:'contextmenu',\ntopCopy:'copy',\ntopCut:'cut',\ntopDoubleClick:'dblclick',\ntopDrag:'drag',\ntopDragEnd:'dragend',\ntopDragEnter:'dragenter',\ntopDragExit:'dragexit',\ntopDragLeave:'dragleave',\ntopDragOver:'dragover',\ntopDragStart:'dragstart',\ntopDrop:'drop',\ntopFocus:'focus',\ntopInput:'input',\ntopKeyDown:'keydown',\ntopKeyPress:'keypress',\ntopKeyUp:'keyup',\ntopMouseDown:'mousedown',\ntopMouseMove:'mousemove',\ntopMouseOut:'mouseout',\ntopMouseOver:'mouseover',\ntopMouseUp:'mouseup',\ntopPaste:'paste',\ntopScroll:'scroll',\ntopSelectionChange:'selectionchange',\ntopTextInput:'textInput',\ntopTouchCancel:'touchcancel',\ntopTouchEnd:'touchend',\ntopTouchMove:'touchmove',\ntopTouchStart:'touchstart',\ntopWheel:'wheel'};\n\n\n\n\n\nvar topListenersIDKey='_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt){\n\n\nif(!Object.prototype.hasOwnProperty.call(mountAt,topListenersIDKey)){\nmountAt[topListenersIDKey] = reactTopListenersCounter++;\nalreadyListeningTo[mountAt[topListenersIDKey]] = {};}\n\nreturn alreadyListeningTo[mountAt[topListenersIDKey]];}\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactBrowserEventEmitter=assign({},ReactEventEmitterMixin,{\n\n\n\n\nReactEventListener:null,\n\ninjection:{\n\n\n\ninjectReactEventListener:function(ReactEventListener){\nReactEventListener.setHandleTopLevel(\nReactBrowserEventEmitter.handleTopLevel);\n\nReactBrowserEventEmitter.ReactEventListener = ReactEventListener;}},\n\n\n\n\n\n\n\n\nsetEnabled:function(enabled){\nif(ReactBrowserEventEmitter.ReactEventListener){\nReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);}},\n\n\n\n\n\n\nisEnabled:function(){\nreturn !!(\nReactBrowserEventEmitter.ReactEventListener && \nReactBrowserEventEmitter.ReactEventListener.isEnabled());},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nlistenTo:function(registrationName,contentDocumentHandle){\nvar mountAt=contentDocumentHandle;\nvar isListening=getListeningForDocument(mountAt);\nvar dependencies=EventPluginRegistry.\nregistrationNameDependencies[registrationName];\n\nvar topLevelTypes=EventConstants.topLevelTypes;\nfor(var i=0,l=dependencies.length;i < l;i++) {\nvar dependency=dependencies[i];\nif(!(\nisListening.hasOwnProperty(dependency) && \nisListening[dependency]))\n{\nif(dependency === topLevelTypes.topWheel){\nif(isEventSupported('wheel')){\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topWheel,\n'wheel',\nmountAt);}else \n\nif(isEventSupported('mousewheel')){\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topWheel,\n'mousewheel',\nmountAt);}else \n\n{\n\n\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topWheel,\n'DOMMouseScroll',\nmountAt);}}else \n\n\nif(dependency === topLevelTypes.topScroll){\n\nif(isEventSupported('scroll',true)){\nReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelTypes.topScroll,\n'scroll',\nmountAt);}else \n\n{\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topScroll,\n'scroll',\nReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);}}else \n\n\nif(dependency === topLevelTypes.topFocus || \ndependency === topLevelTypes.topBlur){\n\nif(isEventSupported('focus',true)){\nReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelTypes.topFocus,\n'focus',\nmountAt);\n\nReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelTypes.topBlur,\n'blur',\nmountAt);}else \n\nif(isEventSupported('focusin')){\n\n\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topFocus,\n'focusin',\nmountAt);\n\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelTypes.topBlur,\n'focusout',\nmountAt);}\n\n\n\n\nisListening[topLevelTypes.topBlur] = true;\nisListening[topLevelTypes.topFocus] = true;}else \nif(topEventMapping.hasOwnProperty(dependency)){\nReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ndependency,\ntopEventMapping[dependency],\nmountAt);}\n\n\n\nisListening[dependency] = true;}}},\n\n\n\n\ntrapBubbledEvent:function(topLevelType,handlerBaseName,handle){\nreturn ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\ntopLevelType,\nhandlerBaseName,\nhandle);},\n\n\n\ntrapCapturedEvent:function(topLevelType,handlerBaseName,handle){\nreturn ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\ntopLevelType,\nhandlerBaseName,\nhandle);},\n\n\n\n\n\n\n\n\n\n\n\nensureScrollValueMonitoring:function(){\nif(!isMonitoringScrollValue){\nvar refresh=ViewportMetrics.refreshScrollValues;\nReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\nisMonitoringScrollValue = true;}},\n\n\n\neventNameDispatchConfigs:EventPluginHub.eventNameDispatchConfigs,\n\nregistrationNameModules:EventPluginHub.registrationNameModules,\n\nputListener:EventPluginHub.putListener,\n\ngetListener:EventPluginHub.getListener,\n\ndeleteListener:EventPluginHub.deleteListener,\n\ndeleteAllListeners:EventPluginHub.deleteAllListeners});\n\n\n\nmodule.exports = ReactBrowserEventEmitter;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactBrowserEventEmitter\n * @typechecks static-only\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPluginRegistry = require('EventPluginRegistry');\nvar ReactEventEmitterMixin = require('ReactEventEmitterMixin');\nvar ViewportMetrics = require('ViewportMetrics');\n\nvar assign = require('Object.assign');\nvar isEventSupported = require('isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topBlur: 'blur',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topScroll: 'scroll',\n topSelectionChange: 'selectionchange',\n topTextInput: 'textInput',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * ReactBrowserEventEmitter.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function(ReactEventListener) {\n ReactEventListener.setHandleTopLevel(\n ReactBrowserEventEmitter.handleTopLevel\n );\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function(enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function() {\n return !!(\n ReactBrowserEventEmitter.ReactEventListener &&\n ReactBrowserEventEmitter.ReactEventListener.isEnabled()\n );\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function(registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.\n registrationNameDependencies[registrationName];\n\n var topLevelTypes = EventConstants.topLevelTypes;\n for (var i = 0, l = dependencies.length; i < l; i++) {\n var dependency = dependencies[i];\n if (!(\n isListening.hasOwnProperty(dependency) &&\n isListening[dependency]\n )) {\n if (dependency === topLevelTypes.topWheel) {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'wheel',\n mountAt\n );\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'mousewheel',\n mountAt\n );\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topWheel,\n 'DOMMouseScroll',\n mountAt\n );\n }\n } else if (dependency === topLevelTypes.topScroll) {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topScroll,\n 'scroll',\n mountAt\n );\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topScroll,\n 'scroll',\n ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE\n );\n }\n } else if (dependency === topLevelTypes.topFocus ||\n dependency === topLevelTypes.topBlur) {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topFocus,\n 'focus',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelTypes.topBlur,\n 'blur',\n mountAt\n );\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topFocus,\n 'focusin',\n mountAt\n );\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelTypes.topBlur,\n 'focusout',\n mountAt\n );\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening[topLevelTypes.topBlur] = true;\n isListening[topLevelTypes.topFocus] = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n dependency,\n topEventMapping[dependency],\n mountAt\n );\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n trapCapturedEvent: function(topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(\n topLevelType,\n handlerBaseName,\n handle\n );\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function() {\n if (!isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n },\n\n eventNameDispatchConfigs: EventPluginHub.eventNameDispatchConfigs,\n\n registrationNameModules: EventPluginHub.registrationNameModules,\n\n putListener: EventPluginHub.putListener,\n\n getListener: EventPluginHub.getListener,\n\n deleteListener: EventPluginHub.deleteListener,\n\n deleteAllListeners: EventPluginHub.deleteAllListeners\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ReactBrowserEventEmitter.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/ViewportMetrics.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ViewportMetrics={\n\ncurrentScrollLeft:0,\n\ncurrentScrollTop:0,\n\nrefreshScrollValues:function(scrollPosition){\nViewportMetrics.currentScrollLeft = scrollPosition.x;\nViewportMetrics.currentScrollTop = scrollPosition.y;}};\n\n\n\n\nmodule.exports = ViewportMetrics;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ViewportMetrics\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function(scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/ViewportMetrics.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/isEventSupported.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar useHasFeature;\nif(ExecutionEnvironment.canUseDOM){\nuseHasFeature = \ndocument.implementation && \ndocument.implementation.hasFeature && \n\n\ndocument.implementation.hasFeature('','') !== true;}\n\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix,capture){\nif(!ExecutionEnvironment.canUseDOM || \ncapture && !('addEventListener' in document)){\nreturn false;}\n\n\nvar eventName='on' + eventNameSuffix;\nvar isSupported=(eventName in document);\n\nif(!isSupported){\nvar element=document.createElement('div');\nelement.setAttribute(eventName,'return;');\nisSupported = typeof element[eventName] === 'function';}\n\n\nif(!isSupported && useHasFeature && eventNameSuffix === 'wheel'){\n\nisSupported = document.implementation.hasFeature('Events.wheel','3.0');}\n\n\nreturn isSupported;}\n\n\nmodule.exports = isEventSupported;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/isEventSupported.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/server/ReactMarkupChecksum.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar adler32=require('adler32');\n\nvar ReactMarkupChecksum={\nCHECKSUM_ATTR_NAME:'data-react-checksum',\n\n\n\n\n\naddChecksumToMarkup:function(markup){\nvar checksum=adler32(markup);\nreturn markup.replace(\n'>',\n' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\">');},\n\n\n\n\n\n\n\n\ncanReuseMarkup:function(markup,element){\nvar existingChecksum=element.getAttribute(\nReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\nexistingChecksum = existingChecksum && parseInt(existingChecksum,10);\nvar markupChecksum=adler32(markup);\nreturn markupChecksum === existingChecksum;}};\n\n\n\nmodule.exports = ReactMarkupChecksum;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactMarkupChecksum\n */\n\n'use strict';\n\nvar adler32 = require('adler32');\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function(markup) {\n var checksum = adler32(markup);\n return markup.replace(\n '>',\n ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\">'\n );\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function(markup, element) {\n var existingChecksum = element.getAttribute(\n ReactMarkupChecksum.CHECKSUM_ATTR_NAME\n );\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/server/ReactMarkupChecksum.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/adler32.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar MOD=65521;\n\n\n\n\n\nfunction adler32(data){\nvar a=1;\nvar b=0;\nfor(var i=0;i < data.length;i++) {\na = (a + data.charCodeAt(i)) % MOD;\nb = (b + a) % MOD;}\n\nreturn a | b << 16;}\n\n\nmodule.exports = adler32;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule adler32\n */\n\n/* jslint bitwise:true */\n\n'use strict';\n\nvar MOD = 65521;\n\n// This is a clean-room implementation of adler32 designed for detecting\n// if markup is not what we expect it to be. It does not need to be\n// cryptographically strong, only reasonably good at detecting if markup\n// generated on the server is different than that on the client.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n for (var i = 0; i < data.length; i++) {\n a = (a + data.charCodeAt(i)) % MOD;\n b = (b + a) % MOD;\n }\n return a | (b << 16);\n}\n\nmodule.exports = adler32;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/adler32.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/containsNode.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nisTextNode=require('isTextNode');\n\n\n\n\n\n\n\n\n\n\nfunction containsNode(outerNode,innerNode){\nif(!outerNode || !innerNode){\nreturn false;}else \nif(outerNode === innerNode){\nreturn true;}else \nif(isTextNode(outerNode)){\nreturn false;}else \nif(isTextNode(innerNode)){\nreturn containsNode(outerNode,innerNode.parentNode);}else \nif(outerNode.contains){\nreturn outerNode.contains(innerNode);}else \nif(outerNode.compareDocumentPosition){\nreturn !!(outerNode.compareDocumentPosition(innerNode) & 16);}else \n{\nreturn false;}}\n\n\n\nmodule.exports = containsNode;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule containsNode\n * @typechecks\n */\n\nvar isTextNode = require('isTextNode');\n\n/*jslint bitwise:true */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n *\n * @param {?DOMNode} outerNode Outer DOM node.\n * @param {?DOMNode} innerNode Inner DOM node.\n * @return {boolean} True if `outerNode` contains or is `innerNode`.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if (outerNode.contains) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/containsNode.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isTextNode.js":{"data":{"code":"var \n\n\n\n\n\n\n\n\n\n\n\nisNode=require('isNode');\n\n\n\n\n\nfunction isTextNode(object){\nreturn isNode(object) && object.nodeType == 3;}\n\n\nmodule.exports = isTextNode;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isTextNode\n * @typechecks\n */\n\nvar isNode = require('isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/vendor/core/dom/isTextNode.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/getReactRootElementInContainer.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar DOC_NODE_TYPE=9;\n\n\n\n\n\n\nfunction getReactRootElementInContainer(container){\nif(!container){\nreturn null;}\n\n\nif(container.nodeType === DOC_NODE_TYPE){\nreturn container.documentElement;}else \n{\nreturn container.firstChild;}}\n\n\n\nmodule.exports = getReactRootElementInContainer;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule getReactRootElementInContainer\n */\n\n'use strict';\n\nvar DOC_NODE_TYPE = 9;\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nmodule.exports = getReactRootElementInContainer;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/getReactRootElementInContainer.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/setInnerHTML.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ExecutionEnvironment=require('ExecutionEnvironment');\n\nvar WHITESPACE_TEST=/^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST=/<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\n\n\n\n\n\n\n\n\nvar setInnerHTML=function(node,html){\nnode.innerHTML = html;};\n\n\n\nif(typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction){\nsetInnerHTML = function(node,html){\nMSApp.execUnsafeLocalFunction(function(){\nnode.innerHTML = html;});};}\n\n\n\n\nif(ExecutionEnvironment.canUseDOM){\n\n\n\n\n\n\nvar testElement=document.createElement('div');\ntestElement.innerHTML = ' ';\nif(testElement.innerHTML === ''){\nsetInnerHTML = function(node,html){\n\n\n\n\n\nif(node.parentNode){\nnode.parentNode.replaceChild(node,node);}\n\n\n\n\n\n\nif(WHITESPACE_TEST.test(html) || \nhtml[0] === '<' && NONVISIBLE_TEST.test(html)){\n\n\nnode.innerHTML = '\\uFEFF' + html;\n\n\n\nvar textNode=node.firstChild;\nif(textNode.data.length === 1){\nnode.removeChild(textNode);}else \n{\ntextNode.deleteData(0,1);}}else \n\n{\nnode.innerHTML = html;}};}}\n\n\n\n\n\nmodule.exports = setInnerHTML;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule setInnerHTML\n */\n\n/* globals MSApp */\n\n'use strict';\n\nvar ExecutionEnvironment = require('ExecutionEnvironment');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = function(node, html) {\n node.innerHTML = html;\n};\n\n// Win8 apps: Allow all html to be inserted\nif (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n setInnerHTML = function(node, html) {\n MSApp.execUnsafeLocalFunction(function() {\n node.innerHTML = html;\n });\n };\n}\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function(node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) ||\n html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n node.innerHTML = '\\uFEFF' + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n}\n\nmodule.exports = setInnerHTML;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/setInnerHTML.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppStateIOS/AppStateIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar NativeModules=require('NativeModules');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTAppState=NativeModules.AppState;\n\nvar logError=require('logError');\nvar invariant=require('invariant');\n\nvar _eventHandlers={\nchange:new Map(),\nmemoryWarning:new Map()};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar AppStateIOS={\n\n\n\n\n\naddEventListener:function(\ntype,\nhandler)\n{\ninvariant(\n['change','memoryWarning'].indexOf(type) !== -1,\n'Trying to subscribe to unknown event: \"%s\"',type);\n\nif(type === 'change'){\n_eventHandlers[type].set(handler,RCTDeviceEventEmitter.addListener(\n'appStateDidChange',\nfunction(appStateData){\nhandler(appStateData.app_state);}));}else \n\n\nif(type === 'memoryWarning'){\n_eventHandlers[type].set(handler,RCTDeviceEventEmitter.addListener(\n'memoryWarning',\nhandler));}},\n\n\n\n\n\n\n\nremoveEventListener:function(\ntype,\nhandler)\n{\ninvariant(\n['change','memoryWarning'].indexOf(type) !== -1,\n'Trying to remove listener for unknown event: \"%s\"',type);\n\nif(!_eventHandlers[type].has(handler)){\nreturn;}\n\n_eventHandlers[type].get(handler).remove();\n_eventHandlers[type].delete(handler);},\n\n\n\n\n\n\ncurrentState:'active'};\n\n\n\nRCTDeviceEventEmitter.addListener(\n'appStateDidChange',\nfunction(appStateData){\nAppStateIOS.currentState = appStateData.app_state;});\n\n\n\nRCTAppState.getCurrentAppState(\nfunction(appStateData){\nAppStateIOS.currentState = appStateData.app_state;},\n\nlogError);\n\n\nmodule.exports = AppStateIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule AppStateIOS\n * @flow\n */\n'use strict';\n\nvar Map = require('Map');\nvar NativeModules = require('NativeModules');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTAppState = NativeModules.AppState;\n\nvar logError = require('logError');\nvar invariant = require('invariant');\n\nvar _eventHandlers = {\n change: new Map(),\n memoryWarning: new Map(),\n};\n\n/**\n * `AppStateIOS` can tell you if the app is in the foreground or background,\n * and notify you when the state changes.\n *\n * AppStateIOS is frequently used to determine the intent and proper behavior when\n * handling push notifications.\n *\n * ### iOS App States\n *\n * - `active` - The app is running in the foreground\n * - `background` - The app is running in the background. The user is either\n * in another app or on the home screen\n * - `inactive` - This is a transition state that currently never happens for\n * typical React Native apps.\n *\n * For more information, see\n * [Apple's documentation](https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/TheAppLifeCycle/TheAppLifeCycle.html)\n *\n * ### Basic Usage\n *\n * To see the current state, you can check `AppStateIOS.currentState`, which\n * will be kept up-to-date. However, `currentState` will be null at launch\n * while `AppStateIOS` retrieves it over the bridge.\n *\n * ```\n * getInitialState: function() {\n * return {\n * currentAppState: AppStateIOS.currentState,\n * };\n * },\n * componentDidMount: function() {\n * AppStateIOS.addEventListener('change', this._handleAppStateChange);\n * },\n * componentWillUnmount: function() {\n * AppStateIOS.removeEventListener('change', this._handleAppStateChange);\n * },\n * _handleAppStateChange: function(currentAppState) {\n * this.setState({ currentAppState, });\n * },\n * render: function() {\n * return (\n * <Text>Current state is: {this.state.currentAppState}</Text>\n * );\n * },\n * ```\n *\n * This example will only ever appear to say \"Current state is: active\" because\n * the app is only visible to the user when in the `active` state, and the null\n * state will happen only momentarily.\n */\n\nvar AppStateIOS = {\n\n /**\n * Add a handler to AppState changes by listening to the `change` event type\n * and providing the handler\n */\n addEventListener: function(\n type: string,\n handler: Function\n ) {\n invariant(\n ['change', 'memoryWarning'].indexOf(type) !== -1,\n 'Trying to subscribe to unknown event: \"%s\"', type\n );\n if (type === 'change') {\n _eventHandlers[type].set(handler, RCTDeviceEventEmitter.addListener(\n 'appStateDidChange',\n (appStateData) => {\n handler(appStateData.app_state);\n }\n ));\n } else if (type === 'memoryWarning') {\n _eventHandlers[type].set(handler, RCTDeviceEventEmitter.addListener(\n 'memoryWarning',\n handler\n ));\n }\n },\n\n /**\n * Remove a handler by passing the `change` event type and the handler\n */\n removeEventListener: function(\n type: string,\n handler: Function\n ) {\n invariant(\n ['change', 'memoryWarning'].indexOf(type) !== -1,\n 'Trying to remove listener for unknown event: \"%s\"', type\n );\n if (!_eventHandlers[type].has(handler)) {\n return;\n }\n _eventHandlers[type].get(handler).remove();\n _eventHandlers[type].delete(handler);\n },\n\n // TODO: getCurrentAppState callback seems to be called at a really late stage\n // after app launch. Trying to get currentState when mounting App component\n // will likely to have the initial value here.\n // Initialize to 'active' instead of null.\n currentState: ('active' : ?string),\n\n};\n\nRCTDeviceEventEmitter.addListener(\n 'appStateDidChange',\n (appStateData) => {\n AppStateIOS.currentState = appStateData.app_state;\n }\n);\n\nRCTAppState.getCurrentAppState(\n (appStateData) => {\n AppStateIOS.currentState = appStateData.app_state;\n },\n logError\n);\n\nmodule.exports = AppStateIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/AppStateIOS/AppStateIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CameraRoll/CameraRoll.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactPropTypes=require('ReactPropTypes');\nvar RCTCameraRollManager=require('NativeModules').CameraRollManager;\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar deepFreezeAndThrowOnMutationInDev=\nrequire('deepFreezeAndThrowOnMutationInDev');\nvar invariant=require('invariant');\n\nvar GROUP_TYPES_OPTIONS=[\n'Album',\n'All',\n'Event',\n'Faces',\n'Library',\n'PhotoStream',\n'SavedPhotos'];\n\n\nvar ASSET_TYPE_OPTIONS=[\n'All',\n'Videos',\n'Photos'];\n\n\n\n\ndeepFreezeAndThrowOnMutationInDev(GROUP_TYPES_OPTIONS);\ndeepFreezeAndThrowOnMutationInDev(ASSET_TYPE_OPTIONS);\n\n\n\n\nvar getPhotosParamChecker=createStrictShapeTypeChecker({\n\n\n\n\nfirst:ReactPropTypes.number.isRequired,\n\n\n\n\n\nafter:ReactPropTypes.string,\n\n\n\n\ngroupTypes:ReactPropTypes.oneOf(GROUP_TYPES_OPTIONS),\n\n\n\n\n\ngroupName:ReactPropTypes.string,\n\n\n\n\nassetType:ReactPropTypes.oneOf(ASSET_TYPE_OPTIONS),\n\n\n\n\nmimeTypes:ReactPropTypes.arrayOf(ReactPropTypes.string)});\n\n\n\n\n\nvar getPhotosReturnChecker=createStrictShapeTypeChecker({\nedges:ReactPropTypes.arrayOf(createStrictShapeTypeChecker({\nnode:createStrictShapeTypeChecker({\ntype:ReactPropTypes.string.isRequired,\ngroup_name:ReactPropTypes.string.isRequired,\nimage:createStrictShapeTypeChecker({\nuri:ReactPropTypes.string.isRequired,\nheight:ReactPropTypes.number.isRequired,\nwidth:ReactPropTypes.number.isRequired,\nisStored:ReactPropTypes.bool}).\nisRequired,\ntimestamp:ReactPropTypes.number.isRequired,\nlocation:createStrictShapeTypeChecker({\nlatitude:ReactPropTypes.number,\nlongitude:ReactPropTypes.number,\naltitude:ReactPropTypes.number,\nheading:ReactPropTypes.number,\nspeed:ReactPropTypes.number})}).\n\nisRequired})).\nisRequired,\npage_info:createStrictShapeTypeChecker({\nhas_next_page:ReactPropTypes.bool.isRequired,\nstart_cursor:ReactPropTypes.string,\nend_cursor:ReactPropTypes.string}).\nisRequired});var \n\n\nCameraRoll=(function(){function CameraRoll(){_classCallCheck(this,CameraRoll);}_createClass(CameraRoll,null,[{key:'saveImageWithTag',value:\n\n\n\n\n\n\n\n\n\n\n\nfunction saveImageWithTag(tag,successCallback,errorCallback){\ninvariant(\ntypeof tag === 'string',\n'CameraRoll.saveImageWithTag tag must be a valid string.');\n\nRCTCameraRollManager.saveImageWithTag(\ntag,\nfunction(imageTag){\nsuccessCallback && successCallback(imageTag);},\n\nfunction(errorMessage){\nerrorCallback && errorCallback(errorMessage);});}},{key:'getPhotos',value:\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getPhotos(params,callback,errorCallback){\nvar metaCallback=callback;\nif(__DEV__){\ngetPhotosParamChecker({params:params},'params','CameraRoll.getPhotos');\ninvariant(\ntypeof callback === 'function',\n'CameraRoll.getPhotos callback must be a valid function.');\n\ninvariant(\ntypeof errorCallback === 'function',\n'CameraRoll.getPhotos errorCallback must be a valid function.');}\n\n\nif(__DEV__){\nmetaCallback = function(response){\ngetPhotosReturnChecker(\n{response:response},\n'response',\n'CameraRoll.getPhotos callback');\n\ncallback(response);};}\n\n\nRCTCameraRollManager.getPhotos(params,metaCallback,errorCallback);}}]);return CameraRoll;})();\n\n\n\nCameraRoll.GroupTypesOptions = GROUP_TYPES_OPTIONS;\nCameraRoll.AssetTypeOptions = ASSET_TYPE_OPTIONS;\n\nmodule.exports = CameraRoll;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule CameraRoll\n * @flow\n */\n'use strict';\n\nvar ReactPropTypes = require('ReactPropTypes');\nvar RCTCameraRollManager = require('NativeModules').CameraRollManager;\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar deepFreezeAndThrowOnMutationInDev =\n require('deepFreezeAndThrowOnMutationInDev');\nvar invariant = require('invariant');\n\nvar GROUP_TYPES_OPTIONS = [\n 'Album',\n 'All',\n 'Event',\n 'Faces',\n 'Library',\n 'PhotoStream',\n 'SavedPhotos', // default\n];\n\nvar ASSET_TYPE_OPTIONS = [\n 'All',\n 'Videos',\n 'Photos', // default\n];\n\n\n// Flow treats Object and Array as disjoint types, currently.\ndeepFreezeAndThrowOnMutationInDev((GROUP_TYPES_OPTIONS: any));\ndeepFreezeAndThrowOnMutationInDev((ASSET_TYPE_OPTIONS: any));\n\n/**\n * Shape of the param arg for the `getPhotos` function.\n */\nvar getPhotosParamChecker = createStrictShapeTypeChecker({\n /**\n * The number of photos wanted in reverse order of the photo application\n * (i.e. most recent first for SavedPhotos).\n */\n first: ReactPropTypes.number.isRequired,\n\n /**\n * A cursor that matches `page_info { end_cursor }` returned from a previous\n * call to `getPhotos`\n */\n after: ReactPropTypes.string,\n\n /**\n * Specifies which group types to filter the results to.\n */\n groupTypes: ReactPropTypes.oneOf(GROUP_TYPES_OPTIONS),\n\n /**\n * Specifies filter on group names, like 'Recent Photos' or custom album\n * titles.\n */\n groupName: ReactPropTypes.string,\n\n /**\n * Specifies filter on asset type\n */\n assetType: ReactPropTypes.oneOf(ASSET_TYPE_OPTIONS),\n\n /**\n * Filter by mimetype (e.g. image/jpeg).\n */\n mimeTypes: ReactPropTypes.arrayOf(ReactPropTypes.string),\n});\n\n/**\n * Shape of the return value of the `getPhotos` function.\n */\nvar getPhotosReturnChecker = createStrictShapeTypeChecker({\n edges: ReactPropTypes.arrayOf(createStrictShapeTypeChecker({\n node: createStrictShapeTypeChecker({\n type: ReactPropTypes.string.isRequired,\n group_name: ReactPropTypes.string.isRequired,\n image: createStrictShapeTypeChecker({\n uri: ReactPropTypes.string.isRequired,\n height: ReactPropTypes.number.isRequired,\n width: ReactPropTypes.number.isRequired,\n isStored: ReactPropTypes.bool,\n }).isRequired,\n timestamp: ReactPropTypes.number.isRequired,\n location: createStrictShapeTypeChecker({\n latitude: ReactPropTypes.number,\n longitude: ReactPropTypes.number,\n altitude: ReactPropTypes.number,\n heading: ReactPropTypes.number,\n speed: ReactPropTypes.number,\n }),\n }).isRequired,\n })).isRequired,\n page_info: createStrictShapeTypeChecker({\n has_next_page: ReactPropTypes.bool.isRequired,\n start_cursor: ReactPropTypes.string,\n end_cursor: ReactPropTypes.string,\n }).isRequired,\n});\n\nclass CameraRoll {\n\n static GroupTypesOptions: Array<string>;\n static AssetTypeOptions: Array<string>;\n /**\n * Saves the image with tag `tag` to the camera roll.\n *\n * @param {string} tag - Can be any of the three kinds of tags we accept:\n * 1. URL\n * 2. assets-library tag\n * 3. tag returned from storing an image in memory\n */\n static saveImageWithTag(tag, successCallback, errorCallback) {\n invariant(\n typeof tag === 'string',\n 'CameraRoll.saveImageWithTag tag must be a valid string.'\n );\n RCTCameraRollManager.saveImageWithTag(\n tag,\n (imageTag) => {\n successCallback && successCallback(imageTag);\n },\n (errorMessage) => {\n errorCallback && errorCallback(errorMessage);\n });\n }\n\n /**\n * Invokes `callback` with photo identifier objects from the local camera\n * roll of the device matching shape defined by `getPhotosReturnChecker`.\n *\n * @param {object} params - See `getPhotosParamChecker`.\n * @param {function} callback - Invoked with arg of shape defined by\n * `getPhotosReturnChecker` on success.\n * @param {function} errorCallback - Invoked with error message on error.\n */\n static getPhotos(params, callback, errorCallback) {\n var metaCallback = callback;\n if (__DEV__) {\n getPhotosParamChecker({params}, 'params', 'CameraRoll.getPhotos');\n invariant(\n typeof callback === 'function',\n 'CameraRoll.getPhotos callback must be a valid function.'\n );\n invariant(\n typeof errorCallback === 'function',\n 'CameraRoll.getPhotos errorCallback must be a valid function.'\n );\n }\n if (__DEV__) {\n metaCallback = (response) => {\n getPhotosReturnChecker(\n {response},\n 'response',\n 'CameraRoll.getPhotos callback'\n );\n callback(response);\n };\n }\n RCTCameraRollManager.getPhotos(params, metaCallback, errorCallback);\n }\n}\n\nCameraRoll.GroupTypesOptions = GROUP_TYPES_OPTIONS;\nCameraRoll.AssetTypeOptions = ASSET_TYPE_OPTIONS;\n\nmodule.exports = CameraRoll;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/CameraRoll/CameraRoll.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImagePickerIOS.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTImagePicker=require('NativeModules').ImagePickerIOS;\n\nvar ImagePickerIOS={\ncanRecordVideos:function(callback){\nreturn RCTImagePicker.canRecordVideos(callback);},\n\ncanUseCamera:function(callback){\nreturn RCTImagePicker.canUseCamera(callback);},\n\nopenCameraDialog:function(config,successCallback,cancelCallback){\nconfig = _extends({\nvideoMode:false},\nconfig);\n\nreturn RCTImagePicker.openCameraDialog(config,successCallback,cancelCallback);},\n\nopenSelectDialog:function(config,successCallback,cancelCallback){\nconfig = _extends({\nshowImages:true,\nshowVideos:false},\nconfig);\n\nreturn RCTImagePicker.openSelectDialog(config,successCallback,cancelCallback);}};\n\n\n\nmodule.exports = ImagePickerIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ImagePickerIOS\n * @flow\n */\n'use strict';\n\nvar RCTImagePicker = require('NativeModules').ImagePickerIOS;\n\nvar ImagePickerIOS = {\n canRecordVideos: function(callback: Function) {\n return RCTImagePicker.canRecordVideos(callback);\n },\n canUseCamera: function(callback: Function) {\n return RCTImagePicker.canUseCamera(callback);\n },\n openCameraDialog: function(config: Object, successCallback: Function, cancelCallback: Function) {\n config = {\n videoMode: false,\n ...config,\n }\n return RCTImagePicker.openCameraDialog(config, successCallback, cancelCallback);\n },\n openSelectDialog: function(config: Object, successCallback: Function, cancelCallback: Function) {\n config = {\n showImages: true,\n showVideos: false,\n ...config,\n }\n return RCTImagePicker.openSelectDialog(config, successCallback, cancelCallback);\n },\n};\n\nmodule.exports = ImagePickerIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Image/ImagePickerIOS.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/LayoutAnimation.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar PropTypes=require('ReactPropTypes');\nvar RCTUIManager=require('NativeModules').UIManager;\n\nvar createStrictShapeTypeChecker=require('createStrictShapeTypeChecker');\nvar keyMirror=require('keyMirror');\n\nvar TypesEnum={\nspring:true,\nlinear:true,\neaseInEaseOut:true,\neaseIn:true,\neaseOut:true,\nkeyboard:true};\n\nvar Types=keyMirror(TypesEnum);\n\nvar PropertiesEnum={\nopacity:true,\nscaleXY:true};\n\nvar Properties=keyMirror(PropertiesEnum);\n\nvar animChecker=createStrictShapeTypeChecker({\nduration:PropTypes.number,\ndelay:PropTypes.number,\nspringDamping:PropTypes.number,\ninitialVelocity:PropTypes.number,\ntype:PropTypes.oneOf(\nObject.keys(Types)),\n\nproperty:PropTypes.oneOf(\nObject.keys(Properties))});\n\n\n\n\n\n\n\n\n\n\n\n\nvar configChecker=createStrictShapeTypeChecker({\nduration:PropTypes.number.isRequired,\ncreate:animChecker,\nupdate:animChecker,\ndelete:animChecker});\n\n\n\n\n\n\n\n\n\nfunction configureNext(config,onAnimationDidEnd,onError){\nconfigChecker({config:config},'config','LayoutAnimation.configureNext');\nRCTUIManager.configureNextLayoutAnimation(config,onAnimationDidEnd,onError);}\n\n\nfunction create(duration,type,creationProp){\nreturn {\nduration:duration,\ncreate:{\ntype:type,\nproperty:creationProp},\n\nupdate:{\ntype:type}};}\n\n\n\n\nvar Presets={\neaseInEaseOut:create(\n300,Types.easeInEaseOut,Properties.opacity),\n\nlinear:create(\n500,Types.linear,Properties.opacity),\n\nspring:{\nduration:700,\ncreate:{\ntype:Types.linear,\nproperty:Properties.opacity},\n\nupdate:{\ntype:Types.spring,\nspringDamping:0.4}}};\n\n\n\n\nvar LayoutAnimation={\nconfigureNext:configureNext,\ncreate:create,\nTypes:Types,\nProperties:Properties,\nconfigChecker:configChecker,\nPresets:Presets,\neaseInEaseOut:configureNext.bind(\nnull,Presets.easeInEaseOut),\n\nlinear:configureNext.bind(\nnull,Presets.linear),\n\nspring:configureNext.bind(\nnull,Presets.spring)};\n\n\n\nmodule.exports = LayoutAnimation;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LayoutAnimation\n * @flow\n */\n'use strict';\n\nvar PropTypes = require('ReactPropTypes');\nvar RCTUIManager = require('NativeModules').UIManager;\n\nvar createStrictShapeTypeChecker = require('createStrictShapeTypeChecker');\nvar keyMirror = require('keyMirror');\n\nvar TypesEnum = {\n spring: true,\n linear: true,\n easeInEaseOut: true,\n easeIn: true,\n easeOut: true,\n keyboard: true,\n};\nvar Types = keyMirror(TypesEnum);\n\nvar PropertiesEnum = {\n opacity: true,\n scaleXY: true,\n};\nvar Properties = keyMirror(PropertiesEnum);\n\nvar animChecker = createStrictShapeTypeChecker({\n duration: PropTypes.number,\n delay: PropTypes.number,\n springDamping: PropTypes.number,\n initialVelocity: PropTypes.number,\n type: PropTypes.oneOf(\n Object.keys(Types)\n ),\n property: PropTypes.oneOf( // Only applies to create/delete\n Object.keys(Properties)\n ),\n});\n\ntype Anim = {\n duration?: number;\n delay?: number;\n springDamping?: number;\n initialVelocity?: number;\n type?: $Enum<typeof TypesEnum>;\n property?: $Enum<typeof PropertiesEnum>;\n}\n\nvar configChecker = createStrictShapeTypeChecker({\n duration: PropTypes.number.isRequired,\n create: animChecker,\n update: animChecker,\n delete: animChecker,\n});\n\ntype Config = {\n duration: number;\n create?: Anim;\n update?: Anim;\n delete?: Anim;\n}\n\nfunction configureNext(config: Config, onAnimationDidEnd?: Function, onError?: Function) {\n configChecker({config}, 'config', 'LayoutAnimation.configureNext');\n RCTUIManager.configureNextLayoutAnimation(config, onAnimationDidEnd, onError);\n}\n\nfunction create(duration: number, type, creationProp): Config {\n return {\n duration,\n create: {\n type,\n property: creationProp,\n },\n update: {\n type,\n },\n };\n}\n\nvar Presets = {\n easeInEaseOut: create(\n 300, Types.easeInEaseOut, Properties.opacity\n ),\n linear: create(\n 500, Types.linear, Properties.opacity\n ),\n spring: {\n duration: 700,\n create: {\n type: Types.linear,\n property: Properties.opacity,\n },\n update: {\n type: Types.spring,\n springDamping: 0.4,\n },\n },\n};\n\nvar LayoutAnimation = {\n configureNext,\n create,\n Types,\n Properties,\n configChecker: configChecker,\n Presets,\n easeInEaseOut: configureNext.bind(\n null, Presets.easeInEaseOut\n ),\n linear: configureNext.bind(\n null, Presets.linear\n ),\n spring: configureNext.bind(\n null, Presets.spring\n ),\n};\n\nmodule.exports = LayoutAnimation;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Animation/LayoutAnimation.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/LinkingIOS/LinkingIOS.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTLinkingManager=require('NativeModules').LinkingManager;\nvar Map=require('Map');\nvar invariant=require('invariant');\n\nvar _notifHandlers=new Map();\nvar _initialURL=RCTLinkingManager && \nRCTLinkingManager.initialURL;\n\nvar DEVICE_NOTIF_EVENT='openURL';var \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nLinkingIOS=(function(){function LinkingIOS(){_classCallCheck(this,LinkingIOS);}_createClass(LinkingIOS,null,[{key:'addEventListener',value:\n\n\n\n\nfunction addEventListener(type,handler){\ninvariant(\ntype === 'url',\n'LinkingIOS only supports `url` events');\n\nvar listener=RCTDeviceEventEmitter.addListener(\nDEVICE_NOTIF_EVENT,\nhandler);\n\n_notifHandlers.set(handler,listener);}},{key:'removeEventListener',value:\n\n\n\n\n\nfunction removeEventListener(type,handler){\ninvariant(\ntype === 'url',\n'LinkingIOS only supports `url` events');\n\nvar listener=_notifHandlers.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_notifHandlers.delete(handler);}},{key:'openURL',value:\n\n\n\n\n\nfunction openURL(url){\ninvariant(\ntypeof url === 'string',\n'Invalid url: should be a string');\n\nRCTLinkingManager.openURL(url);}},{key:'canOpenURL',value:\n\n\n\n\n\n\nfunction canOpenURL(url,callback){\ninvariant(\ntypeof url === 'string',\n'Invalid url: should be a string');\n\ninvariant(\ntypeof callback === 'function',\n'A valid callback function is required');\n\nRCTLinkingManager.canOpenURL(url,callback);}},{key:'popInitialURL',value:\n\n\n\n\n\n\nfunction popInitialURL(){\nvar initialURL=_initialURL;\n_initialURL = null;\nreturn initialURL;}}]);return LinkingIOS;})();\n\n\n\nmodule.exports = LinkingIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LinkingIOS\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTLinkingManager = require('NativeModules').LinkingManager;\nvar Map = require('Map');\nvar invariant = require('invariant');\n\nvar _notifHandlers = new Map();\nvar _initialURL = RCTLinkingManager &&\n RCTLinkingManager.initialURL;\n\nvar DEVICE_NOTIF_EVENT = 'openURL';\n\n/**\n * `LinkingIOS` gives you a general interface to interact with both, incoming\n * and outgoing app links.\n *\n * ### Basic Usage\n *\n * #### Handling deep links\n *\n * If your app was launched from a external url registered to your app you can\n * access and handle it from any component you want with\n *\n * ```\n * componentDidMount() {\n * var url = LinkingIOS.popInitialURL();\n * }\n * ```\n *\n * In case you also want to listen to incoming app links during your app's\n * execution you'll need to add the following lines to you `*AppDelegate.m`:\n *\n * ```\n * - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {\n * return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];\n * }\n * ```\n *\n * And then on your React component you'll be able to listen to the events on\n * `LinkingIOS` as follows\n *\n * ```\n * componentDidMount() {\n * LinkingIOS.addEventListener('url', this._handleOpenURL);\n * },\n * componentWillUnmount() {\n * LinkingIOS.removeEventListener('url', this._handleOpenURL);\n * },\n * _handleOpenURL(event) {\n * console.log(event.url);\n * }\n * ```\n *\n * #### Triggering App links\n *\n * To trigger an app link (browser, email or custom schemas) you call\n *\n * ```\n * LinkingIOS.openURL(url)\n * ```\n *\n * If you want to check if any installed app can handle a given url beforehand you can call\n * ```\n * LinkingIOS.canOpenURL(url, (supported) => {\n * if (!supported) {\n * AlertIOS.alert('Can\\'t handle url: ' + url);\n * } else {\n * LinkingIOS.openURL(url);\n * }\n * });\n * ```\n */\nclass LinkingIOS {\n /**\n * Add a handler to LinkingIOS changes by listening to the `url` event type\n * and providing the handler\n */\n static addEventListener(type: string, handler: Function) {\n invariant(\n type === 'url',\n 'LinkingIOS only supports `url` events'\n );\n var listener = RCTDeviceEventEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n handler\n );\n _notifHandlers.set(handler, listener);\n }\n\n /**\n * Remove a handler by passing the `url` event type and the handler\n */\n static removeEventListener(type: string, handler: Function ) {\n invariant(\n type === 'url',\n 'LinkingIOS only supports `url` events'\n );\n var listener = _notifHandlers.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(handler);\n }\n\n /**\n * Try to open the given `url` with any of the installed apps.\n */\n static openURL(url: string) {\n invariant(\n typeof url === 'string',\n 'Invalid url: should be a string'\n );\n RCTLinkingManager.openURL(url);\n }\n\n /**\n * Determine wether or not the an installed app can handle a given `url`\n * The callback function will be called with `bool supported` as the only argument\n */\n static canOpenURL(url: string, callback: Function) {\n invariant(\n typeof url === 'string',\n 'Invalid url: should be a string'\n );\n invariant(\n typeof callback === 'function',\n 'A valid callback function is required'\n );\n RCTLinkingManager.canOpenURL(url, callback);\n }\n\n /**\n * If the app launch was triggered by an app link, it will pop the link url,\n * otherwise it will return `null`\n */\n static popInitialURL(): ?string {\n var initialURL = _initialURL;\n _initialURL = null;\n return initialURL;\n }\n}\n\nmodule.exports = LinkingIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/LinkingIOS/LinkingIOS.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/NetInfo.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar NativeModules=require('NativeModules');\nvar Platform=require('Platform');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\n\nif(Platform.OS === 'ios'){\nvar RCTNetInfo=NativeModules.Reachability;}else \nif(Platform.OS === 'android'){\nvar RCTNetInfo=NativeModules.NetInfo;}\n\n\nvar DEVICE_REACHABILITY_EVENT='reachabilityDidChange';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _subscriptions=new Map();\n\nvar NetInfo={\naddEventListener:function(\neventName,\nhandler)\n{\nvar listener=RCTDeviceEventEmitter.addListener(\nDEVICE_REACHABILITY_EVENT,\nfunction(appStateData){\nhandler(appStateData.network_reachability);});\n\n\n_subscriptions.set(handler,listener);},\n\n\nremoveEventListener:function(\neventName,\nhandler)\n{\nvar listener=_subscriptions.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_subscriptions.delete(handler);},\n\n\nfetch:function(){\nreturn new Promise(function(resolve,reject){\nRCTNetInfo.getCurrentReachability(\nfunction(resp){\nresolve(resp.network_reachability);},\n\nreject);});},\n\n\n\n\nisConnected:{},\n\nisConnectionMetered:{}};\n\n\nif(Platform.OS === 'ios'){\nvar _isConnected=function(\nreachability)\n{\nreturn reachability !== 'none' && \nreachability !== 'unknown';};}else \n\nif(Platform.OS === 'android'){\nvar _isConnected=function(\nconnectionType)\n{\nreturn connectionType !== 'NONE' && connectionType !== 'UNKNOWN';};}\n\n\n\nvar _isConnectedSubscriptions=new Map();\n\nNetInfo.isConnected = {\naddEventListener:function(\neventName,\nhandler)\n{\nvar listener=function(connection){\nhandler(_isConnected(connection));};\n\n_isConnectedSubscriptions.set(handler,listener);\nNetInfo.addEventListener(\neventName,\nlistener);},\n\n\n\nremoveEventListener:function(\neventName,\nhandler)\n{\nvar listener=_isConnectedSubscriptions.get(handler);\nNetInfo.removeEventListener(\neventName,\nlistener);\n\n_isConnectedSubscriptions.delete(handler);},\n\n\nfetch:function(){\nreturn NetInfo.fetch().then(\nfunction(connection){return _isConnected(connection);});}};\n\n\n\n\nif(Platform.OS === 'android'){\nNetInfo.isConnectionMetered = function(callback){\nRCTNetInfo.isConnectionMetered(function(_isMetered){\ncallback(_isMetered);});};}\n\n\n\n\nmodule.exports = NetInfo;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule NetInfo\n * @flow\n */\n'use strict';\n\nvar Map = require('Map');\nvar NativeModules = require('NativeModules');\nvar Platform = require('Platform');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\n\nif (Platform.OS === 'ios') {\n var RCTNetInfo = NativeModules.Reachability;\n} else if (Platform.OS === 'android') {\n var RCTNetInfo = NativeModules.NetInfo;\n}\n\nvar DEVICE_REACHABILITY_EVENT = 'reachabilityDidChange';\n\ntype ChangeEventName = $Enum<{\n change: string;\n}>;\n\ntype ReachabilityStateIOS = $Enum<{\n cell: string;\n none: string;\n unknown: string;\n wifi: string;\n}>;\n\ntype ConnectivityStateAndroid = $Enum<{\n NONE: string;\n MOBILE: string;\n WIFI: string;\n MOBILE_MMS: string;\n MOBILE_SUPL: string;\n MOBILE_DUN: string;\n MOBILE_HIPRI: string;\n WIMAX: string;\n BLUETOOTH: string;\n DUMMY: string;\n ETHERNET: string;\n MOBILE_FOTA: string;\n MOBILE_IMS: string;\n MOBILE_CBS: string;\n WIFI_P2P: string;\n MOBILE_IA: string;\n MOBILE_EMERGENCY: string;\n PROXY: string;\n VPN: string;\n UNKNOWN: string;\n}>;\n\n/**\n * NetInfo exposes info about online/offline status\n *\n * ```\n * NetInfo.fetch().done((reach) => {\n * console.log('Initial: ' + reach);\n * });\n * function handleFirstConnectivityChange(reach) {\n * console.log('First change: ' + reach);\n * NetInfo.removeEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * }\n * NetInfo.addEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * ```\n *\n * ### IOS\n *\n * Asynchronously determine if the device is online and on a cellular network.\n *\n * - `none` - device is offline\n * - `wifi` - device is online and connected via wifi, or is the iOS simulator\n * - `cell` - device is connected via Edge, 3G, WiMax, or LTE\n * - `unknown` - error case and the network status is unknown\n *\n * ### Android\n *\n * Asynchronously determine if the device is connected and details about that connection.\n *\n * Android Connectivity Types\n * - `NONE` - device is offline\n * - `BLUETOOTH` - The Bluetooth data connection.\n * - `DUMMY` - Dummy data connection.\n * - `ETHERNET` - The Ethernet data connection.\n * - `MOBILE` - The Mobile data connection.\n * - `MOBILE_DUN` - A DUN-specific Mobile data connection.\n * - `MOBILE_HIPRI` - A High Priority Mobile data connection.\n * - `MOBILE_MMS` - An MMS-specific Mobile data connection.\n * - `MOBILE_SUPL` - A SUPL-specific Mobile data connection.\n * - `VPN` - A virtual network using one or more native bearers. Requires API Level 21\n * - `WIFI` - The WIFI data connection.\n * - `WIMAX` - The WiMAX data connection.\n * - `UNKNOWN` - Unknown data connection.\n * The rest ConnectivityStates are hidden by the Android API, but can be used if necessary.\n *\n * ### isConnectionMetered\n *\n * Available on Android. Detect if the current active connection is metered or not. A network is\n * classified as metered when the user is sensitive to heavy data usage on that connection due to\n * monetary costs, data limitations or battery/performance issues.\n *\n * NetInfo.isConnectionMetered((isConnectionMetered) => {\n * console.log('Connection is ' + (isConnectionMetered ? 'Metered' : 'Not Metered'));\n * });\n * ```\n *\n * ### isConnected\n *\n * Available on all platforms. Asynchronously fetch a boolean to determine\n * internet connectivity.\n *\n * ```\n * NetInfo.isConnected.fetch().done((isConnected) => {\n * console.log('First, is ' + (isConnected ? 'online' : 'offline'));\n * });\n * function handleFirstConnectivityChange(isConnected) {\n * console.log('Then, is ' + (isConnected ? 'online' : 'offline'));\n * NetInfo.isConnected.removeEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * }\n * NetInfo.isConnected.addEventListener(\n * 'change',\n * handleFirstConnectivityChange\n * );\n * ```\n */\n\nvar _subscriptions = new Map();\n\nvar NetInfo = {\n addEventListener: function (\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = RCTDeviceEventEmitter.addListener(\n DEVICE_REACHABILITY_EVENT,\n (appStateData) => {\n handler(appStateData.network_reachability);\n }\n );\n _subscriptions.set(handler, listener);\n },\n\n removeEventListener: function(\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = _subscriptions.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _subscriptions.delete(handler);\n },\n\n fetch: function(): Promise {\n return new Promise((resolve, reject) => {\n RCTNetInfo.getCurrentReachability(\n function(resp) {\n resolve(resp.network_reachability);\n },\n reject\n );\n });\n },\n\n isConnected: {},\n\n isConnectionMetered: {},\n};\n\nif (Platform.OS === 'ios') {\n var _isConnected = function(\n reachability: ReachabilityStateIOS\n ): bool {\n return reachability !== 'none' &&\n reachability !== 'unknown';\n };\n} else if (Platform.OS === 'android') {\n var _isConnected = function(\n connectionType: ConnectivityStateAndroid\n ): bool {\n return connectionType !== 'NONE' && connectionType !== 'UNKNOWN';\n };\n}\n\nvar _isConnectedSubscriptions = new Map();\n\nNetInfo.isConnected = {\n addEventListener: function (\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = (connection) => {\n handler(_isConnected(connection));\n };\n _isConnectedSubscriptions.set(handler, listener);\n NetInfo.addEventListener(\n eventName,\n listener\n );\n },\n\n removeEventListener: function(\n eventName: ChangeEventName,\n handler: Function\n ): void {\n var listener = _isConnectedSubscriptions.get(handler);\n NetInfo.removeEventListener(\n eventName,\n listener\n );\n _isConnectedSubscriptions.delete(handler);\n },\n\n fetch: function(): Promise {\n return NetInfo.fetch().then(\n (connection) => _isConnected(connection)\n );\n },\n};\n\nif (Platform.OS === 'android') {\n NetInfo.isConnectionMetered = function(callback): void {\n RCTNetInfo.isConnectionMetered((_isMetered) => {\n callback(_isMetered);\n });\n };\n}\n\nmodule.exports = NetInfo;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Network/NetInfo.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js":{"data":{"code":"'use strict';var _createClass=(function(){function defineProperties(target,props){for(var i=0;i < props.length;i++) {var descriptor=props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if('value' in descriptor)descriptor.writable = true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};})();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function');}}\n\n\n\n\n\n\n\n\n\n\n\n\nvar Map=require('Map');\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTPushNotificationManager=require('NativeModules').PushNotificationManager;\nvar invariant=require('invariant');\n\nvar _notifHandlers=new Map();\nvar _initialNotification=RCTPushNotificationManager && \nRCTPushNotificationManager.initialNotification;\n\nvar DEVICE_NOTIF_EVENT='remoteNotificationReceived';\nvar NOTIF_REGISTER_EVENT='remoteNotificationsRegistered';var \n\n\n\n\n\n\n\n\nPushNotificationIOS=(function(){_createClass(PushNotificationIOS,null,[{key:'setApplicationIconBadgeNumber',value:\n\n\n\n\n\n\n\n\nfunction setApplicationIconBadgeNumber(number){\nRCTPushNotificationManager.setApplicationIconBadgeNumber(number);}},{key:'getApplicationIconBadgeNumber',value:\n\n\n\n\n\nfunction getApplicationIconBadgeNumber(callback){\nRCTPushNotificationManager.getApplicationIconBadgeNumber(callback);}},{key:'addEventListener',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction addEventListener(type,handler){\ninvariant(\ntype === 'notification' || type === 'register',\n'PushNotificationIOS only supports `notification` and `register` events');\n\nvar listener;\nif(type === 'notification'){\nlistener = RCTDeviceEventEmitter.addListener(\nDEVICE_NOTIF_EVENT,\nfunction(notifData){\nhandler(new PushNotificationIOS(notifData));});}else \n\n\nif(type === 'register'){\nlistener = RCTDeviceEventEmitter.addListener(\nNOTIF_REGISTER_EVENT,\nfunction(registrationInfo){\nhandler(registrationInfo.deviceToken);});}\n\n\n\n_notifHandlers.set(handler,listener);}},{key:'requestPermissions',value:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction requestPermissions(permissions)\n\n\n\n{\nvar requestedPermissions={};\nif(permissions){\nrequestedPermissions = {\nalert:!!permissions.alert,\nbadge:!!permissions.badge,\nsound:!!permissions.sound};}else \n\n{\nrequestedPermissions = {\nalert:true,\nbadge:true,\nsound:true};}\n\n\nRCTPushNotificationManager.requestPermissions(requestedPermissions);}},{key:'abandonPermissions',value:\n\n\n\n\n\n\n\n\n\n\nfunction abandonPermissions(){\nRCTPushNotificationManager.abandonPermissions();}},{key:'checkPermissions',value:\n\n\n\n\n\n\n\n\n\n\nfunction checkPermissions(callback){\ninvariant(\ntypeof callback === 'function',\n'Must provide a valid callback');\n\nRCTPushNotificationManager.checkPermissions(callback);}},{key:'removeEventListener',value:\n\n\n\n\n\n\nfunction removeEventListener(type,handler){\ninvariant(\ntype === 'notification' || type === 'register',\n'PushNotificationIOS only supports `notification` and `register` events');\n\nvar listener=_notifHandlers.get(handler);\nif(!listener){\nreturn;}\n\nlistener.remove();\n_notifHandlers.delete(handler);}},{key:'popInitialNotification',value:\n\n\n\n\n\n\n\n\n\n\nfunction popInitialNotification(){\nvar initialNotification=_initialNotification && \nnew PushNotificationIOS(_initialNotification);\n_initialNotification = null;\nreturn initialNotification;}}]);\n\n\n\n\n\n\n\nfunction PushNotificationIOS(nativeNotif){var _this=this;_classCallCheck(this,PushNotificationIOS);\nthis._data = {};\n\n\n\n\n\nObject.keys(nativeNotif).forEach(function(notifKey){\nvar notifVal=nativeNotif[notifKey];\nif(notifKey === 'aps'){\n_this._alert = notifVal.alert;\n_this._sound = notifVal.sound;\n_this._badgeCount = notifVal.badge;}else \n{\n_this._data[notifKey] = notifVal;}});}_createClass(PushNotificationIOS,[{key:'getMessage',value:\n\n\n\n\n\n\n\nfunction getMessage(){\n\nreturn this._alert;}},{key:'getSound',value:\n\n\n\n\n\nfunction getSound(){\nreturn this._sound;}},{key:'getAlert',value:\n\n\n\n\n\nfunction getAlert(){\nreturn this._alert;}},{key:'getBadgeCount',value:\n\n\n\n\n\nfunction getBadgeCount(){\nreturn this._badgeCount;}},{key:'getData',value:\n\n\n\n\n\nfunction getData(){\nreturn this._data;}}]);return PushNotificationIOS;})();\n\n\n\nmodule.exports = PushNotificationIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule PushNotificationIOS\n * @flow\n */\n'use strict';\n\nvar Map = require('Map');\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTPushNotificationManager = require('NativeModules').PushNotificationManager;\nvar invariant = require('invariant');\n\nvar _notifHandlers = new Map();\nvar _initialNotification = RCTPushNotificationManager &&\n RCTPushNotificationManager.initialNotification;\n\nvar DEVICE_NOTIF_EVENT = 'remoteNotificationReceived';\nvar NOTIF_REGISTER_EVENT = 'remoteNotificationsRegistered';\n\n/**\n * Handle push notifications for your app, including permission handling and\n * icon badge number.\n *\n * To get up and running, [configure your notifications with Apple](https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringPushNotifications/ConfiguringPushNotifications.html)\n * and your server-side system. To get an idea, [this is the Parse guide](https://parse.com/tutorials/ios-push-notifications).\n */\nclass PushNotificationIOS {\n _data: Object;\n _alert: string | Object;\n _sound: string;\n _badgeCount: number;\n\n /**\n * Sets the badge number for the app icon on the home screen\n */\n static setApplicationIconBadgeNumber(number: number) {\n RCTPushNotificationManager.setApplicationIconBadgeNumber(number);\n }\n\n /**\n * Gets the current badge number for the app icon on the home screen\n */\n static getApplicationIconBadgeNumber(callback: Function) {\n RCTPushNotificationManager.getApplicationIconBadgeNumber(callback);\n }\n\n /**\n * Attaches a listener to remote notification events while the app is running\n * in the foreground or the background.\n *\n * Valid events are:\n *\n * - `notification` : Fired when a remote notification is received. The\n * handler will be invoked with an instance of `PushNotificationIOS`.\n * - `register`: Fired when the user registers for remote notifications. The\n * handler will be invoked with a hex string representing the deviceToken.\n */\n static addEventListener(type: string, handler: Function) {\n invariant(\n type === 'notification' || type === 'register',\n 'PushNotificationIOS only supports `notification` and `register` events'\n );\n var listener;\n if (type === 'notification') {\n listener = RCTDeviceEventEmitter.addListener(\n DEVICE_NOTIF_EVENT,\n (notifData) => {\n handler(new PushNotificationIOS(notifData));\n }\n );\n } else if (type === 'register') {\n listener = RCTDeviceEventEmitter.addListener(\n NOTIF_REGISTER_EVENT,\n (registrationInfo) => {\n handler(registrationInfo.deviceToken);\n }\n );\n }\n _notifHandlers.set(handler, listener);\n }\n\n /**\n * Requests notification permissions from iOS, prompting the user's\n * dialog box. By default, it will request all notification permissions, but\n * a subset of these can be requested by passing a map of requested\n * permissions.\n * The following permissions are supported:\n *\n * - `alert`\n * - `badge`\n * - `sound`\n *\n * If a map is provided to the method, only the permissions with truthy values\n * will be requested.\n */\n static requestPermissions(permissions?: {\n alert?: boolean,\n badge?: boolean,\n sound?: boolean\n }) {\n var requestedPermissions = {};\n if (permissions) {\n requestedPermissions = {\n alert: !!permissions.alert,\n badge: !!permissions.badge,\n sound: !!permissions.sound\n };\n } else {\n requestedPermissions = {\n alert: true,\n badge: true,\n sound: true\n };\n }\n RCTPushNotificationManager.requestPermissions(requestedPermissions);\n }\n\n /**\n * Unregister for all remote notifications received via Apple Push Notification service.\n *\n * You should call this method in rare circumstances only, such as when a new version of\n * the app removes support for all types of remote notifications. Users can temporarily\n * prevent apps from receiving remote notifications through the Notifications section of\n * the Settings app. Apps unregistered through this method can always re-register.\n */\n static abandonPermissions() {\n RCTPushNotificationManager.abandonPermissions();\n }\n\n /**\n * See what push permissions are currently enabled. `callback` will be\n * invoked with a `permissions` object:\n *\n * - `alert` :boolean\n * - `badge` :boolean\n * - `sound` :boolean\n */\n static checkPermissions(callback: Function) {\n invariant(\n typeof callback === 'function',\n 'Must provide a valid callback'\n );\n RCTPushNotificationManager.checkPermissions(callback);\n }\n\n /**\n * Removes the event listener. Do this in `componentWillUnmount` to prevent\n * memory leaks\n */\n static removeEventListener(type: string, handler: Function) {\n invariant(\n type === 'notification' || type === 'register',\n 'PushNotificationIOS only supports `notification` and `register` events'\n );\n var listener = _notifHandlers.get(handler);\n if (!listener) {\n return;\n }\n listener.remove();\n _notifHandlers.delete(handler);\n }\n\n\n /**\n * An initial notification will be available if the app was cold-launched\n * from a notification.\n *\n * The first caller of `popInitialNotification` will get the initial\n * notification object, or `null`. Subsequent invocations will return null.\n */\n static popInitialNotification() {\n var initialNotification = _initialNotification &&\n new PushNotificationIOS(_initialNotification);\n _initialNotification = null;\n return initialNotification;\n }\n\n /**\n * You will never need to instansiate `PushNotificationIOS` yourself.\n * Listening to the `notification` event and invoking\n * `popInitialNotification` is sufficient\n */\n constructor(nativeNotif) {\n this._data = {};\n\n // Extract data from Apple's `aps` dict as defined:\n\n // https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html\n\n Object.keys(nativeNotif).forEach((notifKey) => {\n var notifVal = nativeNotif[notifKey];\n if (notifKey === 'aps') {\n this._alert = notifVal.alert;\n this._sound = notifVal.sound;\n this._badgeCount = notifVal.badge;\n } else {\n this._data[notifKey] = notifVal;\n }\n });\n }\n\n /**\n * An alias for `getAlert` to get the notification's main message string\n */\n getMessage(): ?string | ?Object {\n // alias because \"alert\" is an ambiguous name\n return this._alert;\n }\n\n /**\n * Gets the sound string from the `aps` object\n */\n getSound(): ?string {\n return this._sound;\n }\n\n /**\n * Gets the notification's main message from the `aps` object\n */\n getAlert(): ?string | ?Object {\n return this._alert;\n }\n\n /**\n * Gets the badge count number from the `aps` object\n */\n getBadgeCount(): ?number {\n return this._badgeCount;\n }\n\n /**\n * Gets the data object on the notif\n */\n getData(): ?Object {\n return this._data;\n }\n}\n\nmodule.exports = PushNotificationIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/PushNotificationIOS/PushNotificationIOS.js"},"mtime":1437776168000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Settings/Settings.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTDeviceEventEmitter=require('RCTDeviceEventEmitter');\nvar RCTSettingsManager=require('NativeModules').SettingsManager;\n\nvar invariant=require('invariant');\n\nvar subscriptions=[];\n\nvar Settings={\n_settings:RCTSettingsManager && RCTSettingsManager.settings,\n\nget:function(key){\nreturn this._settings[key];},\n\n\nset:function(settings){\nthis._settings = Object.assign(this._settings,settings);\nRCTSettingsManager.setValues(settings);},\n\n\nwatchKeys:function(keys,callback){\nif(typeof keys === 'string'){\nkeys = [keys];}\n\n\ninvariant(\nArray.isArray(keys),\n'keys should be a string or array of strings');\n\n\nvar sid=subscriptions.length;\nsubscriptions.push({keys:keys,callback:callback});\nreturn sid;},\n\n\nclearWatch:function(watchId){\nif(watchId < subscriptions.length){\nsubscriptions[watchId] = {keys:[],callback:null};}},\n\n\n\n_sendObservations:function(body){var _this=this;\nObject.keys(body).forEach(function(key){\nvar newValue=body[key];\nvar didChange=_this._settings[key] !== newValue;\n_this._settings[key] = newValue;\n\nif(didChange){\nsubscriptions.forEach(function(sub){\nif(sub.keys.indexOf(key) !== -1 && sub.callback){\nsub.callback();}});}});}};\n\n\n\n\n\n\n\nRCTDeviceEventEmitter.addListener(\n'settingsUpdated',\nSettings._sendObservations.bind(Settings));\n\n\nmodule.exports = Settings;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Settings\n * @flow\n */\n'use strict';\n\nvar RCTDeviceEventEmitter = require('RCTDeviceEventEmitter');\nvar RCTSettingsManager = require('NativeModules').SettingsManager;\n\nvar invariant = require('invariant');\n\nvar subscriptions: Array<{keys: Array<string>; callback: ?Function}> = [];\n\nvar Settings = {\n _settings: RCTSettingsManager && RCTSettingsManager.settings,\n\n get(key: string): mixed {\n return this._settings[key];\n },\n\n set(settings: Object) {\n this._settings = Object.assign(this._settings, settings);\n RCTSettingsManager.setValues(settings);\n },\n\n watchKeys(keys: string | Array<string>, callback: Function): number {\n if (typeof keys === 'string') {\n keys = [keys];\n }\n\n invariant(\n Array.isArray(keys),\n 'keys should be a string or array of strings'\n );\n\n var sid = subscriptions.length;\n subscriptions.push({keys: keys, callback: callback});\n return sid;\n },\n\n clearWatch(watchId: number) {\n if (watchId < subscriptions.length) {\n subscriptions[watchId] = {keys: [], callback: null};\n }\n },\n\n _sendObservations(body: Object) {\n Object.keys(body).forEach((key) => {\n var newValue = body[key];\n var didChange = this._settings[key] !== newValue;\n this._settings[key] = newValue;\n\n if (didChange) {\n subscriptions.forEach((sub) => {\n if (sub.keys.indexOf(key) !== -1 && sub.callback) {\n sub.callback();\n }\n });\n }\n });\n },\n};\n\nRCTDeviceEventEmitter.addListener(\n 'settingsUpdated',\n Settings._sendObservations.bind(Settings)\n);\n\nmodule.exports = Settings;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Settings/Settings.ios.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTStatusBarManager=require('NativeModules').StatusBarManager;\n\n\n\n\n\n\n\n\n\n\n\n\nvar StatusBarIOS={\n\nsetStyle:function(style,animated){\nanimated = animated || false;\nRCTStatusBarManager.setStyle(style,animated);},\n\n\nsetHidden:function(hidden,animation){\nanimation = animation || 'none';\nRCTStatusBarManager.setHidden(hidden,animation);}};\n\n\n\nmodule.exports = StatusBarIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule StatusBarIOS\n * @flow\n */\n'use strict';\n\nvar RCTStatusBarManager = require('NativeModules').StatusBarManager;\n\ntype StatusBarStyle = $Enum<{\n 'default': string,\n 'light-content': string,\n}>;\n\ntype StatusBarAnimation = $Enum<{\n 'none': string,\n 'fade': string,\n 'slide': string,\n}>;\n\nvar StatusBarIOS = {\n\n setStyle(style: StatusBarStyle, animated?: boolean) {\n animated = animated || false;\n RCTStatusBarManager.setStyle(style, animated);\n },\n\n setHidden(hidden: boolean, animation?: StatusBarAnimation) {\n animation = animation || 'none';\n RCTStatusBarManager.setHidden(hidden, animation);\n },\n};\n\nmodule.exports = StatusBarIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Components/StatusBar/StatusBarIOS.ios.js"},"mtime":1436845668000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Vibration/VibrationIOS.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar RCTVibration=require('NativeModules').Vibration;\n\nvar invariant=require('invariant');\n\n\n\n\n\n\n\n\n\n\n\n\nvar VibrationIOS={\nvibrate:function(){\ninvariant(\narguments[0] === undefined,\n'Vibration patterns not supported.');\n\nRCTVibration.vibrate();}};\n\n\n\nmodule.exports = VibrationIOS;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule VibrationIOS\n * @flow\n */\n'use strict';\n\nvar RCTVibration = require('NativeModules').Vibration;\n\nvar invariant = require('invariant');\n\n/**\n * The Vibration API is exposed at `VibrationIOS.vibrate()`. On iOS, calling this\n * function will trigger a one second vibration. The vibration is asynchronous\n * so this method will return immediately.\n *\n * There will be no effect on devices that do not support Vibration, eg. the iOS\n * simulator.\n *\n * Vibration patterns are currently unsupported.\n */\n\nvar VibrationIOS = {\n vibrate: function() {\n invariant(\n arguments[0] === undefined,\n 'Vibration patterns not supported.'\n );\n RCTVibration.vibrate();\n }\n};\n\nmodule.exports = VibrationIOS;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/Vibration/VibrationIOS.ios.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/NativeApp/RCTNativeAppEventEmitter.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventEmitter=require('EventEmitter');\n\nvar RCTNativeAppEventEmitter=new EventEmitter();\n\nmodule.exports = RCTNativeAppEventEmitter;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule RCTNativeAppEventEmitter\n * @flow\n */\n'use strict';\n\nvar EventEmitter = require('EventEmitter');\n\nvar RCTNativeAppEventEmitter = new EventEmitter();\n\nmodule.exports = RCTNativeAppEventEmitter;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/Libraries/NativeApp/RCTNativeAppEventEmitter.js"},"mtime":1433888108000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/LinkedStateMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactLink=require('ReactLink');\nvar ReactStateSetters=require('ReactStateSetters');\n\n\n\n\nvar LinkedStateMixin={\n\n\n\n\n\n\n\n\n\nlinkState:function(key){\nreturn new ReactLink(\nthis.state[key],\nReactStateSetters.createStateKeySetter(this,key));}};\n\n\n\n\nmodule.exports = LinkedStateMixin;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule LinkedStateMixin\n * @typechecks static-only\n */\n\n'use strict';\n\nvar ReactLink = require('ReactLink');\nvar ReactStateSetters = require('ReactStateSetters');\n\n/**\n * A simple mixin around ReactLink.forState().\n */\nvar LinkedStateMixin = {\n /**\n * Create a ReactLink that's linked to part of this component's state. The\n * ReactLink will have the current value of this.state[key] and will call\n * setState() when a change is requested.\n *\n * @param {string} key state key to update. Note: you may want to use keyOf()\n * if you're using Google Closure Compiler advanced mode.\n * @return {ReactLink} ReactLink instance linking to the state.\n */\n linkState: function(key) {\n return new ReactLink(\n this.state[key],\n ReactStateSetters.createStateKeySetter(this, key)\n );\n }\n};\n\nmodule.exports = LinkedStateMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/LinkedStateMixin.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/ReactLink.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar React=require('React');\n\n\n\n\n\nfunction ReactLink(value,requestChange){\nthis.value = value;\nthis.requestChange = requestChange;}\n\n\n\n\n\n\n\n\n\n\nfunction createLinkTypeChecker(linkType){\nvar shapes={\nvalue:typeof linkType === 'undefined'?\nReact.PropTypes.any.isRequired:\nlinkType.isRequired,\nrequestChange:React.PropTypes.func.isRequired};\n\nreturn React.PropTypes.shape(shapes);}\n\n\nReactLink.PropTypes = {\nlink:createLinkTypeChecker};\n\n\nmodule.exports = ReactLink;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactLink\n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * ReactLink encapsulates a common pattern in which a component wants to modify\n * a prop received from its parent. ReactLink allows the parent to pass down a\n * value coupled with a callback that, when invoked, expresses an intent to\n * modify that value. For example:\n *\n * React.createClass({\n * getInitialState: function() {\n * return {value: ''};\n * },\n * render: function() {\n * var valueLink = new ReactLink(this.state.value, this._handleValueChange);\n * return <input valueLink={valueLink} />;\n * },\n * this._handleValueChange: function(newValue) {\n * this.setState({value: newValue});\n * }\n * });\n *\n * We have provided some sugary mixins to make the creation and\n * consumption of ReactLink easier; see LinkedValueUtils and LinkedStateMixin.\n */\n\nvar React = require('React');\n\n/**\n * @param {*} value current value of the link\n * @param {function} requestChange callback to request a change\n */\nfunction ReactLink(value, requestChange) {\n this.value = value;\n this.requestChange = requestChange;\n}\n\n/**\n * Creates a PropType that enforces the ReactLink API and optionally checks the\n * type of the value being passed inside the link. Example:\n *\n * MyComponent.propTypes = {\n * tabIndexLink: ReactLink.PropTypes.link(React.PropTypes.number)\n * }\n */\nfunction createLinkTypeChecker(linkType) {\n var shapes = {\n value: typeof linkType === 'undefined' ?\n React.PropTypes.any.isRequired :\n linkType.isRequired,\n requestChange: React.PropTypes.func.isRequired\n };\n return React.PropTypes.shape(shapes);\n}\n\nReactLink.PropTypes = {\n link: createLinkTypeChecker\n};\n\nmodule.exports = ReactLink;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/link/ReactLink.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactStateSetters.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactStateSetters={\n\n\n\n\n\n\n\n\n\n\ncreateStateSetter:function(component,funcReturningState){\nreturn function(a,b,c,d,e,f){\nvar partialState=funcReturningState.call(component,a,b,c,d,e,f);\nif(partialState){\ncomponent.setState(partialState);}};},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreateStateKeySetter:function(component,key){\n\nvar cache=component.__keySetters || (component.__keySetters = {});\nreturn cache[key] || (cache[key] = createStateKeySetter(component,key));}};\n\n\n\nfunction createStateKeySetter(component,key){\n\n\n\nvar partialState={};\nreturn function stateKeySetter(value){\npartialState[key] = value;\ncomponent.setState(partialState);};}\n\n\n\nReactStateSetters.Mixin = {\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreateStateSetter:function(funcReturningState){\nreturn ReactStateSetters.createStateSetter(this,funcReturningState);},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\ncreateStateKeySetter:function(key){\nreturn ReactStateSetters.createStateKeySetter(this,key);}};\n\n\n\nmodule.exports = ReactStateSetters;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactStateSetters\n */\n\n'use strict';\n\nvar ReactStateSetters = {\n /**\n * Returns a function that calls the provided function, and uses the result\n * of that to set the component's state.\n *\n * @param {ReactCompositeComponent} component\n * @param {function} funcReturningState Returned callback uses this to\n * determine how to update state.\n * @return {function} callback that when invoked uses funcReturningState to\n * determined the object literal to setState.\n */\n createStateSetter: function(component, funcReturningState) {\n return function(a, b, c, d, e, f) {\n var partialState = funcReturningState.call(component, a, b, c, d, e, f);\n if (partialState) {\n component.setState(partialState);\n }\n };\n },\n\n /**\n * Returns a single-argument callback that can be used to update a single\n * key in the component's state.\n *\n * Note: this is memoized function, which makes it inexpensive to call.\n *\n * @param {ReactCompositeComponent} component\n * @param {string} key The key in the state that you should update.\n * @return {function} callback of 1 argument which calls setState() with\n * the provided keyName and callback argument.\n */\n createStateKeySetter: function(component, key) {\n // Memoize the setters.\n var cache = component.__keySetters || (component.__keySetters = {});\n return cache[key] || (cache[key] = createStateKeySetter(component, key));\n }\n};\n\nfunction createStateKeySetter(component, key) {\n // Partial state is allocated outside of the function closure so it can be\n // reused with every call, avoiding memory allocation when this function\n // is called.\n var partialState = {};\n return function stateKeySetter(value) {\n partialState[key] = value;\n component.setState(partialState);\n };\n}\n\nReactStateSetters.Mixin = {\n /**\n * Returns a function that calls the provided function, and uses the result\n * of that to set the component's state.\n *\n * For example, these statements are equivalent:\n *\n * this.setState({x: 1});\n * this.createStateSetter(function(xValue) {\n * return {x: xValue};\n * })(1);\n *\n * @param {function} funcReturningState Returned callback uses this to\n * determine how to update state.\n * @return {function} callback that when invoked uses funcReturningState to\n * determined the object literal to setState.\n */\n createStateSetter: function(funcReturningState) {\n return ReactStateSetters.createStateSetter(this, funcReturningState);\n },\n\n /**\n * Returns a single-argument callback that can be used to update a single\n * key in the component's state.\n *\n * For example, these statements are equivalent:\n *\n * this.setState({x: 1});\n * this.createStateKeySetter('x')(1);\n *\n * Note: this is memoized function, which makes it inexpensive to call.\n *\n * @param {string} key The key in the state that you should update.\n * @return {function} callback of 1 argument which calls setState() with\n * the provided keyName and callback argument.\n */\n createStateKeySetter: function(key) {\n return ReactStateSetters.createStateKeySetter(this, key);\n }\n};\n\nmodule.exports = ReactStateSetters;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/core/ReactStateSetters.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactComponentWithPureRenderMixin.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar shallowEqual=require('shallowEqual');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactComponentWithPureRenderMixin={\nshouldComponentUpdate:function(nextProps,nextState){\nreturn !shallowEqual(this.props,nextProps) || \n!shallowEqual(this.state,nextState);}};\n\n\n\nmodule.exports = ReactComponentWithPureRenderMixin;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n* @providesModule ReactComponentWithPureRenderMixin\n*/\n\n'use strict';\n\nvar shallowEqual = require('shallowEqual');\n\n/**\n * If your React component's render function is \"pure\", e.g. it will render the\n * same result given the same props and state, provide this Mixin for a\n * considerable performance boost.\n *\n * Most React components have pure render functions.\n *\n * Example:\n *\n * var ReactComponentWithPureRenderMixin =\n * require('ReactComponentWithPureRenderMixin');\n * React.createClass({\n * mixins: [ReactComponentWithPureRenderMixin],\n *\n * render: function() {\n * return <div className={this.props.className}>foo</div>;\n * }\n * });\n *\n * Note: This only checks shallow equality for props and state. If these contain\n * complex data structures this mixin may have false-negatives for deeper\n * differences. Only mixin to components which have simple props and state, or\n * use `forceUpdate()` when you know deep data structures have changed.\n */\nvar ReactComponentWithPureRenderMixin = {\n shouldComponentUpdate: function(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) ||\n !shallowEqual(this.state, nextState);\n }\n};\n\nmodule.exports = ReactComponentWithPureRenderMixin;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/ReactComponentWithPureRenderMixin.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/shallowEqual.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction shallowEqual(objA,objB){\nif(objA === objB){\nreturn true;}\n\nvar key;\n\nfor(key in objA) {\nif(objA.hasOwnProperty(key) && (\n!objB.hasOwnProperty(key) || objA[key] !== objB[key])){\nreturn false;}}\n\n\n\nfor(key in objB) {\nif(objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)){\nreturn false;}}\n\n\nreturn true;}\n\n\nmodule.exports = shallowEqual;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n */\n\n'use strict';\n\n/**\n * Performs equality by iterating through keys on an object and returning\n * false when any key has values which are not strictly equal between\n * objA and objB. Returns true when the values of all keys are strictly equal.\n *\n * @return {boolean}\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n var key;\n // Test for A's keys different from B.\n for (key in objA) {\n if (objA.hasOwnProperty(key) &&\n (!objB.hasOwnProperty(key) || objA[key] !== objB[key])) {\n return false;\n }\n }\n // Test for B's keys missing from A.\n for (key in objB) {\n if (objB.hasOwnProperty(key) && !objA.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = shallowEqual;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/utils/shallowEqual.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/update.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar assign=require('Object.assign');\nvar keyOf=require('keyOf');\nvar invariant=require('invariant');\nvar hasOwnProperty=({}).hasOwnProperty;\n\nfunction shallowCopy(x){\nif(Array.isArray(x)){\nreturn x.concat();}else \nif(x && typeof x === 'object'){\nreturn assign(new x.constructor(),x);}else \n{\nreturn x;}}\n\n\n\nvar COMMAND_PUSH=keyOf({$push:null});\nvar COMMAND_UNSHIFT=keyOf({$unshift:null});\nvar COMMAND_SPLICE=keyOf({$splice:null});\nvar COMMAND_SET=keyOf({$set:null});\nvar COMMAND_MERGE=keyOf({$merge:null});\nvar COMMAND_APPLY=keyOf({$apply:null});\n\nvar ALL_COMMANDS_LIST=[\nCOMMAND_PUSH,\nCOMMAND_UNSHIFT,\nCOMMAND_SPLICE,\nCOMMAND_SET,\nCOMMAND_MERGE,\nCOMMAND_APPLY];\n\n\nvar ALL_COMMANDS_SET={};\n\nALL_COMMANDS_LIST.forEach(function(command){\nALL_COMMANDS_SET[command] = true;});\n\n\nfunction invariantArrayCase(value,spec,command){\ninvariant(\nArray.isArray(value),\n'update(): expected target of %s to be an array; got %s.',\ncommand,\nvalue);\n\nvar specValue=spec[command];\ninvariant(\nArray.isArray(specValue),\n'update(): expected spec of %s to be an array; got %s. ' + \n'Did you forget to wrap your parameter in an array?',\ncommand,\nspecValue);}\n\n\n\nfunction update(value,spec){\ninvariant(\ntypeof spec === 'object',\n'update(): You provided a key path to update() that did not contain one ' + \n'of %s. Did you forget to include {%s: ...}?',\nALL_COMMANDS_LIST.join(', '),\nCOMMAND_SET);\n\n\nif(hasOwnProperty.call(spec,COMMAND_SET)){\ninvariant(\nObject.keys(spec).length === 1,\n'Cannot have more than one key in an object with %s',\nCOMMAND_SET);\n\n\nreturn spec[COMMAND_SET];}\n\n\nvar nextValue=shallowCopy(value);\n\nif(hasOwnProperty.call(spec,COMMAND_MERGE)){\nvar mergeObj=spec[COMMAND_MERGE];\ninvariant(\nmergeObj && typeof mergeObj === 'object',\n'update(): %s expects a spec of type \\'object\\'; got %s',\nCOMMAND_MERGE,\nmergeObj);\n\ninvariant(\nnextValue && typeof nextValue === 'object',\n'update(): %s expects a target of type \\'object\\'; got %s',\nCOMMAND_MERGE,\nnextValue);\n\nassign(nextValue,spec[COMMAND_MERGE]);}\n\n\nif(hasOwnProperty.call(spec,COMMAND_PUSH)){\ninvariantArrayCase(value,spec,COMMAND_PUSH);\nspec[COMMAND_PUSH].forEach(function(item){\nnextValue.push(item);});}\n\n\n\nif(hasOwnProperty.call(spec,COMMAND_UNSHIFT)){\ninvariantArrayCase(value,spec,COMMAND_UNSHIFT);\nspec[COMMAND_UNSHIFT].forEach(function(item){\nnextValue.unshift(item);});}\n\n\n\nif(hasOwnProperty.call(spec,COMMAND_SPLICE)){\ninvariant(\nArray.isArray(value),\n'Expected %s target to be an array; got %s',\nCOMMAND_SPLICE,\nvalue);\n\ninvariant(\nArray.isArray(spec[COMMAND_SPLICE]),\n'update(): expected spec of %s to be an array of arrays; got %s. ' + \n'Did you forget to wrap your parameters in an array?',\nCOMMAND_SPLICE,\nspec[COMMAND_SPLICE]);\n\nspec[COMMAND_SPLICE].forEach(function(args){\ninvariant(\nArray.isArray(args),\n'update(): expected spec of %s to be an array of arrays; got %s. ' + \n'Did you forget to wrap your parameters in an array?',\nCOMMAND_SPLICE,\nspec[COMMAND_SPLICE]);\n\nnextValue.splice.apply(nextValue,args);});}\n\n\n\nif(hasOwnProperty.call(spec,COMMAND_APPLY)){\ninvariant(\ntypeof spec[COMMAND_APPLY] === 'function',\n'update(): expected spec of %s to be a function; got %s.',\nCOMMAND_APPLY,\nspec[COMMAND_APPLY]);\n\nnextValue = spec[COMMAND_APPLY](nextValue);}\n\n\nfor(var k in spec) {\nif(!(ALL_COMMANDS_SET.hasOwnProperty(k) && ALL_COMMANDS_SET[k])){\nnextValue[k] = update(value[k],spec[k]);}}\n\n\n\nreturn nextValue;}\n\n\nmodule.exports = update;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule update\n */\n\n /* global hasOwnProperty:true */\n\n'use strict';\n\nvar assign = require('Object.assign');\nvar keyOf = require('keyOf');\nvar invariant = require('invariant');\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction shallowCopy(x) {\n if (Array.isArray(x)) {\n return x.concat();\n } else if (x && typeof x === 'object') {\n return assign(new x.constructor(), x);\n } else {\n return x;\n }\n}\n\nvar COMMAND_PUSH = keyOf({$push: null});\nvar COMMAND_UNSHIFT = keyOf({$unshift: null});\nvar COMMAND_SPLICE = keyOf({$splice: null});\nvar COMMAND_SET = keyOf({$set: null});\nvar COMMAND_MERGE = keyOf({$merge: null});\nvar COMMAND_APPLY = keyOf({$apply: null});\n\nvar ALL_COMMANDS_LIST = [\n COMMAND_PUSH,\n COMMAND_UNSHIFT,\n COMMAND_SPLICE,\n COMMAND_SET,\n COMMAND_MERGE,\n COMMAND_APPLY\n];\n\nvar ALL_COMMANDS_SET = {};\n\nALL_COMMANDS_LIST.forEach(function(command) {\n ALL_COMMANDS_SET[command] = true;\n});\n\nfunction invariantArrayCase(value, spec, command) {\n invariant(\n Array.isArray(value),\n 'update(): expected target of %s to be an array; got %s.',\n command,\n value\n );\n var specValue = spec[command];\n invariant(\n Array.isArray(specValue),\n 'update(): expected spec of %s to be an array; got %s. ' +\n 'Did you forget to wrap your parameter in an array?',\n command,\n specValue\n );\n}\n\nfunction update(value, spec) {\n invariant(\n typeof spec === 'object',\n 'update(): You provided a key path to update() that did not contain one ' +\n 'of %s. Did you forget to include {%s: ...}?',\n ALL_COMMANDS_LIST.join(', '),\n COMMAND_SET\n );\n\n if (hasOwnProperty.call(spec, COMMAND_SET)) {\n invariant(\n Object.keys(spec).length === 1,\n 'Cannot have more than one key in an object with %s',\n COMMAND_SET\n );\n\n return spec[COMMAND_SET];\n }\n\n var nextValue = shallowCopy(value);\n\n if (hasOwnProperty.call(spec, COMMAND_MERGE)) {\n var mergeObj = spec[COMMAND_MERGE];\n invariant(\n mergeObj && typeof mergeObj === 'object',\n 'update(): %s expects a spec of type \\'object\\'; got %s',\n COMMAND_MERGE,\n mergeObj\n );\n invariant(\n nextValue && typeof nextValue === 'object',\n 'update(): %s expects a target of type \\'object\\'; got %s',\n COMMAND_MERGE,\n nextValue\n );\n assign(nextValue, spec[COMMAND_MERGE]);\n }\n\n if (hasOwnProperty.call(spec, COMMAND_PUSH)) {\n invariantArrayCase(value, spec, COMMAND_PUSH);\n spec[COMMAND_PUSH].forEach(function(item) {\n nextValue.push(item);\n });\n }\n\n if (hasOwnProperty.call(spec, COMMAND_UNSHIFT)) {\n invariantArrayCase(value, spec, COMMAND_UNSHIFT);\n spec[COMMAND_UNSHIFT].forEach(function(item) {\n nextValue.unshift(item);\n });\n }\n\n if (hasOwnProperty.call(spec, COMMAND_SPLICE)) {\n invariant(\n Array.isArray(value),\n 'Expected %s target to be an array; got %s',\n COMMAND_SPLICE,\n value\n );\n invariant(\n Array.isArray(spec[COMMAND_SPLICE]),\n 'update(): expected spec of %s to be an array of arrays; got %s. ' +\n 'Did you forget to wrap your parameters in an array?',\n COMMAND_SPLICE,\n spec[COMMAND_SPLICE]\n );\n spec[COMMAND_SPLICE].forEach(function(args) {\n invariant(\n Array.isArray(args),\n 'update(): expected spec of %s to be an array of arrays; got %s. ' +\n 'Did you forget to wrap your parameters in an array?',\n COMMAND_SPLICE,\n spec[COMMAND_SPLICE]\n );\n nextValue.splice.apply(nextValue, args);\n });\n }\n\n if (hasOwnProperty.call(spec, COMMAND_APPLY)) {\n invariant(\n typeof spec[COMMAND_APPLY] === 'function',\n 'update(): expected spec of %s to be a function; got %s.',\n COMMAND_APPLY,\n spec[COMMAND_APPLY]\n );\n nextValue = spec[COMMAND_APPLY](nextValue);\n }\n\n for (var k in spec) {\n if (!(ALL_COMMANDS_SET.hasOwnProperty(k) && ALL_COMMANDS_SET[k])) {\n nextValue[k] = update(value[k], spec[k]);\n }\n }\n\n return nextValue;\n}\n\nmodule.exports = update;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/addons/update.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactTestUtils.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\nvar EventConstants=require('EventConstants');\nvar EventPluginHub=require('EventPluginHub');\nvar EventPropagators=require('EventPropagators');\nvar React=require('React');\nvar ReactElement=require('ReactElement');\nvar ReactEmptyComponent=require('ReactEmptyComponent');\nvar ReactBrowserEventEmitter=require('ReactBrowserEventEmitter');\nvar ReactCompositeComponent=require('ReactCompositeComponent');\nvar ReactInstanceHandles=require('ReactInstanceHandles');\nvar ReactInstanceMap=require('ReactInstanceMap');\nvar ReactMount=require('ReactMount');\nvar ReactUpdates=require('ReactUpdates');\nvar SyntheticEvent=require('SyntheticEvent');\n\nvar assign=require('Object.assign');\n\nvar topLevelTypes=EventConstants.topLevelTypes;\n\nfunction Event(suffix){}\n\n\n\n\n\n\n\n\n\n\nvar ReactTestUtils={\nrenderIntoDocument:function(instance){\nvar div=document.createElement('div');\n\n\n\n\n\nreturn React.render(instance,div);},\n\n\nisElement:function(element){\nreturn ReactElement.isValidElement(element);},\n\n\nisElementOfType:function(inst,convenienceConstructor){\nreturn (\nReactElement.isValidElement(inst) && \ninst.type === convenienceConstructor);},\n\n\n\nisDOMComponent:function(inst){\n\n\nreturn !!(inst && inst.tagName && inst.getDOMNode);},\n\n\nisDOMComponentElement:function(inst){\nreturn !!(inst && \nReactElement.isValidElement(inst) && \n!!inst.tagName);},\n\n\nisCompositeComponent:function(inst){\nreturn typeof inst.render === 'function' && \ntypeof inst.setState === 'function';},\n\n\nisCompositeComponentWithType:function(inst,type){\nreturn !!(ReactTestUtils.isCompositeComponent(inst) && \ninst.constructor === type);},\n\n\nisCompositeComponentElement:function(inst){\nif(!ReactElement.isValidElement(inst)){\nreturn false;}\n\n\n\nvar prototype=inst.type.prototype;\nreturn (\ntypeof prototype.render === 'function' && \ntypeof prototype.setState === 'function');},\n\n\n\nisCompositeComponentElementWithType:function(inst,type){\nreturn !!(ReactTestUtils.isCompositeComponentElement(inst) && \ninst.constructor === type);},\n\n\ngetRenderedChildOfCompositeComponent:function(inst){\nif(!ReactTestUtils.isCompositeComponent(inst)){\nreturn null;}\n\nvar internalInstance=ReactInstanceMap.get(inst);\nreturn internalInstance._renderedComponent.getPublicInstance();},\n\n\nfindAllInRenderedTree:function(inst,test){\nif(!inst){\nreturn [];}\n\nvar ret=test(inst)?[inst]:[];\nif(ReactTestUtils.isDOMComponent(inst)){\nvar internalInstance=ReactInstanceMap.get(inst);\nvar renderedChildren=internalInstance.\n_renderedComponent.\n_renderedChildren;\nvar key;\nfor(key in renderedChildren) {\nif(!renderedChildren.hasOwnProperty(key)){\ncontinue;}\n\nif(!renderedChildren[key].getPublicInstance){\ncontinue;}\n\nret = ret.concat(\nReactTestUtils.findAllInRenderedTree(\nrenderedChildren[key].getPublicInstance(),\ntest));}}else \n\n\n\nif(ReactTestUtils.isCompositeComponent(inst)){\nret = ret.concat(\nReactTestUtils.findAllInRenderedTree(\nReactTestUtils.getRenderedChildOfCompositeComponent(inst),\ntest));}\n\n\n\nreturn ret;},\n\n\n\n\n\n\n\nscryRenderedDOMComponentsWithClass:function(root,className){\nreturn ReactTestUtils.findAllInRenderedTree(root,function(inst){\nvar instClassName=inst.props.className;\nreturn ReactTestUtils.isDOMComponent(inst) && (\ninstClassName && \n(' ' + instClassName + ' ').indexOf(' ' + className + ' ') !== -1);});},\n\n\n\n\n\n\n\n\n\n\nfindRenderedDOMComponentWithClass:function(root,className){\nvar all=\nReactTestUtils.scryRenderedDOMComponentsWithClass(root,className);\nif(all.length !== 1){\nthrow new Error('Did not find exactly one match ' + \n'(found: ' + all.length + ') for class:' + className);}\n\n\nreturn all[0];},\n\n\n\n\n\n\n\n\nscryRenderedDOMComponentsWithTag:function(root,tagName){\nreturn ReactTestUtils.findAllInRenderedTree(root,function(inst){\nreturn ReactTestUtils.isDOMComponent(inst) && \ninst.tagName === tagName.toUpperCase();});},\n\n\n\n\n\n\n\n\n\nfindRenderedDOMComponentWithTag:function(root,tagName){\nvar all=ReactTestUtils.scryRenderedDOMComponentsWithTag(root,tagName);\nif(all.length !== 1){\nthrow new Error('Did not find exactly one match for tag:' + tagName);}\n\nreturn all[0];},\n\n\n\n\n\n\n\nscryRenderedComponentsWithType:function(root,componentType){\nreturn ReactTestUtils.findAllInRenderedTree(root,function(inst){\nreturn ReactTestUtils.isCompositeComponentWithType(\ninst,\ncomponentType);});},\n\n\n\n\n\n\n\n\n\n\nfindRenderedComponentWithType:function(root,componentType){\nvar all=ReactTestUtils.scryRenderedComponentsWithType(\nroot,\ncomponentType);\n\nif(all.length !== 1){\nthrow new Error(\n'Did not find exactly one match for componentType:' + componentType);}\n\n\nreturn all[0];},\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nmockComponent:function(module,mockTagName){\nmockTagName = mockTagName || module.mockTagName || \"div\";\n\nmodule.prototype.render.mockImplementation(function(){\nreturn React.createElement(\nmockTagName,\nnull,\nthis.props.children);});\n\n\n\nreturn this;},\n\n\n\n\n\n\n\n\n\nsimulateNativeEventOnNode:function(topLevelType,node,fakeNativeEvent){\nfakeNativeEvent.target = node;\nReactBrowserEventEmitter.ReactEventListener.dispatchEvent(\ntopLevelType,\nfakeNativeEvent);},\n\n\n\n\n\n\n\n\n\n\nsimulateNativeEventOnDOMComponent:function(\ntopLevelType,\ncomp,\nfakeNativeEvent){\nReactTestUtils.simulateNativeEventOnNode(\ntopLevelType,\ncomp.getDOMNode(),\nfakeNativeEvent);},\n\n\n\nnativeTouchData:function(x,y){\nreturn {\ntouches:[\n{pageX:x,pageY:y}]};},\n\n\n\n\ncreateRenderer:function(){\nreturn new ReactShallowRenderer();},\n\n\nSimulate:null,\nSimulateNative:{}};\n\n\n\n\n\nvar ReactShallowRenderer=function(){\nthis._instance = null;};\n\n\nReactShallowRenderer.prototype.getRenderOutput = function(){\nreturn (\nthis._instance && this._instance._renderedComponent && \nthis._instance._renderedComponent._renderedOutput || \nnull);};\n\n\n\nvar NoopInternalComponent=function(element){\nthis._renderedOutput = element;\nthis._currentElement = element === null || element === false?\nReactEmptyComponent.emptyElement:\nelement;};\n\n\nNoopInternalComponent.prototype = {\n\nmountComponent:function(){},\n\n\nreceiveComponent:function(element){\nthis._renderedOutput = element;\nthis._currentElement = element === null || element === false?\nReactEmptyComponent.emptyElement:\nelement;},\n\n\nunmountComponent:function(){}};\n\n\n\n\nvar ShallowComponentWrapper=function(){};\nassign(\nShallowComponentWrapper.prototype,\nReactCompositeComponent.Mixin,{\n_instantiateReactComponent:function(element){\nreturn new NoopInternalComponent(element);},\n\n_replaceNodeWithMarkupByID:function(){},\n_renderValidatedComponent:\nReactCompositeComponent.Mixin.\n_renderValidatedComponentWithoutOwnerOrContext});\n\n\n\nReactShallowRenderer.prototype.render = function(element,context){\nvar transaction=ReactUpdates.ReactReconcileTransaction.getPooled();\nthis._render(element,transaction,context);\nReactUpdates.ReactReconcileTransaction.release(transaction);};\n\n\nReactShallowRenderer.prototype.unmount = function(){\nif(this._instance){\nthis._instance.unmountComponent();}};\n\n\n\nReactShallowRenderer.prototype._render = function(element,transaction,context){\nif(!this._instance){\nvar rootID=ReactInstanceHandles.createReactRootID();\nvar instance=new ShallowComponentWrapper(element.type);\ninstance.construct(element);\n\ninstance.mountComponent(rootID,transaction,context);\n\nthis._instance = instance;}else \n{\nthis._instance.receiveComponent(element,transaction,context);}};\n\n\n\n\n\n\n\n\n\n\n\nfunction makeSimulator(eventType){\nreturn function(domComponentOrNode,eventData){\nvar node;\nif(ReactTestUtils.isDOMComponent(domComponentOrNode)){\nnode = domComponentOrNode.getDOMNode();}else \nif(domComponentOrNode.tagName){\nnode = domComponentOrNode;}\n\n\nvar fakeNativeEvent=new Event();\nfakeNativeEvent.target = node;\n\n\nvar event=new SyntheticEvent(\nReactBrowserEventEmitter.eventNameDispatchConfigs[eventType],\nReactMount.getID(node),\nfakeNativeEvent);\n\nassign(event,eventData);\nEventPropagators.accumulateTwoPhaseDispatches(event);\n\nReactUpdates.batchedUpdates(function(){\nEventPluginHub.enqueueEvents(event);\nEventPluginHub.processEventQueue();});};}\n\n\n\n\nfunction buildSimulators(){\nReactTestUtils.Simulate = {};\n\nvar eventType;\nfor(eventType in ReactBrowserEventEmitter.eventNameDispatchConfigs) {\n\n\n\n\nReactTestUtils.Simulate[eventType] = makeSimulator(eventType);}}\n\n\n\n\nvar oldInjectEventPluginOrder=EventPluginHub.injection.injectEventPluginOrder;\nEventPluginHub.injection.injectEventPluginOrder = function(){\noldInjectEventPluginOrder.apply(this,arguments);\nbuildSimulators();};\n\nvar oldInjectEventPlugins=EventPluginHub.injection.injectEventPluginsByName;\nEventPluginHub.injection.injectEventPluginsByName = function(){\noldInjectEventPlugins.apply(this,arguments);\nbuildSimulators();};\n\n\nbuildSimulators();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction makeNativeSimulator(eventType){\nreturn function(domComponentOrNode,nativeEventData){\nvar fakeNativeEvent=new Event(eventType);\nassign(fakeNativeEvent,nativeEventData);\nif(ReactTestUtils.isDOMComponent(domComponentOrNode)){\nReactTestUtils.simulateNativeEventOnDOMComponent(\neventType,\ndomComponentOrNode,\nfakeNativeEvent);}else \n\nif(!!domComponentOrNode.tagName){\n\nReactTestUtils.simulateNativeEventOnNode(\neventType,\ndomComponentOrNode,\nfakeNativeEvent);}};}\n\n\n\n\n\nvar eventType;\nfor(eventType in topLevelTypes) {\n\nvar convenienceName=eventType.indexOf('top') === 0?\neventType.charAt(3).toLowerCase() + eventType.substr(4):eventType;\n\n\n\n\nReactTestUtils.SimulateNative[convenienceName] = \nmakeNativeSimulator(eventType);}\n\n\nmodule.exports = ReactTestUtils;","sourceCode":"/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ReactTestUtils\n */\n\n'use strict';\n\nvar EventConstants = require('EventConstants');\nvar EventPluginHub = require('EventPluginHub');\nvar EventPropagators = require('EventPropagators');\nvar React = require('React');\nvar ReactElement = require('ReactElement');\nvar ReactEmptyComponent = require('ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');\nvar ReactCompositeComponent = require('ReactCompositeComponent');\nvar ReactInstanceHandles = require('ReactInstanceHandles');\nvar ReactInstanceMap = require('ReactInstanceMap');\nvar ReactMount = require('ReactMount');\nvar ReactUpdates = require('ReactUpdates');\nvar SyntheticEvent = require('SyntheticEvent');\n\nvar assign = require('Object.assign');\n\nvar topLevelTypes = EventConstants.topLevelTypes;\n\nfunction Event(suffix) {}\n\n/**\n * @class ReactTestUtils\n */\n\n/**\n * Todo: Support the entire DOM.scry query syntax. For now, these simple\n * utilities will suffice for testing purposes.\n * @lends ReactTestUtils\n */\nvar ReactTestUtils = {\n renderIntoDocument: function(instance) {\n var div = document.createElement('div');\n // None of our tests actually require attaching the container to the\n // DOM, and doing so creates a mess that we rely on test isolation to\n // clean up, so we're going to stop honoring the name of this method\n // (and probably rename it eventually) if no problems arise.\n // document.documentElement.appendChild(div);\n return React.render(instance, div);\n },\n\n isElement: function(element) {\n return ReactElement.isValidElement(element);\n },\n\n isElementOfType: function(inst, convenienceConstructor) {\n return (\n ReactElement.isValidElement(inst) &&\n inst.type === convenienceConstructor\n );\n },\n\n isDOMComponent: function(inst) {\n // TODO: Fix this heuristic. It's just here because composites can currently\n // pretend to be DOM components.\n return !!(inst && inst.tagName && inst.getDOMNode);\n },\n\n isDOMComponentElement: function(inst) {\n return !!(inst &&\n ReactElement.isValidElement(inst) &&\n !!inst.tagName);\n },\n\n isCompositeComponent: function(inst) {\n return typeof inst.render === 'function' &&\n typeof inst.setState === 'function';\n },\n\n isCompositeComponentWithType: function(inst, type) {\n return !!(ReactTestUtils.isCompositeComponent(inst) &&\n (inst.constructor === type));\n },\n\n isCompositeComponentElement: function(inst) {\n if (!ReactElement.isValidElement(inst)) {\n return false;\n }\n // We check the prototype of the type that will get mounted, not the\n // instance itself. This is a future proof way of duck typing.\n var prototype = inst.type.prototype;\n return (\n typeof prototype.render === 'function' &&\n typeof prototype.setState === 'function'\n );\n },\n\n isCompositeComponentElementWithType: function(inst, type) {\n return !!(ReactTestUtils.isCompositeComponentElement(inst) &&\n (inst.constructor === type));\n },\n\n getRenderedChildOfCompositeComponent: function(inst) {\n if (!ReactTestUtils.isCompositeComponent(inst)) {\n return null;\n }\n var internalInstance = ReactInstanceMap.get(inst);\n return internalInstance._renderedComponent.getPublicInstance();\n },\n\n findAllInRenderedTree: function(inst, test) {\n if (!inst) {\n return [];\n }\n var ret = test(inst) ? [inst] : [];\n if (ReactTestUtils.isDOMComponent(inst)) {\n var internalInstance = ReactInstanceMap.get(inst);\n var renderedChildren = internalInstance\n ._renderedComponent\n ._renderedChildren;\n var key;\n for (key in renderedChildren) {\n if (!renderedChildren.hasOwnProperty(key)) {\n continue;\n }\n if (!renderedChildren[key].getPublicInstance) {\n continue;\n }\n ret = ret.concat(\n ReactTestUtils.findAllInRenderedTree(\n renderedChildren[key].getPublicInstance(),\n test\n )\n );\n }\n } else if (ReactTestUtils.isCompositeComponent(inst)) {\n ret = ret.concat(\n ReactTestUtils.findAllInRenderedTree(\n ReactTestUtils.getRenderedChildOfCompositeComponent(inst),\n test\n )\n );\n }\n return ret;\n },\n\n /**\n * Finds all instance of components in the rendered tree that are DOM\n * components with the class name matching `className`.\n * @return an array of all the matches.\n */\n scryRenderedDOMComponentsWithClass: function(root, className) {\n return ReactTestUtils.findAllInRenderedTree(root, function(inst) {\n var instClassName = inst.props.className;\n return ReactTestUtils.isDOMComponent(inst) && (\n instClassName &&\n (' ' + instClassName + ' ').indexOf(' ' + className + ' ') !== -1\n );\n });\n },\n\n /**\n * Like scryRenderedDOMComponentsWithClass but expects there to be one result,\n * and returns that one result, or throws exception if there is any other\n * number of matches besides one.\n * @return {!ReactDOMComponent} The one match.\n */\n findRenderedDOMComponentWithClass: function(root, className) {\n var all =\n ReactTestUtils.scryRenderedDOMComponentsWithClass(root, className);\n if (all.length !== 1) {\n throw new Error('Did not find exactly one match ' +\n '(found: ' + all.length + ') for class:' + className\n );\n }\n return all[0];\n },\n\n\n /**\n * Finds all instance of components in the rendered tree that are DOM\n * components with the tag name matching `tagName`.\n * @return an array of all the matches.\n */\n scryRenderedDOMComponentsWithTag: function(root, tagName) {\n return ReactTestUtils.findAllInRenderedTree(root, function(inst) {\n return ReactTestUtils.isDOMComponent(inst) &&\n inst.tagName === tagName.toUpperCase();\n });\n },\n\n /**\n * Like scryRenderedDOMComponentsWithTag but expects there to be one result,\n * and returns that one result, or throws exception if there is any other\n * number of matches besides one.\n * @return {!ReactDOMComponent} The one match.\n */\n findRenderedDOMComponentWithTag: function(root, tagName) {\n var all = ReactTestUtils.scryRenderedDOMComponentsWithTag(root, tagName);\n if (all.length !== 1) {\n throw new Error('Did not find exactly one match for tag:' + tagName);\n }\n return all[0];\n },\n\n\n /**\n * Finds all instances of components with type equal to `componentType`.\n * @return an array of all the matches.\n */\n scryRenderedComponentsWithType: function(root, componentType) {\n return ReactTestUtils.findAllInRenderedTree(root, function(inst) {\n return ReactTestUtils.isCompositeComponentWithType(\n inst,\n componentType\n );\n });\n },\n\n /**\n * Same as `scryRenderedComponentsWithType` but expects there to be one result\n * and returns that one result, or throws exception if there is any other\n * number of matches besides one.\n * @return {!ReactComponent} The one match.\n */\n findRenderedComponentWithType: function(root, componentType) {\n var all = ReactTestUtils.scryRenderedComponentsWithType(\n root,\n componentType\n );\n if (all.length !== 1) {\n throw new Error(\n 'Did not find exactly one match for componentType:' + componentType\n );\n }\n return all[0];\n },\n\n /**\n * Pass a mocked component module to this method to augment it with\n * useful methods that allow it to be used as a dummy React component.\n * Instead of rendering as usual, the component will become a simple\n * <div> containing any provided children.\n *\n * @param {object} module the mock function object exported from a\n * module that defines the component to be mocked\n * @param {?string} mockTagName optional dummy root tag name to return\n * from render method (overrides\n * module.mockTagName if provided)\n * @return {object} the ReactTestUtils object (for chaining)\n */\n mockComponent: function(module, mockTagName) {\n mockTagName = mockTagName || module.mockTagName || \"div\";\n\n module.prototype.render.mockImplementation(function() {\n return React.createElement(\n mockTagName,\n null,\n this.props.children\n );\n });\n\n return this;\n },\n\n /**\n * Simulates a top level event being dispatched from a raw event that occured\n * on an `Element` node.\n * @param topLevelType {Object} A type from `EventConstants.topLevelTypes`\n * @param {!Element} node The dom to simulate an event occurring on.\n * @param {?Event} fakeNativeEvent Fake native event to use in SyntheticEvent.\n */\n simulateNativeEventOnNode: function(topLevelType, node, fakeNativeEvent) {\n fakeNativeEvent.target = node;\n ReactBrowserEventEmitter.ReactEventListener.dispatchEvent(\n topLevelType,\n fakeNativeEvent\n );\n },\n\n /**\n * Simulates a top level event being dispatched from a raw event that occured\n * on the `ReactDOMComponent` `comp`.\n * @param topLevelType {Object} A type from `EventConstants.topLevelTypes`.\n * @param comp {!ReactDOMComponent}\n * @param {?Event} fakeNativeEvent Fake native event to use in SyntheticEvent.\n */\n simulateNativeEventOnDOMComponent: function(\n topLevelType,\n comp,\n fakeNativeEvent) {\n ReactTestUtils.simulateNativeEventOnNode(\n topLevelType,\n comp.getDOMNode(),\n fakeNativeEvent\n );\n },\n\n nativeTouchData: function(x, y) {\n return {\n touches: [\n {pageX: x, pageY: y}\n ]\n };\n },\n\n createRenderer: function() {\n return new ReactShallowRenderer();\n },\n\n Simulate: null,\n SimulateNative: {}\n};\n\n/**\n * @class ReactShallowRenderer\n */\nvar ReactShallowRenderer = function() {\n this._instance = null;\n};\n\nReactShallowRenderer.prototype.getRenderOutput = function() {\n return (\n (this._instance && this._instance._renderedComponent &&\n this._instance._renderedComponent._renderedOutput)\n || null\n );\n};\n\nvar NoopInternalComponent = function(element) {\n this._renderedOutput = element;\n this._currentElement = element === null || element === false ?\n ReactEmptyComponent.emptyElement :\n element;\n};\n\nNoopInternalComponent.prototype = {\n\n mountComponent: function() {\n },\n\n receiveComponent: function(element) {\n this._renderedOutput = element;\n this._currentElement = element === null || element === false ?\n ReactEmptyComponent.emptyElement :\n element;\n },\n\n unmountComponent: function() {\n }\n\n};\n\nvar ShallowComponentWrapper = function() { };\nassign(\n ShallowComponentWrapper.prototype,\n ReactCompositeComponent.Mixin, {\n _instantiateReactComponent: function(element) {\n return new NoopInternalComponent(element);\n },\n _replaceNodeWithMarkupByID: function() {},\n _renderValidatedComponent:\n ReactCompositeComponent.Mixin.\n _renderValidatedComponentWithoutOwnerOrContext\n }\n);\n\nReactShallowRenderer.prototype.render = function(element, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled();\n this._render(element, transaction, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n};\n\nReactShallowRenderer.prototype.unmount = function() {\n if (this._instance) {\n this._instance.unmountComponent();\n }\n};\n\nReactShallowRenderer.prototype._render = function(element, transaction, context) {\n if (!this._instance) {\n var rootID = ReactInstanceHandles.createReactRootID();\n var instance = new ShallowComponentWrapper(element.type);\n instance.construct(element);\n\n instance.mountComponent(rootID, transaction, context);\n\n this._instance = instance;\n } else {\n this._instance.receiveComponent(element, transaction, context);\n }\n};\n\n/**\n * Exports:\n *\n * - `ReactTestUtils.Simulate.click(Element/ReactDOMComponent)`\n * - `ReactTestUtils.Simulate.mouseMove(Element/ReactDOMComponent)`\n * - `ReactTestUtils.Simulate.change(Element/ReactDOMComponent)`\n * - ... (All keys from event plugin `eventTypes` objects)\n */\nfunction makeSimulator(eventType) {\n return function(domComponentOrNode, eventData) {\n var node;\n if (ReactTestUtils.isDOMComponent(domComponentOrNode)) {\n node = domComponentOrNode.getDOMNode();\n } else if (domComponentOrNode.tagName) {\n node = domComponentOrNode;\n }\n\n var fakeNativeEvent = new Event();\n fakeNativeEvent.target = node;\n // We don't use SyntheticEvent.getPooled in order to not have to worry about\n // properly destroying any properties assigned from `eventData` upon release\n var event = new SyntheticEvent(\n ReactBrowserEventEmitter.eventNameDispatchConfigs[eventType],\n ReactMount.getID(node),\n fakeNativeEvent\n );\n assign(event, eventData);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n ReactUpdates.batchedUpdates(function() {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue();\n });\n };\n}\n\nfunction buildSimulators() {\n ReactTestUtils.Simulate = {};\n\n var eventType;\n for (eventType in ReactBrowserEventEmitter.eventNameDispatchConfigs) {\n /**\n * @param {!Element || ReactDOMComponent} domComponentOrNode\n * @param {?object} eventData Fake event data to use in SyntheticEvent.\n */\n ReactTestUtils.Simulate[eventType] = makeSimulator(eventType);\n }\n}\n\n// Rebuild ReactTestUtils.Simulate whenever event plugins are injected\nvar oldInjectEventPluginOrder = EventPluginHub.injection.injectEventPluginOrder;\nEventPluginHub.injection.injectEventPluginOrder = function() {\n oldInjectEventPluginOrder.apply(this, arguments);\n buildSimulators();\n};\nvar oldInjectEventPlugins = EventPluginHub.injection.injectEventPluginsByName;\nEventPluginHub.injection.injectEventPluginsByName = function() {\n oldInjectEventPlugins.apply(this, arguments);\n buildSimulators();\n};\n\nbuildSimulators();\n\n/**\n * Exports:\n *\n * - `ReactTestUtils.SimulateNative.click(Element/ReactDOMComponent)`\n * - `ReactTestUtils.SimulateNative.mouseMove(Element/ReactDOMComponent)`\n * - `ReactTestUtils.SimulateNative.mouseIn/ReactDOMComponent)`\n * - `ReactTestUtils.SimulateNative.mouseOut(Element/ReactDOMComponent)`\n * - ... (All keys from `EventConstants.topLevelTypes`)\n *\n * Note: Top level event types are a subset of the entire set of handler types\n * (which include a broader set of \"synthetic\" events). For example, onDragDone\n * is a synthetic event. Except when testing an event plugin or React's event\n * handling code specifically, you probably want to use ReactTestUtils.Simulate\n * to dispatch synthetic events.\n */\n\nfunction makeNativeSimulator(eventType) {\n return function(domComponentOrNode, nativeEventData) {\n var fakeNativeEvent = new Event(eventType);\n assign(fakeNativeEvent, nativeEventData);\n if (ReactTestUtils.isDOMComponent(domComponentOrNode)) {\n ReactTestUtils.simulateNativeEventOnDOMComponent(\n eventType,\n domComponentOrNode,\n fakeNativeEvent\n );\n } else if (!!domComponentOrNode.tagName) {\n // Will allow on actual dom nodes.\n ReactTestUtils.simulateNativeEventOnNode(\n eventType,\n domComponentOrNode,\n fakeNativeEvent\n );\n }\n };\n}\n\nvar eventType;\nfor (eventType in topLevelTypes) {\n // Event type is stored as 'topClick' - we transform that to 'click'\n var convenienceName = eventType.indexOf('top') === 0 ?\n eventType.charAt(3).toLowerCase() + eventType.substr(4) : eventType;\n /**\n * @param {!Element || ReactDOMComponent} domComponentOrNode\n * @param {?Event} nativeEventData Fake native event to use in SyntheticEvent.\n */\n ReactTestUtils.SimulateNative[convenienceName] =\n makeNativeSimulator(eventType);\n}\n\nmodule.exports = ReactTestUtils;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/react-native/node_modules/react-tools/src/test/ReactTestUtils.js"},"mtime":1429396253000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/Button.js":{"data":{"code":"'use strict';var _extends=Object.assign || function(target){for(var i=1;i < arguments.length;i++) {var source=arguments[i];for(var key in source) {if(Object.prototype.hasOwnProperty.call(source,key)){target[key] = source[key];}}}return target;};\n\nvar React=require('react-native');var \n\nPropTypes=\n\n\n\n\nReact.PropTypes;var StyleSheet=React.StyleSheet;var Text=React.Text;var TouchableOpacity=React.TouchableOpacity;var View=React.View;\n\nvar coalesceNonElementChildren=require('./coalesceNonElementChildren');\n\nvar systemButtonOpacity=0.2;\n\nvar Button=React.createClass({displayName:'Button',\npropTypes:_extends({},\nTouchableOpacity.propTypes,{\ndisabled:PropTypes.bool,\nstyle:Text.propTypes.style}),\n\n\nrender:function(){\nvar touchableProps={\nactiveOpacity:this._computeActiveOpacity()};\n\nif(!this.props.disabled){\ntouchableProps.onPress = this.props.onPress;\ntouchableProps.onPressIn = this.props.onPressIn;\ntouchableProps.onPressOut = this.props.onPressOut;\ntouchableProps.onLongPress = this.props.onLongPress;}\n\n\nreturn (\nReact.createElement(TouchableOpacity,touchableProps,\nthis._renderGroupedChildren()));},\n\n\n\n\n_renderGroupedChildren:function(){var _this=this;\nvar buttonStateStyle=this.props.disabled?styles.disabledText:null;\n\nvar children=coalesceNonElementChildren(this.props.children,function(children,index){\nreturn (\nReact.createElement(Text,{\nkey:index,\nstyle:[styles.text,buttonStateStyle,_this.props.style]},\nchildren));});\n\n\n\n\nswitch(children.length){\ncase 0:\nreturn null;\ncase 1:\nreturn children[0];\ndefault:\nreturn React.createElement(View,{style:styles.group},children);}},\n\n\n\n_computeActiveOpacity:function(){\nif(this.props.disabled){\nreturn 1;}\n\nreturn this.props.activeOpacity != null?\nthis.props.activeOpacity:\nsystemButtonOpacity;}});\n\n\n\nvar styles=StyleSheet.create({\ntext:{\ncolor:'#007aff',\nfontFamily:'.HelveticaNeueInterface-MediumP4',\nfontSize:17,\nfontWeight:'bold',\ntextAlign:'center'},\n\ndisabledText:{\ncolor:'#dcdcdc'},\n\ngroup:{\nflexDirection:'row',\njustifyContent:'space-between',\nalignItems:'center'}});\n\n\n\nmodule.exports = Button;","sourceCode":"'use strict';\n\nvar React = require('react-native');\nvar {\n PropTypes,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} = React;\n\nvar coalesceNonElementChildren = require('./coalesceNonElementChildren');\n\nvar systemButtonOpacity = 0.2;\n\nvar Button = React.createClass({\n propTypes: {\n ...TouchableOpacity.propTypes,\n disabled: PropTypes.bool,\n style: Text.propTypes.style,\n },\n\n render() {\n var touchableProps = {\n activeOpacity: this._computeActiveOpacity(),\n };\n if (!this.props.disabled) {\n touchableProps.onPress = this.props.onPress;\n touchableProps.onPressIn = this.props.onPressIn;\n touchableProps.onPressOut = this.props.onPressOut;\n touchableProps.onLongPress = this.props.onLongPress;\n }\n\n return (\n <TouchableOpacity {...touchableProps}>\n {this._renderGroupedChildren()}\n </TouchableOpacity>\n );\n },\n\n _renderGroupedChildren() {\n var buttonStateStyle = this.props.disabled ? styles.disabledText : null;\n\n var children = coalesceNonElementChildren(this.props.children, (children, index) => {\n return (\n <Text\n key={index}\n style={[styles.text, buttonStateStyle, this.props.style]}>\n {children}\n </Text>\n );\n });\n\n switch (children.length) {\n case 0:\n return null;\n case 1:\n return children[0];\n default:\n return <View style={styles.group}>{children}</View>;\n }\n },\n\n _computeActiveOpacity() {\n if (this.props.disabled) {\n return 1;\n }\n return this.props.activeOpacity != null ?\n this.props.activeOpacity :\n systemButtonOpacity;\n },\n});\n\nvar styles = StyleSheet.create({\n text: {\n color: '#007aff',\n fontFamily: '.HelveticaNeueInterface-MediumP4',\n fontSize: 17,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n disabledText: {\n color: '#dcdcdc',\n },\n group: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n});\n\nmodule.exports = Button;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/Button.js"},"mtime":1430539889000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/react-native/react-native.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ReactNative=Object.assign(Object.create(require('React')),{\n\nActivityIndicatorIOS:require('ActivityIndicatorIOS'),\nDatePickerIOS:require('DatePickerIOS'),\nImage:require('Image'),\nListView:require('ListView'),\nMapView:require('MapView'),\nNavigator:require('Navigator'),\nNavigatorIOS:require('NavigatorIOS'),\nPickerIOS:require('PickerIOS'),\nProgressViewIOS:require('ProgressViewIOS'),\nScrollView:require('ScrollView'),\nSegmentedControlIOS:require('SegmentedControlIOS'),\nSliderIOS:require('SliderIOS'),\nSwitchIOS:require('SwitchIOS'),\nTabBarIOS:require('TabBarIOS'),\nText:require('Text'),\nTextInput:require('TextInput'),\nTouchableHighlight:require('TouchableHighlight'),\nTouchableOpacity:require('TouchableOpacity'),\nTouchableWithoutFeedback:require('TouchableWithoutFeedback'),\nView:require('View'),\nWebView:require('WebView'),\n\n\nActionSheetIOS:require('ActionSheetIOS'),\nAdSupportIOS:require('AdSupportIOS'),\nAlertIOS:require('AlertIOS'),\nAnimated:require('Animated'),\nAppRegistry:require('AppRegistry'),\nAppStateIOS:require('AppStateIOS'),\nAsyncStorage:require('AsyncStorage'),\nCameraRoll:require('CameraRoll'),\nDimensions:require('Dimensions'),\nEasing:require('Easing'),\nImagePickerIOS:require('ImagePickerIOS'),\nInteractionManager:require('InteractionManager'),\nLayoutAnimation:require('LayoutAnimation'),\nLinkingIOS:require('LinkingIOS'),\nNetInfo:require('NetInfo'),\nPanResponder:require('PanResponder'),\nPixelRatio:require('PixelRatio'),\nPushNotificationIOS:require('PushNotificationIOS'),\nSettings:require('Settings'),\nStatusBarIOS:require('StatusBarIOS'),\nStyleSheet:require('StyleSheet'),\nVibrationIOS:require('VibrationIOS'),\n\n\nDeviceEventEmitter:require('RCTDeviceEventEmitter'),\nNativeAppEventEmitter:require('RCTNativeAppEventEmitter'),\nNativeModules:require('NativeModules'),\nPlatform:require('Platform'),\nrequireNativeComponent:require('requireNativeComponent'),\n\n\nEdgeInsetsPropType:require('EdgeInsetsPropType'),\nPointPropType:require('PointPropType'),\n\naddons:{\nLinkedStateMixin:require('LinkedStateMixin'),\nPerf:undefined,\nPureRenderMixin:require('ReactComponentWithPureRenderMixin'),\nTestModule:require('NativeModules').TestModule,\nTestUtils:undefined,\nbatchedUpdates:require('ReactUpdates').batchedUpdates,\ncloneWithProps:require('cloneWithProps'),\ncreateFragment:require('ReactFragment').create,\nupdate:require('update')}});\n\n\n\nif(__DEV__){\nReactNative.addons.Perf = require('ReactDefaultPerf');\nReactNative.addons.TestUtils = require('ReactTestUtils');}\n\n\nmodule.exports = ReactNative;","sourceCode":"/**\n * Copyright (c) 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @flow\n */\n'use strict';\n\n// Export React, plus some native additions.\n//\n// The use of Object.create/assign is to work around a Flow bug (#6560135).\n// Once that is fixed, change this back to\n//\n// var ReactNative = {...require('React'), /* additions */}\n//\nvar ReactNative = Object.assign(Object.create(require('React')), {\n // Components\n ActivityIndicatorIOS: require('ActivityIndicatorIOS'),\n DatePickerIOS: require('DatePickerIOS'),\n Image: require('Image'),\n ListView: require('ListView'),\n MapView: require('MapView'),\n Navigator: require('Navigator'),\n NavigatorIOS: require('NavigatorIOS'),\n PickerIOS: require('PickerIOS'),\n ProgressViewIOS: require('ProgressViewIOS'),\n ScrollView: require('ScrollView'),\n SegmentedControlIOS: require('SegmentedControlIOS'),\n SliderIOS: require('SliderIOS'),\n SwitchIOS: require('SwitchIOS'),\n TabBarIOS: require('TabBarIOS'),\n Text: require('Text'),\n TextInput: require('TextInput'),\n TouchableHighlight: require('TouchableHighlight'),\n TouchableOpacity: require('TouchableOpacity'),\n TouchableWithoutFeedback: require('TouchableWithoutFeedback'),\n View: require('View'),\n WebView: require('WebView'),\n\n // APIs\n ActionSheetIOS: require('ActionSheetIOS'),\n AdSupportIOS: require('AdSupportIOS'),\n AlertIOS: require('AlertIOS'),\n Animated: require('Animated'),\n AppRegistry: require('AppRegistry'),\n AppStateIOS: require('AppStateIOS'),\n AsyncStorage: require('AsyncStorage'),\n CameraRoll: require('CameraRoll'),\n Dimensions: require('Dimensions'),\n Easing: require('Easing'),\n ImagePickerIOS: require('ImagePickerIOS'),\n InteractionManager: require('InteractionManager'),\n LayoutAnimation: require('LayoutAnimation'),\n LinkingIOS: require('LinkingIOS'),\n NetInfo: require('NetInfo'),\n PanResponder: require('PanResponder'),\n PixelRatio: require('PixelRatio'),\n PushNotificationIOS: require('PushNotificationIOS'),\n Settings: require('Settings'),\n StatusBarIOS: require('StatusBarIOS'),\n StyleSheet: require('StyleSheet'),\n VibrationIOS: require('VibrationIOS'),\n\n // Plugins\n DeviceEventEmitter: require('RCTDeviceEventEmitter'),\n NativeAppEventEmitter: require('RCTNativeAppEventEmitter'),\n NativeModules: require('NativeModules'),\n Platform: require('Platform'),\n requireNativeComponent: require('requireNativeComponent'),\n\n // Prop Types\n EdgeInsetsPropType: require('EdgeInsetsPropType'),\n PointPropType: require('PointPropType'),\n\n addons: {\n LinkedStateMixin: require('LinkedStateMixin'),\n Perf: undefined,\n PureRenderMixin: require('ReactComponentWithPureRenderMixin'),\n TestModule: require('NativeModules').TestModule,\n TestUtils: undefined,\n batchedUpdates: require('ReactUpdates').batchedUpdates,\n cloneWithProps: require('cloneWithProps'),\n createFragment: require('ReactFragment').create,\n update: require('update'),\n },\n});\n\nif (__DEV__) {\n ReactNative.addons.Perf = require('ReactDefaultPerf');\n ReactNative.addons.TestUtils = require('ReactTestUtils');\n}\n\nmodule.exports = ReactNative;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native/Libraries/react-native/react-native.js"},"mtime":1437429441000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/coalesceNonElementChildren.js":{"data":{"code":"'use strict';\n\nvar React=require('react-native');\n\nfunction coalesceNonElementChildren(children,coalesceNodes){\nvar coalescedChildren=[];\n\nvar contiguousNonElements=[];\nReact.Children.forEach(children,function(child){\nif(!React.isValidElement(child)){\ncontiguousNonElements.push(child);\nreturn;}\n\n\nif(contiguousNonElements.length){\nvar coalescedChild=coalesceNodes(contiguousNonElements,coalescedChildren.length);\ncoalescedChildren.push(\ncoalesceNodes(contiguousNonElements,coalescedChildren.length));\n\ncontiguousNonElements = [];}\n\n\ncoalescedChildren.push(child);});\n\n\nif(contiguousNonElements.length){\ncoalescedChildren.push(\ncoalesceNodes(contiguousNonElements,coalescedChildren.length));}\n\n\n\nreturn coalescedChildren;}\n\n\nmodule.exports = coalesceNonElementChildren;","sourceCode":"'use strict';\n\nvar React = require('react-native');\n\nfunction coalesceNonElementChildren(children, coalesceNodes) {\n var coalescedChildren = [];\n\n var contiguousNonElements = [];\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) {\n contiguousNonElements.push(child);\n return;\n }\n\n if (contiguousNonElements.length) {\n var coalescedChild = coalesceNodes(contiguousNonElements, coalescedChildren.length);\n coalescedChildren.push(\n coalesceNodes(contiguousNonElements, coalescedChildren.length)\n );\n contiguousNonElements = [];\n }\n\n coalescedChildren.push(child);\n });\n\n if (contiguousNonElements.length) {\n coalescedChildren.push(\n coalesceNodes(contiguousNonElements, coalescedChildren.length)\n );\n }\n\n return coalescedChildren;\n}\n\nmodule.exports = coalesceNonElementChildren;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/node_modules/react-native-button/coalesceNonElementChildren.js"},"mtime":1430540029000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/request-fetch-adapter.js":{"data":{"code":"module.exports.request = function request(verb,url,body,callback){\nif(typeof body === \"function\"){\ncallback = body;\nbody = null;}\n\n\nvar headers={\n'Accept':'application/json',\n'Content-Type':'application/json'};\n\n\nif(body && typeof body === \"object\"){\nbody = JSON.stringify(body);}\n\n\nvar statusCode;\n\nfetch(url,{\nmethod:verb,\nheaders:headers,\nbody:body}).\nthen(function(response){\nstatusCode = response.status;\nreturn response.text();}).\nthen(function(body){\ncallback(null,{statusCode:statusCode,body:body});}).\ncatch(function(err){\ncallback(err);});};","sourceCode":"module.exports.request = function request(verb, url, body, callback) {\n if (typeof body === \"function\") {\n callback = body;\n body = null;\n }\n\n var headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n };\n\n if (body && typeof body === \"object\") {\n body = JSON.stringify(body);\n }\n\n var statusCode;\n\n fetch(url, {\n method: verb,\n headers: headers,\n body: body\n }).then(function(response) {\n statusCode = response.status;\n return response.text();\n }).then(function(body) {\n callback(null, {statusCode: statusCode, body: body});\n }).catch(function(err) {\n callback(err);\n });\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/request-fetch-adapter.js"},"mtime":1439251638000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/semver/semver.browser.js":{"data":{"code":";(function(exports){\n\n\nif(typeof module === 'object' && module.exports === exports)\nexports = module.exports = SemVer;\n\n\n\n\n\nexports.SEMVER_SPEC_VERSION = '2.0.0';\n\nvar MAX_LENGTH=256;\nvar MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n\nvar re=exports.re = [];\nvar src=exports.src = [];\nvar R=0;\n\n\n\n\n\n\n\nvar NUMERICIDENTIFIER=R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE=R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+';\n\n\n\n\n\n\nvar NONNUMERICIDENTIFIER=R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\n\n\n\n\n\nvar MAINVERSION=R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIER] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIER] + ')';\n\nvar MAINVERSIONLOOSE=R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + \n'(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n\n\n\nvar PRERELEASEIDENTIFIER=R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + \n'|' + src[NONNUMERICIDENTIFIER] + ')';\n\nvar PRERELEASEIDENTIFIERLOOSE=R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + \n'|' + src[NONNUMERICIDENTIFIER] + ')';\n\n\n\n\n\n\nvar PRERELEASE=R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + \n'(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\n\nvar PRERELEASELOOSE=R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + \n'(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n\n\n\nvar BUILDIDENTIFIER=R++;\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';\n\n\n\n\n\nvar BUILD=R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] + \n'(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n\n\n\n\n\n\n\n\n\n\nvar FULL=R++;\nvar FULLPLAIN='v?' + src[MAINVERSION] + \nsrc[PRERELEASE] + '?' + \nsrc[BUILD] + '?';\n\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n\n\n\nvar LOOSEPLAIN='[v=\\\\s]*' + src[MAINVERSIONLOOSE] + \nsrc[PRERELEASELOOSE] + '?' + \nsrc[BUILD] + '?';\n\nvar LOOSE=R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\n\nvar GTLT=R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n\n\n\nvar XRANGEIDENTIFIERLOOSE=R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER=R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\n\nvar XRANGEPLAIN=R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + \n'(?:' + src[PRERELEASE] + ')?' + \nsrc[BUILD] + '?' + \n')?)?';\n\nvar XRANGEPLAINLOOSE=R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + \n'(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + \n'(?:' + src[PRERELEASELOOSE] + ')?' + \nsrc[BUILD] + '?' + \n')?)?';\n\nvar XRANGE=R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE=R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n\n\nvar LONETILDE=R++;\nsrc[LONETILDE] = '(?:~>?)';\n\nvar TILDETRIM=R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM],'g');\nvar tildeTrimReplace='$1~';\n\nvar TILDE=R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE=R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n\n\nvar LONECARET=R++;\nsrc[LONECARET] = '(?:\\\\^)';\n\nvar CARETTRIM=R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM],'g');\nvar caretTrimReplace='$1^';\n\nvar CARET=R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE=R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n\nvar COMPARATORLOOSE=R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR=R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n\n\n\nvar COMPARATORTRIM=R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] + \n'\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM],'g');\nvar comparatorTrimReplace='$1$2$3';\n\n\n\n\n\n\nvar HYPHENRANGE=R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' + \n'\\\\s+-\\\\s+' + \n'(' + src[XRANGEPLAIN] + ')' + \n'\\\\s*$';\n\nvar HYPHENRANGELOOSE=R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' + \n'\\\\s+-\\\\s+' + \n'(' + src[XRANGEPLAINLOOSE] + ')' + \n'\\\\s*$';\n\n\nvar STAR=R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n\n\nfor(var i=0;i < R;i++) {\n;\nif(!re[i])\nre[i] = new RegExp(src[i]);}\n\n\nexports.parse = parse;\nfunction parse(version,loose){\nif(version instanceof SemVer)\nreturn version;\n\nif(typeof version !== 'string')\nreturn null;\n\nif(version.length > MAX_LENGTH)\nreturn null;\n\nvar r=loose?re[LOOSE]:re[FULL];\nif(!r.test(version))\nreturn null;\n\ntry{\nreturn new SemVer(version,loose);}\ncatch(er) {\nreturn null;}}\n\n\n\nexports.valid = valid;\nfunction valid(version,loose){\nvar v=parse(version,loose);\nreturn v?v.version:null;}\n\n\n\nexports.clean = clean;\nfunction clean(version,loose){\nvar s=parse(version.trim().replace(/^[=v]+/,''),loose);\nreturn s?s.version:null;}\n\n\nexports.SemVer = SemVer;\n\nfunction SemVer(version,loose){\nif(version instanceof SemVer){\nif(version.loose === loose)\nreturn version;else \n\nversion = version.version;}else \nif(typeof version !== 'string'){\nthrow new TypeError('Invalid Version: ' + version);}\n\n\nif(version.length > MAX_LENGTH)\nthrow new TypeError('version is longer than ' + MAX_LENGTH + ' characters');\n\nif(!(this instanceof SemVer))\nreturn new SemVer(version,loose);\n\n;\nthis.loose = loose;\nvar m=version.trim().match(loose?re[LOOSE]:re[FULL]);\n\nif(!m)\nthrow new TypeError('Invalid Version: ' + version);\n\nthis.raw = version;\n\n\nthis.major = +m[1];\nthis.minor = +m[2];\nthis.patch = +m[3];\n\nif(this.major > MAX_SAFE_INTEGER || this.major < 0)\nthrow new TypeError('Invalid major version');\n\nif(this.minor > MAX_SAFE_INTEGER || this.minor < 0)\nthrow new TypeError('Invalid minor version');\n\nif(this.patch > MAX_SAFE_INTEGER || this.patch < 0)\nthrow new TypeError('Invalid patch version');\n\n\nif(!m[4])\nthis.prerelease = [];else \n\nthis.prerelease = m[4].split('.').map(function(id){\nif(/^[0-9]+$/.test(id)){\nvar num=+id;\nif(num >= 0 && num < MAX_SAFE_INTEGER)\nreturn num;}\n\nreturn id;});\n\n\nthis.build = m[5]?m[5].split('.'):[];\nthis.format();}\n\n\nSemVer.prototype.format = function(){\nthis.version = this.major + '.' + this.minor + '.' + this.patch;\nif(this.prerelease.length)\nthis.version += '-' + this.prerelease.join('.');\nreturn this.version;};\n\n\nSemVer.prototype.inspect = function(){\nreturn '<SemVer \"' + this + '\">';};\n\n\nSemVer.prototype.toString = function(){\nreturn this.version;};\n\n\nSemVer.prototype.compare = function(other){\n;\nif(!(other instanceof SemVer))\nother = new SemVer(other,this.loose);\n\nreturn this.compareMain(other) || this.comparePre(other);};\n\n\nSemVer.prototype.compareMain = function(other){\nif(!(other instanceof SemVer))\nother = new SemVer(other,this.loose);\n\nreturn compareIdentifiers(this.major,other.major) || \ncompareIdentifiers(this.minor,other.minor) || \ncompareIdentifiers(this.patch,other.patch);};\n\n\nSemVer.prototype.comparePre = function(other){\nif(!(other instanceof SemVer))\nother = new SemVer(other,this.loose);\n\n\nif(this.prerelease.length && !other.prerelease.length)\nreturn -1;else \nif(!this.prerelease.length && other.prerelease.length)\nreturn 1;else \nif(!this.prerelease.length && !other.prerelease.length)\nreturn 0;\n\nvar i=0;\ndo {\nvar a=this.prerelease[i];\nvar b=other.prerelease[i];\n;\nif(a === undefined && b === undefined)\nreturn 0;else \nif(b === undefined)\nreturn 1;else \nif(a === undefined)\nreturn -1;else \nif(a === b)\ncontinue;else \n\nreturn compareIdentifiers(a,b);}while(\n++i);};\n\n\n\n\nSemVer.prototype.inc = function(release,identifier){\nswitch(release){\ncase 'premajor':\nthis.prerelease.length = 0;\nthis.patch = 0;\nthis.minor = 0;\nthis.major++;\nthis.inc('pre',identifier);\nbreak;\ncase 'preminor':\nthis.prerelease.length = 0;\nthis.patch = 0;\nthis.minor++;\nthis.inc('pre',identifier);\nbreak;\ncase 'prepatch':\n\n\n\nthis.prerelease.length = 0;\nthis.inc('patch',identifier);\nthis.inc('pre',identifier);\nbreak;\n\n\ncase 'prerelease':\nif(this.prerelease.length === 0)\nthis.inc('patch',identifier);\nthis.inc('pre',identifier);\nbreak;\n\ncase 'major':\n\n\n\n\nif(this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)\nthis.major++;\nthis.minor = 0;\nthis.patch = 0;\nthis.prerelease = [];\nbreak;\ncase 'minor':\n\n\n\n\nif(this.patch !== 0 || this.prerelease.length === 0)\nthis.minor++;\nthis.patch = 0;\nthis.prerelease = [];\nbreak;\ncase 'patch':\n\n\n\n\nif(this.prerelease.length === 0)\nthis.patch++;\nthis.prerelease = [];\nbreak;\n\n\ncase 'pre':\nif(this.prerelease.length === 0)\nthis.prerelease = [0];else \n{\nvar i=this.prerelease.length;\nwhile(--i >= 0) {\nif(typeof this.prerelease[i] === 'number'){\nthis.prerelease[i]++;\ni = -2;}}\n\n\nif(i === -1)\nthis.prerelease.push(0);}\n\nif(identifier){\n\n\nif(this.prerelease[0] === identifier){\nif(isNaN(this.prerelease[1]))\nthis.prerelease = [identifier,0];}else \n\nthis.prerelease = [identifier,0];}\n\nbreak;\n\ndefault:\nthrow new Error('invalid increment argument: ' + release);}\n\nthis.format();\nreturn this;};\n\n\nexports.inc = inc;\nfunction inc(version,release,loose,identifier){\nif(typeof loose === 'string'){\nidentifier = loose;\nloose = undefined;}\n\n\ntry{\nreturn new SemVer(version,loose).inc(release,identifier).version;}\ncatch(er) {\nreturn null;}}\n\n\n\nexports.diff = diff;\nfunction diff(version1,version2){\nif(eq(version1,version2)){\nreturn null;}else \n{\nvar v1=parse(version1);\nvar v2=parse(version2);\nif(v1.prerelease.length || v2.prerelease.length){\nfor(var key in v1) {\nif(key === 'major' || key === 'minor' || key === 'patch'){\nif(v1[key] !== v2[key]){\nreturn 'pre' + key;}}}\n\n\n\nreturn 'prerelease';}\n\nfor(var key in v1) {\nif(key === 'major' || key === 'minor' || key === 'patch'){\nif(v1[key] !== v2[key]){\nreturn key;}}}}}\n\n\n\n\n\n\nexports.compareIdentifiers = compareIdentifiers;\n\nvar numeric=/^[0-9]+$/;\nfunction compareIdentifiers(a,b){\nvar anum=numeric.test(a);\nvar bnum=numeric.test(b);\n\nif(anum && bnum){\na = +a;\nb = +b;}\n\n\nreturn anum && !bnum?-1:\nbnum && !anum?1:\na < b?-1:\na > b?1:\n0;}\n\n\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a,b){\nreturn compareIdentifiers(b,a);}\n\n\nexports.major = major;\nfunction major(a,loose){\nreturn new SemVer(a,loose).major;}\n\n\nexports.minor = minor;\nfunction minor(a,loose){\nreturn new SemVer(a,loose).minor;}\n\n\nexports.patch = patch;\nfunction patch(a,loose){\nreturn new SemVer(a,loose).patch;}\n\n\nexports.compare = compare;\nfunction compare(a,b,loose){\nreturn new SemVer(a,loose).compare(b);}\n\n\nexports.compareLoose = compareLoose;\nfunction compareLoose(a,b){\nreturn compare(a,b,true);}\n\n\nexports.rcompare = rcompare;\nfunction rcompare(a,b,loose){\nreturn compare(b,a,loose);}\n\n\nexports.sort = sort;\nfunction sort(list,loose){\nreturn list.sort(function(a,b){\nreturn exports.compare(a,b,loose);});}\n\n\n\nexports.rsort = rsort;\nfunction rsort(list,loose){\nreturn list.sort(function(a,b){\nreturn exports.rcompare(a,b,loose);});}\n\n\n\nexports.gt = gt;\nfunction gt(a,b,loose){\nreturn compare(a,b,loose) > 0;}\n\n\nexports.lt = lt;\nfunction lt(a,b,loose){\nreturn compare(a,b,loose) < 0;}\n\n\nexports.eq = eq;\nfunction eq(a,b,loose){\nreturn compare(a,b,loose) === 0;}\n\n\nexports.neq = neq;\nfunction neq(a,b,loose){\nreturn compare(a,b,loose) !== 0;}\n\n\nexports.gte = gte;\nfunction gte(a,b,loose){\nreturn compare(a,b,loose) >= 0;}\n\n\nexports.lte = lte;\nfunction lte(a,b,loose){\nreturn compare(a,b,loose) <= 0;}\n\n\nexports.cmp = cmp;\nfunction cmp(a,op,b,loose){\nvar ret;\nswitch(op){\ncase '===':\nif(typeof a === 'object')a = a.version;\nif(typeof b === 'object')b = b.version;\nret = a === b;\nbreak;\ncase '!==':\nif(typeof a === 'object')a = a.version;\nif(typeof b === 'object')b = b.version;\nret = a !== b;\nbreak;\ncase '':case '=':case '==':ret = eq(a,b,loose);break;\ncase '!=':ret = neq(a,b,loose);break;\ncase '>':ret = gt(a,b,loose);break;\ncase '>=':ret = gte(a,b,loose);break;\ncase '<':ret = lt(a,b,loose);break;\ncase '<=':ret = lte(a,b,loose);break;\ndefault:throw new TypeError('Invalid operator: ' + op);}\n\nreturn ret;}\n\n\nexports.Comparator = Comparator;\nfunction Comparator(comp,loose){\nif(comp instanceof Comparator){\nif(comp.loose === loose)\nreturn comp;else \n\ncomp = comp.value;}\n\n\nif(!(this instanceof Comparator))\nreturn new Comparator(comp,loose);\n\n;\nthis.loose = loose;\nthis.parse(comp);\n\nif(this.semver === ANY)\nthis.value = '';else \n\nthis.value = this.operator + this.semver.version;\n\n;}\n\n\nvar ANY={};\nComparator.prototype.parse = function(comp){\nvar r=this.loose?re[COMPARATORLOOSE]:re[COMPARATOR];\nvar m=comp.match(r);\n\nif(!m)\nthrow new TypeError('Invalid comparator: ' + comp);\n\nthis.operator = m[1];\nif(this.operator === '=')\nthis.operator = '';\n\n\nif(!m[2])\nthis.semver = ANY;else \n\nthis.semver = new SemVer(m[2],this.loose);};\n\n\nComparator.prototype.inspect = function(){\nreturn '<SemVer Comparator \"' + this + '\">';};\n\n\nComparator.prototype.toString = function(){\nreturn this.value;};\n\n\nComparator.prototype.test = function(version){\n;\n\nif(this.semver === ANY)\nreturn true;\n\nif(typeof version === 'string')\nversion = new SemVer(version,this.loose);\n\nreturn cmp(version,this.operator,this.semver,this.loose);};\n\n\n\nexports.Range = Range;\nfunction Range(range,loose){\nif(range instanceof Range && range.loose === loose)\nreturn range;\n\nif(!(this instanceof Range))\nreturn new Range(range,loose);\n\nthis.loose = loose;\n\n\nthis.raw = range;\nthis.set = range.split(/\\s*\\|\\|\\s*/).map(function(range){\nreturn this.parseRange(range.trim());},\nthis).filter(function(c){\n\nreturn c.length;});\n\n\nif(!this.set.length){\nthrow new TypeError('Invalid SemVer Range: ' + range);}\n\n\nthis.format();}\n\n\nRange.prototype.inspect = function(){\nreturn '<SemVer Range \"' + this.range + '\">';};\n\n\nRange.prototype.format = function(){\nthis.range = this.set.map(function(comps){\nreturn comps.join(' ').trim();}).\njoin('||').trim();\nreturn this.range;};\n\n\nRange.prototype.toString = function(){\nreturn this.range;};\n\n\nRange.prototype.parseRange = function(range){\nvar loose=this.loose;\nrange = range.trim();\n;\n\nvar hr=loose?re[HYPHENRANGELOOSE]:re[HYPHENRANGE];\nrange = range.replace(hr,hyphenReplace);\n;\n\nrange = range.replace(re[COMPARATORTRIM],comparatorTrimReplace);\n;\n\n\nrange = range.replace(re[TILDETRIM],tildeTrimReplace);\n\n\nrange = range.replace(re[CARETTRIM],caretTrimReplace);\n\n\nrange = range.split(/\\s+/).join(' ');\n\n\n\n\nvar compRe=loose?re[COMPARATORLOOSE]:re[COMPARATOR];\nvar set=range.split(' ').map(function(comp){\nreturn parseComparator(comp,loose);}).\njoin(' ').split(/\\s+/);\nif(this.loose){\n\nset = set.filter(function(comp){\nreturn !!comp.match(compRe);});}\n\n\nset = set.map(function(comp){\nreturn new Comparator(comp,loose);});\n\n\nreturn set;};\n\n\n\nexports.toComparators = toComparators;\nfunction toComparators(range,loose){\nreturn new Range(range,loose).set.map(function(comp){\nreturn comp.map(function(c){\nreturn c.value;}).\njoin(' ').trim().split(' ');});}\n\n\n\n\n\n\nfunction parseComparator(comp,loose){\n;\ncomp = replaceCarets(comp,loose);\n;\ncomp = replaceTildes(comp,loose);\n;\ncomp = replaceXRanges(comp,loose);\n;\ncomp = replaceStars(comp,loose);\n;\nreturn comp;}\n\n\nfunction isX(id){\nreturn !id || id.toLowerCase() === 'x' || id === '*';}\n\n\n\n\n\n\n\n\nfunction replaceTildes(comp,loose){\nreturn comp.trim().split(/\\s+/).map(function(comp){\nreturn replaceTilde(comp,loose);}).\njoin(' ');}\n\n\nfunction replaceTilde(comp,loose){\nvar r=loose?re[TILDELOOSE]:re[TILDE];\nreturn comp.replace(r,function(_,M,m,p,pr){\n;\nvar ret;\n\nif(isX(M))\nret = '';else \nif(isX(m))\nret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else \nif(isX(p))\n\nret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else \nif(pr){\n;\nif(pr.charAt(0) !== '-')\npr = '-' + pr;\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + M + '.' + (+m + 1) + '.0';}else \n\n\nret = '>=' + M + '.' + m + '.' + p + \n' <' + M + '.' + (+m + 1) + '.0';\n\n;\nreturn ret;});}\n\n\n\n\n\n\n\n\n\nfunction replaceCarets(comp,loose){\nreturn comp.trim().split(/\\s+/).map(function(comp){\nreturn replaceCaret(comp,loose);}).\njoin(' ');}\n\n\nfunction replaceCaret(comp,loose){\n;\nvar r=loose?re[CARETLOOSE]:re[CARET];\nreturn comp.replace(r,function(_,M,m,p,pr){\n;\nvar ret;\n\nif(isX(M))\nret = '';else \nif(isX(m))\nret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else \nif(isX(p)){\nif(M === '0')\nret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else \n\nret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';}else \nif(pr){\n;\nif(pr.charAt(0) !== '-')\npr = '-' + pr;\nif(M === '0'){\nif(m === '0')\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + M + '.' + m + '.' + (+p + 1);else \n\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + M + '.' + (+m + 1) + '.0';}else \n\nret = '>=' + M + '.' + m + '.' + p + pr + \n' <' + (+M + 1) + '.0.0';}else \n{\n;\nif(M === '0'){\nif(m === '0')\nret = '>=' + M + '.' + m + '.' + p + \n' <' + M + '.' + m + '.' + (+p + 1);else \n\nret = '>=' + M + '.' + m + '.' + p + \n' <' + M + '.' + (+m + 1) + '.0';}else \n\nret = '>=' + M + '.' + m + '.' + p + \n' <' + (+M + 1) + '.0.0';}\n\n\n;\nreturn ret;});}\n\n\n\nfunction replaceXRanges(comp,loose){\n;\nreturn comp.split(/\\s+/).map(function(comp){\nreturn replaceXRange(comp,loose);}).\njoin(' ');}\n\n\nfunction replaceXRange(comp,loose){\ncomp = comp.trim();\nvar r=loose?re[XRANGELOOSE]:re[XRANGE];\nreturn comp.replace(r,function(ret,gtlt,M,m,p,pr){\n;\nvar xM=isX(M);\nvar xm=xM || isX(m);\nvar xp=xm || isX(p);\nvar anyX=xp;\n\nif(gtlt === '=' && anyX)\ngtlt = '';\n\nif(xM){\nif(gtlt === '>' || gtlt === '<'){\n\nret = '<0.0.0';}else \n{\n\nret = '*';}}else \n\nif(gtlt && anyX){\n\nif(xm)\nm = 0;\nif(xp)\np = 0;\n\nif(gtlt === '>'){\n\n\n\ngtlt = '>=';\nif(xm){\nM = +M + 1;\nm = 0;\np = 0;}else \nif(xp){\nm = +m + 1;\np = 0;}}else \n\nif(gtlt === '<='){\n\n\ngtlt = '<';\nif(xm)\nM = +M + 1;else \n\nm = +m + 1;}\n\n\nret = gtlt + M + '.' + m + '.' + p;}else \nif(xm){\nret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';}else \nif(xp){\nret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';}\n\n\n;\n\nreturn ret;});}\n\n\n\n\n\nfunction replaceStars(comp,loose){\n;\n\nreturn comp.trim().replace(re[STAR],'');}\n\n\n\n\n\n\n\nfunction hyphenReplace($0,\nfrom,fM,fm,fp,fpr,fb,\nto,tM,tm,tp,tpr,tb){\n\nif(isX(fM))\nfrom = '';else \nif(isX(fm))\nfrom = '>=' + fM + '.0.0';else \nif(isX(fp))\nfrom = '>=' + fM + '.' + fm + '.0';else \n\nfrom = '>=' + from;\n\nif(isX(tM))\nto = '';else \nif(isX(tm))\nto = '<' + (+tM + 1) + '.0.0';else \nif(isX(tp))\nto = '<' + tM + '.' + (+tm + 1) + '.0';else \nif(tpr)\nto = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;else \n\nto = '<=' + to;\n\nreturn (from + ' ' + to).trim();}\n\n\n\n\nRange.prototype.test = function(version){\nif(!version)\nreturn false;\n\nif(typeof version === 'string')\nversion = new SemVer(version,this.loose);\n\nfor(var i=0;i < this.set.length;i++) {\nif(testSet(this.set[i],version))\nreturn true;}\n\nreturn false;};\n\n\nfunction testSet(set,version){\nfor(var i=0;i < set.length;i++) {\nif(!set[i].test(version))\nreturn false;}\n\n\nif(version.prerelease.length){\n\n\n\n\n\nfor(var i=0;i < set.length;i++) {\n;\nif(set[i].semver === ANY)\ncontinue;\n\nif(set[i].semver.prerelease.length > 0){\nvar allowed=set[i].semver;\nif(allowed.major === version.major && \nallowed.minor === version.minor && \nallowed.patch === version.patch)\nreturn true;}}\n\n\n\n\nreturn false;}\n\n\nreturn true;}\n\n\nexports.satisfies = satisfies;\nfunction satisfies(version,range,loose){\ntry{\nrange = new Range(range,loose);}\ncatch(er) {\nreturn false;}\n\nreturn range.test(version);}\n\n\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions,range,loose){\nreturn versions.filter(function(version){\nreturn satisfies(version,range,loose);}).\nsort(function(a,b){\nreturn rcompare(a,b,loose);})[\n0] || null;}\n\n\nexports.validRange = validRange;\nfunction validRange(range,loose){\ntry{\n\n\nreturn new Range(range,loose).range || '*';}\ncatch(er) {\nreturn null;}}\n\n\n\n\nexports.ltr = ltr;\nfunction ltr(version,range,loose){\nreturn outside(version,range,'<',loose);}\n\n\n\nexports.gtr = gtr;\nfunction gtr(version,range,loose){\nreturn outside(version,range,'>',loose);}\n\n\nexports.outside = outside;\nfunction outside(version,range,hilo,loose){\nversion = new SemVer(version,loose);\nrange = new Range(range,loose);\n\nvar gtfn,ltefn,ltfn,comp,ecomp;\nswitch(hilo){\ncase '>':\ngtfn = gt;\nltefn = lte;\nltfn = lt;\ncomp = '>';\necomp = '>=';\nbreak;\ncase '<':\ngtfn = lt;\nltefn = gte;\nltfn = gt;\ncomp = '<';\necomp = '<=';\nbreak;\ndefault:\nthrow new TypeError('Must provide a hilo val of \"<\" or \">\"');}\n\n\n\nif(satisfies(version,range,loose)){\nreturn false;}\n\n\n\n\n\nfor(var i=0;i < range.set.length;++i) {\nvar comparators=range.set[i];\n\nvar high=null;\nvar low=null;\n\ncomparators.forEach(function(comparator){\nif(comparator.semver === ANY){\ncomparator = new Comparator('>=0.0.0');}\n\nhigh = high || comparator;\nlow = low || comparator;\nif(gtfn(comparator.semver,high.semver,loose)){\nhigh = comparator;}else \nif(ltfn(comparator.semver,low.semver,loose)){\nlow = comparator;}});\n\n\n\n\n\nif(high.operator === comp || high.operator === ecomp){\nreturn false;}\n\n\n\n\nif((!low.operator || low.operator === comp) && \nltefn(version,low.semver)){\nreturn false;}else \nif(low.operator === ecomp && ltfn(version,low.semver)){\nreturn false;}}\n\n\nreturn true;}\n\n\n\nif(typeof define === 'function' && define.amd)\ndefine(exports);})(\n\n\ntypeof exports === 'object'?exports:\ntypeof define === 'function' && define.amd?{}:\nsemver = {});","sourceCode":";(function(exports) {\n\n// export the class if we are in a Node-like system.\nif (typeof module === 'object' && module.exports === exports)\n exports = module.exports = SemVer;\n\n// The debug function is excluded entirely from the minified version.\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0';\n\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\n// The actual regexps go on exports.re\nvar re = exports.re = [];\nvar src = exports.src = [];\nvar R = 0;\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE = R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '[0-9]+';\n\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-][a-zA-Z0-9-]*';\n\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIER] + ')';\n\nvar MAINVERSIONLOOSE = R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n '(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +\n '|' + src[NONNUMERICIDENTIFIER] + ')';\n\nvar PRERELEASEIDENTIFIERLOOSE = R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +\n '|' + src[NONNUMERICIDENTIFIER] + ')';\n\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\n\nvar PRERELEASELOOSE = R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +\n '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++;\nsrc[BUILDIDENTIFIER] = '[0-9A-Za-z-]+';\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] +\n '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++;\nvar FULLPLAIN = 'v?' + src[MAINVERSION] +\n src[PRERELEASE] + '?' +\n src[BUILD] + '?';\n\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] +\n src[PRERELEASELOOSE] + '?' +\n src[BUILD] + '?';\n\nvar LOOSE = R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\n\nvar GTLT = R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER = R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\n\nvar XRANGEPLAIN = R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' +\n '(?:' + src[PRERELEASE] + ')?' +\n src[BUILD] + '?' +\n ')?)?';\n\nvar XRANGEPLAINLOOSE = R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +\n '(?:' + src[PRERELEASELOOSE] + ')?' +\n src[BUILD] + '?' +\n ')?)?';\n\nvar XRANGE = R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE = R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++;\nsrc[LONETILDE] = '(?:~>?)';\n\nvar TILDETRIM = R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');\nvar tildeTrimReplace = '$1~';\n\nvar TILDE = R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE = R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++;\nsrc[LONECARET] = '(?:\\\\^)';\n\nvar CARETTRIM = R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');\nvar caretTrimReplace = '$1^';\n\nvar CARET = R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE = R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR = R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] +\n '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');\nvar comparatorTrimReplace = '$1$2$3';\n\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAIN] + ')' +\n '\\\\s*$';\n\nvar HYPHENRANGELOOSE = R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s+-\\\\s+' +\n '(' + src[XRANGEPLAINLOOSE] + ')' +\n '\\\\s*$';\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n ;\n if (!re[i])\n re[i] = new RegExp(src[i]);\n}\n\nexports.parse = parse;\nfunction parse(version, loose) {\n if (version instanceof SemVer)\n return version;\n\n if (typeof version !== 'string')\n return null;\n\n if (version.length > MAX_LENGTH)\n return null;\n\n var r = loose ? re[LOOSE] : re[FULL];\n if (!r.test(version))\n return null;\n\n try {\n return new SemVer(version, loose);\n } catch (er) {\n return null;\n }\n}\n\nexports.valid = valid;\nfunction valid(version, loose) {\n var v = parse(version, loose);\n return v ? v.version : null;\n}\n\n\nexports.clean = clean;\nfunction clean(version, loose) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), loose);\n return s ? s.version : null;\n}\n\nexports.SemVer = SemVer;\n\nfunction SemVer(version, loose) {\n if (version instanceof SemVer) {\n if (version.loose === loose)\n return version;\n else\n version = version.version;\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version);\n }\n\n if (version.length > MAX_LENGTH)\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n\n if (!(this instanceof SemVer))\n return new SemVer(version, loose);\n\n ;\n this.loose = loose;\n var m = version.trim().match(loose ? re[LOOSE] : re[FULL]);\n\n if (!m)\n throw new TypeError('Invalid Version: ' + version);\n\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0)\n throw new TypeError('Invalid major version')\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0)\n throw new TypeError('Invalid minor version')\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0)\n throw new TypeError('Invalid patch version')\n\n // numberify any prerelease numeric ids\n if (!m[4])\n this.prerelease = [];\n else\n this.prerelease = m[4].split('.').map(function(id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER)\n return num\n }\n return id;\n });\n\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n}\n\nSemVer.prototype.format = function() {\n this.version = this.major + '.' + this.minor + '.' + this.patch;\n if (this.prerelease.length)\n this.version += '-' + this.prerelease.join('.');\n return this.version;\n};\n\nSemVer.prototype.inspect = function() {\n return '<SemVer \"' + this + '\">';\n};\n\nSemVer.prototype.toString = function() {\n return this.version;\n};\n\nSemVer.prototype.compare = function(other) {\n ;\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n return this.compareMain(other) || this.comparePre(other);\n};\n\nSemVer.prototype.compareMain = function(other) {\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n return compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch);\n};\n\nSemVer.prototype.comparePre = function(other) {\n if (!(other instanceof SemVer))\n other = new SemVer(other, this.loose);\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length)\n return -1;\n else if (!this.prerelease.length && other.prerelease.length)\n return 1;\n else if (!this.prerelease.length && !other.prerelease.length)\n return 0;\n\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n ;\n if (a === undefined && b === undefined)\n return 0;\n else if (b === undefined)\n return 1;\n else if (a === undefined)\n return -1;\n else if (a === b)\n continue;\n else\n return compareIdentifiers(a, b);\n } while (++i);\n};\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function(release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0)\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0)\n this.major++;\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0)\n this.minor++;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0)\n this.patch++;\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0)\n this.prerelease = [0];\n else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) // didn't increment anything\n this.prerelease.push(0);\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1]))\n this.prerelease = [identifier, 0];\n } else\n this.prerelease = [identifier, 0];\n }\n break;\n\n default:\n throw new Error('invalid increment argument: ' + release);\n }\n this.format();\n return this;\n};\n\nexports.inc = inc;\nfunction inc(version, release, loose, identifier) {\n if (typeof(loose) === 'string') {\n identifier = loose;\n loose = undefined;\n }\n\n try {\n return new SemVer(version, loose).inc(release, identifier).version;\n } catch (er) {\n return null;\n }\n}\n\nexports.diff = diff;\nfunction diff(version1, version2) {\n if (eq(version1, version2)) {\n return null;\n } else {\n var v1 = parse(version1);\n var v2 = parse(version2);\n if (v1.prerelease.length || v2.prerelease.length) {\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return 'pre'+key;\n }\n }\n }\n return 'prerelease';\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return key;\n }\n }\n }\n }\n}\n\nexports.compareIdentifiers = compareIdentifiers;\n\nvar numeric = /^[0-9]+$/;\nfunction compareIdentifiers(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n\n return (anum && !bnum) ? -1 :\n (bnum && !anum) ? 1 :\n a < b ? -1 :\n a > b ? 1 :\n 0;\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a, b) {\n return compareIdentifiers(b, a);\n}\n\nexports.major = major;\nfunction major(a, loose) {\n return new SemVer(a, loose).major;\n}\n\nexports.minor = minor;\nfunction minor(a, loose) {\n return new SemVer(a, loose).minor;\n}\n\nexports.patch = patch;\nfunction patch(a, loose) {\n return new SemVer(a, loose).patch;\n}\n\nexports.compare = compare;\nfunction compare(a, b, loose) {\n return new SemVer(a, loose).compare(b);\n}\n\nexports.compareLoose = compareLoose;\nfunction compareLoose(a, b) {\n return compare(a, b, true);\n}\n\nexports.rcompare = rcompare;\nfunction rcompare(a, b, loose) {\n return compare(b, a, loose);\n}\n\nexports.sort = sort;\nfunction sort(list, loose) {\n return list.sort(function(a, b) {\n return exports.compare(a, b, loose);\n });\n}\n\nexports.rsort = rsort;\nfunction rsort(list, loose) {\n return list.sort(function(a, b) {\n return exports.rcompare(a, b, loose);\n });\n}\n\nexports.gt = gt;\nfunction gt(a, b, loose) {\n return compare(a, b, loose) > 0;\n}\n\nexports.lt = lt;\nfunction lt(a, b, loose) {\n return compare(a, b, loose) < 0;\n}\n\nexports.eq = eq;\nfunction eq(a, b, loose) {\n return compare(a, b, loose) === 0;\n}\n\nexports.neq = neq;\nfunction neq(a, b, loose) {\n return compare(a, b, loose) !== 0;\n}\n\nexports.gte = gte;\nfunction gte(a, b, loose) {\n return compare(a, b, loose) >= 0;\n}\n\nexports.lte = lte;\nfunction lte(a, b, loose) {\n return compare(a, b, loose) <= 0;\n}\n\nexports.cmp = cmp;\nfunction cmp(a, op, b, loose) {\n var ret;\n switch (op) {\n case '===':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n ret = a === b;\n break;\n case '!==':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n ret = a !== b;\n break;\n case '': case '=': case '==': ret = eq(a, b, loose); break;\n case '!=': ret = neq(a, b, loose); break;\n case '>': ret = gt(a, b, loose); break;\n case '>=': ret = gte(a, b, loose); break;\n case '<': ret = lt(a, b, loose); break;\n case '<=': ret = lte(a, b, loose); break;\n default: throw new TypeError('Invalid operator: ' + op);\n }\n return ret;\n}\n\nexports.Comparator = Comparator;\nfunction Comparator(comp, loose) {\n if (comp instanceof Comparator) {\n if (comp.loose === loose)\n return comp;\n else\n comp = comp.value;\n }\n\n if (!(this instanceof Comparator))\n return new Comparator(comp, loose);\n\n ;\n this.loose = loose;\n this.parse(comp);\n\n if (this.semver === ANY)\n this.value = '';\n else\n this.value = this.operator + this.semver.version;\n\n ;\n}\n\nvar ANY = {};\nComparator.prototype.parse = function(comp) {\n var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var m = comp.match(r);\n\n if (!m)\n throw new TypeError('Invalid comparator: ' + comp);\n\n this.operator = m[1];\n if (this.operator === '=')\n this.operator = '';\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2])\n this.semver = ANY;\n else\n this.semver = new SemVer(m[2], this.loose);\n};\n\nComparator.prototype.inspect = function() {\n return '<SemVer Comparator \"' + this + '\">';\n};\n\nComparator.prototype.toString = function() {\n return this.value;\n};\n\nComparator.prototype.test = function(version) {\n ;\n\n if (this.semver === ANY)\n return true;\n\n if (typeof version === 'string')\n version = new SemVer(version, this.loose);\n\n return cmp(version, this.operator, this.semver, this.loose);\n};\n\n\nexports.Range = Range;\nfunction Range(range, loose) {\n if ((range instanceof Range) && range.loose === loose)\n return range;\n\n if (!(this instanceof Range))\n return new Range(range, loose);\n\n this.loose = loose;\n\n // First, split based on boolean or ||\n this.raw = range;\n this.set = range.split(/\\s*\\|\\|\\s*/).map(function(range) {\n return this.parseRange(range.trim());\n }, this).filter(function(c) {\n // throw out any that are not relevant for whatever reason\n return c.length;\n });\n\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + range);\n }\n\n this.format();\n}\n\nRange.prototype.inspect = function() {\n return '<SemVer Range \"' + this.range + '\">';\n};\n\nRange.prototype.format = function() {\n this.range = this.set.map(function(comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n};\n\nRange.prototype.toString = function() {\n return this.range;\n};\n\nRange.prototype.parseRange = function(range) {\n var loose = this.loose;\n range = range.trim();\n ;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];\n range = range.replace(hr, hyphenReplace);\n ;\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);\n ;\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[TILDETRIM], tildeTrimReplace);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[CARETTRIM], caretTrimReplace);\n\n // normalize spaces\n range = range.split(/\\s+/).join(' ');\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];\n var set = range.split(' ').map(function(comp) {\n return parseComparator(comp, loose);\n }).join(' ').split(/\\s+/);\n if (this.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function(comp) {\n return !!comp.match(compRe);\n });\n }\n set = set.map(function(comp) {\n return new Comparator(comp, loose);\n });\n\n return set;\n};\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators;\nfunction toComparators(range, loose) {\n return new Range(range, loose).set.map(function(comp) {\n return comp.map(function(c) {\n return c.value;\n }).join(' ').trim().split(' ');\n });\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator(comp, loose) {\n ;\n comp = replaceCarets(comp, loose);\n ;\n comp = replaceTildes(comp, loose);\n ;\n comp = replaceXRanges(comp, loose);\n ;\n comp = replaceStars(comp, loose);\n ;\n return comp;\n}\n\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes(comp, loose) {\n return comp.trim().split(/\\s+/).map(function(comp) {\n return replaceTilde(comp, loose);\n }).join(' ');\n}\n\nfunction replaceTilde(comp, loose) {\n var r = loose ? re[TILDELOOSE] : re[TILDE];\n return comp.replace(r, function(_, M, m, p, pr) {\n ;\n var ret;\n\n if (isX(M))\n ret = '';\n else if (isX(m))\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n else if (isX(p))\n // ~1.2 == >=1.2.0- <1.3.0-\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n else if (pr) {\n ;\n if (pr.charAt(0) !== '-')\n pr = '-' + pr;\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0';\n\n ;\n return ret;\n });\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets(comp, loose) {\n return comp.trim().split(/\\s+/).map(function(comp) {\n return replaceCaret(comp, loose);\n }).join(' ');\n}\n\nfunction replaceCaret(comp, loose) {\n ;\n var r = loose ? re[CARETLOOSE] : re[CARET];\n return comp.replace(r, function(_, M, m, p, pr) {\n ;\n var ret;\n\n if (isX(M))\n ret = '';\n else if (isX(m))\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n else if (isX(p)) {\n if (M === '0')\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n else\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';\n } else if (pr) {\n ;\n if (pr.charAt(0) !== '-')\n pr = '-' + pr;\n if (M === '0') {\n if (m === '0')\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + m + '.' + (+p + 1);\n else\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n ret = '>=' + M + '.' + m + '.' + p + pr +\n ' <' + (+M + 1) + '.0.0';\n } else {\n ;\n if (M === '0') {\n if (m === '0')\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + m + '.' + (+p + 1);\n else\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + M + '.' + (+m + 1) + '.0';\n } else\n ret = '>=' + M + '.' + m + '.' + p +\n ' <' + (+M + 1) + '.0.0';\n }\n\n ;\n return ret;\n });\n}\n\nfunction replaceXRanges(comp, loose) {\n ;\n return comp.split(/\\s+/).map(function(comp) {\n return replaceXRange(comp, loose);\n }).join(' ');\n}\n\nfunction replaceXRange(comp, loose) {\n comp = comp.trim();\n var r = loose ? re[XRANGELOOSE] : re[XRANGE];\n return comp.replace(r, function(ret, gtlt, M, m, p, pr) {\n ;\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n\n if (gtlt === '=' && anyX)\n gtlt = '';\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // replace X with 0\n if (xm)\n m = 0;\n if (xp)\n p = 0;\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else if (xp) {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm)\n M = +M + 1\n else\n m = +m + 1\n }\n\n ret = gtlt + M + '.' + m + '.' + p;\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n }\n\n ;\n\n return ret;\n });\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars(comp, loose) {\n ;\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(re[STAR], '');\n}\n\n// This function is passed to string.replace(re[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) {\n\n if (isX(fM))\n from = '';\n else if (isX(fm))\n from = '>=' + fM + '.0.0';\n else if (isX(fp))\n from = '>=' + fM + '.' + fm + '.0';\n else\n from = '>=' + from;\n\n if (isX(tM))\n to = '';\n else if (isX(tm))\n to = '<' + (+tM + 1) + '.0.0';\n else if (isX(tp))\n to = '<' + tM + '.' + (+tm + 1) + '.0';\n else if (tpr)\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;\n else\n to = '<=' + to;\n\n return (from + ' ' + to).trim();\n}\n\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function(version) {\n if (!version)\n return false;\n\n if (typeof version === 'string')\n version = new SemVer(version, this.loose);\n\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version))\n return true;\n }\n return false;\n};\n\nfunction testSet(set, version) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version))\n return false;\n }\n\n if (version.prerelease.length) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (var i = 0; i < set.length; i++) {\n ;\n if (set[i].semver === ANY)\n continue;\n\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver;\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch)\n return true;\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n\n return true;\n}\n\nexports.satisfies = satisfies;\nfunction satisfies(version, range, loose) {\n try {\n range = new Range(range, loose);\n } catch (er) {\n return false;\n }\n return range.test(version);\n}\n\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions, range, loose) {\n return versions.filter(function(version) {\n return satisfies(version, range, loose);\n }).sort(function(a, b) {\n return rcompare(a, b, loose);\n })[0] || null;\n}\n\nexports.validRange = validRange;\nfunction validRange(range, loose) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, loose).range || '*';\n } catch (er) {\n return null;\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr;\nfunction ltr(version, range, loose) {\n return outside(version, range, '<', loose);\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr;\nfunction gtr(version, range, loose) {\n return outside(version, range, '>', loose);\n}\n\nexports.outside = outside;\nfunction outside(version, range, hilo, loose) {\n version = new SemVer(version, loose);\n range = new Range(range, loose);\n\n var gtfn, ltefn, ltfn, comp, ecomp;\n switch (hilo) {\n case '>':\n gtfn = gt;\n ltefn = lte;\n ltfn = lt;\n comp = '>';\n ecomp = '>=';\n break;\n case '<':\n gtfn = lt;\n ltefn = gte;\n ltfn = gt;\n comp = '<';\n ecomp = '<=';\n break;\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"');\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, loose)) {\n return false;\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n\n var high = null;\n var low = null;\n\n comparators.forEach(function(comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator;\n low = low || comparator;\n if (gtfn(comparator.semver, high.semver, loose)) {\n high = comparator;\n } else if (ltfn(comparator.semver, low.semver, loose)) {\n low = comparator;\n }\n });\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false;\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false;\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false;\n }\n }\n return true;\n}\n\n// Use the define() function if we're in AMD land\nif (typeof define === 'function' && define.amd)\n define(exports);\n\n})(\n typeof exports === 'object' ? exports :\n typeof define === 'function' && define.amd ? {} :\n semver = {}\n);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/semver/semver.browser.js"},"mtime":1432938335000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/code-push/script/acquisition-sdk.js":{"data":{"code":"var \nAcquisitionManager=(function(){\nfunction AcquisitionManager(httpRequester,configuration){\nthis._httpRequester = httpRequester;\nthis._serverUrl = configuration.serverUrl;\nif(this._serverUrl.slice(-1) !== \"/\"){\nthis._serverUrl += \"/\";}\n\nthis._deploymentKey = configuration.deploymentKey;\nthis._ignoreAppVersion = configuration.ignoreAppVersion;}\n\nAcquisitionManager.prototype.queryUpdateWithCurrentPackage = function(currentPackage,callback){\nvar _this=this;\nif(!currentPackage || !currentPackage.appVersion){\nthrow new Error(\"Calling common acquisition SDK with incorrect package\");}\n\nvar updateRequest={\ndeploymentKey:this._deploymentKey,\nappVersion:currentPackage.appVersion,\npackageHash:currentPackage.packageHash,\nisCompanion:this._ignoreAppVersion};\n\nvar requestUrl=this._serverUrl + \"updateCheck?\" + queryStringify(updateRequest);\nthis._httpRequester.request(0,requestUrl,function(error,response){\nif(error){\ncallback(error,null);}\n\nif(response.statusCode !== 200){\ncallback(new Error(response.statusCode + \": \" + response.body),null);\nreturn;}\n\ntry{\nvar responseObject=JSON.parse(response.body);\nvar updateInfo=responseObject.updateInfo;}\n\ncatch(error) {\ncallback(error,null);}\n\nif(!updateInfo){\ncallback(error,null);}else \n\nif(updateInfo.updateAppVersion){\ncallback(null,{updateAppVersion:true,appVersion:updateInfo.appVersion});\nreturn;}else \n\nif(!updateInfo.isAvailable){\ncallback(null,null);\nreturn;}\n\nvar remotePackage={\ndeploymentKey:_this._deploymentKey,\ndescription:updateInfo.description,\nlabel:updateInfo.label,\nappVersion:updateInfo.appVersion,\nisMandatory:updateInfo.isMandatory,\npackageHash:updateInfo.packageHash,\npackageSize:updateInfo.packageSize,\ndownloadUrl:updateInfo.downloadURL};\n\ncallback(null,remotePackage);});};\n\n\nreturn AcquisitionManager;})();\n\nexports.AcquisitionManager = AcquisitionManager;\nfunction queryStringify(object){\nvar queryString=\"\";\nvar isFirst=true;\nfor(var property in object) {\nif(object.hasOwnProperty(property)){\nvar value=object[property];\nif(!isFirst){\nqueryString += \"&\";}\n\nqueryString += encodeURIComponent(property) + \"=\";\nif(value !== null && typeof value !== \"undefined\"){\nqueryString += encodeURIComponent(value);}\n\nisFirst = false;}}\n\n\nreturn queryString;}","sourceCode":"/// <reference path=\"../definitions/harness.d.ts\" />\nvar AcquisitionManager = (function () {\n function AcquisitionManager(httpRequester, configuration) {\n this._httpRequester = httpRequester;\n this._serverUrl = configuration.serverUrl;\n if (this._serverUrl.slice(-1) !== \"/\") {\n this._serverUrl += \"/\";\n }\n this._deploymentKey = configuration.deploymentKey;\n this._ignoreAppVersion = configuration.ignoreAppVersion;\n }\n AcquisitionManager.prototype.queryUpdateWithCurrentPackage = function (currentPackage, callback) {\n var _this = this;\n if (!currentPackage || !currentPackage.appVersion) {\n throw new Error(\"Calling common acquisition SDK with incorrect package\"); // Unexpected; indicates error in our implementation\n }\n var updateRequest = {\n deploymentKey: this._deploymentKey,\n appVersion: currentPackage.appVersion,\n packageHash: currentPackage.packageHash,\n isCompanion: this._ignoreAppVersion\n };\n var requestUrl = this._serverUrl + \"updateCheck?\" + queryStringify(updateRequest);\n this._httpRequester.request(0 /* GET */, requestUrl, function (error, response) {\n if (error) {\n callback(error, null);\n }\n if (response.statusCode !== 200) {\n callback(new Error(response.statusCode + \": \" + response.body), null);\n return;\n }\n try {\n var responseObject = JSON.parse(response.body);\n var updateInfo = responseObject.updateInfo;\n }\n catch (error) {\n callback(error, null);\n }\n if (!updateInfo) {\n callback(error, null);\n }\n else if (updateInfo.updateAppVersion) {\n callback(null, { updateAppVersion: true, appVersion: updateInfo.appVersion });\n return;\n }\n else if (!updateInfo.isAvailable) {\n callback(null, null);\n return;\n }\n var remotePackage = {\n deploymentKey: _this._deploymentKey,\n description: updateInfo.description,\n label: updateInfo.label,\n appVersion: updateInfo.appVersion,\n isMandatory: updateInfo.isMandatory,\n packageHash: updateInfo.packageHash,\n packageSize: updateInfo.packageSize,\n downloadUrl: updateInfo.downloadURL\n };\n callback(null, remotePackage);\n });\n };\n return AcquisitionManager;\n})();\nexports.AcquisitionManager = AcquisitionManager;\nfunction queryStringify(object) {\n var queryString = \"\";\n var isFirst = true;\n for (var property in object) {\n if (object.hasOwnProperty(property)) {\n var value = object[property];\n if (!isFirst) {\n queryString += \"&\";\n }\n queryString += encodeURIComponent(property) + \"=\";\n if (value !== null && typeof value !== \"undefined\") {\n queryString += encodeURIComponent(value);\n }\n isFirst = false;\n }\n }\n return queryString;\n}\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/node_modules/code-push/script/acquisition-sdk.js"},"mtime":1439410105000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/HybridMobileDeploy.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\n\nvar NativeHybridMobileDeploy=require('react-native').NativeModules.HybridMobileDeploy;\nvar requestFetchAdapter=require(\"./request-fetch-adapter.js\");\nvar semver=require('semver');\nvar Sdk=require(\"code-push/script/acquisition-sdk\").AcquisitionManager;\nvar sdk;\nvar config;\n\nfunction getConfiguration(callback){\nif(config){\nsetImmediate(function(){\ncallback(null,config);});}else \n\n{\nNativeHybridMobileDeploy.getConfiguration(function(err,configuration){\nif(err)callback(err);\nconfig = configuration;\ncallback(null,config);});}}\n\n\n\n\nfunction getSdk(callback){\nif(sdk){\nsetImmediate(function(){\ncallback(null,sdk);});}else \n\n{\ngetConfiguration(function(err,configuration){\nsdk = new Sdk(requestFetchAdapter,configuration);\ncallback(null,sdk);});}}\n\n\n\n\nfunction queryUpdate(callback){\ngetConfiguration(function(err,configuration){\nif(err)callback(err);\ngetSdk(function(err,sdk){\nif(err)callback(err);\nNativeHybridMobileDeploy.getLocalPackage(function(err,localPackage){\nif(err){\nconsole.log(err);\nvar pkg={appVersion:configuration.appVersion};\nsdk.queryUpdateWithCurrentPackage(pkg,callback);}else \nif(localPackage == null){\nvar pkg={appVersion:configuration.appVersion};\nsdk.queryUpdateWithCurrentPackage(pkg,callback);}else \n{\nsdk.queryUpdateWithCurrentPackage(localPackage,callback);}});});});}\n\n\n\n\n\n\nfunction installUpdate(update){\n\n\nNativeHybridMobileDeploy.installUpdate(update,JSON.stringify(update),function(err){return console.log(err);});}\n\n\nvar HybridMobileDeploy={\ngetConfiguration:getConfiguration,\nqueryUpdate:queryUpdate,\ninstallUpdate:installUpdate};\n\n\nmodule.exports = HybridMobileDeploy;","sourceCode":"/**\n * @providesModule HybridMobileDeploy\n * @flow\n */\n\n'use strict';\n\nvar NativeHybridMobileDeploy = require('react-native').NativeModules.HybridMobileDeploy;\nvar requestFetchAdapter = require(\"./request-fetch-adapter.js\");\nvar semver = require('semver');\nvar Sdk = require(\"code-push/script/acquisition-sdk\").AcquisitionManager;\nvar sdk;\nvar config;\n\nfunction getConfiguration(callback) {\n if (config) {\n setImmediate(function() {\n callback(/*error=*/ null, config);\n });\n } else {\n NativeHybridMobileDeploy.getConfiguration(function(err, configuration) {\n if (err) callback(err);\n config = configuration;\n callback(/*error=*/ null, config);\n });\n }\n}\n\nfunction getSdk(callback) {\n if (sdk) {\n setImmediate(function() {\n callback(/*error=*/ null, sdk);\n });\n } else {\n getConfiguration(function(err, configuration) {\n sdk = new Sdk(requestFetchAdapter, configuration);\n callback(/*error=*/ null, sdk);\n });\n }\n}\n\nfunction queryUpdate(callback) {\n getConfiguration(function(err, configuration) {\n if (err) callback(err);\n getSdk(function(err, sdk) {\n if (err) callback(err);\n NativeHybridMobileDeploy.getLocalPackage(function(err, localPackage) {\n if(err){ \n console.log(err);\n var pkg = {appVersion: configuration.appVersion};\n sdk.queryUpdateWithCurrentPackage(pkg, callback);\n }else if(localPackage == null){\n var pkg = {appVersion: configuration.appVersion};\n sdk.queryUpdateWithCurrentPackage(pkg, callback);\n }else{\n sdk.queryUpdateWithCurrentPackage(localPackage, callback);\n }\n });\n });\n });\n}\n\nfunction installUpdate(update) {\n // use the downloaded package info. native code will save the package info\n // so that the client knows what the current package version is.\n NativeHybridMobileDeploy.installUpdate(update, JSON.stringify(update), (err) => console.log(err));\n}\n\nvar HybridMobileDeploy = {\n getConfiguration: getConfiguration,\n queryUpdate: queryUpdate,\n installUpdate: installUpdate\n};\n\nmodule.exports = HybridMobileDeploy;\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/HybridMobileDeploy.ios.js"},"mtime":1439493005000},"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/index.ios.js":{"data":{"code":"'use strict';\n\n\n\n\n\nvar React=require('react-native');var \n\nAppRegistry=\n\n\n\n\nReact.AppRegistry;var StyleSheet=React.StyleSheet;var Text=React.Text;var TouchableOpacity=React.TouchableOpacity;var View=React.View;\n\nvar Button=require(\"react-native-button\");\n\nvar HybridMobileDeploy=require('react-native-hybrid-mobile-deploy');\n\nvar HybridMobileDeployCompanion=React.createClass({displayName:'HybridMobileDeployCompanion',\ncomponentDidMount:function(){\nthis.fetchData();},\n\nfetchData:function(){var _this=this;\nHybridMobileDeploy.queryUpdate(function(err,update){\n_this.setState({update:update,updateString:JSON.stringify(update)});});},\n\n\ngetInitialState:function(){\nreturn {update:false,updateString:\"\"};},\n\nhandlePress:function(){\nHybridMobileDeploy.installUpdate(this.state.update);},\n\nrender:function(){\nvar updateView;\nif(this.state.update){\nupdateView = \nReact.createElement(View,null,\nReact.createElement(Text,null,'Update Available: ','\\n',' ',this.state.update.scriptVersion,' - ',this.state.update.description),\nReact.createElement(Button,{style:{color:'green'},onPress:this.handlePress},'Update'));}\n\n\n\n\n;\nreturn (\nReact.createElement(View,{style:styles.container},\nReact.createElement(Text,{style:styles.welcome},'Welcome to React Native!'),\n\n\nReact.createElement(Text,{style:styles.instructions},'To get started, edit index.ios.js'),\n\n\nReact.createElement(Text,{style:styles.instructions},'Press Cmd+R to reload,',\n'\\n','Cmd+D or shake for dev menu'),\n\n\nupdateView));}});\n\n\n\n\n\nvar styles=StyleSheet.create({\ncontainer:{\nflex:1,\njustifyContent:'center',\nalignItems:'center',\nbackgroundColor:'#F5FCFF'},\n\nwelcome:{\nfontSize:20,\ntextAlign:'center',\nmargin:10},\n\ninstructions:{\ntextAlign:'center',\ncolor:'#333333',\nmarginBottom:5}});\n\n\n\nAppRegistry.registerComponent('HybridMobileDeployCompanion',function(){return HybridMobileDeployCompanion;});","sourceCode":"/**\n * Sample React Native App\n * https://github.com/facebook/react-native\n */\n'use strict';\n\nvar React = require('react-native');\nvar {\n AppRegistry,\n StyleSheet,\n Text,\n TouchableOpacity,\n View,\n} = React;\n\nvar Button = require(\"react-native-button\");\n\nvar HybridMobileDeploy = require('react-native-hybrid-mobile-deploy');\n\nvar HybridMobileDeployCompanion = React.createClass({\n componentDidMount: function() {\n this.fetchData();\n },\n fetchData: function() {\n HybridMobileDeploy.queryUpdate((err, update) => {\n this.setState({ update: update, updateString: JSON.stringify(update) });\n });\n },\n getInitialState: function() {\n return { update: false, updateString: \"\" };\n },\n handlePress: function() {\n HybridMobileDeploy.installUpdate(this.state.update);\n },\n render: function() {\n var updateView;\n if (this.state.update) {\n updateView = (\n <View>\n <Text>Update Available: {'\\n'} {this.state.update.scriptVersion} - {this.state.update.description}</Text>\n <Button style={{color: 'green'}} onPress={this.handlePress}>\n Update\n </Button>\n </View>\n );\n };\n return (\n <View style={styles.container}>\n <Text style={styles.welcome}>\n Welcome to React Native!\n </Text>\n <Text style={styles.instructions}>\n To get started, edit index.ios.js\n </Text>\n <Text style={styles.instructions}>\n Press Cmd+R to reload,{'\\n'}\n Cmd+D or shake for dev menu\n </Text>\n {updateView}\n </View>\n );\n }\n});\n\nvar styles = StyleSheet.create({\n container: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#F5FCFF',\n },\n welcome: {\n fontSize: 20,\n textAlign: 'center',\n margin: 10,\n },\n instructions: {\n textAlign: 'center',\n color: '#333333',\n marginBottom: 5,\n },\n});\n\nAppRegistry.registerComponent('HybridMobileDeployCompanion', () => HybridMobileDeployCompanion);\n","sourcePath":"/Users/geoffreygoh/reactnative/CodePush/reactnative/Examples/HybridMobileDeployCompanion/index.ios.js"},"mtime":1439500375000}} |