ember-source 2.4.0.beta.2 → 2.4.0.beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/dist/ember-runtime.js +253 -133
- data/dist/ember-template-compiler.js +142 -59
- data/dist/ember-testing.js +2 -2
- data/dist/ember.debug.js +304 -159
- data/dist/ember.js +304 -159
- data/dist/ember.min.js +15 -15
- data/dist/ember.prod.js +298 -159
- metadata +2 -2
    
        data/dist/ember.js
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            ;(function() {
         | 
| 2 2 | 
             
            /*!
         | 
| 3 3 | 
             
             * @overview  Ember - JavaScript Application Framework
         | 
| 4 | 
            -
             * @copyright Copyright 2011- | 
| 4 | 
            +
             * @copyright Copyright 2011-2016 Tilde Inc. and contributors
         | 
| 5 5 | 
             
             *            Portions Copyright 2006-2011 Strobe Inc.
         | 
| 6 6 | 
             
             *            Portions Copyright 2008-2011 Apple Inc. All rights reserved.
         | 
| 7 7 | 
             
             * @license   Licensed under MIT license
         | 
| 8 8 | 
             
             *            See https://raw.github.com/emberjs/ember.js/master/LICENSE
         | 
| 9 | 
            -
             * @version   2.4.0-beta. | 
| 9 | 
            +
             * @version   2.4.0-beta.3
         | 
| 10 10 | 
             
             */
         | 
| 11 11 |  | 
| 12 12 | 
             
            var enifed, requireModule, require, requirejs, Ember;
         | 
| @@ -212,20 +212,24 @@ enifed('backburner/deferred-action-queues', ['exports', 'backburner/utils', 'bac | |
| 212 212 | 
             
            enifed('backburner/platform', ['exports'], function (exports) {
         | 
| 213 213 | 
             
              'use strict';
         | 
| 214 214 |  | 
| 215 | 
            -
              var  | 
| 215 | 
            +
              var GlobalContext;
         | 
| 216 216 |  | 
| 217 217 | 
             
              /* global self */
         | 
| 218 218 | 
             
              if (typeof self === 'object') {
         | 
| 219 | 
            -
                 | 
| 219 | 
            +
                GlobalContext = self;
         | 
| 220 220 |  | 
| 221 221 | 
             
                /* global global */
         | 
| 222 222 | 
             
              } else if (typeof global === 'object') {
         | 
| 223 | 
            -
                   | 
| 224 | 
            -
                } else {
         | 
| 225 | 
            -
                  throw new Error('no global: `self` or `global` found');
         | 
| 226 | 
            -
                }
         | 
| 223 | 
            +
                  GlobalContext = global;
         | 
| 227 224 |  | 
| 228 | 
            -
             | 
| 225 | 
            +
                  /* global window */
         | 
| 226 | 
            +
                } else if (typeof window === 'object') {
         | 
| 227 | 
            +
                    GlobalContext = window;
         | 
| 228 | 
            +
                  } else {
         | 
| 229 | 
            +
                    throw new Error('no global: `self`, `global` nor `window` was found');
         | 
| 230 | 
            +
                  }
         | 
| 231 | 
            +
             | 
| 232 | 
            +
              exports.default = GlobalContext;
         | 
| 229 233 | 
             
            });
         | 
| 230 234 | 
             
            enifed('backburner/queue', ['exports', 'backburner/utils'], function (exports, _backburnerUtils) {
         | 
| 231 235 | 
             
              'use strict';
         | 
| @@ -468,7 +472,6 @@ enifed('backburner/utils', ['exports'], function (exports) { | |
| 468 472 | 
             
              exports.isFunction = isFunction;
         | 
| 469 473 | 
             
              exports.isNumber = isNumber;
         | 
| 470 474 | 
             
              exports.isCoercableNumber = isCoercableNumber;
         | 
| 471 | 
            -
              exports.wrapInTryCatch = wrapInTryCatch;
         | 
| 472 475 | 
             
              var NUMBER = /\d+/;
         | 
| 473 476 |  | 
| 474 477 | 
             
              function each(collection, callback) {
         | 
| @@ -477,14 +480,6 @@ enifed('backburner/utils', ['exports'], function (exports) { | |
| 477 480 | 
             
                }
         | 
| 478 481 | 
             
              }
         | 
| 479 482 |  | 
| 480 | 
            -
              // Date.now is not available in browsers < IE9
         | 
| 481 | 
            -
              // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now#Compatibility
         | 
| 482 | 
            -
              var now = Date.now || function () {
         | 
| 483 | 
            -
                return new Date().getTime();
         | 
| 484 | 
            -
              };
         | 
| 485 | 
            -
             | 
| 486 | 
            -
              exports.now = now;
         | 
| 487 | 
            -
             | 
| 488 483 | 
             
              function isString(suspect) {
         | 
| 489 484 | 
             
                return typeof suspect === 'string';
         | 
| 490 485 | 
             
              }
         | 
| @@ -500,16 +495,6 @@ enifed('backburner/utils', ['exports'], function (exports) { | |
| 500 495 | 
             
              function isCoercableNumber(number) {
         | 
| 501 496 | 
             
                return isNumber(number) || NUMBER.test(number);
         | 
| 502 497 | 
             
              }
         | 
| 503 | 
            -
             | 
| 504 | 
            -
              function wrapInTryCatch(func) {
         | 
| 505 | 
            -
                return function () {
         | 
| 506 | 
            -
                  try {
         | 
| 507 | 
            -
                    return func.apply(this, arguments);
         | 
| 508 | 
            -
                  } catch (e) {
         | 
| 509 | 
            -
                    throw e;
         | 
| 510 | 
            -
                  }
         | 
| 511 | 
            -
                };
         | 
| 512 | 
            -
              }
         | 
| 513 498 | 
             
            });
         | 
| 514 499 | 
             
            enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'backburner/binary-search', 'backburner/deferred-action-queues'], function (exports, _backburnerUtils, _backburnerPlatform, _backburnerBinarySearch, _backburnerDeferredActionQueues) {
         | 
| 515 500 | 
             
              'use strict';
         | 
| @@ -530,10 +515,16 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 530 515 | 
             
                  begin: []
         | 
| 531 516 | 
             
                };
         | 
| 532 517 |  | 
| 518 | 
            +
                var _this = this;
         | 
| 519 | 
            +
                this._boundClearItems = function () {
         | 
| 520 | 
            +
                  clearItems();
         | 
| 521 | 
            +
                };
         | 
| 522 | 
            +
             | 
| 533 523 | 
             
                this._timerTimeoutId = undefined;
         | 
| 534 524 | 
             
                this._timers = [];
         | 
| 535 525 |  | 
| 536 | 
            -
                 | 
| 526 | 
            +
                this._platform = this.options._platform || _backburnerPlatform.default;
         | 
| 527 | 
            +
             | 
| 537 528 | 
             
                this._boundRunExpiredTimers = function () {
         | 
| 538 529 | 
             
                  _this._runExpiredTimers();
         | 
| 539 530 | 
             
                };
         | 
| @@ -870,7 +861,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 870 861 | 
             
                    }
         | 
| 871 862 | 
             
                  }
         | 
| 872 863 |  | 
| 873 | 
            -
                  var executeAt =  | 
| 864 | 
            +
                  var executeAt = Date.now() + parseInt(wait, 10);
         | 
| 874 865 |  | 
| 875 866 | 
             
                  if (_backburnerUtils.isString(method)) {
         | 
| 876 867 | 
             
                    method = target[method];
         | 
| @@ -936,7 +927,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 936 927 | 
             
                    return this._throttlers[index];
         | 
| 937 928 | 
             
                  } // throttled
         | 
| 938 929 |  | 
| 939 | 
            -
                  timer =  | 
| 930 | 
            +
                  timer = this._platform.setTimeout(function () {
         | 
| 940 931 | 
             
                    if (!immediate) {
         | 
| 941 932 | 
             
                      backburner.run.apply(backburner, args);
         | 
| 942 933 | 
             
                    }
         | 
| @@ -981,10 +972,10 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 981 972 | 
             
                  if (index > -1) {
         | 
| 982 973 | 
             
                    debouncee = this._debouncees[index];
         | 
| 983 974 | 
             
                    this._debouncees.splice(index, 1);
         | 
| 984 | 
            -
                    clearTimeout(debouncee[2]);
         | 
| 975 | 
            +
                    this._platform.clearTimeout(debouncee[2]);
         | 
| 985 976 | 
             
                  }
         | 
| 986 977 |  | 
| 987 | 
            -
                  timer =  | 
| 978 | 
            +
                  timer = this._platform.setTimeout(function () {
         | 
| 988 979 | 
             
                    if (!immediate) {
         | 
| 989 980 | 
             
                      backburner.run.apply(backburner, args);
         | 
| 990 981 | 
             
                    }
         | 
| @@ -1006,17 +997,17 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1006 997 | 
             
                },
         | 
| 1007 998 |  | 
| 1008 999 | 
             
                cancelTimers: function () {
         | 
| 1009 | 
            -
                  _backburnerUtils.each(this._throttlers,  | 
| 1000 | 
            +
                  _backburnerUtils.each(this._throttlers, this._boundClearItems);
         | 
| 1010 1001 | 
             
                  this._throttlers = [];
         | 
| 1011 1002 |  | 
| 1012 | 
            -
                  _backburnerUtils.each(this._debouncees,  | 
| 1003 | 
            +
                  _backburnerUtils.each(this._debouncees, this._boundClearItems);
         | 
| 1013 1004 | 
             
                  this._debouncees = [];
         | 
| 1014 1005 |  | 
| 1015 1006 | 
             
                  this._clearTimerTimeout();
         | 
| 1016 1007 | 
             
                  this._timers = [];
         | 
| 1017 1008 |  | 
| 1018 1009 | 
             
                  if (this._autorun) {
         | 
| 1019 | 
            -
                    clearTimeout(this._autorun);
         | 
| 1010 | 
            +
                    this._platform.clearTimeout(this._autorun);
         | 
| 1020 1011 | 
             
                    this._autorun = null;
         | 
| 1021 1012 | 
             
                  }
         | 
| 1022 1013 | 
             
                },
         | 
| @@ -1065,7 +1056,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1065 1056 |  | 
| 1066 1057 | 
             
                    if (item[2] === timer[2]) {
         | 
| 1067 1058 | 
             
                      array.splice(index, 1);
         | 
| 1068 | 
            -
                      clearTimeout(timer[2]);
         | 
| 1059 | 
            +
                      this._platform.clearTimeout(timer[2]);
         | 
| 1069 1060 | 
             
                      return true;
         | 
| 1070 1061 | 
             
                    }
         | 
| 1071 1062 | 
             
                  }
         | 
| @@ -1079,7 +1070,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1079 1070 | 
             
                },
         | 
| 1080 1071 |  | 
| 1081 1072 | 
             
                _scheduleExpiredTimers: function () {
         | 
| 1082 | 
            -
                  var n =  | 
| 1073 | 
            +
                  var n = Date.now();
         | 
| 1083 1074 | 
             
                  var timers = this._timers;
         | 
| 1084 1075 | 
             
                  var i = 0;
         | 
| 1085 1076 | 
             
                  var l = timers.length;
         | 
| @@ -1105,7 +1096,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1105 1096 | 
             
                  if (!this._timerTimeoutId) {
         | 
| 1106 1097 | 
             
                    return;
         | 
| 1107 1098 | 
             
                  }
         | 
| 1108 | 
            -
                  clearTimeout(this._timerTimeoutId);
         | 
| 1099 | 
            +
                  this._platform.clearTimeout(this._timerTimeoutId);
         | 
| 1109 1100 | 
             
                  this._timerTimeoutId = undefined;
         | 
| 1110 1101 | 
             
                },
         | 
| 1111 1102 |  | 
| @@ -1114,9 +1105,9 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1114 1105 | 
             
                    return;
         | 
| 1115 1106 | 
             
                  }
         | 
| 1116 1107 | 
             
                  var minExpiresAt = this._timers[0];
         | 
| 1117 | 
            -
                  var n =  | 
| 1108 | 
            +
                  var n = Date.now();
         | 
| 1118 1109 | 
             
                  var wait = Math.max(0, minExpiresAt - n);
         | 
| 1119 | 
            -
                  this._timerTimeoutId = setTimeout(this._boundRunExpiredTimers, wait);
         | 
| 1110 | 
            +
                  this._timerTimeoutId = this._platform.setTimeout(this._boundRunExpiredTimers, wait);
         | 
| 1120 1111 | 
             
                }
         | 
| 1121 1112 | 
             
              };
         | 
| 1122 1113 |  | 
| @@ -1130,7 +1121,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1130 1121 |  | 
| 1131 1122 | 
             
              function createAutorun(backburner) {
         | 
| 1132 1123 | 
             
                backburner.begin();
         | 
| 1133 | 
            -
                backburner._autorun =  | 
| 1124 | 
            +
                backburner._autorun = backburner._platform.setTimeout(function () {
         | 
| 1134 1125 | 
             
                  backburner._autorun = null;
         | 
| 1135 1126 | 
             
                  backburner.end();
         | 
| 1136 1127 | 
             
                });
         | 
| @@ -1160,7 +1151,7 @@ enifed('backburner', ['exports', 'backburner/utils', 'backburner/platform', 'bac | |
| 1160 1151 | 
             
              }
         | 
| 1161 1152 |  | 
| 1162 1153 | 
             
              function clearItems(item) {
         | 
| 1163 | 
            -
                clearTimeout(item[2]);
         | 
| 1154 | 
            +
                this._platform.clearTimeout(item[2]);
         | 
| 1164 1155 | 
             
              }
         | 
| 1165 1156 | 
             
            });
         | 
| 1166 1157 | 
             
            enifed('container/container', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-metal/dictionary', 'ember-metal/features', 'container/owner', 'ember-runtime/mixins/container_proxy', 'ember-metal/symbol'], function (exports, _emberMetalCore, _emberMetalDebug, _emberMetalDictionary, _emberMetalFeatures, _containerOwner, _emberRuntimeMixinsContainer_proxy, _emberMetalSymbol) {
         | 
| @@ -6780,7 +6771,7 @@ enifed('ember-extension-support/container_debug_adapter', ['exports', 'ember-met | |
| 6780 6771 | 
             
                }
         | 
| 6781 6772 | 
             
              });
         | 
| 6782 6773 | 
             
            });
         | 
| 6783 | 
            -
            enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property_get', 'ember-metal/run_loop', 'ember-runtime/system/string', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-runtime/system/native_array', 'ember-application/system/application', 'container/owner'], function (exports, _emberMetalProperty_get, _emberMetalRun_loop, _emberRuntimeSystemString, _emberRuntimeSystemNamespace, _emberRuntimeSystemObject, _emberRuntimeSystemNative_array, _emberApplicationSystemApplication, _containerOwner) {
         | 
| 6774 | 
            +
            enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property_get', 'ember-metal/run_loop', 'ember-runtime/system/string', 'ember-runtime/system/namespace', 'ember-runtime/system/object', 'ember-runtime/system/native_array', 'ember-application/system/application', 'container/owner', 'ember-runtime/mixins/array'], function (exports, _emberMetalProperty_get, _emberMetalRun_loop, _emberRuntimeSystemString, _emberRuntimeSystemNamespace, _emberRuntimeSystemObject, _emberRuntimeSystemNative_array, _emberApplicationSystemApplication, _containerOwner, _emberRuntimeMixinsArray) {
         | 
| 6784 6775 | 
             
              'use strict';
         | 
| 6785 6776 |  | 
| 6786 6777 | 
             
              /**
         | 
| @@ -6971,7 +6962,7 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property | |
| 6971 6962 |  | 
| 6972 6963 | 
             
                  var contentDidChange = function (array, idx, removedCount, addedCount) {
         | 
| 6973 6964 | 
             
                    for (var i = idx; i < idx + addedCount; i++) {
         | 
| 6974 | 
            -
                      var record =  | 
| 6965 | 
            +
                      var record = _emberRuntimeMixinsArray.objectAt(array, i);
         | 
| 6975 6966 | 
             
                      var wrapped = _this2.wrapRecord(record);
         | 
| 6976 6967 | 
             
                      releaseMethods.push(_this2.observeRecord(record, recordUpdated));
         | 
| 6977 6968 | 
             
                      recordsAdded([wrapped]);
         | 
| @@ -6985,13 +6976,13 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property | |
| 6985 6976 | 
             
                  var observer = { didChange: contentDidChange, willChange: function () {
         | 
| 6986 6977 | 
             
                      return this;
         | 
| 6987 6978 | 
             
                    } };
         | 
| 6988 | 
            -
                   | 
| 6979 | 
            +
                  _emberRuntimeMixinsArray.addArrayObserver(records, this, observer);
         | 
| 6989 6980 |  | 
| 6990 6981 | 
             
                  release = function () {
         | 
| 6991 6982 | 
             
                    releaseMethods.forEach(function (fn) {
         | 
| 6992 6983 | 
             
                      fn();
         | 
| 6993 6984 | 
             
                    });
         | 
| 6994 | 
            -
                     | 
| 6985 | 
            +
                    _emberRuntimeMixinsArray.removeArrayObserver(records, _this2, observer);
         | 
| 6995 6986 | 
             
                    _this2.releaseMethods.removeObject(release);
         | 
| 6996 6987 | 
             
                  };
         | 
| 6997 6988 |  | 
| @@ -7066,10 +7057,10 @@ enifed('ember-extension-support/data_adapter', ['exports', 'ember-metal/property | |
| 7066 7057 | 
             
                    }
         | 
| 7067 7058 | 
             
                  };
         | 
| 7068 7059 |  | 
| 7069 | 
            -
                   | 
| 7060 | 
            +
                  _emberRuntimeMixinsArray.addArrayObserver(records, this, observer);
         | 
| 7070 7061 |  | 
| 7071 7062 | 
             
                  var release = function () {
         | 
| 7072 | 
            -
                     | 
| 7063 | 
            +
                    _emberRuntimeMixinsArray.removeArrayObserver(records, _this3, observer);
         | 
| 7073 7064 | 
             
                  };
         | 
| 7074 7065 |  | 
| 7075 7066 | 
             
                  return release;
         | 
| @@ -9008,9 +8999,11 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util | |
| 9008 8999 | 
             
                      return true;
         | 
| 9009 9000 | 
             
                    case 'unless':
         | 
| 9010 9001 | 
             
                    case 'if':
         | 
| 9011 | 
            -
                      params[0] = shouldDisplay(params[0]);break;
         | 
| 9002 | 
            +
                      params[0] = shouldDisplay(params[0], toBool);break;
         | 
| 9012 9003 | 
             
                    case 'each':
         | 
| 9013 9004 | 
             
                      params[0] = eachParam(params[0]);break;
         | 
| 9005 | 
            +
                    case 'with':
         | 
| 9006 | 
            +
                      params[0] = shouldDisplay(params[0], identity);break;
         | 
| 9014 9007 | 
             
                  }
         | 
| 9015 9008 | 
             
                }
         | 
| 9016 9009 |  | 
| @@ -9060,7 +9053,7 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util | |
| 9060 9053 | 
             
                return stream;
         | 
| 9061 9054 | 
             
              }
         | 
| 9062 9055 |  | 
| 9063 | 
            -
              function shouldDisplay(predicate) {
         | 
| 9056 | 
            +
              function shouldDisplay(predicate, coercer) {
         | 
| 9064 9057 | 
             
                var length = getKey(predicate, 'length');
         | 
| 9065 9058 | 
             
                var isTruthy = getKey(predicate, 'isTruthy');
         | 
| 9066 9059 |  | 
| @@ -9077,7 +9070,7 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util | |
| 9077 9070 | 
             
                    return isTruthyVal;
         | 
| 9078 9071 | 
             
                  }
         | 
| 9079 9072 |  | 
| 9080 | 
            -
                  return  | 
| 9073 | 
            +
                  return coercer(predicateVal);
         | 
| 9081 9074 | 
             
                }, 'ShouldDisplay');
         | 
| 9082 9075 |  | 
| 9083 9076 | 
             
                _emberMetalStreamsUtils.addDependency(stream, length);
         | 
| @@ -9086,6 +9079,14 @@ enifed('ember-htmlbars/hooks/link-render-node', ['exports', 'ember-htmlbars/util | |
| 9086 9079 | 
             
                return stream;
         | 
| 9087 9080 | 
             
              }
         | 
| 9088 9081 |  | 
| 9082 | 
            +
              function toBool(value) {
         | 
| 9083 | 
            +
                return !!value;
         | 
| 9084 | 
            +
              }
         | 
| 9085 | 
            +
             | 
| 9086 | 
            +
              function identity(value) {
         | 
| 9087 | 
            +
                return value;
         | 
| 9088 | 
            +
              }
         | 
| 9089 | 
            +
             | 
| 9089 9090 | 
             
              function getKey(obj, key) {
         | 
| 9090 9091 | 
             
                if (_emberMetalStreamsUtils.isStream(obj)) {
         | 
| 9091 9092 | 
             
                  return obj.getKey(key);
         | 
| @@ -10495,7 +10496,7 @@ enifed('ember-htmlbars/keywords/outlet', ['exports', 'ember-metal/debug', 'ember | |
| 10495 10496 |  | 
| 10496 10497 | 
             
              'use strict';
         | 
| 10497 10498 |  | 
| 10498 | 
            -
              _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta. | 
| 10499 | 
            +
              _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta.3';
         | 
| 10499 10500 |  | 
| 10500 10501 | 
             
              /**
         | 
| 10501 10502 | 
             
                The `{{outlet}}` helper lets you specify where a child routes will render in
         | 
| @@ -16164,7 +16165,7 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require) | |
| 16164 16165 |  | 
| 16165 16166 | 
             
                @class Ember
         | 
| 16166 16167 | 
             
                @static
         | 
| 16167 | 
            -
                @version 2.4.0-beta. | 
| 16168 | 
            +
                @version 2.4.0-beta.3
         | 
| 16168 16169 | 
             
                @public
         | 
| 16169 16170 | 
             
              */
         | 
| 16170 16171 |  | 
| @@ -16206,11 +16207,11 @@ enifed('ember-metal/core', ['exports', 'require'], function (exports, _require) | |
| 16206 16207 |  | 
| 16207 16208 | 
             
                @property VERSION
         | 
| 16208 16209 | 
             
                @type String
         | 
| 16209 | 
            -
                @default '2.4.0-beta. | 
| 16210 | 
            +
                @default '2.4.0-beta.3'
         | 
| 16210 16211 | 
             
                @static
         | 
| 16211 16212 | 
             
                @public
         | 
| 16212 16213 | 
             
              */
         | 
| 16213 | 
            -
              Ember.VERSION = '2.4.0-beta. | 
| 16214 | 
            +
              Ember.VERSION = '2.4.0-beta.3';
         | 
| 16214 16215 |  | 
| 16215 16216 | 
             
              /**
         | 
| 16216 16217 | 
             
                The hash of environment variables used to control various configuration
         | 
| @@ -18575,6 +18576,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta | |
| 18575 18576 | 
             
              */
         | 
| 18576 18577 | 
             
              var members = {
         | 
| 18577 18578 | 
             
                cache: ownMap,
         | 
| 18579 | 
            +
                weak: ownMap,
         | 
| 18578 18580 | 
             
                watching: inheritedMap,
         | 
| 18579 18581 | 
             
                mixins: inheritedMap,
         | 
| 18580 18582 | 
             
                bindings: inheritedMap,
         | 
| @@ -18589,6 +18591,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta | |
| 18589 18591 |  | 
| 18590 18592 | 
             
              function Meta(obj, parentMeta) {
         | 
| 18591 18593 | 
             
                this._cache = undefined;
         | 
| 18594 | 
            +
                this._weak = undefined;
         | 
| 18592 18595 | 
             
                this._watching = undefined;
         | 
| 18593 18596 | 
             
                this._mixins = undefined;
         | 
| 18594 18597 | 
             
                this._bindings = undefined;
         | 
| @@ -18673,7 +18676,7 @@ enifed('ember-metal/meta', ['exports', 'ember-metal/meta_listeners', 'ember-meta | |
| 18673 18676 | 
             
                };
         | 
| 18674 18677 |  | 
| 18675 18678 | 
             
                Meta.prototype['clear' + capitalized] = function () {
         | 
| 18676 | 
            -
                  this[key] =  | 
| 18679 | 
            +
                  this[key] = undefined;
         | 
| 18677 18680 | 
             
                };
         | 
| 18678 18681 |  | 
| 18679 18682 | 
             
                Meta.prototype['deleteFrom' + capitalized] = function (subkey) {
         | 
| @@ -19733,11 +19736,10 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error', | |
| 19733 19736 | 
             
                seen[_emberMetalUtils.guidFor(mixin)] = true;
         | 
| 19734 19737 |  | 
| 19735 19738 | 
             
                if (mixin.properties) {
         | 
| 19736 | 
            -
                  var props = mixin.properties;
         | 
| 19737 | 
            -
                  for (var  | 
| 19738 | 
            -
                     | 
| 19739 | 
            -
             | 
| 19740 | 
            -
                    }
         | 
| 19739 | 
            +
                  var props = Object.keys(mixin.properties);
         | 
| 19740 | 
            +
                  for (var i = 0; i < props.length; i++) {
         | 
| 19741 | 
            +
                    var key = props[i];
         | 
| 19742 | 
            +
                    ret[key] = true;
         | 
| 19741 19743 | 
             
                  }
         | 
| 19742 19744 | 
             
                } else if (mixin.mixins) {
         | 
| 19743 19745 | 
             
                  mixin.mixins.forEach(function (x) {
         | 
| @@ -19749,13 +19751,9 @@ enifed('ember-metal/mixin', ['exports', 'ember-metal/core', 'ember-metal/error', | |
| 19749 19751 | 
             
              MixinPrototype.keys = function () {
         | 
| 19750 19752 | 
             
                var keys = {};
         | 
| 19751 19753 | 
             
                var seen = {};
         | 
| 19752 | 
            -
             | 
| 19754 | 
            +
             | 
| 19753 19755 | 
             
                _keys(keys, this, seen);
         | 
| 19754 | 
            -
                 | 
| 19755 | 
            -
                  if (keys.hasOwnProperty(key)) {
         | 
| 19756 | 
            -
                    ret.push(key);
         | 
| 19757 | 
            -
                  }
         | 
| 19758 | 
            -
                }
         | 
| 19756 | 
            +
                var ret = Object.keys(keys);
         | 
| 19759 19757 | 
             
                return ret;
         | 
| 19760 19758 | 
             
              };
         | 
| 19761 19759 |  | 
| @@ -23708,6 +23706,101 @@ enifed('ember-metal/watching', ['exports', 'ember-metal/chains', 'ember-metal/wa | |
| 23708 23706 | 
             
                }
         | 
| 23709 23707 | 
             
              }
         | 
| 23710 23708 | 
             
            });
         | 
| 23709 | 
            +
            enifed('ember-metal/weak_map', ['exports', 'ember-metal/debug', 'ember-metal/utils', 'ember-metal/meta'], function (exports, _emberMetalDebug, _emberMetalUtils, _emberMetalMeta) {
         | 
| 23710 | 
            +
              'use strict';
         | 
| 23711 | 
            +
             | 
| 23712 | 
            +
              exports.default = WeakMap;
         | 
| 23713 | 
            +
             | 
| 23714 | 
            +
              var id = 0;
         | 
| 23715 | 
            +
              function UNDEFINED() {}
         | 
| 23716 | 
            +
             | 
| 23717 | 
            +
              /*
         | 
| 23718 | 
            +
               * @private
         | 
| 23719 | 
            +
               * @class Ember.WeakMap
         | 
| 23720 | 
            +
               *
         | 
| 23721 | 
            +
               * A partial polyfill for [WeakMap](http://www.ecma-international.org/ecma-262/6.0/#sec-weakmap-objects).
         | 
| 23722 | 
            +
               *
         | 
| 23723 | 
            +
               * There is a small but important caveat. This implementation assumes that the
         | 
| 23724 | 
            +
               * weak map will live longer (in the sense of garbage collection) than all of its
         | 
| 23725 | 
            +
               * keys, otherwise it is possible to leak the values stored in the weak map. In
         | 
| 23726 | 
            +
               * practice, most use cases satisfy this limitation which is why it is included
         | 
| 23727 | 
            +
               * in ember-metal.
         | 
| 23728 | 
            +
               */
         | 
| 23729 | 
            +
             | 
| 23730 | 
            +
              function WeakMap() {
         | 
| 23731 | 
            +
                _emberMetalDebug.assert('Invoking the WeakMap constructor with arguments is not supported at this time', arguments.length === 0);
         | 
| 23732 | 
            +
             | 
| 23733 | 
            +
                this._id = _emberMetalUtils.GUID_KEY + id++;
         | 
| 23734 | 
            +
              }
         | 
| 23735 | 
            +
             | 
| 23736 | 
            +
              /*
         | 
| 23737 | 
            +
               * @method get
         | 
| 23738 | 
            +
               * @param key {Object | Function}
         | 
| 23739 | 
            +
               * @return {Any} stored value
         | 
| 23740 | 
            +
               */
         | 
| 23741 | 
            +
              WeakMap.prototype.get = function (obj) {
         | 
| 23742 | 
            +
                var meta = _emberMetalMeta.peekMeta(obj);
         | 
| 23743 | 
            +
                if (meta) {
         | 
| 23744 | 
            +
                  var map = meta.readableWeak();
         | 
| 23745 | 
            +
                  if (map) {
         | 
| 23746 | 
            +
                    if (map[this._id] === UNDEFINED) {
         | 
| 23747 | 
            +
                      return undefined;
         | 
| 23748 | 
            +
                    }
         | 
| 23749 | 
            +
             | 
| 23750 | 
            +
                    return map[this._id];
         | 
| 23751 | 
            +
                  }
         | 
| 23752 | 
            +
                }
         | 
| 23753 | 
            +
              };
         | 
| 23754 | 
            +
             | 
| 23755 | 
            +
              /*
         | 
| 23756 | 
            +
               * @method set
         | 
| 23757 | 
            +
               * @param key {Object | Function}
         | 
| 23758 | 
            +
               * @param value {Any}
         | 
| 23759 | 
            +
               * @return {WeakMap} the weak map
         | 
| 23760 | 
            +
               */
         | 
| 23761 | 
            +
              WeakMap.prototype.set = function (obj, value) {
         | 
| 23762 | 
            +
                _emberMetalDebug.assert('Uncaught TypeError: Invalid value used as weak map key', obj && (typeof obj === 'object' || typeof obj === 'function'));
         | 
| 23763 | 
            +
             | 
| 23764 | 
            +
                if (value === undefined) {
         | 
| 23765 | 
            +
                  value = UNDEFINED;
         | 
| 23766 | 
            +
                }
         | 
| 23767 | 
            +
             | 
| 23768 | 
            +
                _emberMetalMeta.meta(obj).writableWeak()[this._id] = value;
         | 
| 23769 | 
            +
             | 
| 23770 | 
            +
                return this;
         | 
| 23771 | 
            +
              };
         | 
| 23772 | 
            +
             | 
| 23773 | 
            +
              /*
         | 
| 23774 | 
            +
               * @method has
         | 
| 23775 | 
            +
               * @param key {Object | Function}
         | 
| 23776 | 
            +
               * @return {boolean} if the key exists
         | 
| 23777 | 
            +
               */
         | 
| 23778 | 
            +
              WeakMap.prototype.has = function (obj) {
         | 
| 23779 | 
            +
                var meta = _emberMetalMeta.peekMeta(obj);
         | 
| 23780 | 
            +
                if (meta) {
         | 
| 23781 | 
            +
                  var map = meta.readableWeak();
         | 
| 23782 | 
            +
                  if (map) {
         | 
| 23783 | 
            +
                    return map[this._id] !== undefined;
         | 
| 23784 | 
            +
                  }
         | 
| 23785 | 
            +
                }
         | 
| 23786 | 
            +
             | 
| 23787 | 
            +
                return false;
         | 
| 23788 | 
            +
              };
         | 
| 23789 | 
            +
             | 
| 23790 | 
            +
              /*
         | 
| 23791 | 
            +
               * @method delete
         | 
| 23792 | 
            +
               * @param key {Object | Function}
         | 
| 23793 | 
            +
               * @return {boolean} if the key was deleted
         | 
| 23794 | 
            +
               */
         | 
| 23795 | 
            +
              WeakMap.prototype.delete = function (obj) {
         | 
| 23796 | 
            +
                if (this.has(obj)) {
         | 
| 23797 | 
            +
                  delete _emberMetalMeta.meta(obj).writableWeak()[this._id];
         | 
| 23798 | 
            +
                  return true;
         | 
| 23799 | 
            +
                } else {
         | 
| 23800 | 
            +
                  return false;
         | 
| 23801 | 
            +
                }
         | 
| 23802 | 
            +
              };
         | 
| 23803 | 
            +
            });
         | 
| 23711 23804 | 
             
            enifed('ember-metal-views/index', ['exports', 'ember-metal-views/renderer'], function (exports, _emberMetalViewsRenderer) {
         | 
| 23712 23805 | 
             
              'use strict';
         | 
| 23713 23806 |  | 
| @@ -24006,7 +24099,7 @@ enifed('ember-routing/ext/controller', ['exports', 'ember-metal/property_get', ' | |
| 24006 24099 |  | 
| 24007 24100 | 
             
                /**
         | 
| 24008 24101 | 
             
                  Defines which query parameters the controller accepts.
         | 
| 24009 | 
            -
                  If you give the names ['category','page'] it will bind
         | 
| 24102 | 
            +
                  If you give the names `['category','page']` it will bind
         | 
| 24010 24103 | 
             
                  the values of these query parameters to the variables
         | 
| 24011 24104 | 
             
                  `this.category` and `this.page`
         | 
| 24012 24105 | 
             
                   @property queryParams
         | 
| @@ -27892,9 +27985,24 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m | |
| 27892 27985 |  | 
| 27893 27986 | 
             
                _doURLTransition: function (routerJsMethod, url) {
         | 
| 27894 27987 | 
             
                  var transition = this.router[routerJsMethod](url || '/');
         | 
| 27895 | 
            -
                   | 
| 27988 | 
            +
                  didBeginTransition(transition, this);
         | 
| 27989 | 
            +
                  return transition;
         | 
| 27896 27990 | 
             
                },
         | 
| 27897 27991 |  | 
| 27992 | 
            +
                /**
         | 
| 27993 | 
            +
                  Transition the application into another route. The route may
         | 
| 27994 | 
            +
                  be either a single route or route path:
         | 
| 27995 | 
            +
                   See [Route.transitionTo](http://emberjs.com/api/classes/Ember.Route.html#method_transitionTo) for more info.
         | 
| 27996 | 
            +
                   @method transitionTo
         | 
| 27997 | 
            +
                  @param {String} name the name of the route or a URL
         | 
| 27998 | 
            +
                  @param {...Object} models the model(s) or identifier(s) to be used while
         | 
| 27999 | 
            +
                    transitioning to the route.
         | 
| 28000 | 
            +
                  @param {Object} [options] optional hash with a queryParams property
         | 
| 28001 | 
            +
                    containing a mapping of query parameters
         | 
| 28002 | 
            +
                  @return {Transition} the transition object associated with this
         | 
| 28003 | 
            +
                    attempted transition
         | 
| 28004 | 
            +
                  @private
         | 
| 28005 | 
            +
                */
         | 
| 27898 28006 | 
             
                transitionTo: function () {
         | 
| 27899 28007 | 
             
                  var queryParams;
         | 
| 27900 28008 |  | 
| @@ -28212,11 +28320,11 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m | |
| 28212 28320 | 
             
                  this._prepareQueryParams(targetRouteName, models, queryParams);
         | 
| 28213 28321 |  | 
| 28214 28322 | 
             
                  var transitionArgs = _emberRoutingUtils.routeArgs(targetRouteName, models, queryParams);
         | 
| 28215 | 
            -
                  var  | 
| 28323 | 
            +
                  var transition = this.router.transitionTo.apply(this.router, transitionArgs);
         | 
| 28216 28324 |  | 
| 28217 | 
            -
                  didBeginTransition( | 
| 28325 | 
            +
                  didBeginTransition(transition, this);
         | 
| 28218 28326 |  | 
| 28219 | 
            -
                  return  | 
| 28327 | 
            +
                  return transition;
         | 
| 28220 28328 | 
             
                },
         | 
| 28221 28329 |  | 
| 28222 28330 | 
             
                _prepareQueryParams: function (targetRouteName, models, queryParams) {
         | 
| @@ -28667,7 +28775,7 @@ enifed('ember-routing/system/router', ['exports', 'ember-metal/logger', 'ember-m | |
| 28667 28775 | 
             
                }
         | 
| 28668 28776 | 
             
                router.set('targetState', routerState);
         | 
| 28669 28777 |  | 
| 28670 | 
            -
                 | 
| 28778 | 
            +
                transition.promise = transition.catch(function (error) {
         | 
| 28671 28779 | 
             
                  var errorId = _emberMetalUtils.guidFor(error);
         | 
| 28672 28780 |  | 
| 28673 28781 | 
             
                  if (router._isErrorHandled(errorId)) {
         | 
| @@ -30167,7 +30275,7 @@ enifed('ember-routing-views/components/link-to', ['exports', 'ember-metal/logger | |
| 30167 30275 |  | 
| 30168 30276 | 
             
              'use strict';
         | 
| 30169 30277 |  | 
| 30170 | 
            -
              _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.4.0-beta. | 
| 30278 | 
            +
              _emberHtmlbarsTemplatesLinkTo.default.meta.revision = 'Ember@2.4.0-beta.3';
         | 
| 30171 30279 |  | 
| 30172 30280 | 
             
              /**
         | 
| 30173 30281 | 
             
                `Ember.LinkComponent` renders an element whose `click` event triggers a
         | 
| @@ -30670,7 +30778,7 @@ enifed('ember-routing-views/views/outlet', ['exports', 'ember-views/views/view', | |
| 30670 30778 |  | 
| 30671 30779 | 
             
              'use strict';
         | 
| 30672 30780 |  | 
| 30673 | 
            -
              _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta. | 
| 30781 | 
            +
              _emberHtmlbarsTemplatesTopLevelView.default.meta.revision = 'Ember@2.4.0-beta.3';
         | 
| 30674 30782 |  | 
| 30675 30783 | 
             
              var CoreOutletView = _emberViewsViewsView.default.extend({
         | 
| 30676 30784 | 
             
                defaultTemplate: _emberHtmlbarsTemplatesTopLevelView.default,
         | 
| @@ -30853,7 +30961,7 @@ enifed('ember-runtime/compare', ['exports', 'ember-runtime/utils', 'ember-runtim | |
| 30853 30961 | 
             
                }
         | 
| 30854 30962 | 
             
              }
         | 
| 30855 30963 | 
             
            });
         | 
| 30856 | 
            -
            enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties) {
         | 
| 30964 | 
            +
            enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/error', 'ember-metal/computed', 'ember-metal/observer', 'ember-runtime/compare', 'ember-runtime/utils', 'ember-runtime/system/native_array', 'ember-metal/is_none', 'ember-metal/get_properties', 'ember-metal/weak_map'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalError, _emberMetalComputed, _emberMetalObserver, _emberRuntimeCompare, _emberRuntimeUtils, _emberRuntimeSystemNative_array, _emberMetalIs_none, _emberMetalGet_properties, _emberMetalWeak_map) {
         | 
| 30857 30965 | 
             
              /**
         | 
| 30858 30966 | 
             
              @module ember
         | 
| 30859 30967 | 
             
              @submodule ember-runtime
         | 
| @@ -30923,7 +31031,7 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal | |
| 30923 31031 | 
             
              }
         | 
| 30924 31032 |  | 
| 30925 31033 | 
             
              /**
         | 
| 30926 | 
            -
                A computed property that returns the sum of the  | 
| 31034 | 
            +
                A computed property that returns the sum of the values
         | 
| 30927 31035 | 
             
                in the dependent array.
         | 
| 30928 31036 |  | 
| 30929 31037 | 
             
                @method sum
         | 
| @@ -31516,67 +31624,83 @@ enifed('ember-runtime/computed/reduce_computed_macros', ['exports', 'ember-metal | |
| 31516 31624 | 
             
                var cp = new _emberMetalComputed.ComputedProperty(function (key) {
         | 
| 31517 31625 | 
             
                  var _this5 = this;
         | 
| 31518 31626 |  | 
| 31519 | 
            -
                   | 
| 31520 | 
            -
                    this.notifyPropertyChange(key);
         | 
| 31521 | 
            -
                  }
         | 
| 31522 | 
            -
             | 
| 31523 | 
            -
                  var items = itemsKey === '@this' ? this : _emberMetalProperty_get.get(this, itemsKey);
         | 
| 31627 | 
            +
                  var itemsKeyIsAtThis = itemsKey === '@this';
         | 
| 31524 31628 | 
             
                  var sortProperties = _emberMetalProperty_get.get(this, sortPropertiesKey);
         | 
| 31525 31629 |  | 
| 31526 | 
            -
                   | 
| 31527 | 
            -
                    return  | 
| 31528 | 
            -
                  }
         | 
| 31630 | 
            +
                  _emberMetalDebug.assert('The sort definition for \'' + key + '\' on ' + this + ' must be a function or an array of strings', _emberRuntimeUtils.isArray(sortProperties) && sortProperties.every(function (s) {
         | 
| 31631 | 
            +
                    return typeof s === 'string';
         | 
| 31632 | 
            +
                  }));
         | 
| 31633 | 
            +
             | 
| 31634 | 
            +
                  var normalizedSortProperties = normalizeSortProperties(sortProperties);
         | 
| 31635 | 
            +
             | 
| 31636 | 
            +
                  // Add/remove property observers as required.
         | 
| 31637 | 
            +
                  var activeObserversMap = cp._activeObserverMap || (cp._activeObserverMap = new _emberMetalWeak_map.default());
         | 
| 31638 | 
            +
                  var activeObservers = activeObserversMap.get(this);
         | 
| 31529 31639 |  | 
| 31530 | 
            -
                   | 
| 31531 | 
            -
             | 
| 31532 | 
            -
             | 
| 31533 | 
            -
                      return _emberMetalObserver.removeObserver.apply(null, args);
         | 
| 31640 | 
            +
                  if (activeObservers) {
         | 
| 31641 | 
            +
                    activeObservers.forEach(function (args) {
         | 
| 31642 | 
            +
                      _emberMetalObserver.removeObserver.apply(null, args);
         | 
| 31534 31643 | 
             
                    });
         | 
| 31535 31644 | 
             
                  }
         | 
| 31536 31645 |  | 
| 31537 | 
            -
                   | 
| 31538 | 
            -
             | 
| 31539 | 
            -
                  if (!_emberRuntimeUtils.isArray(sortProperties)) {
         | 
| 31540 | 
            -
                    return items;
         | 
| 31646 | 
            +
                  function sortPropertyDidChange() {
         | 
| 31647 | 
            +
                    this.notifyPropertyChange(key);
         | 
| 31541 31648 | 
             
                  }
         | 
| 31542 31649 |  | 
| 31543 | 
            -
                   | 
| 31544 | 
            -
             | 
| 31545 | 
            -
                    var _p$split = p.split(':');
         | 
| 31650 | 
            +
                  activeObservers = normalizedSortProperties.map(function (_ref) {
         | 
| 31651 | 
            +
                    var prop = _ref[0];
         | 
| 31546 31652 |  | 
| 31547 | 
            -
                    var  | 
| 31548 | 
            -
                    var  | 
| 31653 | 
            +
                    var path = itemsKeyIsAtThis ? '@each.' + prop : itemsKey + '.@each.' + prop;
         | 
| 31654 | 
            +
                    var args = [_this5, path, sortPropertyDidChange];
         | 
| 31655 | 
            +
                    _emberMetalObserver.addObserver.apply(null, args);
         | 
| 31656 | 
            +
                    return args;
         | 
| 31657 | 
            +
                  });
         | 
| 31549 31658 |  | 
| 31550 | 
            -
             | 
| 31659 | 
            +
                  activeObserversMap.set(this, activeObservers);
         | 
| 31551 31660 |  | 
| 31552 | 
            -
             | 
| 31553 | 
            -
                   | 
| 31661 | 
            +
                  // Sort and return the array.
         | 
| 31662 | 
            +
                  var items = itemsKeyIsAtThis ? this : _emberMetalProperty_get.get(this, itemsKey);
         | 
| 31554 31663 |  | 
| 31555 | 
            -
                   | 
| 31556 | 
            -
             | 
| 31557 | 
            -
                   | 
| 31558 | 
            -
                     | 
| 31559 | 
            -
             | 
| 31560 | 
            -
             | 
| 31561 | 
            -
                  });
         | 
| 31664 | 
            +
                  if (_emberRuntimeUtils.isArray(items)) {
         | 
| 31665 | 
            +
                    return sortByNormalizedSortProperties(items, normalizedSortProperties);
         | 
| 31666 | 
            +
                  } else {
         | 
| 31667 | 
            +
                    return _emberRuntimeSystemNative_array.A();
         | 
| 31668 | 
            +
                  }
         | 
| 31669 | 
            +
                });
         | 
| 31562 31670 |  | 
| 31563 | 
            -
             | 
| 31564 | 
            -
                    for (var i = 0; i < normalizedSort.length; ++i) {
         | 
| 31565 | 
            -
                      var _normalizedSort$i = normalizedSort[i];
         | 
| 31566 | 
            -
                      var prop = _normalizedSort$i[0];
         | 
| 31567 | 
            -
                      var direction = _normalizedSort$i[1];
         | 
| 31671 | 
            +
                cp._activeObserverMap = undefined;
         | 
| 31568 31672 |  | 
| 31569 | 
            -
             | 
| 31570 | 
            -
             | 
| 31571 | 
            -
                        return direction === 'desc' ? -1 * result : result;
         | 
| 31572 | 
            -
                      }
         | 
| 31573 | 
            -
                    }
         | 
| 31673 | 
            +
                return cp.property(sortPropertiesKey + '.[]').readOnly();
         | 
| 31674 | 
            +
              }
         | 
| 31574 31675 |  | 
| 31575 | 
            -
             | 
| 31576 | 
            -
             | 
| 31676 | 
            +
              function normalizeSortProperties(sortProperties) {
         | 
| 31677 | 
            +
                return sortProperties.map(function (p) {
         | 
| 31678 | 
            +
                  var _p$split = p.split(':');
         | 
| 31679 | 
            +
             | 
| 31680 | 
            +
                  var prop = _p$split[0];
         | 
| 31681 | 
            +
                  var direction = _p$split[1];
         | 
| 31682 | 
            +
             | 
| 31683 | 
            +
                  direction = direction || 'asc';
         | 
| 31684 | 
            +
             | 
| 31685 | 
            +
                  return [prop, direction];
         | 
| 31577 31686 | 
             
                });
         | 
| 31687 | 
            +
              }
         | 
| 31688 | 
            +
             | 
| 31689 | 
            +
              function sortByNormalizedSortProperties(items, normalizedSortProperties) {
         | 
| 31690 | 
            +
                return _emberRuntimeSystemNative_array.A(items.slice().sort(function (itemA, itemB) {
         | 
| 31691 | 
            +
                  for (var i = 0; i < normalizedSortProperties.length; i++) {
         | 
| 31692 | 
            +
                    var _normalizedSortProperties$i = normalizedSortProperties[i];
         | 
| 31693 | 
            +
                    var prop = _normalizedSortProperties$i[0];
         | 
| 31694 | 
            +
                    var direction = _normalizedSortProperties$i[1];
         | 
| 31695 | 
            +
             | 
| 31696 | 
            +
                    var result = _emberRuntimeCompare.default(_emberMetalProperty_get.get(itemA, prop), _emberMetalProperty_get.get(itemB, prop));
         | 
| 31697 | 
            +
                    if (result !== 0) {
         | 
| 31698 | 
            +
                      return direction === 'desc' ? -1 * result : result;
         | 
| 31699 | 
            +
                    }
         | 
| 31700 | 
            +
                  }
         | 
| 31578 31701 |  | 
| 31579 | 
            -
             | 
| 31702 | 
            +
                  return 0;
         | 
| 31703 | 
            +
                }));
         | 
| 31580 31704 | 
             
              }
         | 
| 31581 31705 | 
             
            });
         | 
| 31582 31706 | 
             
            enifed('ember-runtime/controllers/controller', ['exports', 'ember-metal/debug', 'ember-runtime/system/object', 'ember-runtime/mixins/controller', 'ember-runtime/inject', 'ember-runtime/mixins/action_handler'], function (exports, _emberMetalDebug, _emberRuntimeSystemObject, _emberRuntimeMixinsController, _emberRuntimeInject, _emberRuntimeMixinsAction_handler) {
         | 
| @@ -32641,6 +32765,10 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32641 32765 | 
             
              //
         | 
| 32642 32766 | 
             
              'use strict';
         | 
| 32643 32767 |  | 
| 32768 | 
            +
              exports.addArrayObserver = addArrayObserver;
         | 
| 32769 | 
            +
              exports.removeArrayObserver = removeArrayObserver;
         | 
| 32770 | 
            +
              exports.objectAt = objectAt;
         | 
| 32771 | 
            +
             | 
| 32644 32772 | 
             
              function arrayObserversHelper(obj, target, opts, operation, notify) {
         | 
| 32645 32773 | 
             
                var willChange = opts && opts.willChange || 'arrayWillChange';
         | 
| 32646 32774 | 
             
                var didChange = opts && opts.didChange || 'arrayDidChange';
         | 
| @@ -32660,6 +32788,22 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32660 32788 | 
             
                return obj;
         | 
| 32661 32789 | 
             
              }
         | 
| 32662 32790 |  | 
| 32791 | 
            +
              function addArrayObserver(array, target, opts) {
         | 
| 32792 | 
            +
                return arrayObserversHelper(array, target, opts, _emberMetalEvents.addListener, false);
         | 
| 32793 | 
            +
              }
         | 
| 32794 | 
            +
             | 
| 32795 | 
            +
              function removeArrayObserver(array, target, opts) {
         | 
| 32796 | 
            +
                return arrayObserversHelper(array, target, opts, _emberMetalEvents.removeListener, true);
         | 
| 32797 | 
            +
              }
         | 
| 32798 | 
            +
             | 
| 32799 | 
            +
              function objectAt(content, idx) {
         | 
| 32800 | 
            +
                if (content.objectAt) {
         | 
| 32801 | 
            +
                  return content.objectAt(idx);
         | 
| 32802 | 
            +
                }
         | 
| 32803 | 
            +
             | 
| 32804 | 
            +
                return content[idx];
         | 
| 32805 | 
            +
              }
         | 
| 32806 | 
            +
             | 
| 32663 32807 | 
             
              // ..........................................................
         | 
| 32664 32808 | 
             
              // ARRAY
         | 
| 32665 32809 | 
             
              //
         | 
| @@ -32752,16 +32896,16 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32752 32896 | 
             
                  @public
         | 
| 32753 32897 | 
             
                 */
         | 
| 32754 32898 | 
             
                objectsAt: function (indexes) {
         | 
| 32755 | 
            -
                  var  | 
| 32899 | 
            +
                  var _this = this;
         | 
| 32756 32900 |  | 
| 32757 32901 | 
             
                  return indexes.map(function (idx) {
         | 
| 32758 | 
            -
                    return  | 
| 32902 | 
            +
                    return objectAt(_this, idx);
         | 
| 32759 32903 | 
             
                  });
         | 
| 32760 32904 | 
             
                },
         | 
| 32761 32905 |  | 
| 32762 32906 | 
             
                // overrides Ember.Enumerable version
         | 
| 32763 32907 | 
             
                nextObject: function (idx) {
         | 
| 32764 | 
            -
                  return  | 
| 32908 | 
            +
                  return objectAt(this, idx);
         | 
| 32765 32909 | 
             
                },
         | 
| 32766 32910 |  | 
| 32767 32911 | 
             
                /**
         | 
| @@ -32784,11 +32928,11 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32784 32928 | 
             
                }),
         | 
| 32785 32929 |  | 
| 32786 32930 | 
             
                firstObject: _emberMetalComputed.computed(function () {
         | 
| 32787 | 
            -
                  return  | 
| 32931 | 
            +
                  return objectAt(this, 0);
         | 
| 32788 32932 | 
             
                }),
         | 
| 32789 32933 |  | 
| 32790 32934 | 
             
                lastObject: _emberMetalComputed.computed(function () {
         | 
| 32791 | 
            -
                  return  | 
| 32935 | 
            +
                  return objectAt(this, _emberMetalProperty_get.get(this, 'length') - 1);
         | 
| 32792 32936 | 
             
                }),
         | 
| 32793 32937 |  | 
| 32794 32938 | 
             
                // optimized version from Enumerable
         | 
| @@ -32834,7 +32978,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32834 32978 | 
             
                  }
         | 
| 32835 32979 |  | 
| 32836 32980 | 
             
                  while (beginIndex < endIndex) {
         | 
| 32837 | 
            -
                    ret[ret.length] =  | 
| 32981 | 
            +
                    ret[ret.length] = objectAt(this, beginIndex++);
         | 
| 32838 32982 | 
             
                  }
         | 
| 32839 32983 |  | 
| 32840 32984 | 
             
                  return ret;
         | 
| @@ -32873,7 +33017,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32873 33017 | 
             
                  }
         | 
| 32874 33018 |  | 
| 32875 33019 | 
             
                  for (idx = startAt; idx < len; idx++) {
         | 
| 32876 | 
            -
                    if ( | 
| 33020 | 
            +
                    if (objectAt(this, idx) === object) {
         | 
| 32877 33021 | 
             
                      return idx;
         | 
| 32878 33022 | 
             
                    }
         | 
| 32879 33023 | 
             
                  }
         | 
| @@ -32914,7 +33058,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32914 33058 | 
             
                  }
         | 
| 32915 33059 |  | 
| 32916 33060 | 
             
                  for (idx = startAt; idx >= 0; idx--) {
         | 
| 32917 | 
            -
                    if ( | 
| 33061 | 
            +
                    if (objectAt(this, idx) === object) {
         | 
| 32918 33062 | 
             
                      return idx;
         | 
| 32919 33063 | 
             
                    }
         | 
| 32920 33064 | 
             
                  }
         | 
| @@ -32949,7 +33093,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32949 33093 | 
             
                */
         | 
| 32950 33094 |  | 
| 32951 33095 | 
             
                addArrayObserver: function (target, opts) {
         | 
| 32952 | 
            -
                  return  | 
| 33096 | 
            +
                  return addArrayObserver(this, target, opts);
         | 
| 32953 33097 | 
             
                },
         | 
| 32954 33098 |  | 
| 32955 33099 | 
             
                /**
         | 
| @@ -32964,7 +33108,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 32964 33108 | 
             
                  @public
         | 
| 32965 33109 | 
             
                */
         | 
| 32966 33110 | 
             
                removeArrayObserver: function (target, opts) {
         | 
| 32967 | 
            -
                  return  | 
| 33111 | 
            +
                  return removeArrayObserver(this, target, opts);
         | 
| 32968 33112 | 
             
                },
         | 
| 32969 33113 |  | 
| 32970 33114 | 
             
                /**
         | 
| @@ -33019,7 +33163,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 33019 33163 | 
             
                    lim = startIdx + removeAmt;
         | 
| 33020 33164 |  | 
| 33021 33165 | 
             
                    for (var idx = startIdx; idx < lim; idx++) {
         | 
| 33022 | 
            -
                      removing.push( | 
| 33166 | 
            +
                      removing.push(objectAt(this, idx));
         | 
| 33023 33167 | 
             
                    }
         | 
| 33024 33168 | 
             
                  } else {
         | 
| 33025 33169 | 
             
                    removing = removeAmt;
         | 
| @@ -33066,7 +33210,7 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 33066 33210 | 
             
                    lim = startIdx + addAmt;
         | 
| 33067 33211 |  | 
| 33068 33212 | 
             
                    for (var idx = startIdx; idx < lim; idx++) {
         | 
| 33069 | 
            -
                      adding.push( | 
| 33213 | 
            +
                      adding.push(objectAt(this, idx));
         | 
| 33070 33214 | 
             
                    }
         | 
| 33071 33215 | 
             
                  } else {
         | 
| 33072 33216 | 
             
                    adding = addAmt;
         | 
| @@ -33084,12 +33228,12 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-metal/core', 'ember-meta | |
| 33084 33228 | 
             
                  var cachedFirst = _emberMetalComputed.cacheFor(this, 'firstObject');
         | 
| 33085 33229 | 
             
                  var cachedLast = _emberMetalComputed.cacheFor(this, 'lastObject');
         | 
| 33086 33230 |  | 
| 33087 | 
            -
                  if ( | 
| 33231 | 
            +
                  if (objectAt(this, 0) !== cachedFirst) {
         | 
| 33088 33232 | 
             
                    _emberMetalProperty_events.propertyWillChange(this, 'firstObject');
         | 
| 33089 33233 | 
             
                    _emberMetalProperty_events.propertyDidChange(this, 'firstObject');
         | 
| 33090 33234 | 
             
                  }
         | 
| 33091 33235 |  | 
| 33092 | 
            -
                  if ( | 
| 33236 | 
            +
                  if (objectAt(this, length - 1) !== cachedLast) {
         | 
| 33093 33237 | 
             
                    _emberMetalProperty_events.propertyWillChange(this, 'lastObject');
         | 
| 33094 33238 | 
             
                    _emberMetalProperty_events.propertyDidChange(this, 'lastObject');
         | 
| 33095 33239 | 
             
                  }
         | 
| @@ -34852,7 +34996,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g | |
| 34852 34996 | 
             
                    return null;
         | 
| 34853 34997 | 
             
                  }
         | 
| 34854 34998 |  | 
| 34855 | 
            -
                  var ret =  | 
| 34999 | 
            +
                  var ret = _emberRuntimeMixinsArray.objectAt(this, len - 1);
         | 
| 34856 35000 | 
             
                  this.removeAt(len - 1, 1);
         | 
| 34857 35001 | 
             
                  return ret;
         | 
| 34858 35002 | 
             
                },
         | 
| @@ -34874,7 +35018,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g | |
| 34874 35018 | 
             
                    return null;
         | 
| 34875 35019 | 
             
                  }
         | 
| 34876 35020 |  | 
| 34877 | 
            -
                  var ret =  | 
| 35021 | 
            +
                  var ret = _emberRuntimeMixinsArray.objectAt(this, 0);
         | 
| 34878 35022 | 
             
                  this.removeAt(0);
         | 
| 34879 35023 | 
             
                  return ret;
         | 
| 34880 35024 | 
             
                },
         | 
| @@ -34977,7 +35121,7 @@ enifed('ember-runtime/mixins/mutable_array', ['exports', 'ember-metal/property_g | |
| 34977 35121 | 
             
                removeObject: function (obj) {
         | 
| 34978 35122 | 
             
                  var loc = _emberMetalProperty_get.get(this, 'length') || 0;
         | 
| 34979 35123 | 
             
                  while (--loc >= 0) {
         | 
| 34980 | 
            -
                    var curObject =  | 
| 35124 | 
            +
                    var curObject = _emberRuntimeMixinsArray.objectAt(this, loc);
         | 
| 34981 35125 |  | 
| 34982 35126 | 
             
                    if (curObject === obj) {
         | 
| 34983 35127 | 
             
                      this.removeAt(loc);
         | 
| @@ -35159,8 +35303,9 @@ enifed('ember-runtime/mixins/observable', ['exports', 'ember-metal/debug', 'embe | |
| 35159 35303 |  | 
| 35160 35304 | 
             
                ## Observing Property Changes
         | 
| 35161 35305 |  | 
| 35162 | 
            -
                You typically observe property changes simply by  | 
| 35163 | 
            -
                 | 
| 35306 | 
            +
                You typically observe property changes simply by using the `Ember.observer`
         | 
| 35307 | 
            +
                function in classes that you write.
         | 
| 35308 | 
            +
              
         | 
| 35164 35309 | 
             
                For example:
         | 
| 35165 35310 |  | 
| 35166 35311 | 
             
                ```javascript
         | 
| @@ -36185,7 +36330,7 @@ enifed('ember-runtime/system/application', ['exports', 'ember-runtime/system/nam | |
| 36185 36330 |  | 
| 36186 36331 | 
             
              exports.default = _emberRuntimeSystemNamespace.default.extend();
         | 
| 36187 36332 | 
             
            });
         | 
| 36188 | 
            -
            enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-runtime/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/property_events', 'ember-metal/error', 'ember-runtime/system/object', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/enumerable', 'ember-metal/alias'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberRuntimeUtils, _emberMetalComputed, _emberMetalMixin, _emberMetalProperty_events, _emberMetalError, _emberRuntimeSystemObject, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsEnumerable, _emberMetalAlias) {
         | 
| 36333 | 
            +
            enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-runtime/utils', 'ember-metal/computed', 'ember-metal/mixin', 'ember-metal/property_events', 'ember-metal/error', 'ember-runtime/system/object', 'ember-runtime/mixins/mutable_array', 'ember-runtime/mixins/enumerable', 'ember-metal/alias', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberRuntimeUtils, _emberMetalComputed, _emberMetalMixin, _emberMetalProperty_events, _emberMetalError, _emberRuntimeSystemObject, _emberRuntimeMixinsMutable_array, _emberRuntimeMixinsEnumerable, _emberMetalAlias, _emberRuntimeMixinsArray) {
         | 
| 36189 36334 | 
             
              'use strict';
         | 
| 36190 36335 |  | 
| 36191 36336 | 
             
              /**
         | 
| @@ -36270,7 +36415,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb | |
| 36270 36415 | 
             
                  @private
         | 
| 36271 36416 | 
             
                */
         | 
| 36272 36417 | 
             
                objectAtContent: function (idx) {
         | 
| 36273 | 
            -
                  return _emberMetalProperty_get.get(this, 'arrangedContent') | 
| 36418 | 
            +
                  return _emberRuntimeMixinsArray.objectAt(_emberMetalProperty_get.get(this, 'arrangedContent'), idx);
         | 
| 36274 36419 | 
             
                },
         | 
| 36275 36420 |  | 
| 36276 36421 | 
             
                /**
         | 
| @@ -36304,7 +36449,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb | |
| 36304 36449 | 
             
                  var content = _emberMetalProperty_get.get(this, 'content');
         | 
| 36305 36450 |  | 
| 36306 36451 | 
             
                  if (content) {
         | 
| 36307 | 
            -
                     | 
| 36452 | 
            +
                    _emberRuntimeMixinsArray.removeArrayObserver(content, this, {
         | 
| 36308 36453 | 
             
                      willChange: 'contentArrayWillChange',
         | 
| 36309 36454 | 
             
                      didChange: 'contentArrayDidChange'
         | 
| 36310 36455 | 
             
                    });
         | 
| @@ -36352,7 +36497,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb | |
| 36352 36497 | 
             
                  if (content) {
         | 
| 36353 36498 | 
             
                    _emberMetalDebug.assert('ArrayProxy expects an Array or Ember.ArrayProxy, but you passed ' + typeof content, _emberRuntimeUtils.isArray(content) || content.isDestroyed);
         | 
| 36354 36499 |  | 
| 36355 | 
            -
                     | 
| 36500 | 
            +
                    _emberRuntimeMixinsArray.addArrayObserver(content, this, {
         | 
| 36356 36501 | 
             
                      willChange: 'contentArrayWillChange',
         | 
| 36357 36502 | 
             
                      didChange: 'contentArrayDidChange'
         | 
| 36358 36503 | 
             
                    });
         | 
| @@ -36387,7 +36532,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb | |
| 36387 36532 | 
             
                  if (arrangedContent) {
         | 
| 36388 36533 | 
             
                    _emberMetalDebug.assert('ArrayProxy expects an Array or Ember.ArrayProxy, but you passed ' + typeof arrangedContent, _emberRuntimeUtils.isArray(arrangedContent) || arrangedContent.isDestroyed);
         | 
| 36389 36534 |  | 
| 36390 | 
            -
                     | 
| 36535 | 
            +
                    _emberRuntimeMixinsArray.addArrayObserver(arrangedContent, this, {
         | 
| 36391 36536 | 
             
                      willChange: 'arrangedContentArrayWillChange',
         | 
| 36392 36537 | 
             
                      didChange: 'arrangedContentArrayDidChange'
         | 
| 36393 36538 | 
             
                    });
         | 
| @@ -36398,7 +36543,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb | |
| 36398 36543 | 
             
                  var arrangedContent = _emberMetalProperty_get.get(this, 'arrangedContent');
         | 
| 36399 36544 |  | 
| 36400 36545 | 
             
                  if (arrangedContent) {
         | 
| 36401 | 
            -
                     | 
| 36546 | 
            +
                    _emberRuntimeMixinsArray.removeArrayObserver(arrangedContent, this, {
         | 
| 36402 36547 | 
             
                      willChange: 'arrangedContentArrayWillChange',
         | 
| 36403 36548 | 
             
                      didChange: 'arrangedContentArrayDidChange'
         | 
| 36404 36549 | 
             
                    });
         | 
| @@ -36471,7 +36616,7 @@ enifed('ember-runtime/system/array_proxy', ['exports', 'ember-metal/debug', 'emb | |
| 36471 36616 | 
             
                    // Get a list of indices in original content to remove
         | 
| 36472 36617 | 
             
                    for (i = start; i < start + len; i++) {
         | 
| 36473 36618 | 
             
                      // Use arrangedContent here so we avoid confusion with objects transformed by objectAtContent
         | 
| 36474 | 
            -
                      indices.push(content.indexOf( | 
| 36619 | 
            +
                      indices.push(content.indexOf(_emberRuntimeMixinsArray.objectAt(arrangedContent, i)));
         | 
| 36475 36620 | 
             
                    }
         | 
| 36476 36621 |  | 
| 36477 36622 | 
             
                    // Replace in reverse order since indices will change
         | 
| @@ -37384,7 +37529,7 @@ enifed('ember-runtime/system/core_object', ['exports', 'ember-metal/debug', 'emb | |
| 37384 37529 | 
             
              @return {String} string representation
         | 
| 37385 37530 | 
             
              @public
         | 
| 37386 37531 | 
             
            */
         | 
| 37387 | 
            -
            enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object) {
         | 
| 37532 | 
            +
            enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'ember-metal/property_get', 'ember-metal/observer', 'ember-metal/property_events', 'ember-metal/empty_object', 'ember-runtime/mixins/array'], function (exports, _emberMetalDebug, _emberMetalProperty_get, _emberMetalObserver, _emberMetalProperty_events, _emberMetalEmpty_object, _emberRuntimeMixinsArray) {
         | 
| 37388 37533 | 
             
              'use strict';
         | 
| 37389 37534 |  | 
| 37390 37535 | 
             
              /**
         | 
| @@ -37485,7 +37630,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe | |
| 37485 37630 |  | 
| 37486 37631 | 
             
              function addObserverForContentKey(content, keyName, proxy, idx, loc) {
         | 
| 37487 37632 | 
             
                while (--loc >= idx) {
         | 
| 37488 | 
            -
                  var item =  | 
| 37633 | 
            +
                  var item = _emberRuntimeMixinsArray.objectAt(content, loc);
         | 
| 37489 37634 | 
             
                  if (item) {
         | 
| 37490 37635 | 
             
                    _emberMetalDebug.assert('When using @each to observe the array ' + content + ', the array must return an object', typeof item === 'object');
         | 
| 37491 37636 | 
             
                    _emberMetalObserver._addBeforeObserver(item, keyName, proxy, 'contentKeyWillChange');
         | 
| @@ -37496,7 +37641,7 @@ enifed('ember-runtime/system/each_proxy', ['exports', 'ember-metal/debug', 'embe | |
| 37496 37641 |  | 
| 37497 37642 | 
             
              function removeObserverForContentKey(content, keyName, proxy, idx, loc) {
         | 
| 37498 37643 | 
             
                while (--loc >= idx) {
         | 
| 37499 | 
            -
                  var item =  | 
| 37644 | 
            +
                  var item = _emberRuntimeMixinsArray.objectAt(content, loc);
         | 
| 37500 37645 | 
             
                  if (item) {
         | 
| 37501 37646 | 
             
                    _emberMetalObserver._removeBeforeObserver(item, keyName, proxy, 'contentKeyWillChange');
         | 
| 37502 37647 | 
             
                    _emberMetalObserver.removeObserver(item, keyName, proxy, 'contentKeyDidChange');
         | 
| @@ -39652,7 +39797,7 @@ enifed('ember-template-compiler/system/compile_options', ['exports', 'ember-meta | |
| 39652 39797 | 
             
                options.buildMeta = function buildMeta(program) {
         | 
| 39653 39798 | 
             
                  return {
         | 
| 39654 39799 | 
             
                    fragmentReason: fragmentReason(program),
         | 
| 39655 | 
            -
                    revision: 'Ember@2.4.0-beta. | 
| 39800 | 
            +
                    revision: 'Ember@2.4.0-beta.3',
         | 
| 39656 39801 | 
             
                    loc: program.loc,
         | 
| 39657 39802 | 
             
                    moduleName: options.moduleName
         | 
| 39658 39803 | 
             
                  };
         | 
| @@ -44752,7 +44897,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb | |
| 44752 44897 | 
             
                _contentDidChange: _emberMetalMixin.observer('content', function () {
         | 
| 44753 44898 | 
             
                  var prevContent = this._prevContent;
         | 
| 44754 44899 | 
             
                  if (prevContent) {
         | 
| 44755 | 
            -
                     | 
| 44900 | 
            +
                    _emberRuntimeMixinsArray.removeArrayObserver(prevContent, this);
         | 
| 44756 44901 | 
             
                  }
         | 
| 44757 44902 | 
             
                  var len = prevContent ? _emberMetalProperty_get.get(prevContent, 'length') : 0;
         | 
| 44758 44903 | 
             
                  this.arrayWillChange(prevContent, 0, len);
         | 
| @@ -44762,7 +44907,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb | |
| 44762 44907 | 
             
                  if (content) {
         | 
| 44763 44908 | 
             
                    this._prevContent = content;
         | 
| 44764 44909 | 
             
                    this._assertArrayLike(content);
         | 
| 44765 | 
            -
                     | 
| 44910 | 
            +
                    _emberRuntimeMixinsArray.addArrayObserver(content, this);
         | 
| 44766 44911 | 
             
                  }
         | 
| 44767 44912 |  | 
| 44768 44913 | 
             
                  len = content ? _emberMetalProperty_get.get(content, 'length') : 0;
         | 
| @@ -44790,7 +44935,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb | |
| 44790 44935 |  | 
| 44791 44936 | 
             
                  var content = _emberMetalProperty_get.get(this, 'content');
         | 
| 44792 44937 | 
             
                  if (content) {
         | 
| 44793 | 
            -
                     | 
| 44938 | 
            +
                    _emberRuntimeMixinsArray.removeArrayObserver(content, this);
         | 
| 44794 44939 | 
             
                  }
         | 
| 44795 44940 |  | 
| 44796 44941 | 
             
                  if (this._createdEmptyView) {
         | 
| @@ -44840,7 +44985,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb | |
| 44840 44985 | 
             
                    itemViewClass = _emberViewsStreamsUtils.readViewFactory(itemViewClass, _containerOwner.getOwner(this));
         | 
| 44841 44986 |  | 
| 44842 44987 | 
             
                    for (idx = start; idx < start + added; idx++) {
         | 
| 44843 | 
            -
                      item =  | 
| 44988 | 
            +
                      item = _emberRuntimeMixinsArray.objectAt(content, idx);
         | 
| 44844 44989 | 
             
                      itemViewProps._context = this.keyword ? this.get('context') : item;
         | 
| 44845 44990 | 
             
                      itemViewProps.content = item;
         | 
| 44846 44991 | 
             
                      itemViewProps.contentIndex = idx;
         | 
| @@ -44992,7 +45137,7 @@ enifed('ember-views/views/collection_view', ['exports', 'ember-metal/core', 'emb | |
| 44992 45137 | 
             
            enifed('ember-views/views/container_view', ['exports', 'ember-metal/core', 'ember-metal/debug', 'ember-runtime/mixins/mutable_array', 'ember-runtime/system/native_array', 'ember-views/views/view', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-metal/mixin', 'ember-metal/events', 'ember-htmlbars/templates/container-view'], function (exports, _emberMetalCore, _emberMetalDebug, _emberRuntimeMixinsMutable_array, _emberRuntimeSystemNative_array, _emberViewsViewsView, _emberMetalProperty_get, _emberMetalProperty_set, _emberMetalMixin, _emberMetalEvents, _emberHtmlbarsTemplatesContainerView) {
         | 
| 44993 45138 | 
             
              'use strict';
         | 
| 44994 45139 |  | 
| 44995 | 
            -
              _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.4.0-beta. | 
| 45140 | 
            +
              _emberHtmlbarsTemplatesContainerView.default.meta.revision = 'Ember@2.4.0-beta.3';
         | 
| 44996 45141 |  | 
| 44997 45142 | 
             
              /**
         | 
| 44998 45143 | 
             
              @module ember
         | 
| @@ -45487,7 +45632,7 @@ enifed('ember-views/views/legacy_each_view', ['exports', 'ember-htmlbars/templat | |
| 45487 45632 | 
             
                })
         | 
| 45488 45633 | 
             
              });
         | 
| 45489 45634 | 
             
            });
         | 
| 45490 | 
            -
            enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-runtime/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option', 'ember-htmlbars/templates/select-optgroup'], function (exports, _emberMetalReplace, _emberMetalProperty_get, _emberMetalProperty_set, _emberViewsViewsView, _emberRuntimeUtils, _emberMetalIs_none, _emberMetalComputed, _emberRuntimeSystemNative_array, _emberMetalMixin, _emberMetalProperties, _emberHtmlbarsTemplatesSelect, _emberHtmlbarsTemplatesSelectOption, _emberHtmlbarsTemplatesSelectOptgroup) {
         | 
| 45635 | 
            +
            enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-metal/property_get', 'ember-metal/property_set', 'ember-views/views/view', 'ember-runtime/utils', 'ember-metal/is_none', 'ember-metal/computed', 'ember-runtime/system/native_array', 'ember-metal/mixin', 'ember-metal/properties', 'ember-htmlbars/templates/select', 'ember-htmlbars/templates/select-option', 'ember-htmlbars/templates/select-optgroup', 'ember-runtime/mixins/array'], function (exports, _emberMetalReplace, _emberMetalProperty_get, _emberMetalProperty_set, _emberViewsViewsView, _emberRuntimeUtils, _emberMetalIs_none, _emberMetalComputed, _emberRuntimeSystemNative_array, _emberMetalMixin, _emberMetalProperties, _emberHtmlbarsTemplatesSelect, _emberHtmlbarsTemplatesSelectOption, _emberHtmlbarsTemplatesSelectOptgroup, _emberRuntimeMixinsArray) {
         | 
| 45491 45636 | 
             
              /**
         | 
| 45492 45637 | 
             
              @module ember
         | 
| 45493 45638 | 
             
              @submodule ember-views
         | 
| @@ -46023,7 +46168,7 @@ enifed('ember-views/views/select', ['exports', 'ember-metal/replace', 'ember-met | |
| 46023 46168 | 
             
                  if (prompt) {
         | 
| 46024 46169 | 
             
                    selectedIndex -= 1;
         | 
| 46025 46170 | 
             
                  }
         | 
| 46026 | 
            -
                  _emberMetalProperty_set.set(this, 'selection',  | 
| 46171 | 
            +
                  _emberMetalProperty_set.set(this, 'selection', _emberRuntimeMixinsArray.objectAt(content, selectedIndex));
         | 
| 46027 46172 | 
             
                },
         | 
| 46028 46173 |  | 
| 46029 46174 | 
             
                _selectedIndex: function (value) {
         |