ember-data-source 1.0.0.beta.10 → 1.0.0.beta.11

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
- (function(e){var r,t,i,a;(function(){var e={},n={},s={};var o=false;r=function(r,t,i){e[r]={deps:t,callback:i}};function u(e,r,t){var a=e.length;var n=new Array(a);var s;var o;for(var u=0,l=a;u<l;u++){s=e[u];if(s==="exports"){o=n[u]=t}else{n[u]=i(d(s,r))}}return{deps:n,exports:o}}a=i=t=function(r){if(s[r]!==o&&n.hasOwnProperty(r)){return n[r]}if(!e[r]){throw new Error("Could not find module "+r)}var t=e[r];var i;var a;var d=false;n[r]={};try{i=u(t.deps,r,n[r]);a=t.callback.apply(this,i.deps);d=true}finally{if(!d){s[r]=o}}return i.exports?n[r]:n[r]=a};function d(e,r){if(e.charAt(0)!=="."){return e}var t=e.split("/");var i=r.split("/");var a;if(i.length===1){a=i}else{a=i.slice(0,-1)}for(var n=0,s=t.length;n<s;n++){var o=t[n];if(o===".."){a.pop()}else if(o==="."){continue}else{a.push(o)}}return a.join("/")}a.entries=a._eak_seen=e;a.clear=function(){a.entries=a._eak_seen=e={};n=s={}}})();r("activemodel-adapter",["activemodel-adapter/system","exports"],function(e,r){"use strict";var t=e.ActiveModelAdapter;var i=e.ActiveModelSerializer;r.ActiveModelAdapter=t;r.ActiveModelSerializer=i});r("activemodel-adapter/setup-container",["ember-data/system/container_proxy","activemodel-adapter/system/active_model_serializer","activemodel-adapter/system/active_model_adapter","exports"],function(e,r,t,i){"use strict";var a=e["default"];var n=r["default"];var s=t["default"];i["default"]=function o(e,r){var t=new a(e);t.registerDeprecations([{deprecated:"serializer:_ams",valid:"serializer:-active-model"},{deprecated:"adapter:_ams",valid:"adapter:-active-model"}]);e.register("serializer:-active-model",n);e.register("adapter:-active-model",s)}});r("activemodel-adapter/system",["activemodel-adapter/system/active_model_adapter","activemodel-adapter/system/active_model_serializer","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r["default"];t.ActiveModelAdapter=i;t.ActiveModelSerializer=a});r("activemodel-adapter/system/active_model_adapter",["ember-data/adapters","ember-data/system/adapter","ember-inflector","exports"],function(e,r,t,i){"use strict";var a=e.RESTAdapter;var n=r.InvalidError;var s=t.pluralize;var o=Ember.EnumerableUtils.forEach;var u=Ember.String.decamelize,d=Ember.String.underscore;var l=a.extend({defaultSerializer:"-active-model",pathForType:function(e){var r=u(e);var t=d(r);return s(t)},ajaxError:function(e){var r=this._super(e);if(e&&e.status===422){var t=Ember.$.parseJSON(e.responseText),i={};if(t.errors!==undefined){var a=t.errors;o(Ember.keys(a),function(e){i[Ember.String.camelize(e)]=a[e]})}return new n(i)}else{return r}}});i["default"]=l});r("activemodel-adapter/system/active_model_serializer",["ember-inflector","ember-data/serializers/rest_serializer","exports"],function(e,r,t){"use strict";var i=e.singularize;var a=r["default"];var n=Ember.get,s=Ember.EnumerableUtils.forEach,o=Ember.String.camelize,u=Ember.String.capitalize,d=Ember.String.decamelize,l=Ember.String.underscore;var c=a.extend({keyForAttribute:function(e){return d(e)},keyForRelationship:function(e,r){var t=d(e);if(r==="belongsTo"){return t+"_id"}else if(r==="hasMany"){return i(t)+"_ids"}else{return t}},serializeHasMany:Ember.K,serializeIntoHash:function(e,r,t,i){var a=l(d(r.typeKey));e[a]=this.serialize(t,i)},serializePolymorphicType:function(e,r,t){var i=t.key;var a=n(e,i);var s=l(i+"_type");if(Ember.isNone(a)){r[s]=null}else{r[s]=u(o(a.constructor.typeKey))}},normalize:function(e,r,t){this.normalizeLinks(r);return this._super(e,r,t)},normalizeLinks:function(e){if(e.links){var r=e.links;for(var t in r){var i=o(t);if(i!==t){r[i]=r[t];delete r[t]}}}},normalizeRelationships:function(e,r){if(this.keyForRelationship){e.eachRelationship(function(e,t){var i,a;if(t.options.polymorphic){i=this.keyForAttribute(e);a=r[i];if(a&&a.type){a.type=this.typeForRoot(a.type)}else if(a&&t.kind==="hasMany"){var n=this;s(a,function(e){e.type=n.typeForRoot(e.type)})}}else{i=this.keyForRelationship(e,t.kind);if(!r.hasOwnProperty(i)){return}a=r[i]}r[e]=a;if(e!==i){delete r[i]}},this)}}});t["default"]=c});r("ember-data",["ember-data/core","ember-data/ext/date","ember-data/system/promise_proxies","ember-data/system/store","ember-data/system/model","ember-data/system/adapter","ember-data/system/debug","ember-data/system/record_arrays","ember-data/system/record_array_manager","ember-data/adapters","ember-data/serializers/json_serializer","ember-data/serializers/rest_serializer","ember-inflector","ember-data/serializers/embedded_records_mixin","activemodel-adapter","ember-data/transforms","ember-data/system/relationships","ember-data/ember-initializer","ember-data/setup-container","ember-data/system/container_proxy","ember-data/system/relationships/relationship","exports"],function(e,r,t,i,a,n,s,o,u,d,l,c,f,h,p,m,y,v,b,g,E,R){"use strict";Ember.RSVP.Promise.cast=Ember.RSVP.Promise.cast||Ember.RSVP.resolve;var A=e["default"];var _=t.PromiseArray;var F=t.PromiseObject;var z=i.Store;var x=a.Model;var T=a.Errors;var S=a.RootState;var k=a.attr;var M=n.InvalidError;var D=n.Adapter;var P=s["default"];var O=o.RecordArray;var C=o.FilteredRecordArray;var w=o.AdapterPopulatedRecordArray;var $=o.ManyArray;var I=u["default"];var L=d.RESTAdapter;var j=d.FixtureAdapter;var K=l["default"];var B=c["default"];var N=h["default"];var U=p.ActiveModelAdapter;var V=p.ActiveModelSerializer;var H=m.Transform;var W=m.DateTransform;var q=m.NumberTransform;var Q=m.StringTransform;var X=m.BooleanTransform;var J=y.hasMany;var G=y.belongsTo;var Y=b["default"];var Z=g["default"];var er=E.Relationship;A.Store=z;A.PromiseArray=_;A.PromiseObject=F;A.Model=x;A.RootState=S;A.attr=k;A.Errors=T;A.Adapter=D;A.InvalidError=M;A.DebugAdapter=P;A.RecordArray=O;A.FilteredRecordArray=C;A.AdapterPopulatedRecordArray=w;A.ManyArray=$;A.RecordArrayManager=I;A.RESTAdapter=L;A.FixtureAdapter=j;A.RESTSerializer=B;A.JSONSerializer=K;A.Transform=H;A.DateTransform=W;A.StringTransform=Q;A.NumberTransform=q;A.BooleanTransform=X;A.ActiveModelAdapter=U;A.ActiveModelSerializer=V;A.EmbeddedRecordsMixin=N;A.belongsTo=G;A.hasMany=J;A.Relationship=er;A.ContainerProxy=Z;A._setupContainer=Y;Ember.lookup.DS=A;R["default"]=A});r("ember-data/adapters",["ember-data/adapters/fixture_adapter","ember-data/adapters/rest_adapter","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r["default"];t.RESTAdapter=a;t.FixtureAdapter=i});r("ember-data/adapters/fixture_adapter",["ember-data/system/adapter","exports"],function(e,r){"use strict";var t=Ember.get;var i=Ember.String.fmt;var a=Ember.EnumerableUtils.indexOf;var n=0;var s=e["default"];r["default"]=s.extend({serializer:null,simulateRemoteResponse:true,latency:50,fixturesForType:function(e){if(e.FIXTURES){var r=Ember.A(e.FIXTURES);return r.map(function(e){var r=typeof e.id;if(r!=="number"&&r!=="string"){throw new Error(i("the id property must be defined as a number or string for fixture %@",[e]))}e.id=e.id+"";return e})}return null},queryFixtures:function(e,r,t){},updateFixtures:function(e,r){if(!e.FIXTURES){e.FIXTURES=[]}var t=e.FIXTURES;this.deleteLoadedFixture(e,r);t.push(r)},mockJSON:function(e,r,t){return e.serializerFor(r).serialize(t,{includeId:true})},generateIdForRecord:function(e){return"fixture-"+n++},find:function(e,r,t){var i=this.fixturesForType(r);var a;if(i){a=Ember.A(i).findBy("id",t)}if(a){return this.simulateRemoteCall(function(){return a},this)}},findMany:function(e,r,t){var i=this.fixturesForType(r);if(i){i=i.filter(function(e){return a(t,e.id)!==-1})}if(i){return this.simulateRemoteCall(function(){return i},this)}},findAll:function(e,r){var t=this.fixturesForType(r);return this.simulateRemoteCall(function(){return t},this)},findQuery:function(e,r,t,i){var a=this.fixturesForType(r);a=this.queryFixtures(a,t,r);if(a){return this.simulateRemoteCall(function(){return a},this)}},createRecord:function(e,r,t){var i=this.mockJSON(e,r,t);this.updateFixtures(r,i);return this.simulateRemoteCall(function(){return i},this)},updateRecord:function(e,r,t){var i=this.mockJSON(e,r,t);this.updateFixtures(r,i);return this.simulateRemoteCall(function(){return i},this)},deleteRecord:function(e,r,t){this.deleteLoadedFixture(r,t);return this.simulateRemoteCall(function(){return null})},deleteLoadedFixture:function(e,r){var t=this.findExistingFixture(e,r);if(t){var i=a(e.FIXTURES,t);e.FIXTURES.splice(i,1);return true}},findExistingFixture:function(e,r){var i=this.fixturesForType(e);var a=t(r,"id");return this.findFixtureById(i,a)},findFixtureById:function(e,r){return Ember.A(e).find(function(e){if(""+t(e,"id")===""+r){return true}else{return false}})},simulateRemoteCall:function(e,r){var i=this;return new Ember.RSVP.Promise(function(a){var n=Ember.copy(e.call(r),true);if(t(i,"simulateRemoteResponse")){Ember.run.later(function(){a(n)},t(i,"latency"))}else{Ember.run.schedule("actions",null,function(){a(n)})}},"DS: FixtureAdapter#simulateRemoteCall")}})});r("ember-data/adapters/rest_adapter",["ember-data/system/adapter","exports"],function(e,r){"use strict";var t=e.Adapter;var i=e.InvalidError;var a=Ember.get;var n=Ember.ArrayPolyfills.forEach;r["default"]=t.extend({defaultSerializer:"-rest",coalesceFindRequests:false,find:function(e,r,t,i){return this.ajax(this.buildURL(r.typeKey,t,i),"GET")},findAll:function(e,r,t){var i;if(t){i={since:t}}return this.ajax(this.buildURL(r.typeKey),"GET",{data:i})},findQuery:function(e,r,t){return this.ajax(this.buildURL(r.typeKey),"GET",{data:t})},findMany:function(e,r,t,i){return this.ajax(this.buildURL(r.typeKey,t,i),"GET",{data:{ids:t}})},findHasMany:function(e,r,t,i){var n=a(this,"host");var s=a(r,"id");var o=r.constructor.typeKey;if(n&&t.charAt(0)==="/"&&t.charAt(1)!=="/"){t=n+t}return this.ajax(this.urlPrefix(t,this.buildURL(o,s)),"GET")},findBelongsTo:function(e,r,t,i){var n=a(r,"id");var s=r.constructor.typeKey;return this.ajax(this.urlPrefix(t,this.buildURL(s,n)),"GET")},createRecord:function(e,r,t){var i={};var a=e.serializerFor(r.typeKey);a.serializeIntoHash(i,r,t,{includeId:true});return this.ajax(this.buildURL(r.typeKey,null,t),"POST",{data:i})},updateRecord:function(e,r,t){var i={};var n=e.serializerFor(r.typeKey);n.serializeIntoHash(i,r,t);var s=a(t,"id");return this.ajax(this.buildURL(r.typeKey,s,t),"PUT",{data:i})},deleteRecord:function(e,r,t){var i=a(t,"id");return this.ajax(this.buildURL(r.typeKey,i,t),"DELETE")},buildURL:function(e,r,t){var i=[],n=a(this,"host"),s=this.urlPrefix();if(e){i.push(this.pathForType(e))}if(r&&!Ember.isArray(r)){i.push(r)}if(s){i.unshift(s)}i=i.join("/");if(!n&&i){i="/"+i}return i},urlPrefix:function(e,r){var t=a(this,"host");var i=a(this,"namespace");var n=[];if(e){if(e.charAt(0)==="/"){if(t){e=e.slice(1);n.push(t)}}else if(!/^http(s)?:\/\//.test(e)){n.push(r)}}else{if(t){n.push(t)}if(i){n.push(i)}}if(e){n.push(e)}return n.join("/")},_stripIDFromURL:function(e,r){var t=e.modelFor(r);var i=this.buildURL(t.typeKey,r.get("id"),r);var a=i.split("/");var n=a[a.length-1];var o=r.get("id");if(n===o){a[a.length-1]=""}else if(s(n,"?id="+o)){a[a.length-1]=n.substring(0,n.length-o.length-1)}return a.join("/")},groupRecordsForFindMany:function(e,r){var t=Ember.MapWithDefault.create({defaultValue:function(){return[]}});var i=this;n.call(r,function(r){var a=i._stripIDFromURL(e,r);t.get(a).push(r)});function a(r,t){var a=i._stripIDFromURL(e,r[0]);var s=0;var o=[[]];n.call(r,function(e){var r="&ids[]=".length+e.get("id.length");if(a.length+s+r>=t){s=0;o.push([])}s+=r;var i=o.length-1;o[i].push(e)});return o}var s=[];t.forEach(function(e,r){var t=2048;var i=a(r,t);n.call(i,function(e){s.push(e)})});return s},pathForType:function(e){var r=Ember.String.camelize(e);return Ember.String.pluralize(r)},ajaxError:function(e,r){if(e&&typeof e==="object"){e.then=null}return e},ajaxSuccess:function(e,r){return r},ajax:function(e,r,t){var a=this;return new Ember.RSVP.Promise(function(n,s){var o=a.ajaxOptions(e,r,t);o.success=function(e,r,t){e=a.ajaxSuccess(t,e);if(e instanceof i){Ember.run(null,s,e)}else{Ember.run(null,n,e)}};o.error=function(e,r,t){Ember.run(null,s,a.ajaxError(e,e.responseText))};Ember.$.ajax(o)},"DS: RESTAdapter#ajax "+r+" to "+e)},ajaxOptions:function(e,r,t){var i=t||{};i.url=e;i.type=r;i.dataType="json";i.context=this;if(i.data&&r!=="GET"){i.contentType="application/json; charset=utf-8";i.data=JSON.stringify(i.data)}var s=a(this,"headers");if(s!==undefined){i.beforeSend=function(e){n.call(Ember.keys(s),function(r){e.setRequestHeader(r,s[r])})}}return i}});function s(e,r){if(typeof String.prototype.endsWith!=="function"){return e.indexOf(r,e.length-r.length)!==-1}else{return e.endsWith(r)}}});r("ember-data/core",["exports"],function(e){"use strict";var r;if("undefined"===typeof r){r=Ember.Namespace.create({VERSION:"1.0.0-beta.10"});if(Ember.libraries){Ember.libraries.registerCoreLibrary("Ember Data",r.VERSION)}}e["default"]=r});r("ember-data/ember-initializer",["ember-data/setup-container"],function(e){"use strict";var r=e["default"];var t=Ember.K;Ember.onLoad("Ember.Application",function(e){e.initializer({name:"ember-data",initialize:r});e.initializer({name:"store",after:"ember-data",initialize:t});e.initializer({name:"activeModelAdapter",before:"store",initialize:t});e.initializer({name:"transforms",before:"store",initialize:t});e.initializer({name:"data-adapter",before:"store",initialize:t});e.initializer({name:"injectStore",before:"store",initialize:t})})});r("ember-data/ext/date",[],function(){"use strict";Ember.Date=Ember.Date||{};var e=Date.parse,r=[1,4,5,6,7,10,11];Ember.Date.parse=function(t){var i,a,n=0;if(a=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(t)){for(var s=0,o;o=r[s];++s){a[o]=+a[o]||0}a[2]=(+a[2]||1)-1;a[3]=+a[3]||1;if(a[8]!=="Z"&&a[9]!==undefined){n=a[10]*60+a[11];if(a[9]==="+"){n=0-n}}i=Date.UTC(a[1],a[2],a[3],a[4],a[5]+n,a[6],a[7])}else{i=e?e(t):NaN}return i};if(Ember.EXTEND_PROTOTYPES===true||Ember.EXTEND_PROTOTYPES.Date){Date.parse=Ember.Date.parse}});r("ember-data/initializers/data_adapter",["ember-data/system/debug/debug_adapter","exports"],function(e,r){"use strict";var t=e["default"];r["default"]=function i(e){e.register("data-adapter:main",t)}});r("ember-data/initializers/store",["ember-data/serializers","ember-data/adapters","ember-data/system/container_proxy","ember-data/system/store","exports"],function(e,r,t,i,a){"use strict";var n=e.JSONSerializer;var s=e.RESTSerializer;var o=r.RESTAdapter;var u=t["default"];var d=i["default"];a["default"]=function l(e,r){e.register("store:main",e.lookupFactory("store:application")||r&&r.Store||d);var t=new u(e);t.registerDeprecations([{deprecated:"serializer:_default",valid:"serializer:-default"},{deprecated:"serializer:_rest",valid:"serializer:-rest"},{deprecated:"adapter:_rest",valid:"adapter:-rest"}]);e.register("serializer:-default",n);e.register("serializer:-rest",s);e.register("adapter:-rest",o);e.lookup("store:main")}});r("ember-data/initializers/store_injections",["exports"],function(e){"use strict";e["default"]=function r(e){e.injection("controller","store","store:main");e.injection("route","store","store:main");e.injection("serializer","store","store:main");e.injection("data-adapter","store","store:main")}});r("ember-data/initializers/transforms",["ember-data/transforms","exports"],function(e,r){"use strict";var t=e.BooleanTransform;var i=e.DateTransform;var a=e.StringTransform;var n=e.NumberTransform;r["default"]=function s(e){e.register("transform:boolean",t);e.register("transform:date",i);e.register("transform:number",n);e.register("transform:string",a)}});r("ember-data/serializers",["ember-data/serializers/json_serializer","ember-data/serializers/rest_serializer","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r["default"];t.JSONSerializer=i;t.RESTSerializer=a});r("ember-data/serializers/embedded_records_mixin",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.EnumerableUtils.forEach;var i=Ember.String.camelize;var a=Ember.Mixin.create({normalize:function(e,r,t){var i=this._super(e,r,t);return n(this,this.store,e,i)},keyForRelationship:function(e,r){if(this.hasDeserializeRecordsOption(e)){return this.keyForAttribute(e)}else{return this._super(e,r)||e}},serializeBelongsTo:function(e,t,i){var a=i.key;if(this.noSerializeOptionSpecified(a)){this._super(e,t,i);return}var n=this.hasSerializeIdsOption(a);var s=this.hasSerializeRecordsOption(a);var o=e.get(a);var u;if(n){u=this.keyForRelationship(a,i.kind);if(!o){t[u]=null}else{t[u]=r(o,"id")}}else if(s){u=this.keyForAttribute(a);if(!o){t[u]=null}else{t[u]=o.serialize({includeId:true});this.removeEmbeddedForeignKey(e,o,i,t[u])}}},serializeHasMany:function(e,t,i){var a=i.key;if(this.noSerializeOptionSpecified(a)){this._super(e,t,i);return}var n=this.hasSerializeIdsOption(a);var s=this.hasSerializeRecordsOption(a);var o;if(n){o=this.keyForRelationship(a,i.kind);t[o]=r(e,a).mapBy("id")}else if(s){o=this.keyForAttribute(a);t[o]=r(e,a).map(function(r){var t=r.serialize({includeId:true});this.removeEmbeddedForeignKey(e,r,i,t);return t},this)}},removeEmbeddedForeignKey:function(e,r,t,i){if(t.kind==="hasMany"){return}else if(t.kind==="belongsTo"){var a=e.constructor.inverseFor(t.key);if(a){var n=a.name;var s=this.store.serializerFor(r.constructor);var o=s.keyForRelationship(n,a.kind);if(o){delete i[o]}}}},hasEmbeddedAlwaysOption:function(e){var r=this.attrsOption(e);return r&&r.embedded==="always"},hasSerializeRecordsOption:function(e){var r=this.hasEmbeddedAlwaysOption(e);var t=this.attrsOption(e);return r||t&&t.serialize==="records"},hasSerializeIdsOption:function(e){var r=this.attrsOption(e);return r&&(r.serialize==="ids"||r.serialize==="id")},noSerializeOptionSpecified:function(e){var r=this.attrsOption(e);return!(r&&(r.serialize||r.embedded))},hasDeserializeRecordsOption:function(e){var r=this.hasEmbeddedAlwaysOption(e);var t=this.attrsOption(e);return r||t&&t.deserialize==="records"},attrsOption:function(e){var r=this.get("attrs");return r&&(r[i(e)]||r[e])}});function n(e,r,t,i){t.eachRelationship(function(t,a){if(e.hasDeserializeRecordsOption(t)){var n=r.modelFor(a.type.typeKey);if(a.kind==="hasMany"){if(a.options.polymorphic){o(r,t,i)}else{s(r,t,n,i)}}if(a.kind==="belongsTo"){u(r,t,n,i)}}});return i}function s(e,r,i,a){if(!a[r]){return a}var n=[];var s=e.serializerFor(i.typeKey);t(a[r],function(r){var t=s.normalize(i,r,null);e.push(i,t);n.push(t.id)});a[r]=n;return a}function o(e,i,a){if(!a[i]){return a}var n=[];t(a[i],function(t){var i=t.type;var a=e.serializerFor(i);var s=e.modelFor(i);var o=r(a,"primaryKey");var u=a.normalize(s,t,null);e.push(s,u);n.push({id:u[o],type:i})});a[i]=n;return a}function u(e,r,t,i){if(!i[r]){return i}var a=e.serializerFor(t.typeKey);var n=a.normalize(t,i[r],null);e.push(t,n);i[r]=n.id;return i}e["default"]=a});r("ember-data/serializers/json_serializer",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.isNone;var i=Ember.ArrayPolyfills.map;var a=Ember.merge;e["default"]=Ember.Object.extend({primaryKey:"id",applyTransforms:function(e,r){e.eachTransformedAttribute(function t(e,i){if(!r.hasOwnProperty(e)){return}var a=this.transformFor(i);r[e]=a.deserialize(r[e])},this);return r},normalize:function(e,r){if(!r){return r}this.normalizeId(r);this.normalizeAttributes(e,r);this.normalizeRelationships(e,r);this.normalizeUsingDeclaredMapping(e,r);this.applyTransforms(e,r);return r},normalizePayload:function(e){return e},normalizeAttributes:function(e,r){var t;if(this.keyForAttribute){e.eachAttribute(function(e){t=this.keyForAttribute(e);if(e===t){return}if(!r.hasOwnProperty(t)){return}r[e]=r[t];delete r[t]},this)}},normalizeRelationships:function(e,r){var t;if(this.keyForRelationship){e.eachRelationship(function(e,i){t=this.keyForRelationship(e,i.kind);if(e===t){return}if(!r.hasOwnProperty(t)){return}r[e]=r[t];delete r[t]},this)}},normalizeUsingDeclaredMapping:function(e,t){var i=r(this,"attrs"),a,n;if(i){for(n in i){a=this._getMappedKey(n);if(!t.hasOwnProperty(a)){continue}if(a!==n){t[n]=t[a];delete t[a]}}}},normalizeId:function(e){var t=r(this,"primaryKey");if(t==="id"){return}e.id=e[t];delete e[t]},_getMappedKey:function(e){var t=r(this,"attrs");var i;if(t&&t[e]){i=t[e];if(i.key){i=i.key}if(typeof i==="string"){e=i}}return e},_canSerialize:function(e){var t=r(this,"attrs");return!t||!t[e]||t[e].serialize!==false},serialize:function(e,t){var i={};if(t&&t.includeId){var a=r(e,"id");if(a){i[r(this,"primaryKey")]=a}}e.eachAttribute(function(r,t){this.serializeAttribute(e,i,r,t)},this);e.eachRelationship(function(r,t){if(t.kind==="belongsTo"){this.serializeBelongsTo(e,i,t)}else if(t.kind==="hasMany"){this.serializeHasMany(e,i,t)}},this);return i},serializeIntoHash:function(e,r,t,i){a(e,this.serialize(t,i))},serializeAttribute:function(e,t,i,a){var n=a.type;if(this._canSerialize(i)){var s=r(e,i);if(n){var o=this.transformFor(n);s=o.serialize(s)}var u=this._getMappedKey(i);if(u===i&&this.keyForAttribute){u=this.keyForAttribute(i)}t[u]=s}},serializeBelongsTo:function(e,i,a){var n=a.key;if(this._canSerialize(n)){var s=r(e,n);var o=this._getMappedKey(n);if(o===n&&this.keyForRelationship){o=this.keyForRelationship(n,"belongsTo")}if(t(s)){i[o]=s}else{i[o]=r(s,"id")}if(a.options.polymorphic){this.serializePolymorphicType(e,i,a)}}},serializeHasMany:function(e,t,i){var a=i.key;if(this._canSerialize(a)){var n;n=this._getMappedKey(a);if(n===a&&this.keyForRelationship){n=this.keyForRelationship(a,"hasMany")}var s=e.constructor.determineRelationshipType(i);if(s==="manyToNone"||s==="manyToMany"){t[n]=r(e,a).mapBy("id")}}},serializePolymorphicType:Ember.K,extract:function(e,r,t,i,a){this.extractMeta(e,r,t);var n="extract"+a.charAt(0).toUpperCase()+a.substr(1);return this[n](e,r,t,i,a)},extractFindAll:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractFindQuery:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractFindMany:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractFindHasMany:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractCreateRecord:function(e,r,t,i,a){return this.extractSave(e,r,t,i,a)},extractUpdateRecord:function(e,r,t,i,a){return this.extractSave(e,r,t,i,a)},extractDeleteRecord:function(e,r,t,i,a){return this.extractSave(e,r,t,i,a)},extractFind:function(e,r,t,i,a){return this.extractSingle(e,r,t,i,a)},extractFindBelongsTo:function(e,r,t,i,a){return this.extractSingle(e,r,t,i,a)},extractSave:function(e,r,t,i,a){return this.extractSingle(e,r,t,i,a)},extractSingle:function(e,r,t,i,a){t=this.normalizePayload(t);return this.normalize(r,t)},extractArray:function(e,r,t,a,n){var s=this.normalizePayload(t);var o=this;return i.call(s,function(e){return o.normalize(r,e)})},extractMeta:function(e,r,t){if(t&&t.meta){e.metaForType(r,t.meta);delete t.meta}},keyForAttribute:function(e){return e},keyForRelationship:function(e,r){return e},transformFor:function(e,r){var t=this.container.lookup("transform:"+e);return t}})});r("ember-data/serializers/rest_serializer",["ember-data/serializers/json_serializer","ember-inflector/system/string","exports"],function(e,r,t){"use strict";var i=e["default"];var a=Ember.get;var n=Ember.ArrayPolyfills.forEach;var s=Ember.ArrayPolyfills.map;var o=Ember.String.camelize;var u=r.singularize;function d(e){return e==null?null:e+""}t["default"]=i.extend({normalize:function(e,r,t){this.normalizeId(r);this.normalizeAttributes(e,r);this.normalizeRelationships(e,r);this.normalizeUsingDeclaredMapping(e,r);if(this.normalizeHash&&this.normalizeHash[t]){this.normalizeHash[t](r)}this.applyTransforms(e,r);return r},extractSingle:function(e,r,t,i){var a=this.normalizePayload(t);var s=r.typeKey;var o;for(var u in a){var l=this.typeForRoot(u);var c=e.modelFor(l);var f=c.typeKey===s;var h=a[u];if(f&&Ember.typeOf(h)!=="array"){o=this.normalize(r,h,u);continue}n.call(h,function(r){var t=this.typeForRoot(u);var a=e.modelFor(t);var n=e.serializerFor(a);r=n.normalize(a,r,u);var s=f&&!i&&!o;var l=f&&d(r.id)===i;if(s||l){o=r}else{e.push(t,r)}},this)}return o},extractArray:function(e,r,t){var i=this.normalizePayload(t);var a=r.typeKey;var n;for(var o in i){var u=o;var d=false;if(o.charAt(0)==="_"){d=true;u=o.substr(1)}var l=this.typeForRoot(u);var c=e.modelFor(l);var f=e.serializerFor(c);var h=!d&&c.typeKey===a;var p=s.call(i[o],function(e){return f.normalize(c,e,o)},this);if(h){n=p}else{e.pushMany(l,p)}}return n},pushPayload:function(e,r){var t=this.normalizePayload(r);for(var i in t){var a=this.typeForRoot(i);var n=e.modelFor(a);var o=e.serializerFor(n);var u=s.call(Ember.makeArray(t[i]),function(e){return o.normalize(n,e,i)},this);e.pushMany(a,u)}},typeForRoot:function(e){return o(u(e))},serialize:function(e,r){return this._super.apply(this,arguments)},serializeIntoHash:function(e,r,t,i){e[r.typeKey]=this.serialize(t,i)},serializePolymorphicType:function(e,r,t){var i=t.key;var n=a(e,i);i=this.keyForAttribute?this.keyForAttribute(i):i;if(Ember.isNone(n)){r[i+"Type"]=null}else{r[i+"Type"]=Ember.String.camelize(n.constructor.typeKey)}}})});r("ember-data/setup-container",["ember-data/initializers/store","ember-data/initializers/transforms","ember-data/initializers/store_injections","ember-data/initializers/data_adapter","activemodel-adapter/setup-container","exports"],function(e,r,t,i,a,n){"use strict";var s=e["default"];var o=r["default"];var u=t["default"];var d=i["default"];var l=a["default"];n["default"]=function c(e,r){d(e,r);o(e,r);u(e,r);s(e,r);l(e,r)}});r("ember-data/system/adapter",["exports"],function(e){"use strict";var r=Ember.get;var t=["description","fileName","lineNumber","message","name","number","stack"];function i(e){var r=Error.prototype.constructor.call(this,"The backend rejected the commit because it was invalid: "+Ember.inspect(e));this.errors=e;for(var i=0,a=t.length;i<a;i++){this[t[i]]=r[t[i]]}}i.prototype=Ember.create(Error.prototype);var a=Ember.Object.extend({find:Ember.required(Function),findAll:null,findQuery:null,generateIdForRecord:null,serialize:function(e,t){return r(e,"store").serializerFor(e.constructor.typeKey).serialize(e,t)},createRecord:Ember.required(Function),updateRecord:Ember.required(Function),deleteRecord:Ember.required(Function),coalesceFindRequests:true,groupRecordsForFindMany:function(e,r){return[r]}});e.InvalidError=i;e.Adapter=a;e["default"]=a});r("ember-data/system/container_proxy",["exports"],function(e){"use strict";function r(e){this.container=e}r.prototype.aliasedFactory=function(e,r){var t=this;return{create:function(){if(r){r()}return t.container.lookup(e)}}};r.prototype.registerAlias=function(e,r,t){var i=this.aliasedFactory(r,t);return this.container.register(e,i)};r.prototype.registerDeprecation=function(e,r){var t=function(){};return this.registerAlias(e,r,t)};r.prototype.registerDeprecations=function(e){var r,t,i,a;for(r=e.length;r>0;r--){t=e[r-1];i=t["deprecated"];a=t["valid"];this.registerDeprecation(i,a)}};e["default"]=r});r("ember-data/system/debug",["ember-data/system/debug/debug_info","ember-data/system/debug/debug_adapter","exports"],function(e,r,t){"use strict";var i=r["default"];t["default"]=i});r("ember-data/system/debug/debug_adapter",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;var i=Ember.get;var a=Ember.String.capitalize;var n=Ember.String.underscore;r["default"]=Ember.DataAdapter.extend({getFilters:function(){return[{name:"isNew",desc:"New"},{name:"isModified",desc:"Modified"},{name:"isClean",desc:"Clean"}]},detect:function(e){return e!==t&&t.detect(e)},columnsForType:function(e){var r=[{name:"id",desc:"Id"}];var t=0;var s=this;i(e,"attributes").forEach(function(e,i){if(t++>s.attributeLimit){return false}var o=a(n(e).replace("_"," "));r.push({name:e,desc:o})});return r},getRecords:function(e){return this.get("store").all(e)},getRecordColumnValues:function(e){var r=this,t=0;var a={id:i(e,"id")};e.eachAttribute(function(n){if(t++>r.attributeLimit){return false}var s=i(e,n);a[n]=s});return a},getRecordKeywords:function(e){var r=[];var t=Ember.A(["id"]);e.eachAttribute(function(e){t.push(e)});t.forEach(function(t){r.push(i(e,t))});return r},getRecordFilterValues:function(e){return{isNew:e.get("isNew"),isModified:e.get("isDirty")&&!e.get("isNew"),isClean:!e.get("isDirty")}},getRecordColor:function(e){var r="black";if(e.get("isNew")){r="green"}else if(e.get("isDirty")){r="blue"}return r},observeRecord:function(e,r){var t=Ember.A(),i=this;var a=Ember.A(["id","isNew","isDirty"]);e.eachAttribute(function(e){a.push(e)});a.forEach(function(a){var n=function(){r(i.wrapRecord(e))};Ember.addObserver(e,a,n);t.push(function(){Ember.removeObserver(e,a,n)})});var n=function(){t.forEach(function(e){e()})};return n}})});r("ember-data/system/debug/debug_info",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;t.reopen({_debugInfo:function(){var e=["id"],r={belongsTo:[],hasMany:[]},t=[];this.eachAttribute(function(r,t){e.push(r)},this);this.eachRelationship(function(e,i){r[i.kind].push(e);t.push(e)});var i=[{name:"Attributes",properties:e,expand:true},{name:"Belongs To",properties:r.belongsTo,expand:true},{name:"Has Many",properties:r.hasMany,expand:true},{name:"Flags",properties:["isLoaded","isDirty","isSaving","isDeleted","isError","isNew","isValid"]}];return{propertyInfo:{includeOtherProperties:true,groups:i,expensiveProperties:t}}}});r["default"]=t});r("ember-data/system/model",["ember-data/system/model/model","ember-data/system/model/attributes","ember-data/system/model/states","ember-data/system/model/errors","exports"],function(e,r,t,i,a){"use strict";var n=e["default"];var s=r["default"];var o=t["default"];var u=i["default"];a.Model=n;a.RootState=o;a.attr=s;a.Errors=u});r("ember-data/system/model/attributes",["ember-data/system/model/model","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get;t.reopenClass({attributes:Ember.computed(function(){var e=Ember.Map.create();this.eachComputedProperty(function(r,t){if(t.isAttribute){t.name=r;e.set(r,t)}});return e}).readOnly(),transformedAttributes:Ember.computed(function(){var e=Ember.Map.create();this.eachAttribute(function(r,t){if(t.type){e.set(r,t.type)}});return e}).readOnly(),eachAttribute:function(e,r){i(this,"attributes").forEach(function(t,i){e.call(r,t,i)},r)},eachTransformedAttribute:function(e,r){i(this,"transformedAttributes").forEach(function(t,i){e.call(r,t,i)})}});t.reopen({eachAttribute:function(e,r){this.constructor.eachAttribute(e,r)}});function a(e,r,t){if(typeof r.defaultValue==="function"){return r.defaultValue.apply(null,arguments)}else{return r.defaultValue}}function n(e,r){return e._attributes.hasOwnProperty(r)||e._inFlightAttributes.hasOwnProperty(r)||e._data.hasOwnProperty(r)}function s(e,r){if(e._attributes.hasOwnProperty(r)){return e._attributes[r]}else if(e._inFlightAttributes.hasOwnProperty(r)){return e._inFlightAttributes[r]}else{return e._data[r]}}r["default"]=function o(e,r){r=r||{};var t={type:e,isAttribute:true,options:r};return Ember.computed("data",function(e,t){if(arguments.length>1){var i=s(this,e);if(t!==i){this._attributes[e]=t;this.send("didSetProperty",{name:e,oldValue:i,originalValue:this._data[e],value:t})}return t}else if(n(this,e)){return s(this,e)}else{return a(this,r,e)}}).meta(t)}});r("ember-data/system/model/errors",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.isEmpty;var i=Ember.EnumerableUtils.map;e["default"]=Ember.Object.extend(Ember.Enumerable,Ember.Evented,{registerHandlers:function(e,r,t){this.on("becameInvalid",e,r);this.on("becameValid",e,t)},errorsByAttributeName:Ember.reduceComputed("content",{initialValue:function(){return Ember.MapWithDefault.create({defaultValue:function(){return Ember.A()}})},addedItem:function(e,r){e.get(r.attribute).pushObject(r);return e},removedItem:function(e,r){e.get(r.attribute).removeObject(r);return e}}),errorsFor:function(e){return r(this,"errorsByAttributeName").get(e)},messages:Ember.computed.mapBy("content","message"),content:Ember.computed(function(){return Ember.A()}),unknownProperty:function(e){var r=this.errorsFor(e);if(t(r)){return null}return r},nextObject:function(e,t,i){return r(this,"content").objectAt(e)
2
- },length:Ember.computed.oneWay("content.length").readOnly(),isEmpty:Ember.computed.not("length").readOnly(),add:function(e,t){var i=r(this,"isEmpty");t=this._findOrCreateMessages(e,t);r(this,"content").addObjects(t);this.notifyPropertyChange(e);this.enumerableContentDidChange();if(i&&!r(this,"isEmpty")){this.trigger("becameInvalid")}},_findOrCreateMessages:function(e,r){var t=this.errorsFor(e);return i(Ember.makeArray(r),function(r){return t.findBy("message",r)||{attribute:e,message:r}})},remove:function(e){if(r(this,"isEmpty")){return}var t=r(this,"content").rejectBy("attribute",e);r(this,"content").setObjects(t);this.notifyPropertyChange(e);this.enumerableContentDidChange();if(r(this,"isEmpty")){this.trigger("becameValid")}},clear:function(){if(r(this,"isEmpty")){return}r(this,"content").clear();this.enumerableContentDidChange();this.trigger("becameValid")},has:function(e){return!t(this.errorsFor(e))}})});r("ember-data/system/model/model",["ember-data/system/model/states","ember-data/system/model/errors","ember-data/system/promise_proxies","ember-data/system/relationships/relationship","exports"],function(e,r,i,a,n){"use strict";var s=e["default"];var o=r["default"];var u=i.PromiseObject;var d=a.createRelationshipFor;var l=Ember.get;var c=Ember.set;var f=Ember.merge;var h=Ember.RSVP.Promise;var p=Ember.ArrayPolyfills.forEach;var m=Ember.ArrayPolyfills.map;var y;var v=Ember.computed("currentState",function(e,r){return l(l(this,"currentState"),e)}).readOnly();var b=Object.create(null);var g=Object.create(null);function E(e){return g[e]||(g[e]=e.split("."))}function R(e){return b[e]||(b[e]=E(e)[0])}var A=Ember.Object.extend(Ember.Evented,{_recordArrays:undefined,_relationships:undefined,_loadingRecordArrays:undefined,isEmpty:v,isLoading:v,isLoaded:v,isDirty:v,isSaving:v,isDeleted:v,isNew:v,isValid:v,dirtyType:v,isError:false,isReloading:false,clientId:null,id:null,currentState:s.empty,errors:Ember.computed(function(){var e=o.create();e.registerHandlers(this,function(){this.send("becameInvalid")},function(){this.send("becameValid")});return e}).readOnly(),serialize:function(e){var r=l(this,"store");return r.serialize(this,e)},toJSON:function(e){if(!y){y=t("ember-data/serializers/json_serializer")["default"]}var r=y.create({container:this.container});return r.serialize(this,e)},didLoad:Ember.K,didUpdate:Ember.K,didCreate:Ember.K,didDelete:Ember.K,becameInvalid:Ember.K,becameError:Ember.K,data:Ember.computed(function(){this._data=this._data||{};return this._data}).readOnly(),_data:null,init:function(){this._super();this._setup()},_setup:function(){this._changesToSync={};this._deferredTriggers=[];this._data={};this._attributes={};this._inFlightAttributes={};this._relationships={};var e=this;this.constructor.eachRelationship(function(r,t){e._relationships[r]=d(e,t,e.store)})},send:function(e,r){var t=l(this,"currentState");if(!t[e]){this._unhandledEvent(t,e,r)}return t[e](this,r)},transitionTo:function(e){var r=R(e);var t=l(this,"currentState");var i=t;do{if(i.exit){i.exit(this)}i=i.parentState}while(!i.hasOwnProperty(r));var a=E(e);var n=[],s=[],o,u;for(o=0,u=a.length;o<u;o++){i=i[a[o]];if(i.enter){s.push(i)}if(i.setup){n.push(i)}}for(o=0,u=s.length;o<u;o++){s[o].enter(this)}c(this,"currentState",i);for(o=0,u=n.length;o<u;o++){n[o].setup(this)}this.updateRecordArraysLater()},_unhandledEvent:function(e,r,t){var i="Attempted to handle event `"+r+"` ";i+="on "+String(this)+" while in state ";i+=e.stateName+". ";if(t!==undefined){i+="Called with "+Ember.inspect(t)+"."}throw new Ember.Error(i)},withTransaction:function(e){var r=l(this,"transaction");if(r){e(r)}},loadingData:function(e){this.send("loadingData",e)},loadedData:function(){this.send("loadedData")},notFound:function(){this.send("notFound")},pushedData:function(){this.send("pushedData")},deleteRecord:function(){this.send("deleteRecord")},destroyRecord:function(){this.deleteRecord();return this.save()},unloadRecord:function(){if(this.isDestroyed){return}this.send("unloadRecord")},clearRelationships:function(){this.eachRelationship(function(e,r){var t=this._relationships[e];if(t){t.clear();t.destroy()}},this)},updateRecordArrays:function(){this._updatingRecordArraysLater=false;l(this,"store").dataWasUpdated(this.constructor,this)},_preloadData:function(e){var r=this;p.call(Ember.keys(e),function(t){var i=l(e,t);var a=r.constructor.metaForProperty(t);if(a.isRelationship){r._preloadRelationship(t,i)}else{l(r,"_data")[t]=i}})},_preloadRelationship:function(e,r){var t=this.constructor.metaForProperty(e);var i=t.type;if(t.kind==="hasMany"){this._preloadHasMany(e,r,i)}else{this._preloadBelongsTo(e,r,i)}},_preloadHasMany:function(e,r,t){var i=this;var a=m.call(r,function(e){return i._convertStringOrNumberIntoRecord(e,t)});this._relationships[e].updateRecordsFromAdapter(a)},_preloadBelongsTo:function(e,r,t){var i=this._convertStringOrNumberIntoRecord(r,t);this._relationships[e].setRecord(i)},_convertStringOrNumberIntoRecord:function(e,r){if(Ember.typeOf(e)==="string"||Ember.typeOf(e)==="number"){return this.store.recordForId(r,e)}return e},changedAttributes:function(){var e=l(this,"_data");var r=l(this,"_attributes");var t={};var i;for(i in r){t[i]=[e[i],r[i]]}return t},adapterWillCommit:function(){this.send("willCommit")},adapterDidCommit:function(e){c(this,"isError",false);if(e){this._data=e}else{Ember.mixin(this._data,this._inFlightAttributes)}this._inFlightAttributes={};this.send("didCommit");this.updateRecordArraysLater();if(!e){return}this.notifyPropertyChange("data")},adapterDidDirty:function(){this.send("becomeDirty");this.updateRecordArraysLater()},updateRecordArraysLater:function(){if(this._updatingRecordArraysLater){return}this._updatingRecordArraysLater=true;Ember.run.schedule("actions",this,this.updateRecordArrays)},setupData:function(e,r){if(r){Ember.merge(this._data,e)}else{this._data=e}if(e){this.pushedData()}this.notifyPropertyChange("data")},materializeId:function(e){c(this,"id",e)},materializeAttributes:function(e){f(this._data,e)},materializeAttribute:function(e,r){this._data[e]=r},rollback:function(){this._attributes={};if(l(this,"isError")){this._inFlightAttributes={};c(this,"isError",false)}if(!l(this,"isValid")){this._inFlightAttributes={}}this.send("rolledBack");this.notifyPropertyChange("data")},toStringExtension:function(){return l(this,"id")},save:function(){var e="DS: Model#save "+this;var r=Ember.RSVP.defer(e);this.get("store").scheduleSave(this,r);this._inFlightAttributes=this._attributes;this._attributes={};return u.create({promise:r.promise})},reload:function(){c(this,"isReloading",true);var e=this;var r="DS: Model#reload of "+this;var t=new h(function(r){e.send("reloadRecord",r)},r).then(function(){e.set("isReloading",false);e.set("isError",false);return e},function(r){e.set("isError",true);throw r},"DS: Model#reload complete, update flags");return u.create({promise:t})},adapterDidUpdateAttribute:function(e,r){if(r!==undefined){this._data[e]=r;this.notifyPropertyChange(e)}else{this._data[e]=this._inFlightAttributes[e]}this.updateRecordArraysLater()},adapterDidInvalidate:function(e){var r=l(this,"errors");function t(t){if(e[t]){r.add(t,e[t])}}this.eachAttribute(t);this.eachRelationship(t)},adapterDidError:function(){this.send("becameError");c(this,"isError",true)},trigger:function(e){Ember.tryInvoke(this,e,[].slice.call(arguments,1));this._super.apply(this,arguments)},triggerLater:function(){if(this._deferredTriggers.push(arguments)!==1){return}Ember.run.schedule("actions",this,"_triggerDeferredTriggers")},_triggerDeferredTriggers:function(){for(var e=0,r=this._deferredTriggers.length;e<r;e++){this.trigger.apply(this,this._deferredTriggers[e])}this._deferredTriggers.length=0},willDestroy:function(){this._super();this.clearRelationships()},willMergeMixin:function(e){}});A.reopenClass({_create:A.create,create:function(){throw new Ember.Error("You should not call `create` on a model. Instead, call `store.createRecord` with the attributes you would like to set.")}});n["default"]=A});r("ember-data/system/model/states",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.set;function i(e,r){if(r.value===r.originalValue){delete e._attributes[r.name];e.send("propertyWasReset",r.name)}else if(r.value!==r.oldValue){e.send("becomeDirty")}e.updateRecordArraysLater()}var a={initialState:"uncommitted",isDirty:true,uncommitted:{didSetProperty:i,loadingData:Ember.K,propertyWasReset:function(e,r){var t=Ember.keys(e._attributes);var i=t>0;if(!i){e.send("rolledBack")}},pushedData:Ember.K,becomeDirty:Ember.K,willCommit:function(e){e.transitionTo("inFlight")},reloadRecord:function(e,t){t(r(e,"store").reloadRecord(e))},rolledBack:function(e){e.transitionTo("loaded.saved")},becameInvalid:function(e){e.transitionTo("invalid")},rollback:function(e){e.rollback()}},inFlight:{isSaving:true,didSetProperty:i,becomeDirty:Ember.K,pushedData:Ember.K,unloadRecord:function(e){},willCommit:Ember.K,didCommit:function(e){var t=r(this,"dirtyType");e.transitionTo("saved");e.send("invokeLifecycleCallbacks",t)},becameInvalid:function(e){e.transitionTo("invalid");e.send("invokeLifecycleCallbacks")},becameError:function(e){e.transitionTo("uncommitted");e.triggerLater("becameError",e)}},invalid:{isValid:false,deleteRecord:function(e){e.transitionTo("deleted.uncommitted");e.clearRelationships()},didSetProperty:function(e,t){r(e,"errors").remove(t.name);i(e,t)},becomeDirty:Ember.K,willCommit:function(e){r(e,"errors").clear();e.transitionTo("inFlight")},rolledBack:function(e){r(e,"errors").clear()},becameValid:function(e){e.transitionTo("uncommitted")},invokeLifecycleCallbacks:function(e){e.triggerLater("becameInvalid",e)},exit:function(e){e._inFlightAttributes={}}}};function n(e){var r={},t;for(var i in e){t=e[i];if(t&&typeof t==="object"){r[i]=n(t)}else{r[i]=t}}return r}function s(e,r){for(var t in r){e[t]=r[t]}return e}function o(e){var r=n(a);return s(r,e)}var u=o({dirtyType:"created",isNew:true});u.uncommitted.rolledBack=function(e){e.transitionTo("deleted.saved")};var d=o({dirtyType:"updated"});u.uncommitted.deleteRecord=function(e){e.clearRelationships();e.transitionTo("deleted.saved")};u.uncommitted.rollback=function(e){a.uncommitted.rollback.apply(this,arguments);e.transitionTo("deleted.saved")};u.uncommitted.propertyWasReset=Ember.K;function l(e){}d.inFlight.unloadRecord=l;d.uncommitted.deleteRecord=function(e){e.transitionTo("deleted.uncommitted");e.clearRelationships()};var c={isEmpty:false,isLoading:false,isLoaded:false,isDirty:false,isSaving:false,isDeleted:false,isNew:false,isValid:true,rolledBack:Ember.K,unloadRecord:function(e){e.clearRelationships();e.transitionTo("deleted.saved")},propertyWasReset:Ember.K,empty:{isEmpty:true,loadingData:function(e,r){e._loadingPromise=r;e.transitionTo("loading")},loadedData:function(e){e.transitionTo("loaded.created.uncommitted");e.notifyPropertyChange("data")},pushedData:function(e){e.transitionTo("loaded.saved");e.triggerLater("didLoad")}},loading:{isLoading:true,exit:function(e){e._loadingPromise=null},pushedData:function(e){e.transitionTo("loaded.saved");e.triggerLater("didLoad");t(e,"isError",false)},becameError:function(e){e.triggerLater("becameError",e)},notFound:function(e){e.transitionTo("empty")}},loaded:{initialState:"saved",isLoaded:true,loadingData:Ember.K,saved:{setup:function(e){var r=e._attributes;var t=false;for(var i in r){if(r.hasOwnProperty(i)){t=true;break}}if(t){e.adapterDidDirty()}},didSetProperty:i,pushedData:Ember.K,becomeDirty:function(e){e.transitionTo("updated.uncommitted")},willCommit:function(e){e.transitionTo("updated.inFlight")},reloadRecord:function(e,t){t(r(e,"store").reloadRecord(e))},deleteRecord:function(e){e.transitionTo("deleted.uncommitted");e.clearRelationships()},unloadRecord:function(e){e.clearRelationships();e.transitionTo("deleted.saved")},didCommit:function(e){e.send("invokeLifecycleCallbacks",r(e,"lastDirtyType"))},notFound:Ember.K},created:u,updated:d},deleted:{initialState:"uncommitted",dirtyType:"deleted",isDeleted:true,isLoaded:true,isDirty:true,setup:function(e){e.updateRecordArrays()},uncommitted:{willCommit:function(e){e.transitionTo("inFlight")},rollback:function(e){e.rollback()},becomeDirty:Ember.K,deleteRecord:Ember.K,rolledBack:function(e){e.transitionTo("loaded.saved")}},inFlight:{isSaving:true,unloadRecord:l,willCommit:Ember.K,didCommit:function(e){e.transitionTo("saved");e.send("invokeLifecycleCallbacks")},becameError:function(e){e.transitionTo("uncommitted");e.triggerLater("becameError",e)}},saved:{isDirty:false,setup:function(e){var t=r(e,"store");t.dematerializeRecord(e)},invokeLifecycleCallbacks:function(e){e.triggerLater("didDelete",e);e.triggerLater("didCommit",e)},willCommit:Ember.K,didCommit:Ember.K}},invokeLifecycleCallbacks:function(e,r){if(r==="created"){e.triggerLater("didCreate",e)}else{e.triggerLater("didUpdate",e)}e.triggerLater("didCommit",e)}};function f(e,r,t){e=s(r?Ember.create(r):{},e);e.parentState=r;e.stateName=t;for(var i in e){if(!e.hasOwnProperty(i)||i==="parentState"||i==="stateName"){continue}if(typeof e[i]==="object"){e[i]=f(e[i],e,t+"."+i)}}return e}c=f(c,null,"root");e["default"]=c});r("ember-data/system/promise_proxies",["exports"],function(e){"use strict";var r=Ember.RSVP.Promise;var t=Ember.ArrayProxy.extend(Ember.PromiseProxyMixin);var i=Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);var a=function(e,t){return i.create({promise:r.resolve(e,t)})};var n=function(e,i){return t.create({promise:r.resolve(e,i)})};e.PromiseArray=t;e.PromiseObject=i;e.promiseArray=n;e.promiseObject=a});r("ember-data/system/record_array_manager",["ember-data/system/record_arrays","exports"],function(e,r){"use strict";var t=e.RecordArray;var i=e.FilteredRecordArray;var a=e.AdapterPopulatedRecordArray;var n=e.ManyArray;var s=Ember.get;var o=Ember.EnumerableUtils.forEach;r["default"]=Ember.Object.extend({init:function(){this.filteredRecordArrays=Ember.MapWithDefault.create({defaultValue:function(){return[]}});this.changedRecords=[];this._adapterPopulatedRecordArrays=[]},recordDidChange:function(e){if(this.changedRecords.push(e)!==1){return}Ember.run.schedule("actions",this,this.updateRecordArrays)},recordArraysForRecord:function(e){e._recordArrays=e._recordArrays||Ember.OrderedSet.create();return e._recordArrays},updateRecordArrays:function(){o(this.changedRecords,function(e){if(s(e,"isDeleted")){this._recordWasDeleted(e)}else{this._recordWasChanged(e)}},this);this.changedRecords.length=0},_recordWasDeleted:function(e){var r=e._recordArrays;if(!r){return}o(r,function(r){r.removeRecord(e)})},_recordWasChanged:function(e){var r=e.constructor;var t=this.filteredRecordArrays.get(r);var i;o(t,function(t){i=s(t,"filterFunction");this.updateRecordArray(t,i,r,e)},this);var a=e._loadingRecordArrays;if(a){for(var n=0,u=a.length;n<u;n++){a[n].loadedRecord()}e._loadingRecordArrays=[]}},updateRecordArray:function(e,r,t,i){var a;if(!r){a=true}else{a=r(i)}var n=this.recordArraysForRecord(i);if(a){if(!n.has(e)){e.pushRecord(i);n.add(e)}}else if(!a){n.remove(e);e.removeRecord(i)}},updateFilter:function(e,r,t){var i=this.store.typeMapFor(r);var a=i.records,n;for(var o=0,u=a.length;o<u;o++){n=a[o];if(!s(n,"isDeleted")&&!s(n,"isEmpty")){this.updateRecordArray(e,t,r,n)}}},createManyArray:function(e,r){var t=n.create({type:e,content:r,store:this.store});o(r,function(e){var r=this.recordArraysForRecord(e);r.add(t)},this);return t},createRecordArray:function(e){var r=t.create({type:e,content:Ember.A(),store:this.store,isLoaded:true});this.registerFilteredRecordArray(r,e);return r},createFilteredRecordArray:function(e,r,t){var a=i.create({query:t,type:e,content:Ember.A(),store:this.store,manager:this,filterFunction:r});this.registerFilteredRecordArray(a,e,r);return a},createAdapterPopulatedRecordArray:function(e,r){var t=a.create({type:e,query:r,content:Ember.A(),store:this.store,manager:this});this._adapterPopulatedRecordArrays.push(t);return t},registerFilteredRecordArray:function(e,r,t){var i=this.filteredRecordArrays.get(r);i.push(e);this.updateFilter(e,r,t)},registerWaitingRecordArray:function(e,r){var t=e._loadingRecordArrays||[];t.push(r);e._loadingRecordArrays=t},willDestroy:function(){this._super();o(l(u(this.filteredRecordArrays.values)),d);o(this._adapterPopulatedRecordArrays,d)}});function u(e){var r=[];var t=Ember.keys(e);for(var i=0;i<t.length;i++){r.push(e[t[i]])}return r}function d(e){e.destroy()}function l(e){var r=e.length;var t=Ember.A();for(var i=0;i<r;i++){t=t.concat(e[i])}return t}});r("ember-data/system/record_arrays",["ember-data/system/record_arrays/record_array","ember-data/system/record_arrays/filtered_record_array","ember-data/system/record_arrays/adapter_populated_record_array","ember-data/system/record_arrays/many_array","exports"],function(e,r,t,i,a){"use strict";var n=e["default"];var s=r["default"];var o=t["default"];var u=i["default"];a.RecordArray=n;a.FilteredRecordArray=s;a.AdapterPopulatedRecordArray=o;a.ManyArray=u});r("ember-data/system/record_arrays/adapter_populated_record_array",["ember-data/system/record_arrays/record_array","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get;function a(e){var r=Object.create(null);for(var t in e){r[t]=e[t]}return r}r["default"]=t.extend({query:null,replace:function(){var e=i(this,"type").toString();throw new Error("The result of a server query (on "+e+") is immutable.")},load:function(e){var r=i(this,"store");var t=i(this,"type");var n=r.pushMany(t,e);var s=r.metadataFor(t);this.setProperties({content:Ember.A(n),isLoaded:true,meta:a(s)});n.forEach(function(e){this.manager.recordArraysForRecord(e).add(this)},this);Ember.run.once(this,"trigger","didLoad")}})});r("ember-data/system/record_arrays/filtered_record_array",["ember-data/system/record_arrays/record_array","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get;r["default"]=t.extend({filterFunction:null,isLoaded:true,replace:function(){var e=i(this,"type").toString();throw new Error("The result of a client-side filter (on "+e+") is immutable.")},_updateFilter:function(){var e=i(this,"manager");e.updateFilter(this,i(this,"type"),i(this,"filterFunction"))},updateFilter:Ember.observer(function(){Ember.run.once(this,this._updateFilter)},"filterFunction")})});r("ember-data/system/record_arrays/many_array",["ember-data/system/record_arrays/record_array","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get,a=Ember.set;r["default"]=t.extend({init:function(){this._super.apply(this,arguments)},name:null,owner:null,isPolymorphic:false,isLoaded:false,relationship:null,promise:null,loadingRecordsCount:function(e){this.loadingRecordsCount=e},loadedRecord:function(){this.loadingRecordsCount--;if(this.loadingRecordsCount===0){a(this,"isLoaded",true);this.trigger("didLoad")}},replaceContent:function(e,r,t){var a;if(r>0){a=i(this,"content").slice(e,e+r);this.get("relationship").removeRecords(a)}if(t){this.get("relationship").addRecords(t,e)}},createRecord:function(e){var r=i(this,"store");var t=i(this,"type");var a;a=r.createRecord.call(r,t,e);this.pushObject(a);return a}})});r("ember-data/system/record_arrays/record_array",["ember-data/system/promise_proxies","exports"],function(e,r){"use strict";var t=e.PromiseArray;var i=Ember.get;r["default"]=Ember.ArrayProxy.extend(Ember.Evented,{type:null,content:null,isLoaded:false,isUpdating:false,store:null,objectAtContent:function(e){var r=i(this,"content");return r.objectAt(e)},update:function(){if(i(this,"isUpdating")){return}var e=i(this,"store");var r=i(this,"type");return e.fetchAll(r,this)},addRecord:function(e,r){var t=i(this,"content");if(r===undefined){t.addObject(e)}else{if(!t.contains(e)){t.insertAt(r,e)}}},pushRecord:function(e){i(this,"content").pushObject(e)},removeRecord:function(e){i(this,"content").removeObject(e)},save:function(){var e="DS: RecordArray#save "+i(this,"type");var r=Ember.RSVP.all(this.invoke("save"),e).then(function(e){return Ember.A(e)},null,"DS: RecordArray#save apply Ember.NativeArray");return t.create({promise:r})},_dissociateFromOwnRecords:function(){var e=this;this.forEach(function(r){var t=r._recordArrays;if(t){t.remove(e)}})},willDestroy:function(){this._dissociateFromOwnRecords();this._super()}})});r("ember-data/system/relationship-meta",["ember-inflector/system","exports"],function(e,r){"use strict";var t=e.singularize;function i(e,r){var i,a;i=r.type||r.key;if(typeof i==="string"){if(r.kind==="hasMany"){i=t(i)}a=e.modelFor(i)}else{a=r.type}return a}r.typeForRelationshipMeta=i;function a(e,r){return{key:r.key,kind:r.kind,type:i(e,r),options:r.options,parentType:r.parentType,isRelationship:true}}r.relationshipFromMeta=a});r("ember-data/system/relationships",["./relationships/belongs_to","./relationships/has_many","ember-data/system/relationships/ext","exports"],function(e,r,t,i){"use strict";var a=e["default"];var n=r["default"];i.belongsTo=a;i.hasMany=n});r("ember-data/system/relationships/belongs_to",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;function i(e,r){if(typeof e==="object"){r=e;e=undefined}else{}r=r||{};var t={type:e,isRelationship:true,options:r,kind:"belongsTo",key:null};return Ember.computed(function(e,r){if(arguments.length>1){if(r===undefined){r=null}this._relationships[e].setRecord(r)}return this._relationships[e].getRecord()}).meta(t)}t.reopen({notifyBelongsToAdded:function(e,r){this.notifyPropertyChange(e)},notifyBelongsToRemoved:function(e){this.notifyPropertyChange(e)}});r["default"]=i});r("ember-data/system/relationships/ext",["ember-data/system/relationship-meta","ember-data/system/model"],function(e,r){"use strict";var t=e.typeForRelationshipMeta;var i=e.relationshipFromMeta;var a=r.Model;var n=Ember.get;a.reopen({didDefineProperty:function(e,r,t){if(t instanceof Ember.ComputedProperty){var i=t.meta();i.parentType=e.constructor}}});a.reopenClass({typeForRelationship:function(e){var r=n(this,"relationshipsByName").get(e);return r&&r.type},inverseFor:function(e){var r=this.typeForRelationship(e);if(!r){return null}var t=this.metaForProperty(e).options;if(t.inverse===null){return null}var i,a,s;if(t.inverse){i=t.inverse;s=Ember.get(r,"relationshipsByName").get(i);a=s.kind}else{var o=u(this,r);if(o.length===0){return null}i=o[0].name;a=o[0].kind}function u(e,r,t){t=t||[];var i=n(r,"relationships");if(!i){return}var a=i.get(e);if(a){t.push.apply(t,i.get(e))}if(e.superclass){u(e.superclass,r,t)}return t}return{type:r,name:i,kind:a}},relationships:Ember.computed(function(){var e=new Ember.MapWithDefault({defaultValue:function(){return[]}});this.eachComputedProperty(function(r,i){if(i.isRelationship){i.key=r;var a=e.get(t(this.store,i));a.push({name:r,kind:i.kind})}});return e}).cacheable(false).readOnly(),relationshipNames:Ember.computed(function(){var e={hasMany:[],belongsTo:[]};this.eachComputedProperty(function(r,t){if(t.isRelationship){e[t.kind].push(r)}});return e}),relatedTypes:Ember.computed(function(){var e;var r=Ember.A();this.eachComputedProperty(function(i,a){if(a.isRelationship){a.key=i;e=t(this.store,a);if(!r.contains(e)){r.push(e)}}});return r}).cacheable(false).readOnly(),relationshipsByName:Ember.computed(function(){var e=Ember.Map.create();this.eachComputedProperty(function(r,a){if(a.isRelationship){a.key=r;var n=i(this.store,a);n.type=t(this.store,a);e.set(r,n)}});return e}).cacheable(false).readOnly(),fields:Ember.computed(function(){var e=Ember.Map.create();this.eachComputedProperty(function(r,t){if(t.isRelationship){e.set(r,t.kind)}else if(t.isAttribute){e.set(r,"attribute")}});return e}).readOnly(),eachRelationship:function(e,r){n(this,"relationshipsByName").forEach(function(t,i){e.call(r,t,i)})},eachRelatedType:function(e,r){n(this,"relatedTypes").forEach(function(t){e.call(r,t)})},determineRelationshipType:function(e){var r=e.key;var t=e.kind;var i=this.inverseFor(r);var a,n;if(!i){return t==="belongsTo"?"oneToNone":"manyToNone"}a=i.name;n=i.kind;if(n==="belongsTo"){return t==="belongsTo"?"oneToOne":"manyToOne"}else{return t==="belongsTo"?"oneToMany":"manyToMany"}}});a.reopen({eachRelationship:function(e,r){this.constructor.eachRelationship(e,r)},relationshipFor:function(e){return n(this.constructor,"relationshipsByName").get(e)},inverseFor:function(e){return this.constructor.inverseFor(e)}})});r("ember-data/system/relationships/has_many",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;function i(e,r){if(typeof e==="object"){r=e;e=undefined}r=r||{};var t={type:e,isRelationship:true,options:r,kind:"hasMany",key:null};return Ember.computed(function(e){var r=this._relationships[e];return r.getRecords()}).meta(t).readOnly()}t.reopen({notifyHasManyAdded:function(e,r,t){var i=this._relationships[e];var a=i.manyArray;a.addRecord(r,t);this.notifyPropertyChange(e)},notifyHasManyRemoved:function(e,r){var t=this._relationships[e];var i=t.manyArray;i.removeRecord(r)}});r["default"]=i});r("ember-data/system/relationships/relationship",["ember-data/system/promise_proxies","exports"],function(e,r){"use strict";var t=e.PromiseArray;var i=e.PromiseObject;var a=function(e,r,t,i){this.members=new Ember.OrderedSet;this.store=e;this.key=i.key;this.inverseKey=t;this.record=r;this.key=i.key;this.isAsync=i.options.async;this.relationshipMeta=i};a.prototype={constructor:a,hasFetchedLink:false,destroy:Ember.K,clear:function(){this.members.forEach(function(e){this.removeRecord(e)},this)},removeRecords:function(e){var r=this;e.forEach(function(e){r.removeRecord(e)})},addRecords:function(e,r){var t=this;e.forEach(function(e){t.addRecord(e,r);if(r!==undefined){r++}})},addRecord:function(e,r){if(!this.members.has(e)){this.members.add(e);this.notifyRecordRelationshipAdded(e,r);if(this.inverseKey){e._relationships[this.inverseKey].addRecord(this.record)}this.record.updateRecordArrays()}},removeRecord:function(e){if(this.members.has(e)){this.members.remove(e);this.notifyRecordRelationshipRemoved(e);if(this.inverseKey){var r=e._relationships[this.inverseKey];if(r){r.removeRecord(this.record)}}this.record.updateRecordArrays()}},updateLink:function(e){if(e!==this.link){this.link=e;this.hasFetchedLink=false;this.record.notifyPropertyChange(this.key)}},updateRecordsFromAdapter:function(e){this.computeChanges(e)}};var n=function(e,r,t,i){this._super$constructor(e,r,t,i);this.belongsToType=i.type;this.manyArray=e.recordArrayManager.createManyArray(this.belongsToType,Ember.A());this.manyArray.relationship=this;this.isPolymorphic=i.options.polymorphic;this.manyArray.isPolymorphic=this.isPolymorphic};n.prototype=Object.create(a.prototype);n.prototype.constructor=n;n.prototype._super$constructor=a;n.prototype.destroy=function(){this.manyArray.destroy()};n.prototype.notifyRecordRelationshipAdded=function(e,r){this.record.notifyHasManyAdded(this.key,e,r)};n.prototype.notifyRecordRelationshipRemoved=function(e){this.record.notifyHasManyRemoved(this.key,e)};n.prototype.computeChanges=function(e){var r=this.members;e=o(e);r.forEach(function(r){if(e.has(r))return;this.removeRecord(r)},this);var t=this.manyArray;e.forEach(function(e,r){if(t.objectAt(r)===e)return;this.removeRecord(e);this.addRecord(e,r)},this)};n.prototype.getRecords=function(){if(this.isAsync){var e=this;var r;if(this.link&&!this.hasFetchedLink){r=this.store.findHasMany(this.record,this.link,this.relationshipMeta).then(function(r){e.updateRecordsFromAdapter(r);e.hasFetchedLink=true;e.manyArray.set("isLoaded",true);return e.manyArray})}else{var i=this.manyArray;r=this.store.findMany(i.toArray()).then(function(){e.manyArray.set("isLoaded",true);return i})}return t.create({promise:r})}else{this.manyArray.set("isLoaded",true);return this.manyArray}};var s=function(e,r,t,i){this._super$constructor(e,r,t,i);this.members.add(r);this.record=r;this.key=i.key;this.inverseKey=t;this.inverseRecord=null};s.prototype=Object.create(a.prototype);s.prototype.constructor=s;s.prototype._super$constructor=a;s.prototype.setRecord=function(e){if(e){this.addRecord(e)}else if(this.inverseRecord){this.removeRecord(this.inverseRecord)}};s.prototype._super$addRecord=a.prototype.addRecord;s.prototype.addRecord=function(e){if(this.members.has(e)){return}var r=this.relationshipMeta.type;if(this.inverseRecord&&this.inverseKey){this.removeRecord(this.inverseRecord)}this.inverseRecord=e;this._super$addRecord(e)};s.prototype.notifyRecordRelationshipAdded=function(e){this.record.notifyBelongsToAdded(this.key,this)};s.prototype.notifyRecordRelationshipRemoved=function(e){this.record.notifyBelongsToRemoved(this.key,this)};s.prototype._super$removeRecord=a.prototype.removeRecord;s.prototype.removeRecord=function(e){if(!this.members.has(e)){return}this._super$removeRecord(e);this.inverseRecord=null};s.prototype.currentOtherSideFor=function(){return this.inverseRecord};s.prototype.getRecord=function(){if(this.isAsync){var e;if(this.link&&!this.hasFetchedLink){var r=this;e=this.store.findBelongsTo(this.record,this.link,this.relationshipMeta).then(function(e){r.addRecord(e);r.hasFetchedLink=true;return e})}else if(this.inverseRecord){e=this.store._findByRecord(this.inverseRecord)}else{e=Ember.RSVP.Promise.resolve(null)}return i.create({promise:e})}else{return this.inverseRecord}};function o(e){var r=new Ember.OrderedSet;if(e){for(var t=0,i=e.length;t<i;t++){r.add(e[t])}}return r}var u=function(e,r,t){var i;var a=e.constructor.inverseFor(r.key);if(a){i=a.name}if(r.kind==="hasMany"){return new n(t,e,i,r)}else{return new s(t,e,i,r)}};r.Relationship=a;r.ManyRelationship=n;r.BelongsToRelationship=s;r.createRelationshipFor=u});r("ember-data/system/store",["ember-data/system/adapter","ember-inflector/system/string","ember-data/system/promise_proxies","exports"],function(e,r,i,a){"use strict";var n=e.InvalidError;var s=e.Adapter;var o=r.singularize;var u=i.promiseArray;var d=i.promiseObject;var l=Ember.get;var c=Ember.set;var f=Ember.run.once;var h=Ember.isNone;var p=Ember.EnumerableUtils.forEach;var m=Ember.EnumerableUtils.indexOf;var y=Ember.EnumerableUtils.map;var v=Ember.RSVP.Promise;var b=Ember.copy;var g,E,R;var A=Ember.String.camelize;function _(e){return e==null?null:e+""}g=Ember.Object.extend({init:function(){if(!E){E=t("ember-data/system/record_array_manager")["default"]}this.typeMaps={};this.recordArrayManager=E.create({store:this});this._pendingSave=[];this._pendingFetch=Ember.Map.create()},adapter:"-rest",serialize:function(e,r){return this.serializerFor(e.constructor.typeKey).serialize(e,r)},defaultAdapter:Ember.computed("adapter",function(){var e=l(this,"adapter");if(typeof e==="string"){e=this.container.lookup("adapter:"+e)||this.container.lookup("adapter:application")||this.container.lookup("adapter:-rest")}if(DS.Adapter.detect(e)){e=e.create({container:this.container})}return e}),createRecord:function(e,r){var t=this.modelFor(e);var i=b(r)||{};if(h(i.id)){i.id=this._generateId(t)}i.id=_(i.id);var a=this.buildRecord(t,i.id);a.loadedData();a.setProperties(i);return a},_generateId:function(e){var r=this.adapterFor(e);if(r&&r.generateIdForRecord){return r.generateIdForRecord(this)}return null},deleteRecord:function(e){e.deleteRecord()},unloadRecord:function(e){e.unloadRecord()},find:function(e,r,t){if(arguments.length===1){return this.findAll(e)}if(Ember.typeOf(r)==="object"){return this.findQuery(e,r)}return this.findById(e,_(r),t)},findById:function(e,r,t){var i=this.modelFor(e);var a=this.recordForId(i,r);return this._findByRecord(a,t)},_findByRecord:function(e,r){var t;if(r){e._preloadData(r)}if(l(e,"isEmpty")){t=this.scheduleFetch(e)}else if(l(e,"isLoading")){t=e._loadingPromise}return d(t||e,"DS: Store#findByRecord "+e.typeKey+" with id: "+l(e,"id"))},findByIds:function(e,r){var t=this;return u(Ember.RSVP.all(y(r,function(r){return t.findById(e,r)})).then(Ember.A,null,"DS: Store#findByIds of "+e+" complete"))},fetchRecord:function(e){var r=e.constructor;var t=l(e,"id");var i=this.adapterFor(r);var a=C(i,this,r,t,e);return a},scheduleFetchMany:function(e){return Ember.RSVP.all(y(e,this.scheduleFetch,this))},scheduleFetch:function(e){var r=e.constructor;if(h(e)){return null}if(e._loadingPromise){return e._loadingPromise
3
- }var t=Ember.RSVP.defer("Fetching "+r+"with id: "+e.get("id"));var i={record:e,resolver:t};var a=t.promise;e.loadingData(a);if(!this._pendingFetch.get(r)){this._pendingFetch.set(r,[i])}else{this._pendingFetch.get(r).push(i)}Ember.run.scheduleOnce("afterRender",this,this.flushAllPendingFetches);return a},flushAllPendingFetches:function(){if(this.isDestroyed||this.isDestroying){return}this._pendingFetch.forEach(this._flushPendingFetchForType,this);this._pendingFetch=Ember.Map.create()},_flushPendingFetchForType:function(e,r){var t=this;var i=t.adapterFor(e);var a=!!i.findMany&&i.coalesceFindRequests;var n=Ember.A(r).mapBy("record");function s(e){e.resolver.resolve(t.fetchRecord(e.record))}function o(e){p(e,function(e){var t=Ember.A(r).findBy("record",e);if(t){var i=t.resolver;i.resolve(e)}})}function u(e){return function r(t){var i=e.without(t);l(i)}}function d(e){return function(r){l(e,r)}}function l(e,t){p(e,function(e){var i=Ember.A(r).findBy("record",e);if(i){var a=i.resolver;a.reject(t)}})}if(r.length===1){s(r[0])}else if(a){var c=i.groupRecordsForFindMany(this,n);p(c,function(a){var n=Ember.A(a);var l=n.mapBy("id");if(l.length>1){w(i,t,e,l,n).then(o).then(u(n)).then(null,d(n))}else if(l.length===1){var c=Ember.A(r).findBy("record",a[0]);s(c)}else{}})}else{p(r,s)}},getById:function(e,r){if(this.hasRecordForId(e,r)){return this.recordForId(e,r)}else{return null}},reloadRecord:function(e){var r=e.constructor;var t=this.adapterFor(r);var i=l(e,"id");return this.scheduleFetch(e)},hasRecordForId:function(e,r){var t=this.modelFor(e);var i=_(r);return!!this.typeMapFor(t).idToRecord[i]},recordForId:function(e,r){var t=this.modelFor(e);var i=_(r);var a=this.typeMapFor(t).idToRecord;var n=a[i];if(!n||!a[i]){n=this.buildRecord(t,i)}return n},findMany:function(e){var r=this;return v.all(y(e,function(e){return r._findByRecord(e)}))},findHasMany:function(e,r,t){var i=this.adapterFor(e.constructor);return $(i,this,e,r,t)},findBelongsTo:function(e,r,t){var i=this.adapterFor(e.constructor);return I(i,this,e,r,t)},findQuery:function(e,r){var t=this.modelFor(e);var i=this.recordArrayManager.createAdapterPopulatedRecordArray(t,r);var a=this.adapterFor(t);return u(j(a,this,t,r,i))},findAll:function(e){var r=this.modelFor(e);return this.fetchAll(r,this.all(r))},fetchAll:function(e,r){var t=this.adapterFor(e);var i=this.typeMapFor(e).metadata.since;c(r,"isUpdating",true);return u(L(t,this,e,i))},didUpdateAll:function(e){var r=this.typeMapFor(e).findAllCache;c(r,"isUpdating",false)},all:function(e){var r=this.modelFor(e);var t=this.typeMapFor(r);var i=t.findAllCache;if(i){return i}var a=this.recordArrayManager.createRecordArray(r);t.findAllCache=a;return a},unloadAll:function(e){var r=this.modelFor(e);var t=this.typeMapFor(r);var i=t.records.slice();var a;for(var n=0;n<i.length;n++){a=i[n];a.unloadRecord();a.destroy()}t.findAllCache=null},filter:function(e,r,t){var i;var a=arguments.length;var n;var s=a===3;if(s){i=this.findQuery(e,r)}else if(arguments.length===2){t=r}e=this.modelFor(e);if(s){n=this.recordArrayManager.createFilteredRecordArray(e,t,r)}else{n=this.recordArrayManager.createFilteredRecordArray(e,t)}i=i||v.cast(n);return u(i.then(function(){return n},null,"DS: Store#filter of "+e))},recordIsLoaded:function(e,r){if(!this.hasRecordForId(e,r)){return false}return!l(this.recordForId(e,r),"isEmpty")},metadataFor:function(e){e=this.modelFor(e);return this.typeMapFor(e).metadata},dataWasUpdated:function(e,r){this.recordArrayManager.recordDidChange(r)},scheduleSave:function(e,r){e.adapterWillCommit();this._pendingSave.push([e,r]);f(this,"flushPendingSave")},flushPendingSave:function(){var e=this._pendingSave.slice();this._pendingSave=[];p(e,function(e){var r=e[0],t=e[1];var i=this.adapterFor(r.constructor);var a;if(l(r,"currentState.stateName")==="root.deleted.saved"){return t.resolve(r)}else if(l(r,"isNew")){a="createRecord"}else if(l(r,"isDeleted")){a="deleteRecord"}else{a="updateRecord"}t.resolve(K(i,this,a,r))},this)},didSaveRecord:function(e,r){if(r){r=F(this,e.constructor,r,e);B(this,e,r);this.updateId(e,r)}e.adapterDidCommit(r)},recordWasInvalid:function(e,r){e.adapterDidInvalidate(r)},recordWasError:function(e){e.adapterDidError()},updateId:function(e,r){var t=l(e,"id");var i=_(r.id);this.typeMapFor(e.constructor).idToRecord[i]=e;c(e,"id",i)},typeMapFor:function(e){var r=l(this,"typeMaps");var t=Ember.guidFor(e);var i;i=r[t];if(i){return i}i={idToRecord:Object.create(null),records:[],metadata:Object.create(null),type:e};r[t]=i;return i},_load:function(e,r,t){var i=_(r.id);var a=this.recordForId(e,i);a.setupData(r,t);this.recordArrayManager.recordDidChange(a);return a},modelFor:function(e){var r;if(typeof e==="string"){r=this.container.lookupFactory("model:"+e);if(!r){throw new Ember.Error("No model was found for '"+e+"'")}r.typeKey=r.typeKey||this._normalizeTypeKey(e)}else{r=e;if(r.typeKey){r.typeKey=this._normalizeTypeKey(r.typeKey)}}r.store=this;return r},push:function(e,r,t){var i=this.modelFor(e);r=F(this,i,r);this._load(i,r,t);var a=this.recordForId(i,r.id);B(this,a,r);return a},pushPayload:function(e,r){var t;var i;if(!r){i=e;t=k(this.container)}else{i=r;t=this.serializerFor(e)}t.pushPayload(this,i)},normalize:function(e,r){var t=this.serializerFor(e);var i=this.modelFor(e);return t.normalize(i,r)},update:function(e,r){return this.push(e,r,true)},pushMany:function(e,r){var t=r.length;var i=new Array(t);for(var a=0;a<t;a++){i[a]=this.push(e,r[a])}return i},metaForType:function(e,r){var t=this.modelFor(e);Ember.merge(this.typeMapFor(t).metadata,r)},buildRecord:function(e,r,t){var i=this.typeMapFor(e);var a=i.idToRecord;var n=e._create({id:r,store:this,container:this.container});if(t){n.setupData(t)}if(r){a[r]=n}i.records.push(n);return n},dematerializeRecord:function(e){var r=e.constructor;var t=this.typeMapFor(r);var i=l(e,"id");e.updateRecordArrays();if(i){delete t.idToRecord[i]}var a=m(t.records,e);t.records.splice(a,1)},adapterFor:function(e){var r=this.container,t;if(r){t=r.lookup("adapter:"+e.typeKey)||r.lookup("adapter:application")}return t||l(this,"defaultAdapter")},serializerFor:function(e){e=this.modelFor(e);var r=this.adapterFor(e);return S(this.container,e.typeKey,r&&r.defaultSerializer)},willDestroy:function(){var e=this.typeMaps;var r=Ember.keys(e);var t=y(r,i);this.recordArrayManager.destroy();p(t,this.unloadAll,this);function i(r){return e[r]["type"]}},_normalizeTypeKey:function(e){return A(o(e))}});function F(e,r,t,i){r.eachRelationship(function(r,i){var a=i.kind;var n=t[r];if(a==="belongsTo"){z(e,t,r,i,n)}else if(a==="hasMany"){T(e,t,r,i,n)}});return t}function z(e,r,i,a,n){if(!R){R=t("ember-data/system/model")["Model"]}if(h(n)||n instanceof R){return}var s;if(typeof n==="number"||typeof n==="string"){s=x(a,i,r);r[i]=e.recordForId(s,n)}else if(typeof n==="object"){r[i]=e.recordForId(n.type,n.id)}}function x(e,r,t){if(e.options.polymorphic){return t[r+"Type"]}else{return e.type}}function T(e,r,t,i,a){if(!Ember.isArray(a)){return}for(var n=0,s=a.length;n<s;n++){z(e,a,n,i,a[n])}}function S(e,r,t){return e.lookup("serializer:"+r)||e.lookup("serializer:application")||e.lookup("serializer:"+t)||e.lookup("serializer:-default")}function k(e){return e.lookup("serializer:application")||e.lookup("serializer:-default")}function M(e,r){var t=e.serializer;var i=e.defaultSerializer;var a=e.container;if(a&&t===undefined){t=S(a,r.typeKey,i)}if(t===null||t===undefined){t={extract:function(e,r,t){return t}}}return t}function D(e){return!(l(e,"isDestroyed")||l(e,"isDestroying"))}function P(e,r){var t=e["finally"](function(){if(!r()){t._subscribers.length=0}});return t}function O(e){var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(undefined,r)}}function C(e,r,t,i,a){var n=e.find(r,t,i,a);var s=M(e,t);var o="DS: Handle Adapter#find of "+t+" with id: "+i;n=v.cast(n,o);n=P(n,O(D,r));return n.then(function(e){var a=s.extract(r,t,e,i,"find");return r.push(t,a)},function(e){var a=r.getById(t,i);if(a){a.notFound()}throw e},"DS: Extract payload of '"+t+"'")}function w(e,r,t,i,a){var n=e.findMany(r,t,i,a);var s=M(e,t);var o="DS: Handle Adapter#findMany of "+t;if(n===undefined){throw new Error("adapter.findMany returned undefined, this was very likely a mistake")}n=v.cast(n,o);n=P(n,O(D,r));return n.then(function(e){var i=s.extract(r,t,e,null,"findMany");return r.pushMany(t,i)},null,"DS: Extract payload of "+t)}function $(e,r,t,i,a){var n=e.findHasMany(r,t,i,a);var s=M(e,a.type);var o="DS: Handle Adapter#findHasMany of "+t+" : "+a.type;n=v.cast(n,o);n=P(n,O(D,r));n=P(n,O(D,t));return n.then(function(e){var t=s.extract(r,a.type,e,null,"findHasMany");var i=r.pushMany(a.type,t);return i},null,"DS: Extract payload of "+t+" : hasMany "+a.type)}function I(e,r,t,i,a){var n=e.findBelongsTo(r,t,i,a);var s=M(e,a.type);var o="DS: Handle Adapter#findBelongsTo of "+t+" : "+a.type;n=v.cast(n,o);n=P(n,O(D,r));n=P(n,O(D,t));return n.then(function(e){var t=s.extract(r,a.type,e,null,"findBelongsTo");var i=r.push(a.type,t);return i},null,"DS: Extract payload of "+t+" : "+a.type)}function L(e,r,t,i){var a=e.findAll(r,t,i);var n=M(e,t);var s="DS: Handle Adapter#findAll of "+t;a=v.cast(a,s);a=P(a,O(D,r));return a.then(function(e){var i=n.extract(r,t,e,null,"findAll");r.pushMany(t,i);r.didUpdateAll(t);return r.all(t)},null,"DS: Extract payload of findAll "+t)}function j(e,r,t,i,a){var n=e.findQuery(r,t,i,a);var s=M(e,t);var o="DS: Handle Adapter#findQuery of "+t;n=v.cast(n,o);n=P(n,O(D,r));return n.then(function(e){var i=s.extract(r,t,e,null,"findQuery");a.load(i);return a},null,"DS: Extract payload of findQuery "+t)}function K(e,r,t,i){var a=i.constructor;var s=e[t](r,a,i);var o=M(e,a);var u="DS: Extract and notify about "+t+" completion of "+i;s=v.cast(s,u);s=P(s,O(D,r));s=P(s,O(D,i));return s.then(function(e){var n;if(e){n=o.extract(r,a,e,l(i,"id"),t)}else{n=e}r.didSaveRecord(i,n);return i},function(e){if(e instanceof n){r.recordWasInvalid(i,e.errors)}else{r.recordWasError(i,e)}throw e},u)}function B(e,r,t){var i=r.constructor;i.eachRelationship(function(e,i){var a=i.kind;var n=t[e];var s=r._relationships[e];if(t.links&&t.links[e]){s.updateLink(t.links[e])}if(a==="belongsTo"){if(n===undefined){return}s.setRecord(n)}else if(a==="hasMany"&&n){s.updateRecordsFromAdapter(n)}})}a.Store=g;a["default"]=g});r("ember-data/transforms",["ember-data/transforms/base","ember-data/transforms/number","ember-data/transforms/date","ember-data/transforms/string","ember-data/transforms/boolean","exports"],function(e,r,t,i,a,n){"use strict";var s=e["default"];var o=r["default"];var u=t["default"];var d=i["default"];var l=a["default"];n.Transform=s;n.NumberTransform=o;n.DateTransform=u;n.StringTransform=d;n.BooleanTransform=l});r("ember-data/transforms/base",["exports"],function(e){"use strict";e["default"]=Ember.Object.extend({serialize:Ember.required(),deserialize:Ember.required()})});r("ember-data/transforms/boolean",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];r["default"]=t.extend({deserialize:function(e){var r=typeof e;if(r==="boolean"){return e}else if(r==="string"){return e.match(/^true$|^t$|^1$/i)!==null}else if(r==="number"){return e===1}else{return false}},serialize:function(e){return Boolean(e)}})});r("ember-data/transforms/date",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];var i=Date.prototype.toISOString||function(){function e(e){if(e<10){return"0"+e}return e}return this.getUTCFullYear()+"-"+e(this.getUTCMonth()+1)+"-"+e(this.getUTCDate())+"T"+e(this.getUTCHours())+":"+e(this.getUTCMinutes())+":"+e(this.getUTCSeconds())+"."+(this.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z"};if(Ember.SHIM_ES5){if(!Date.prototype.toISOString){Date.prototype.toISOString=i}}r["default"]=t.extend({deserialize:function(e){var r=typeof e;if(r==="string"){return new Date(Ember.Date.parse(e))}else if(r==="number"){return new Date(e)}else if(e===null||e===undefined){return e}else{return null}},serialize:function(e){if(e instanceof Date){return i.call(e)}else{return null}}})});r("ember-data/transforms/number",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.isEmpty;r["default"]=t.extend({deserialize:function(e){return i(e)?null:Number(e)},serialize:function(e){return i(e)?null:Number(e)}})});r("ember-data/transforms/string",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.isNone;r["default"]=t.extend({deserialize:function(e){return i(e)?null:String(e)},serialize:function(e){return i(e)?null:String(e)}})});r("ember-inflector",["./system","./helpers","./ext/string","exports"],function(e,r,t,i){"use strict";var a=e.Inflector;var n=e.defaultRules;var s=e.pluralize;var o=e.singularize;a.defaultRules=n;Ember.Inflector=a;Ember.String.pluralize=s;Ember.String.singularize=o;i["default"]=a;i.pluralize=s;i.singularize=o});r("ember-inflector/ext/string",["../system/string"],function(e){"use strict";var r=e.pluralize;var t=e.singularize;if(Ember.EXTEND_PROTOTYPES===true||Ember.EXTEND_PROTOTYPES.String){String.prototype.pluralize=function(){return r(this)};String.prototype.singularize=function(){return t(this)}}});r("ember-inflector/helpers",["./system/string"],function(e){"use strict";var r=e.singularize;var t=e.pluralize;Ember.Handlebars.helper("singularize",r);Ember.Handlebars.helper("pluralize",t)});r("ember-inflector/system",["./system/inflector","./system/string","./system/inflections","exports"],function(e,r,t,i){"use strict";var a=e["default"];var n=r.pluralize;var s=r.singularize;var o=t["default"];a.inflector=new a(o);i.Inflector=a;i.singularize=s;i.pluralize=n;i.defaultRules=o});r("ember-inflector/system/inflections",["exports"],function(e){"use strict";e["default"]={plurals:[[/$/,"s"],[/s$/i,"s"],[/^(ax|test)is$/i,"$1es"],[/(octop|vir)us$/i,"$1i"],[/(octop|vir)i$/i,"$1i"],[/(alias|status)$/i,"$1es"],[/(bu)s$/i,"$1ses"],[/(buffal|tomat)o$/i,"$1oes"],[/([ti])um$/i,"$1a"],[/([ti])a$/i,"$1a"],[/sis$/i,"ses"],[/(?:([^f])fe|([lr])f)$/i,"$1$2ves"],[/(hive)$/i,"$1s"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/(x|ch|ss|sh)$/i,"$1es"],[/(matr|vert|ind)(?:ix|ex)$/i,"$1ices"],[/^(m|l)ouse$/i,"$1ice"],[/^(m|l)ice$/i,"$1ice"],[/^(ox)$/i,"$1en"],[/^(oxen)$/i,"$1"],[/(quiz)$/i,"$1zes"]],singular:[[/s$/i,""],[/(ss)$/i,"$1"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/i,"$1sis"],[/(^analy)(sis|ses)$/i,"$1sis"],[/([^f])ves$/i,"$1fe"],[/(hive)s$/i,"$1"],[/(tive)s$/i,"$1"],[/([lr])ves$/i,"$1f"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/(x|ch|ss|sh)es$/i,"$1"],[/^(m|l)ice$/i,"$1ouse"],[/(bus)(es)?$/i,"$1"],[/(o)es$/i,"$1"],[/(shoe)s$/i,"$1"],[/(cris|test)(is|es)$/i,"$1is"],[/^(a)x[ie]s$/i,"$1xis"],[/(octop|vir)(us|i)$/i,"$1us"],[/(alias|status)(es)?$/i,"$1"],[/^(ox)en/i,"$1"],[/(vert|ind)ices$/i,"$1ex"],[/(matr)ices$/i,"$1ix"],[/(quiz)zes$/i,"$1"],[/(database)s$/i,"$1"]],irregularPairs:[["person","people"],["man","men"],["child","children"],["sex","sexes"],["move","moves"],["cow","kine"],["zombie","zombies"]],uncountable:["equipment","information","rice","money","species","series","fish","sheep","jeans","police"]}});r("ember-inflector/system/inflector",["exports"],function(e){"use strict";var r=/^\s*$/;var t=/(\w+[_-])([a-z\d]+$)/;var i=/(\w+)([A-Z][a-z\d]*$)/;var a=/[A-Z][a-z\d]*$/;function n(e,r){for(var t=0,i=r.length;t<i;t++){e.uncountable[r[t].toLowerCase()]=true}}function s(e,r){var t;for(var i=0,a=r.length;i<a;i++){t=r[i];e.irregular[t[0].toLowerCase()]=t[1];e.irregular[t[1].toLowerCase()]=t[1];e.irregularInverse[t[1].toLowerCase()]=t[0];e.irregularInverse[t[0].toLowerCase()]=t[0]}}function o(e){e=e||{};e.uncountable=e.uncountable||u();e.irregularPairs=e.irregularPairs||u();var r=this.rules={plurals:e.plurals||[],singular:e.singular||[],irregular:u(),irregularInverse:u(),uncountable:u()};n(r,e.uncountable);s(r,e.irregularPairs);this.enableCache()}if(!Object.create&&!Object.create(null).hasOwnProperty){throw new Error("This browser does not support Object.create(null), please polyfil with es5-sham: http://git.io/yBU2rg")}function u(){var e=Object.create(null);e["_dict"]=null;delete e["_dict"];return e}o.prototype={enableCache:function(){this.purgeCache();this.singularize=function(e){this._cacheUsed=true;return this._sCache[e]||(this._sCache[e]=this._singularize(e))};this.pluralize=function(e){this._cacheUsed=true;return this._pCache[e]||(this._pCache[e]=this._pluralize(e))}},purgeCache:function(){this._cacheUsed=false;this._sCache=u();this._pCache=u()},disableCache:function(){this._sCache=null;this._pCache=null;this.singularize=function(e){return this._singularize(e)};this.pluralize=function(e){return this._pluralize(e)}},plural:function(e,r){if(this._cacheUsed){this.purgeCache()}this.rules.plurals.push([e,r.toLowerCase()])},singular:function(e,r){if(this._cacheUsed){this.purgeCache()}this.rules.singular.push([e,r.toLowerCase()])},uncountable:function(e){if(this._cacheUsed){this.purgeCache()}n(this.rules,[e.toLowerCase()])},irregular:function(e,r){if(this._cacheUsed){this.purgeCache()}s(this.rules,[[e,r]])},pluralize:function(e){return this._pluralize(e)},_pluralize:function(e){return this.inflect(e,this.rules.plurals,this.rules.irregular)},singularize:function(e){return this._singularize(e)},_singularize:function(e){return this.inflect(e,this.rules.singular,this.rules.irregularInverse)},inflect:function(e,n,s){var o,u,d,l,c,f,h,p,m,y,v,b,g;p=r.test(e);m=a.test(e);f="";if(p){return e}l=e.toLowerCase();c=t.exec(e)||i.exec(e);if(c){f=c[1];h=c[2].toLowerCase()}y=this.rules.uncountable[l]||this.rules.uncountable[h];if(y){return e}v=s&&(s[l]||s[h]);if(v){if(s[l]){return v}else{v=m?v.capitalize():v;return f+v}}for(var E=n.length,R=0;E>R;E--){o=n[E-1];g=o[0];if(g.test(e)){break}}o=o||[];g=o[0];u=o[1];d=e.replace(g,u);return d}};e["default"]=o});r("ember-inflector/system/string",["./inflector","exports"],function(e,r){"use strict";var t=e["default"];function i(e){return t.inflector.pluralize(e)}function a(e){return t.inflector.singularize(e)}r.pluralize=i;r.singularize=a});e.DS=t("ember-data")["default"]})(this);
1
+ (function(e){var r,t,i,a;(function(){var e;if(!Array.isArray){e=function(e){return Object.prototype.toString.call(e)==="[object Array]"}}else{e=Array.isArray}var n={},s={},o={};var u=false;r=function(r,t,i){if(!e(t)){i=t;t=[]}n[r]={deps:t,callback:i}};function d(e,r,t){var a=e.length;var n=new Array(a);var s;var o;for(var u=0,d=a;u<d;u++){s=e[u];if(s==="exports"){o=n[u]=t}else{n[u]=i(c(s,r))}}return{deps:n,exports:o}}a=i=t=function(e){if(o[e]!==u&&s.hasOwnProperty(e)){return s[e]}if(!n[e]){throw new Error("Could not find module "+e)}var r=n[e];var t;var i;var a=false;s[e]={};try{t=d(r.deps,e,s[e]);i=r.callback.apply(this,t.deps);a=true}finally{if(!a){o[e]=u}}return t.exports?s[e]:s[e]=i};function c(e,r){if(e.charAt(0)!=="."){return e}var t=e.split("/");var i=r.split("/");var a;if(i.length===1){a=i}else{a=i.slice(0,-1)}for(var n=0,s=t.length;n<s;n++){var o=t[n];if(o===".."){a.pop()}else if(o==="."){continue}else{a.push(o)}}return a.join("/")}a.entries=a._eak_seen=n;a.clear=function(){a.entries=a._eak_seen=n={};s=o={}}})();r("activemodel-adapter",["activemodel-adapter/system","exports"],function(e,r){"use strict";var t=e.ActiveModelAdapter;var i=e.ActiveModelSerializer;r.ActiveModelAdapter=t;r.ActiveModelSerializer=i});r("activemodel-adapter/setup-container",["ember-data/system/container_proxy","activemodel-adapter/system/active_model_serializer","activemodel-adapter/system/active_model_adapter","exports"],function(e,r,t,i){"use strict";var a=e["default"];var n=r["default"];var s=t["default"];i["default"]=function o(e,r){var t=new a(e);t.registerDeprecations([{deprecated:"serializer:_ams",valid:"serializer:-active-model"},{deprecated:"adapter:_ams",valid:"adapter:-active-model"}]);e.register("serializer:-active-model",n);e.register("adapter:-active-model",s)}});r("activemodel-adapter/system",["activemodel-adapter/system/active_model_adapter","activemodel-adapter/system/active_model_serializer","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r["default"];t.ActiveModelAdapter=i;t.ActiveModelSerializer=a});r("activemodel-adapter/system/active_model_adapter",["ember-data/adapters","ember-data/system/adapter","ember-inflector","exports"],function(e,r,t,i){"use strict";var a=e.RESTAdapter;var n=r.InvalidError;var s=t.pluralize;var o=Ember.EnumerableUtils.forEach;var u=Ember.String.decamelize,d=Ember.String.underscore;var c=a.extend({defaultSerializer:"-active-model",pathForType:function(e){var r=u(e);var t=d(r);return s(t)},ajaxError:function(e){var r=this._super(e);if(e&&e.status===422){var t=Ember.$.parseJSON(e.responseText),i={};if(t.errors!==undefined){var a=t.errors;o(Ember.keys(a),function(e){i[Ember.String.camelize(e)]=a[e]})}return new n(i)}else{return r}}});i["default"]=c});r("activemodel-adapter/system/active_model_serializer",["ember-inflector","ember-data/serializers/rest_serializer","exports"],function(e,r,t){"use strict";var i=e.singularize;var a=r["default"];var n=Ember.get,s=Ember.EnumerableUtils.forEach,o=Ember.String.camelize,u=Ember.String.capitalize,d=Ember.String.decamelize,c=Ember.String.underscore;var l=a.extend({keyForAttribute:function(e){return d(e)},keyForRelationship:function(e,r){var t=d(e);if(r==="belongsTo"){return t+"_id"}else if(r==="hasMany"){return i(t)+"_ids"}else{return t}},serializeHasMany:Ember.K,serializeIntoHash:function(e,r,t,i){var a=c(d(r.typeKey));e[a]=this.serialize(t,i)},serializePolymorphicType:function(e,r,t){var i=t.key;var a=n(e,i);var s=c(i+"_type");if(Ember.isNone(a)){r[s]=null}else{r[s]=u(o(a.constructor.typeKey))}},normalize:function(e,r,t){this.normalizeLinks(r);return this._super(e,r,t)},normalizeLinks:function(e){if(e.links){var r=e.links;for(var t in r){var i=o(t);if(i!==t){r[i]=r[t];delete r[t]}}}},normalizeRelationships:function(e,r){if(this.keyForRelationship){e.eachRelationship(function(e,t){var i,a;if(t.options.polymorphic){i=this.keyForAttribute(e);a=r[i];if(a&&a.type){a.type=this.typeForRoot(a.type)}else if(a&&t.kind==="hasMany"){var n=this;s(a,function(e){e.type=n.typeForRoot(e.type)})}}else{i=this.keyForRelationship(e,t.kind);if(!r.hasOwnProperty(i)){return}a=r[i]}r[e]=a;if(e!==i){delete r[i]}},this)}}});t["default"]=l});r("ember-data",["ember-data/core","ember-data/ext/date","ember-data/system/promise_proxies","ember-data/system/store","ember-data/system/model","ember-data/system/adapter","ember-data/system/debug","ember-data/system/record_arrays","ember-data/system/record_array_manager","ember-data/adapters","ember-data/serializers/json_serializer","ember-data/serializers/rest_serializer","ember-inflector","ember-data/serializers/embedded_records_mixin","activemodel-adapter","ember-data/transforms","ember-data/system/relationships","ember-data/ember-initializer","ember-data/setup-container","ember-data/system/container_proxy","ember-data/system/relationships/relationship","exports"],function(e,r,t,i,a,n,s,o,u,d,c,l,f,h,p,m,y,v,b,g,R,E){"use strict";Ember.RSVP.Promise.cast=Ember.RSVP.Promise.cast||Ember.RSVP.resolve;var _=e["default"];var A=t.PromiseArray;var F=t.PromiseObject;var z=i.Store;var x=a.Model;var T=a.Errors;var S=a.RootState;var k=a.attr;var M=n.InvalidError;var D=n.Adapter;var P=s["default"];var O=o.RecordArray;var C=o.FilteredRecordArray;var w=o.AdapterPopulatedRecordArray;var $=o.ManyArray;var I=u["default"];var L=d.RESTAdapter;var j=d.FixtureAdapter;var K=c["default"];var U=l["default"];var B=h["default"];var N=p.ActiveModelAdapter;var V=p.ActiveModelSerializer;var H=m.Transform;var W=m.DateTransform;var q=m.NumberTransform;var Q=m.StringTransform;var X=m.BooleanTransform;var J=y.hasMany;var G=y.belongsTo;var Y=b["default"];var Z=g["default"];var er=R.Relationship;_.Store=z;_.PromiseArray=A;_.PromiseObject=F;_.Model=x;_.RootState=S;_.attr=k;_.Errors=T;_.Adapter=D;_.InvalidError=M;_.DebugAdapter=P;_.RecordArray=O;_.FilteredRecordArray=C;_.AdapterPopulatedRecordArray=w;_.ManyArray=$;_.RecordArrayManager=I;_.RESTAdapter=L;_.FixtureAdapter=j;_.RESTSerializer=U;_.JSONSerializer=K;_.Transform=H;_.DateTransform=W;_.StringTransform=Q;_.NumberTransform=q;_.BooleanTransform=X;_.ActiveModelAdapter=N;_.ActiveModelSerializer=V;_.EmbeddedRecordsMixin=B;_.belongsTo=G;_.hasMany=J;_.Relationship=er;_.ContainerProxy=Z;_._setupContainer=Y;Ember.lookup.DS=_;E["default"]=_});r("ember-data/adapters",["ember-data/adapters/fixture_adapter","ember-data/adapters/rest_adapter","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r["default"];t.RESTAdapter=a;t.FixtureAdapter=i});r("ember-data/adapters/fixture_adapter",["ember-data/system/adapter","exports"],function(e,r){"use strict";var t=Ember.get;var i=Ember.String.fmt;var a=Ember.EnumerableUtils.indexOf;var n=0;var s=e["default"];r["default"]=s.extend({serializer:null,simulateRemoteResponse:true,latency:50,fixturesForType:function(e){if(e.FIXTURES){var r=Ember.A(e.FIXTURES);return r.map(function(e){var r=typeof e.id;if(r!=="number"&&r!=="string"){throw new Error(i("the id property must be defined as a number or string for fixture %@",[e]))}e.id=e.id+"";return e})}return null},queryFixtures:function(e,r,t){},updateFixtures:function(e,r){if(!e.FIXTURES){e.FIXTURES=[]}var t=e.FIXTURES;this.deleteLoadedFixture(e,r);t.push(r)},mockJSON:function(e,r,t){return e.serializerFor(r).serialize(t,{includeId:true})},generateIdForRecord:function(e){return"fixture-"+n++},find:function(e,r,t){var i=this.fixturesForType(r);var a;if(i){a=Ember.A(i).findBy("id",t)}if(a){return this.simulateRemoteCall(function(){return a},this)}},findMany:function(e,r,t){var i=this.fixturesForType(r);if(i){i=i.filter(function(e){return a(t,e.id)!==-1})}if(i){return this.simulateRemoteCall(function(){return i},this)}},findAll:function(e,r){var t=this.fixturesForType(r);return this.simulateRemoteCall(function(){return t},this)},findQuery:function(e,r,t,i){var a=this.fixturesForType(r);a=this.queryFixtures(a,t,r);if(a){return this.simulateRemoteCall(function(){return a},this)}},createRecord:function(e,r,t){var i=this.mockJSON(e,r,t);this.updateFixtures(r,i);return this.simulateRemoteCall(function(){return i},this)},updateRecord:function(e,r,t){var i=this.mockJSON(e,r,t);this.updateFixtures(r,i);return this.simulateRemoteCall(function(){return i},this)},deleteRecord:function(e,r,t){this.deleteLoadedFixture(r,t);return this.simulateRemoteCall(function(){return null})},deleteLoadedFixture:function(e,r){var t=this.findExistingFixture(e,r);if(t){var i=a(e.FIXTURES,t);e.FIXTURES.splice(i,1);return true}},findExistingFixture:function(e,r){var i=this.fixturesForType(e);var a=t(r,"id");return this.findFixtureById(i,a)},findFixtureById:function(e,r){return Ember.A(e).find(function(e){if(""+t(e,"id")===""+r){return true}else{return false}})},simulateRemoteCall:function(e,r){var i=this;return new Ember.RSVP.Promise(function(a){var n=Ember.copy(e.call(r),true);if(t(i,"simulateRemoteResponse")){Ember.run.later(function(){a(n)},t(i,"latency"))}else{Ember.run.schedule("actions",null,function(){a(n)})}},"DS: FixtureAdapter#simulateRemoteCall")}})});r("ember-data/adapters/rest_adapter",["ember-data/system/adapter","ember-data/system/map","exports"],function(e,r,t){"use strict";var i=e.Adapter;var a=e.InvalidError;var n=r.MapWithDefault;var s=Ember.get;var o=Ember.ArrayPolyfills.forEach;t["default"]=i.extend({defaultSerializer:"-rest",coalesceFindRequests:false,find:function(e,r,t,i){return this.ajax(this.buildURL(r.typeKey,t,i),"GET")},findAll:function(e,r,t){var i;if(t){i={since:t}}return this.ajax(this.buildURL(r.typeKey),"GET",{data:i})},findQuery:function(e,r,t){return this.ajax(this.buildURL(r.typeKey),"GET",{data:t})},findMany:function(e,r,t,i){return this.ajax(this.buildURL(r.typeKey,t,i),"GET",{data:{ids:t}})},findHasMany:function(e,r,t,i){var a=s(this,"host");var n=s(r,"id");var o=r.constructor.typeKey;if(a&&t.charAt(0)==="/"&&t.charAt(1)!=="/"){t=a+t}return this.ajax(this.urlPrefix(t,this.buildURL(o,n)),"GET")},findBelongsTo:function(e,r,t,i){var a=s(r,"id");var n=r.constructor.typeKey;return this.ajax(this.urlPrefix(t,this.buildURL(n,a)),"GET")},createRecord:function(e,r,t){var i={};var a=e.serializerFor(r.typeKey);a.serializeIntoHash(i,r,t,{includeId:true});return this.ajax(this.buildURL(r.typeKey,null,t),"POST",{data:i})},updateRecord:function(e,r,t){var i={};var a=e.serializerFor(r.typeKey);a.serializeIntoHash(i,r,t);var n=s(t,"id");return this.ajax(this.buildURL(r.typeKey,n,t),"PUT",{data:i})},deleteRecord:function(e,r,t){var i=s(t,"id");return this.ajax(this.buildURL(r.typeKey,i,t),"DELETE")},buildURL:function(e,r,t){var i=[],a=s(this,"host"),n=this.urlPrefix();if(e){i.push(this.pathForType(e))}if(r&&!Ember.isArray(r)){i.push(encodeURIComponent(r))}if(n){i.unshift(n)}i=i.join("/");if(!a&&i){i="/"+i}return i},urlPrefix:function(e,r){var t=s(this,"host");var i=s(this,"namespace");var a=[];if(e){if(e.charAt(0)==="/"){if(t){e=e.slice(1);a.push(t)}}else if(!/^http(s)?:\/\//.test(e)){a.push(r)}}else{if(t){a.push(t)}if(i){a.push(i)}}if(e){a.push(e)}return a.join("/")},_stripIDFromURL:function(e,r){var t=e.modelFor(r);var i=this.buildURL(t.typeKey,r.get("id"),r);var a=i.split("/");var n=a[a.length-1];var s=r.get("id");if(n===s){a[a.length-1]=""}else if(u(n,"?id="+s)){a[a.length-1]=n.substring(0,n.length-s.length-1)}return a.join("/")},groupRecordsForFindMany:function(e,r){var t=n.create({defaultValue:function(){return[]}});var i=this;o.call(r,function(r){var a=i._stripIDFromURL(e,r);t.get(a).push(r)});function a(r,t){var a=i._stripIDFromURL(e,r[0]);var n=0;var s=[[]];o.call(r,function(e){var r="&ids[]=".length+e.get("id.length");if(a.length+n+r>=t){n=0;s.push([])}n+=r;var i=s.length-1;s[i].push(e)});return s}var s=[];t.forEach(function(e,r){var t=2048;var i=a(e,t);o.call(i,function(e){s.push(e)})});return s},pathForType:function(e){var r=Ember.String.camelize(e);return Ember.String.pluralize(r)},ajaxError:function(e,r){if(e&&typeof e==="object"){e.then=null}return e},ajaxSuccess:function(e,r){return r},ajax:function(e,r,t){var i=this;return new Ember.RSVP.Promise(function(n,s){var o=i.ajaxOptions(e,r,t);o.success=function(e,r,t){e=i.ajaxSuccess(t,e);if(e instanceof a){Ember.run(null,s,e)}else{Ember.run(null,n,e)}};o.error=function(e,r,t){Ember.run(null,s,i.ajaxError(e,e.responseText))};Ember.$.ajax(o)},"DS: RESTAdapter#ajax "+r+" to "+e)},ajaxOptions:function(e,r,t){var i=t||{};i.url=e;i.type=r;i.dataType="json";i.context=this;if(i.data&&r!=="GET"){i.contentType="application/json; charset=utf-8";i.data=JSON.stringify(i.data)}var a=s(this,"headers");if(a!==undefined){i.beforeSend=function(e){o.call(Ember.keys(a),function(r){e.setRequestHeader(r,a[r])})}}return i}});function u(e,r){if(typeof String.prototype.endsWith!=="function"){return e.indexOf(r,e.length-r.length)!==-1}else{return e.endsWith(r)}}});r("ember-data/core",["exports"],function(e){"use strict";var r;if("undefined"===typeof r){r=Ember.Namespace.create({VERSION:"1.0.0-beta.11"});if(Ember.libraries){Ember.libraries.registerCoreLibrary("Ember Data",r.VERSION)}}e["default"]=r});r("ember-data/ember-initializer",["ember-data/setup-container"],function(e){"use strict";var r=e["default"];var t=Ember.K;Ember.onLoad("Ember.Application",function(e){e.initializer({name:"ember-data",initialize:r});e.initializer({name:"store",after:"ember-data",initialize:t});e.initializer({name:"activeModelAdapter",before:"store",initialize:t});e.initializer({name:"transforms",before:"store",initialize:t});e.initializer({name:"data-adapter",before:"store",initialize:t});e.initializer({name:"injectStore",before:"store",initialize:t})})});r("ember-data/ext/date",[],function(){"use strict";Ember.Date=Ember.Date||{};var e=Date.parse,r=[1,4,5,6,7,10,11];Ember.Date.parse=function(t){var i,a,n=0;if(a=/^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(t)){for(var s=0,o;o=r[s];++s){a[o]=+a[o]||0}a[2]=(+a[2]||1)-1;a[3]=+a[3]||1;if(a[8]!=="Z"&&a[9]!==undefined){n=a[10]*60+a[11];if(a[9]==="+"){n=0-n}}i=Date.UTC(a[1],a[2],a[3],a[4],a[5]+n,a[6],a[7])}else{i=e?e(t):NaN}return i};if(Ember.EXTEND_PROTOTYPES===true||Ember.EXTEND_PROTOTYPES.Date){Date.parse=Ember.Date.parse}});r("ember-data/initializers/data_adapter",["ember-data/system/debug/debug_adapter","exports"],function(e,r){"use strict";var t=e["default"];r["default"]=function i(e){e.register("data-adapter:main",t)}});r("ember-data/initializers/store",["ember-data/serializers","ember-data/adapters","ember-data/system/container_proxy","ember-data/system/store","exports"],function(e,r,t,i,a){"use strict";var n=e.JSONSerializer;var s=e.RESTSerializer;var o=r.RESTAdapter;var u=t["default"];var d=i["default"];a["default"]=function c(e,r){e.register("store:main",e.lookupFactory("store:application")||r&&r.Store||d);var t=new u(e);t.registerDeprecations([{deprecated:"serializer:_default",valid:"serializer:-default"},{deprecated:"serializer:_rest",valid:"serializer:-rest"},{deprecated:"adapter:_rest",valid:"adapter:-rest"}]);e.register("serializer:-default",n);e.register("serializer:-rest",s);e.register("adapter:-rest",o);e.lookup("store:main")}});r("ember-data/initializers/store_injections",["exports"],function(e){"use strict";e["default"]=function r(e){e.injection("controller","store","store:main");e.injection("route","store","store:main");e.injection("serializer","store","store:main");e.injection("data-adapter","store","store:main")}});r("ember-data/initializers/transforms",["ember-data/transforms","exports"],function(e,r){"use strict";var t=e.BooleanTransform;var i=e.DateTransform;var a=e.StringTransform;var n=e.NumberTransform;r["default"]=function s(e){e.register("transform:boolean",t);e.register("transform:date",i);e.register("transform:number",n);e.register("transform:string",a)}});r("ember-data/serializers",["ember-data/serializers/json_serializer","ember-data/serializers/rest_serializer","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r["default"];t.JSONSerializer=i;t.RESTSerializer=a});r("ember-data/serializers/embedded_records_mixin",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.EnumerableUtils.forEach;var i=Ember.String.camelize;var a=Ember.Mixin.create({normalize:function(e,r,t){var i=this._super(e,r,t);return n(this,this.store,e,i)},keyForRelationship:function(e,r){if(this.hasDeserializeRecordsOption(e)){return this.keyForAttribute(e)}else{return this._super(e,r)||e}},serializeBelongsTo:function(e,t,i){var a=i.key;if(this.noSerializeOptionSpecified(a)){this._super(e,t,i);return}var n=this.hasSerializeIdsOption(a);var s=this.hasSerializeRecordsOption(a);var o=e.get(a);var u;if(n){u=this.keyForRelationship(a,i.kind);if(!o){t[u]=null}else{t[u]=r(o,"id")}}else if(s){u=this.keyForAttribute(a);if(!o){t[u]=null}else{t[u]=o.serialize({includeId:true});this.removeEmbeddedForeignKey(e,o,i,t[u])}}},serializeHasMany:function(e,t,i){var a=i.key;if(this.noSerializeOptionSpecified(a)){this._super(e,t,i);return}var n=this.hasSerializeIdsOption(a);var s=this.hasSerializeRecordsOption(a);var o;if(n){o=this.keyForRelationship(a,i.kind);t[o]=r(e,a).mapBy("id")}else if(s){o=this.keyForAttribute(a);t[o]=r(e,a).map(function(r){var t=r.serialize({includeId:true});this.removeEmbeddedForeignKey(e,r,i,t);return t},this)}},removeEmbeddedForeignKey:function(e,r,t,i){if(t.kind==="hasMany"){return}else if(t.kind==="belongsTo"){var a=e.constructor.inverseFor(t.key);if(a){var n=a.name;var s=this.store.serializerFor(r.constructor);var o=s.keyForRelationship(n,a.kind);if(o){delete i[o]}}}},hasEmbeddedAlwaysOption:function(e){var r=this.attrsOption(e);return r&&r.embedded==="always"},hasSerializeRecordsOption:function(e){var r=this.hasEmbeddedAlwaysOption(e);var t=this.attrsOption(e);return r||t&&t.serialize==="records"},hasSerializeIdsOption:function(e){var r=this.attrsOption(e);return r&&(r.serialize==="ids"||r.serialize==="id")},noSerializeOptionSpecified:function(e){var r=this.attrsOption(e);return!(r&&(r.serialize||r.embedded))},hasDeserializeRecordsOption:function(e){var r=this.hasEmbeddedAlwaysOption(e);var t=this.attrsOption(e);return r||t&&t.deserialize==="records"},attrsOption:function(e){var r=this.get("attrs");return r&&(r[i(e)]||r[e])}});function n(e,r,t,i){t.eachRelationship(function(t,a){if(e.hasDeserializeRecordsOption(t)){var n=r.modelFor(a.type.typeKey);if(a.kind==="hasMany"){if(a.options.polymorphic){o(r,t,i)}else{s(r,t,n,i)}}if(a.kind==="belongsTo"){u(r,t,n,i)}}});return i}function s(e,r,i,a){if(!a[r]){return a}var n=[];var s=e.serializerFor(i.typeKey);t(a[r],function(r){var t=s.normalize(i,r,null);e.push(i,t);n.push(t.id)});a[r]=n;return a}function o(e,i,a){if(!a[i]){return a}var n=[];t(a[i],function(t){var i=t.type;var a=e.serializerFor(i);var s=e.modelFor(i);var o=r(a,"primaryKey");var u=a.normalize(s,t,null);e.push(s,u);n.push({id:u[o],type:i})});a[i]=n;return a}function u(e,r,t,i){if(!i[r]){return i}var a=e.serializerFor(t.typeKey);var n=a.normalize(t,i[r],null);e.push(t,n);i[r]=n.id;return i}e["default"]=a});r("ember-data/serializers/json_serializer",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.isNone;var i=Ember.ArrayPolyfills.map;var a=Ember.merge;e["default"]=Ember.Object.extend({primaryKey:"id",applyTransforms:function(e,r){e.eachTransformedAttribute(function t(e,i){if(!r.hasOwnProperty(e)){return}var a=this.transformFor(i);r[e]=a.deserialize(r[e])},this);return r},normalize:function(e,r){if(!r){return r}this.normalizeId(r);this.normalizeAttributes(e,r);this.normalizeRelationships(e,r);this.normalizeUsingDeclaredMapping(e,r);this.applyTransforms(e,r);return r},normalizePayload:function(e){return e},normalizeAttributes:function(e,r){var t;if(this.keyForAttribute){e.eachAttribute(function(e){t=this.keyForAttribute(e);if(e===t){return}if(!r.hasOwnProperty(t)){return}r[e]=r[t];delete r[t]},this)}},normalizeRelationships:function(e,r){var t;if(this.keyForRelationship){e.eachRelationship(function(e,i){t=this.keyForRelationship(e,i.kind);if(e===t){return}if(!r.hasOwnProperty(t)){return}r[e]=r[t];delete r[t]},this)}},normalizeUsingDeclaredMapping:function(e,t){var i=r(this,"attrs"),a,n;if(i){for(n in i){a=this._getMappedKey(n);if(!t.hasOwnProperty(a)){continue}if(a!==n){t[n]=t[a];delete t[a]}}}},normalizeId:function(e){var t=r(this,"primaryKey");if(t==="id"){return}e.id=e[t];delete e[t]},_getMappedKey:function(e){var t=r(this,"attrs");var i;if(t&&t[e]){i=t[e];if(i.key){i=i.key}if(typeof i==="string"){e=i}}return e},_canSerialize:function(e){var t=r(this,"attrs");return!t||!t[e]||t[e].serialize!==false},serialize:function(e,t){var i={};if(t&&t.includeId){var a=r(e,"id");if(a){i[r(this,"primaryKey")]=a}}e.eachAttribute(function(r,t){this.serializeAttribute(e,i,r,t)},this);e.eachRelationship(function(r,t){if(t.kind==="belongsTo"){this.serializeBelongsTo(e,i,t)}else if(t.kind==="hasMany"){this.serializeHasMany(e,i,t)}},this);return i},serializeIntoHash:function(e,r,t,i){a(e,this.serialize(t,i))},serializeAttribute:function(e,t,i,a){var n=a.type;if(this._canSerialize(i)){var s=r(e,i);if(n){var o=this.transformFor(n);s=o.serialize(s)}var u=this._getMappedKey(i);if(u===i&&this.keyForAttribute){u=this.keyForAttribute(i)}t[u]=s}},serializeBelongsTo:function(e,i,a){var n=a.key;if(this._canSerialize(n)){var s=r(e,n);var o=this._getMappedKey(n);if(o===n&&this.keyForRelationship){o=this.keyForRelationship(n,"belongsTo")}if(t(s)||t(r(s,"id"))){i[o]=null}else{i[o]=r(s,"id")}if(a.options.polymorphic){this.serializePolymorphicType(e,i,a)}}},serializeHasMany:function(e,t,i){var a=i.key;if(this._canSerialize(a)){var n;n=this._getMappedKey(a);if(n===a&&this.keyForRelationship){n=this.keyForRelationship(a,"hasMany")}var s=e.constructor.determineRelationshipType(i);if(s==="manyToNone"||s==="manyToMany"){t[n]=r(e,a).mapBy("id")}}},serializePolymorphicType:Ember.K,extract:function(e,r,t,i,a){this.extractMeta(e,r,t);var n="extract"+a.charAt(0).toUpperCase()+a.substr(1);return this[n](e,r,t,i,a)},extractFindAll:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractFindQuery:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractFindMany:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractFindHasMany:function(e,r,t,i,a){return this.extractArray(e,r,t,i,a)},extractCreateRecord:function(e,r,t,i,a){return this.extractSave(e,r,t,i,a)},extractUpdateRecord:function(e,r,t,i,a){return this.extractSave(e,r,t,i,a)},extractDeleteRecord:function(e,r,t,i,a){return this.extractSave(e,r,t,i,a)},extractFind:function(e,r,t,i,a){return this.extractSingle(e,r,t,i,a)},extractFindBelongsTo:function(e,r,t,i,a){return this.extractSingle(e,r,t,i,a)},extractSave:function(e,r,t,i,a){return this.extractSingle(e,r,t,i,a)},extractSingle:function(e,r,t,i,a){t=this.normalizePayload(t);return this.normalize(r,t)},extractArray:function(e,r,t,a,n){var s=this.normalizePayload(t);var o=this;return i.call(s,function(e){return o.normalize(r,e)})},extractMeta:function(e,r,t){if(t&&t.meta){e.metaForType(r,t.meta);delete t.meta}},keyForAttribute:function(e){return e},keyForRelationship:function(e,r){return e},transformFor:function(e,r){var t=this.container.lookup("transform:"+e);return t}})});r("ember-data/serializers/rest_serializer",["ember-data/serializers/json_serializer","ember-inflector/system/string","exports"],function(e,r,t){"use strict";var i=e["default"];var a=Ember.get;var n=Ember.ArrayPolyfills.forEach;var s=Ember.ArrayPolyfills.map;var o=Ember.String.camelize;var u=r.singularize;function d(e){return e==null?null:e+""}var c=i.extend({normalize:function(e,r,t){this.normalizeId(r);this.normalizeAttributes(e,r);this.normalizeRelationships(e,r);this.normalizeUsingDeclaredMapping(e,r);if(this.normalizeHash&&this.normalizeHash[t]){this.normalizeHash[t](r)}this.applyTransforms(e,r);return r},extractSingle:function(e,r,t,i){var a=this.normalizePayload(t);var s=r.typeKey;var o;for(var u in a){var c=this.typeForRoot(u);if(!e.modelFactoryFor(c)){continue}var l=e.modelFor(c);var f=l.typeKey===s;var h=a[u];if(f&&Ember.typeOf(h)!=="array"){o=this.normalize(r,h,u);continue}n.call(h,function(r){var t=this.typeForRoot(u);var a=e.modelFor(t);var n=e.serializerFor(a);r=n.normalize(a,r,u);var s=f&&!i&&!o;var c=f&&d(r.id)===i;if(s||c){o=r}else{e.push(t,r)}},this)}return o},extractArray:function(e,r,t){var i=this.normalizePayload(t);var a=r.typeKey;var n;for(var o in i){var u=o;var d=false;if(o.charAt(0)==="_"){d=true;u=o.substr(1)}var c=this.typeForRoot(u);if(!e.modelFactoryFor(c)){continue}var l=e.modelFor(c);var f=e.serializerFor(l);var h=!d&&l.typeKey===a;var p=s.call(i[o],function(e){return f.normalize(l,e,o)},this);if(h){n=p}else{e.pushMany(c,p)}}return n},pushPayload:function(e,r){var t=this.normalizePayload(r);for(var i in t){var a=this.typeForRoot(i);if(!e.modelFactoryFor(a,i)){continue}var n=e.modelFor(a);var o=e.serializerFor(n);var u=s.call(Ember.makeArray(t[i]),function(e){return o.normalize(n,e,i)},this);e.pushMany(a,u)}},typeForRoot:function(e){return o(u(e))},serialize:function(e,r){return this._super.apply(this,arguments)},serializeIntoHash:function(e,r,t,i){e[r.typeKey]=this.serialize(t,i)},serializePolymorphicType:function(e,r,t){var i=t.key;var n=a(e,i);i=this.keyForAttribute?this.keyForAttribute(i):i;if(Ember.isNone(n)){r[i+"Type"]=null}else{r[i+"Type"]=Ember.String.camelize(n.constructor.typeKey)}}});t["default"]=c});r("ember-data/setup-container",["ember-data/initializers/store","ember-data/initializers/transforms","ember-data/initializers/store_injections","ember-data/initializers/data_adapter","activemodel-adapter/setup-container","exports"],function(e,r,t,i,a,n){"use strict";var s=e["default"];var o=r["default"];var u=t["default"];var d=i["default"];var c=a["default"];n["default"]=function l(e,r){d(e,r);o(e,r);u(e,r);s(e,r);c(e,r)}});r("ember-data/system/adapter",["exports"],function(e){"use strict";var r=Ember.get;var t=["description","fileName","lineNumber","message","name","number","stack"];function i(e){var r=Error.prototype.constructor.call(this,"The backend rejected the commit because it was invalid: "+Ember.inspect(e));this.errors=e;for(var i=0,a=t.length;i<a;i++){this[t[i]]=r[t[i]]}}i.prototype=Ember.create(Error.prototype);var a=Ember.Object.extend({find:Ember.required(Function),findAll:null,findQuery:null,generateIdForRecord:null,serialize:function(e,t){return r(e,"store").serializerFor(e.constructor.typeKey).serialize(e,t)},createRecord:Ember.required(Function),updateRecord:Ember.required(Function),deleteRecord:Ember.required(Function),coalesceFindRequests:true,groupRecordsForFindMany:function(e,r){return[r]}});e.InvalidError=i;e.Adapter=a;e["default"]=a});r("ember-data/system/container_proxy",["exports"],function(e){"use strict";function r(e){this.container=e}r.prototype.aliasedFactory=function(e,r){var t=this;return{create:function(){if(r){r()}return t.container.lookup(e)}}};r.prototype.registerAlias=function(e,r,t){var i=this.aliasedFactory(r,t);return this.container.register(e,i)};r.prototype.registerDeprecation=function(e,r){var t=function(){};return this.registerAlias(e,r,t)};r.prototype.registerDeprecations=function(e){var r,t,i,a;for(r=e.length;r>0;r--){t=e[r-1];i=t["deprecated"];a=t["valid"];this.registerDeprecation(i,a)}};e["default"]=r});r("ember-data/system/debug",["ember-data/system/debug/debug_info","ember-data/system/debug/debug_adapter","exports"],function(e,r,t){"use strict";var i=r["default"];t["default"]=i});r("ember-data/system/debug/debug_adapter",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;var i=Ember.get;var a=Ember.String.capitalize;var n=Ember.String.underscore;r["default"]=Ember.DataAdapter.extend({getFilters:function(){return[{name:"isNew",desc:"New"},{name:"isModified",desc:"Modified"},{name:"isClean",desc:"Clean"}]},detect:function(e){return e!==t&&t.detect(e)},columnsForType:function(e){var r=[{name:"id",desc:"Id"}];var t=0;var s=this;i(e,"attributes").forEach(function(e,i){if(t++>s.attributeLimit){return false}var o=a(n(i).replace("_"," "));r.push({name:i,desc:o})});return r},getRecords:function(e){return this.get("store").all(e)},getRecordColumnValues:function(e){var r=this,t=0;var a={id:i(e,"id")};e.eachAttribute(function(n){if(t++>r.attributeLimit){return false}var s=i(e,n);a[n]=s});return a},getRecordKeywords:function(e){var r=[];var t=Ember.A(["id"]);e.eachAttribute(function(e){t.push(e)});t.forEach(function(t){r.push(i(e,t))});return r},getRecordFilterValues:function(e){return{isNew:e.get("isNew"),isModified:e.get("isDirty")&&!e.get("isNew"),isClean:!e.get("isDirty")}},getRecordColor:function(e){var r="black";if(e.get("isNew")){r="green"}else if(e.get("isDirty")){r="blue"}return r},observeRecord:function(e,r){var t=Ember.A(),i=this;var a=Ember.A(["id","isNew","isDirty"]);e.eachAttribute(function(e){a.push(e)});a.forEach(function(a){var n=function(){r(i.wrapRecord(e))};Ember.addObserver(e,a,n);t.push(function(){Ember.removeObserver(e,a,n)})});var n=function(){t.forEach(function(e){e()})};return n}})});r("ember-data/system/debug/debug_info",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;t.reopen({_debugInfo:function(){var e=["id"],r={belongsTo:[],hasMany:[]},t=[];this.eachAttribute(function(r,t){e.push(r)},this);this.eachRelationship(function(e,i){r[i.kind].push(e);t.push(e)});var i=[{name:"Attributes",properties:e,expand:true},{name:"Belongs To",properties:r.belongsTo,expand:true},{name:"Has Many",properties:r.hasMany,expand:true},{name:"Flags",properties:["isLoaded","isDirty","isSaving","isDeleted","isError","isNew","isValid"]}];return{propertyInfo:{includeOtherProperties:true,groups:i,expensiveProperties:t}}}});r["default"]=t});r("ember-data/system/map",["exports"],function(e){"use strict";var r,t;function i(){Ember.OrderedSet.apply(this,arguments)}function a(){Ember.Map.apply(this,arguments)}function n(){Ember.MapWithDefault.apply(this,arguments)}var s=Ember.Map.create();s.set("key","value");var o=false;s.forEach(function(e,r){o=e==="key"&&r==="value"});a.prototype=Object.create(Ember.Map.prototype);n.prototype=Object.create(Ember.MapWithDefault.prototype);i.prototype=Object.create(Ember.OrderedSet.prototype);i.create=function(){return new i};function u(e){return function(r,t){e.call(this,t,r)}}if(o){r=function(e,r){this.__super$forEach(u(e),r)};t=function(e){this.remove(e)};a.prototype.__super$forEach=Ember.Map.prototype.forEach;a.prototype.forEach=r;a.prototype["delete"]=t;n.prototype.forEach=r;n.prototype.__super$forEach=Ember.MapWithDefault.prototype.forEach;n.prototype["delete"]=t;i.prototype["delete"]=t}n.constructor=n;a.constructor=a;n.create=function(e){if(e){return new n(e)}else{return new a}};a.create=function(){return new this.constructor};e["default"]=a;e.Map=a;e.MapWithDefault=n;e.OrderedSet=i});r("ember-data/system/model",["ember-data/system/model/model","ember-data/system/model/attributes","ember-data/system/model/states","ember-data/system/model/errors","exports"],function(e,r,t,i,a){"use strict";var n=e["default"];var s=r["default"];var o=t["default"];var u=i["default"];a.Model=n;a.RootState=o;a.attr=s;a.Errors=u});r("ember-data/system/model/attributes",["ember-data/system/model/model","ember-data/system/map","exports"],function(e,r,t){"use strict";var i=e["default"];var a=r.Map;var n=Ember.get;i.reopenClass({attributes:Ember.computed(function(){var e=a.create();this.eachComputedProperty(function(r,t){if(t.isAttribute){t.name=r;e.set(r,t)}});return e}).readOnly(),transformedAttributes:Ember.computed(function(){var e=a.create();this.eachAttribute(function(r,t){if(t.type){e.set(r,t.type)}});return e}).readOnly(),eachAttribute:function(e,r){n(this,"attributes").forEach(function(t,i){e.call(r,i,t)},r)},eachTransformedAttribute:function(e,r){n(this,"transformedAttributes").forEach(function(t,i){e.call(r,i,t)})}});i.reopen({eachAttribute:function(e,r){this.constructor.eachAttribute(e,r)}});function s(e,r,t){if(typeof r.defaultValue==="function"){return r.defaultValue.apply(null,arguments)}else{return r.defaultValue}}function o(e,r){return e._attributes.hasOwnProperty(r)||e._inFlightAttributes.hasOwnProperty(r)||e._data.hasOwnProperty(r)
2
+ }function u(e,r){if(e._attributes.hasOwnProperty(r)){return e._attributes[r]}else if(e._inFlightAttributes.hasOwnProperty(r)){return e._inFlightAttributes[r]}else{return e._data[r]}}t["default"]=function d(e,r){r=r||{};var t={type:e,isAttribute:true,options:r};return Ember.computed("data",function(e,t){if(arguments.length>1){var i=u(this,e);if(t!==i){this._attributes[e]=t;this.send("didSetProperty",{name:e,oldValue:i,originalValue:this._data[e],value:t})}return t}else if(o(this,e)){return u(this,e)}else{return s(this,r,e)}}).meta(t)}});r("ember-data/system/model/errors",["ember-data/system/map","exports"],function(e,r){"use strict";var t=Ember.get;var i=Ember.isEmpty;var a=Ember.EnumerableUtils.map;var n=e.MapWithDefault;r["default"]=Ember.Object.extend(Ember.Enumerable,Ember.Evented,{registerHandlers:function(e,r,t){this.on("becameInvalid",e,r);this.on("becameValid",e,t)},errorsByAttributeName:Ember.reduceComputed("content",{initialValue:function(){return n.create({defaultValue:function(){return Ember.A()}})},addedItem:function(e,r){e.get(r.attribute).pushObject(r);return e},removedItem:function(e,r){e.get(r.attribute).removeObject(r);return e}}),errorsFor:function(e){return t(this,"errorsByAttributeName").get(e)},messages:Ember.computed.mapBy("content","message"),content:Ember.computed(function(){return Ember.A()}),unknownProperty:function(e){var r=this.errorsFor(e);if(i(r)){return null}return r},nextObject:function(e,r,i){return t(this,"content").objectAt(e)},length:Ember.computed.oneWay("content.length").readOnly(),isEmpty:Ember.computed.not("length").readOnly(),add:function(e,r){var i=t(this,"isEmpty");r=this._findOrCreateMessages(e,r);t(this,"content").addObjects(r);this.notifyPropertyChange(e);this.enumerableContentDidChange();if(i&&!t(this,"isEmpty")){this.trigger("becameInvalid")}},_findOrCreateMessages:function(e,r){var t=this.errorsFor(e);return a(Ember.makeArray(r),function(r){return t.findBy("message",r)||{attribute:e,message:r}})},remove:function(e){if(t(this,"isEmpty")){return}var r=t(this,"content").rejectBy("attribute",e);t(this,"content").setObjects(r);this.notifyPropertyChange(e);this.enumerableContentDidChange();if(t(this,"isEmpty")){this.trigger("becameValid")}},clear:function(){if(t(this,"isEmpty")){return}t(this,"content").clear();this.enumerableContentDidChange();this.trigger("becameValid")},has:function(e){return!i(this.errorsFor(e))}})});r("ember-data/system/model/model",["ember-data/system/model/states","ember-data/system/model/errors","ember-data/system/promise_proxies","ember-data/system/relationships/relationship","exports"],function(e,r,i,a,n){"use strict";var s=e["default"];var o=r["default"];var u=i.PromiseObject;var d=a.createRelationshipFor;var c=Ember.get;var l=Ember.set;var f=Ember.merge;var h=Ember.RSVP.Promise;var p=Ember.ArrayPolyfills.forEach;var m=Ember.ArrayPolyfills.map;var y;var v=Ember.computed("currentState",function(e,r){return c(c(this,"currentState"),e)}).readOnly();var b=Object.create(null);var g=Object.create(null);function R(e){return g[e]||(g[e]=e.split("."))}function E(e){return b[e]||(b[e]=R(e)[0])}var _=Ember.Object.extend(Ember.Evented,{_recordArrays:undefined,_relationships:undefined,_loadingRecordArrays:undefined,isEmpty:v,isLoading:v,isLoaded:v,isDirty:v,isSaving:v,isDeleted:v,isNew:v,isValid:v,dirtyType:v,isError:false,isReloading:false,clientId:null,id:null,currentState:s.empty,errors:Ember.computed(function(){var e=o.create();e.registerHandlers(this,function(){this.send("becameInvalid")},function(){this.send("becameValid")});return e}).readOnly(),serialize:function(e){var r=c(this,"store");return r.serialize(this,e)},toJSON:function(e){if(!y){y=t("ember-data/serializers/json_serializer")["default"]}var r=y.create({container:this.container});return r.serialize(this,e)},didLoad:Ember.K,didUpdate:Ember.K,didCreate:Ember.K,didDelete:Ember.K,becameInvalid:Ember.K,becameError:Ember.K,data:Ember.computed(function(){this._data=this._data||{};return this._data}).readOnly(),_data:null,init:function(){this._super();this._setup()},_setup:function(){this._changesToSync={};this._deferredTriggers=[];this._data={};this._attributes={};this._inFlightAttributes={};this._relationships={};this._implicitRelationships=Object.create(null);var e=this;this.constructor.eachRelationship(function(r,t){e._relationships[r]=d(e,t,e.store)})},send:function(e,r){var t=c(this,"currentState");if(!t[e]){this._unhandledEvent(t,e,r)}return t[e](this,r)},transitionTo:function(e){var r=E(e);var t=c(this,"currentState");var i=t;do{if(i.exit){i.exit(this)}i=i.parentState}while(!i.hasOwnProperty(r));var a=R(e);var n=[],s=[],o,u;for(o=0,u=a.length;o<u;o++){i=i[a[o]];if(i.enter){s.push(i)}if(i.setup){n.push(i)}}for(o=0,u=s.length;o<u;o++){s[o].enter(this)}l(this,"currentState",i);for(o=0,u=n.length;o<u;o++){n[o].setup(this)}this.updateRecordArraysLater()},_unhandledEvent:function(e,r,t){var i="Attempted to handle event `"+r+"` ";i+="on "+String(this)+" while in state ";i+=e.stateName+". ";if(t!==undefined){i+="Called with "+Ember.inspect(t)+"."}throw new Ember.Error(i)},withTransaction:function(e){var r=c(this,"transaction");if(r){e(r)}},loadingData:function(e){this.send("loadingData",e)},loadedData:function(){this.send("loadedData")},notFound:function(){this.send("notFound")},pushedData:function(){this.send("pushedData")},deleteRecord:function(){this.send("deleteRecord")},destroyRecord:function(){this.deleteRecord();return this.save()},unloadRecord:function(){if(this.isDestroyed){return}this.send("unloadRecord")},clearRelationships:function(){this.eachRelationship(function(e,r){var t=this._relationships[e];if(t){t.clear();t.destroy()}},this)},disconnectRelationships:function(){this.eachRelationship(function(e,r){this._relationships[e].disconnect()},this);var e=this;p.call(Ember.keys(this._implicitRelationships),function(r){e._implicitRelationships[r].disconnect()})},reconnectRelationships:function(){this.eachRelationship(function(e,r){this._relationships[e].reconnect()},this);var e=this;p.call(Ember.keys(this._implicitRelationships),function(r){e._implicitRelationships[r].reconnect()})},updateRecordArrays:function(){this._updatingRecordArraysLater=false;c(this,"store").dataWasUpdated(this.constructor,this)},_preloadData:function(e){var r=this;p.call(Ember.keys(e),function(t){var i=c(e,t);var a=r.constructor.metaForProperty(t);if(a.isRelationship){r._preloadRelationship(t,i)}else{c(r,"_data")[t]=i}})},_preloadRelationship:function(e,r){var t=this.constructor.metaForProperty(e);var i=t.type;if(t.kind==="hasMany"){this._preloadHasMany(e,r,i)}else{this._preloadBelongsTo(e,r,i)}},_preloadHasMany:function(e,r,t){var i=this;var a=m.call(r,function(e){return i._convertStringOrNumberIntoRecord(e,t)});this._relationships[e].updateRecordsFromAdapter(a)},_preloadBelongsTo:function(e,r,t){var i=this._convertStringOrNumberIntoRecord(r,t);this._relationships[e].setRecord(i)},_convertStringOrNumberIntoRecord:function(e,r){if(Ember.typeOf(e)==="string"||Ember.typeOf(e)==="number"){return this.store.recordForId(r,e)}return e},changedAttributes:function(){var e=c(this,"_data");var r=c(this,"_attributes");var t={};var i;for(i in r){t[i]=[e[i],r[i]]}return t},adapterWillCommit:function(){this.send("willCommit")},adapterDidCommit:function(e){l(this,"isError",false);if(e){this._data=e}else{Ember.mixin(this._data,this._inFlightAttributes)}this._inFlightAttributes={};this.send("didCommit");this.updateRecordArraysLater();if(!e){return}this.notifyPropertyChange("data")},adapterDidDirty:function(){this.send("becomeDirty");this.updateRecordArraysLater()},updateRecordArraysLater:function(){if(this._updatingRecordArraysLater){return}this._updatingRecordArraysLater=true;Ember.run.schedule("actions",this,this.updateRecordArrays)},setupData:function(e,r){if(r){Ember.merge(this._data,e)}else{this._data=e}if(e){this.pushedData()}this.notifyPropertyChange("data")},materializeId:function(e){l(this,"id",e)},materializeAttributes:function(e){f(this._data,e)},materializeAttribute:function(e,r){this._data[e]=r},rollback:function(){this._attributes={};if(c(this,"isError")){this._inFlightAttributes={};l(this,"isError",false)}if(c(this,"isDeleted")){this.reconnectRelationships()}if(!c(this,"isValid")){this._inFlightAttributes={}}this.send("rolledBack");this.notifyPropertyChange("data")},toStringExtension:function(){return c(this,"id")},save:function(){var e="DS: Model#save "+this;var r=Ember.RSVP.defer(e);this.get("store").scheduleSave(this,r);this._inFlightAttributes=this._attributes;this._attributes={};return u.create({promise:r.promise})},reload:function(){l(this,"isReloading",true);var e=this;var r="DS: Model#reload of "+this;var t=new h(function(r){e.send("reloadRecord",r)},r).then(function(){e.set("isReloading",false);e.set("isError",false);return e},function(r){e.set("isError",true);throw r},"DS: Model#reload complete, update flags")["finally"](function(){e.updateRecordArrays()});return u.create({promise:t})},adapterDidUpdateAttribute:function(e,r){if(r!==undefined){this._data[e]=r;this.notifyPropertyChange(e)}else{this._data[e]=this._inFlightAttributes[e]}this.updateRecordArraysLater()},adapterDidInvalidate:function(e){var r=c(this,"errors");function t(t){if(e[t]){r.add(t,e[t])}}this.eachAttribute(t);this.eachRelationship(t)},adapterDidError:function(){this.send("becameError");l(this,"isError",true)},trigger:function(){var e=arguments.length;var r=new Array(e-1);var t=arguments[0];for(var i=1;i<e;i++){r[i-1]=arguments[i]}Ember.tryInvoke(this,t,r);this._super.apply(this,arguments)},triggerLater:function(){var e=arguments.length;var r=new Array(e);for(var t=0;t<e;t++){r[t]=arguments[t]}if(this._deferredTriggers.push(r)!==1){return}Ember.run.schedule("actions",this,"_triggerDeferredTriggers")},_triggerDeferredTriggers:function(){for(var e=0,r=this._deferredTriggers.length;e<r;e++){this.trigger.apply(this,this._deferredTriggers[e])}this._deferredTriggers.length=0},willDestroy:function(){this._super();this.clearRelationships()},willMergeMixin:function(e){}});_.reopenClass({_create:_.create,create:function(){throw new Ember.Error("You should not call `create` on a model. Instead, call `store.createRecord` with the attributes you would like to set.")}});n["default"]=_});r("ember-data/system/model/states",["exports"],function(e){"use strict";var r=Ember.get;var t=Ember.set;function i(e,r){if(r.value===r.originalValue){delete e._attributes[r.name];e.send("propertyWasReset",r.name)}else if(r.value!==r.oldValue){e.send("becomeDirty")}e.updateRecordArraysLater()}var a={initialState:"uncommitted",isDirty:true,uncommitted:{didSetProperty:i,loadingData:Ember.K,propertyWasReset:function(e,r){var t=Ember.keys(e._attributes);var i=t>0;if(!i){e.send("rolledBack")}},pushedData:Ember.K,becomeDirty:Ember.K,willCommit:function(e){e.transitionTo("inFlight")},reloadRecord:function(e,t){t(r(e,"store").reloadRecord(e))},rolledBack:function(e){e.transitionTo("loaded.saved")},becameInvalid:function(e){e.transitionTo("invalid")},rollback:function(e){e.rollback()}},inFlight:{isSaving:true,didSetProperty:i,becomeDirty:Ember.K,pushedData:Ember.K,unloadRecord:function(e){},willCommit:Ember.K,didCommit:function(e){var t=r(this,"dirtyType");e.transitionTo("saved");e.send("invokeLifecycleCallbacks",t)},becameInvalid:function(e){e.transitionTo("invalid");e.send("invokeLifecycleCallbacks")},becameError:function(e){e.transitionTo("uncommitted");e.triggerLater("becameError",e)}},invalid:{isValid:false,deleteRecord:function(e){e.transitionTo("deleted.uncommitted");e.disconnectRelationships()},didSetProperty:function(e,t){r(e,"errors").remove(t.name);i(e,t)},becomeDirty:Ember.K,willCommit:function(e){r(e,"errors").clear();e.transitionTo("inFlight")},rolledBack:function(e){r(e,"errors").clear()},becameValid:function(e){e.transitionTo("uncommitted")},invokeLifecycleCallbacks:function(e){e.triggerLater("becameInvalid",e)},exit:function(e){e._inFlightAttributes={}}}};function n(e){var r={},t;for(var i in e){t=e[i];if(t&&typeof t==="object"){r[i]=n(t)}else{r[i]=t}}return r}function s(e,r){for(var t in r){e[t]=r[t]}return e}function o(e){var r=n(a);return s(r,e)}var u=o({dirtyType:"created",isNew:true});u.uncommitted.rolledBack=function(e){e.transitionTo("deleted.saved")};var d=o({dirtyType:"updated"});u.uncommitted.deleteRecord=function(e){e.disconnectRelationships();e.transitionTo("deleted.saved")};u.uncommitted.rollback=function(e){a.uncommitted.rollback.apply(this,arguments);e.transitionTo("deleted.saved")};u.uncommitted.propertyWasReset=Ember.K;function c(e){}d.inFlight.unloadRecord=c;d.uncommitted.deleteRecord=function(e){e.transitionTo("deleted.uncommitted");e.disconnectRelationships()};var l={isEmpty:false,isLoading:false,isLoaded:false,isDirty:false,isSaving:false,isDeleted:false,isNew:false,isValid:true,rolledBack:Ember.K,unloadRecord:function(e){e.clearRelationships();e.transitionTo("deleted.saved")},propertyWasReset:Ember.K,empty:{isEmpty:true,loadingData:function(e,r){e._loadingPromise=r;e.transitionTo("loading")},loadedData:function(e){e.transitionTo("loaded.created.uncommitted");e.notifyPropertyChange("data")},pushedData:function(e){e.transitionTo("loaded.saved");e.triggerLater("didLoad")}},loading:{isLoading:true,exit:function(e){e._loadingPromise=null},pushedData:function(e){e.transitionTo("loaded.saved");e.triggerLater("didLoad");t(e,"isError",false)},becameError:function(e){e.triggerLater("becameError",e)},notFound:function(e){e.transitionTo("empty")}},loaded:{initialState:"saved",isLoaded:true,loadingData:Ember.K,saved:{setup:function(e){var r=e._attributes;var t=false;for(var i in r){if(r.hasOwnProperty(i)){t=true;break}}if(t){e.adapterDidDirty()}},didSetProperty:i,pushedData:Ember.K,becomeDirty:function(e){e.transitionTo("updated.uncommitted")},willCommit:function(e){e.transitionTo("updated.inFlight")},reloadRecord:function(e,t){t(r(e,"store").reloadRecord(e))},deleteRecord:function(e){e.transitionTo("deleted.uncommitted");e.disconnectRelationships()},unloadRecord:function(e){e.clearRelationships();e.transitionTo("deleted.saved")},didCommit:function(e){e.send("invokeLifecycleCallbacks",r(e,"lastDirtyType"))},notFound:Ember.K},created:u,updated:d},deleted:{initialState:"uncommitted",dirtyType:"deleted",isDeleted:true,isLoaded:true,isDirty:true,setup:function(e){e.updateRecordArrays()},uncommitted:{willCommit:function(e){e.transitionTo("inFlight")},rollback:function(e){e.rollback()},becomeDirty:Ember.K,deleteRecord:Ember.K,rolledBack:function(e){e.transitionTo("loaded.saved")}},inFlight:{isSaving:true,unloadRecord:c,willCommit:Ember.K,didCommit:function(e){e.transitionTo("saved");e.send("invokeLifecycleCallbacks")},becameError:function(e){e.transitionTo("uncommitted");e.triggerLater("becameError",e)}},saved:{isDirty:false,setup:function(e){var t=r(e,"store");t.dematerializeRecord(e)},invokeLifecycleCallbacks:function(e){e.triggerLater("didDelete",e);e.triggerLater("didCommit",e)},willCommit:Ember.K,didCommit:Ember.K}},invokeLifecycleCallbacks:function(e,r){if(r==="created"){e.triggerLater("didCreate",e)}else{e.triggerLater("didUpdate",e)}e.triggerLater("didCommit",e)}};function f(e,r,t){e=s(r?Ember.create(r):{},e);e.parentState=r;e.stateName=t;for(var i in e){if(!e.hasOwnProperty(i)||i==="parentState"||i==="stateName"){continue}if(typeof e[i]==="object"){e[i]=f(e[i],e,t+"."+i)}}return e}l=f(l,null,"root");e["default"]=l});r("ember-data/system/promise_proxies",["exports"],function(e){"use strict";var r=Ember.RSVP.Promise;var t=Ember.get;var i=Ember.ArrayProxy.extend(Ember.PromiseProxyMixin);var a=Ember.ObjectProxy.extend(Ember.PromiseProxyMixin);var n=function(e,t){return a.create({promise:r.resolve(e,t)})};var s=function(e,t){return i.create({promise:r.resolve(e,t)})};var o=i.extend({reload:function(){return t(this,"content").reload()}});var u=function(e,t){return o.create({promise:r.resolve(e,t)})};e.PromiseArray=i;e.PromiseObject=a;e.PromiseManyArray=o;e.promiseArray=s;e.promiseObject=n;e.promiseManyArray=u});r("ember-data/system/record_array_manager",["ember-data/system/record_arrays","ember-data/system/map","exports"],function(e,r,t){"use strict";var i=e.RecordArray;var a=e.FilteredRecordArray;var n=e.AdapterPopulatedRecordArray;var s=e.ManyArray;var o=r.MapWithDefault;var u=r.OrderedSet;var d=Ember.get;var c=Ember.EnumerableUtils.forEach;t["default"]=Ember.Object.extend({init:function(){this.filteredRecordArrays=o.create({defaultValue:function(){return[]}});this.changedRecords=[];this._adapterPopulatedRecordArrays=[]},recordDidChange:function(e){if(this.changedRecords.push(e)!==1){return}Ember.run.schedule("actions",this,this.updateRecordArrays)},recordArraysForRecord:function(e){e._recordArrays=e._recordArrays||u.create();return e._recordArrays},updateRecordArrays:function(){c(this.changedRecords,function(e){if(d(e,"isDeleted")){this._recordWasDeleted(e)}else{this._recordWasChanged(e)}},this);this.changedRecords.length=0},_recordWasDeleted:function(e){var r=e._recordArrays;if(!r){return}r.forEach(function(r){r.removeRecord(e)});e._recordArrays=null},_recordWasChanged:function(e){var r=e.constructor;var t=this.filteredRecordArrays.get(r);var i;c(t,function(t){i=d(t,"filterFunction");this.updateRecordArray(t,i,r,e)},this);var a=e._loadingRecordArrays;if(a){for(var n=0,s=a.length;n<s;n++){a[n].loadedRecord()}e._loadingRecordArrays=[]}},updateRecordArray:function(e,r,t,i){var a;if(!r){a=true}else{a=r(i)}var n=this.recordArraysForRecord(i);if(a){if(!n.has(e)){e.pushRecord(i);n.add(e)}}else if(!a){n["delete"](e);e.removeRecord(i)}},updateFilter:function(e,r,t){var i=this.store.typeMapFor(r);var a=i.records,n;for(var s=0,o=a.length;s<o;s++){n=a[s];if(!d(n,"isDeleted")&&!d(n,"isEmpty")){this.updateRecordArray(e,t,r,n)}}},createManyArray:function(e,r){var t=s.create({type:e,content:r,store:this.store});c(r,function(e){var r=this.recordArraysForRecord(e);r.add(t)},this);return t},createRecordArray:function(e){var r=i.create({type:e,content:Ember.A(),store:this.store,isLoaded:true});this.registerFilteredRecordArray(r,e);return r},createFilteredRecordArray:function(e,r,t){var i=a.create({query:t,type:e,content:Ember.A(),store:this.store,manager:this,filterFunction:r});this.registerFilteredRecordArray(i,e,r);return i},createAdapterPopulatedRecordArray:function(e,r){var t=n.create({type:e,query:r,content:Ember.A(),store:this.store,manager:this});this._adapterPopulatedRecordArrays.push(t);return t},registerFilteredRecordArray:function(e,r,t){var i=this.filteredRecordArrays.get(r);i.push(e);this.updateFilter(e,r,t)},registerWaitingRecordArray:function(e,r){var t=e._loadingRecordArrays||[];t.push(r);e._loadingRecordArrays=t},willDestroy:function(){this._super();c(h(l(this.filteredRecordArrays.values)),f);c(this._adapterPopulatedRecordArrays,f)}});function l(e){var r=[];var t=Ember.keys(e);for(var i=0;i<t.length;i++){r.push(e[t[i]])}return r}function f(e){e.destroy()}function h(e){var r=e.length;var t=Ember.A();for(var i=0;i<r;i++){t=t.concat(e[i])}return t}});r("ember-data/system/record_arrays",["ember-data/system/record_arrays/record_array","ember-data/system/record_arrays/filtered_record_array","ember-data/system/record_arrays/adapter_populated_record_array","ember-data/system/record_arrays/many_array","exports"],function(e,r,t,i,a){"use strict";var n=e["default"];var s=r["default"];var o=t["default"];var u=i["default"];a.RecordArray=n;a.FilteredRecordArray=s;a.AdapterPopulatedRecordArray=o;a.ManyArray=u});r("ember-data/system/record_arrays/adapter_populated_record_array",["ember-data/system/record_arrays/record_array","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get;function a(e){var r=Object.create(null);for(var t in e){r[t]=e[t]}return r}r["default"]=t.extend({query:null,replace:function(){var e=i(this,"type").toString();throw new Error("The result of a server query (on "+e+") is immutable.")},load:function(e){var r=i(this,"store");var t=i(this,"type");var n=r.pushMany(t,e);var s=r.metadataFor(t);this.setProperties({content:Ember.A(n),isLoaded:true,meta:a(s)});n.forEach(function(e){this.manager.recordArraysForRecord(e).add(this)},this);Ember.run.once(this,"trigger","didLoad")}})});r("ember-data/system/record_arrays/filtered_record_array",["ember-data/system/record_arrays/record_array","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get;r["default"]=t.extend({filterFunction:null,isLoaded:true,replace:function(){var e=i(this,"type").toString();throw new Error("The result of a client-side filter (on "+e+") is immutable.")},_updateFilter:function(){var e=i(this,"manager");e.updateFilter(this,i(this,"type"),i(this,"filterFunction"))},updateFilter:Ember.observer(function(){Ember.run.once(this,this._updateFilter)},"filterFunction")})});r("ember-data/system/record_arrays/many_array",["ember-data/system/record_arrays/record_array","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.get,a=Ember.set;r["default"]=t.extend({init:function(){this._super.apply(this,arguments)},isPolymorphic:false,isLoaded:false,relationship:null,promise:null,loadingRecordsCount:function(e){this.loadingRecordsCount=e},loadedRecord:function(){this.loadingRecordsCount--;if(this.loadingRecordsCount===0){a(this,"isLoaded",true);this.trigger("didLoad")}},replaceContent:function(e,r,t){var a;if(r>0){a=i(this,"content").slice(e,e+r);this.get("relationship").removeRecords(a)}if(t){this.get("relationship").addRecords(t,e)}},reload:function(){return this.relationship.reload()},createRecord:function(e){var r=i(this,"store");var t=i(this,"type");var a;a=r.createRecord.call(r,t,e);this.pushObject(a);return a}})});r("ember-data/system/record_arrays/record_array",["ember-data/system/promise_proxies","exports"],function(e,r){"use strict";var t=e.PromiseArray;var i=Ember.get;r["default"]=Ember.ArrayProxy.extend(Ember.Evented,{type:null,content:null,isLoaded:false,isUpdating:false,store:null,objectAtContent:function(e){var r=i(this,"content");return r.objectAt(e)},update:function(){if(i(this,"isUpdating")){return}var e=i(this,"store");var r=i(this,"type");return e.fetchAll(r,this)},addRecord:function(e,r){var t=i(this,"content");if(r===undefined){t.addObject(e)}else{if(!t.contains(e)){t.insertAt(r,e)}}},pushRecord:function(e){i(this,"content").pushObject(e)},removeRecord:function(e){i(this,"content").removeObject(e)},save:function(){var e="DS: RecordArray#save "+i(this,"type");var r=Ember.RSVP.all(this.invoke("save"),e).then(function(e){return Ember.A(e)},null,"DS: RecordArray#save apply Ember.NativeArray");return t.create({promise:r})},_dissociateFromOwnRecords:function(){var e=this;this.forEach(function(r){var t=r._recordArrays;if(t){t["delete"](e)}})},willDestroy:function(){this._dissociateFromOwnRecords();this._super()}})});r("ember-data/system/relationship-meta",["ember-inflector/system","exports"],function(e,r){"use strict";var t=e.singularize;function i(e,r){var i,a;i=r.type||r.key;if(typeof i==="string"){if(r.kind==="hasMany"){i=t(i)}a=e.modelFor(i)}else{a=r.type}return a}r.typeForRelationshipMeta=i;function a(e,r){return{key:r.key,kind:r.kind,type:i(e,r),options:r.options,parentType:r.parentType,isRelationship:true}}r.relationshipFromMeta=a});r("ember-data/system/relationships",["./relationships/belongs_to","./relationships/has_many","ember-data/system/relationships/ext","exports"],function(e,r,t,i){"use strict";var a=e["default"];var n=r["default"];i.belongsTo=a;i.hasMany=n});r("ember-data/system/relationships/belongs_to",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;function i(e,r){if(typeof e==="object"){r=e;e=undefined}else{}r=r||{};var t={type:e,isRelationship:true,options:r,kind:"belongsTo",key:null};return Ember.computed(function(e,r){if(arguments.length>1){if(r===undefined){r=null}if(r&&r.then){this._relationships[e].setRecordPromise(r)}else{this._relationships[e].setRecord(r)}}return this._relationships[e].getRecord()}).meta(t)}t.reopen({notifyBelongsToAdded:function(e,r){this.notifyPropertyChange(e)},notifyBelongsToRemoved:function(e){this.notifyPropertyChange(e)}});r["default"]=i});r("ember-data/system/relationships/ext",["ember-data/system/relationship-meta","ember-data/system/model","ember-data/system/map"],function(e,r,t){"use strict";var i=e.typeForRelationshipMeta;var a=e.relationshipFromMeta;var n=r.Model;var s=t.Map;var o=t.MapWithDefault;var u=Ember.get;var d=Ember.ArrayPolyfills.filter;n.reopen({didDefineProperty:function(e,r,t){if(t instanceof Ember.ComputedProperty){var i=t.meta();i.parentType=e.constructor}}});n.reopenClass({typeForRelationship:function(e){var r=u(this,"relationshipsByName").get(e);return r&&r.type},inverseMap:Ember.computed(function(){return Object.create(null)}),inverseFor:function(e){var r=u(this,"inverseMap");if(r[e]){return r[e]}else{var t=this._findInverseFor(e);r[e]=t;return t}},_findInverseFor:function(e){var r=this.typeForRelationship(e);if(!r){return null}var t=this.metaForProperty(e).options;if(t.inverse===null){return null}var i,a,n;if(t.inverse){i=t.inverse;n=Ember.get(r,"relationshipsByName").get(i);a=n.kind}else{var s=c(this,r);if(s.length===0){return null}var o=d.call(s,function(t){var i=r.metaForProperty(t.name).options;return e===i.inverse});if(o.length===1){s=o}i=s[0].name;a=s[0].kind}function c(r,t,i){var a=i||[];var n=u(t,"relationships");if(!n){return}var s=n.get(r);s=d.call(s,function(r){var i=t.metaForProperty(r.name).options;if(!i.inverse){return true}return e===i.inverse});if(s){a.push.apply(a,s)}if(r.superclass){c(r.superclass,t,a)}return a}return{type:r,name:i,kind:a}},relationships:Ember.computed(function(){var e=new o({defaultValue:function(){return[]}});this.eachComputedProperty(function(r,t){if(t.isRelationship){t.key=r;var a=e.get(i(this.store,t));a.push({name:r,kind:t.kind})}});return e}).cacheable(false).readOnly(),relationshipNames:Ember.computed(function(){var e={hasMany:[],belongsTo:[]};this.eachComputedProperty(function(r,t){if(t.isRelationship){e[t.kind].push(r)}});return e}),relatedTypes:Ember.computed(function(){var e;var r=Ember.A();this.eachComputedProperty(function(t,a){if(a.isRelationship){a.key=t;e=i(this.store,a);if(!r.contains(e)){r.push(e)}}});return r}).cacheable(false).readOnly(),relationshipsByName:Ember.computed(function(){var e=s.create();this.eachComputedProperty(function(r,t){if(t.isRelationship){t.key=r;var n=a(this.store,t);n.type=i(this.store,t);e.set(r,n)}});return e}).cacheable(false).readOnly(),fields:Ember.computed(function(){var e=s.create();this.eachComputedProperty(function(r,t){if(t.isRelationship){e.set(r,t.kind)}else if(t.isAttribute){e.set(r,"attribute")}});return e}).readOnly(),eachRelationship:function(e,r){u(this,"relationshipsByName").forEach(function(t,i){e.call(r,i,t)})},eachRelatedType:function(e,r){u(this,"relatedTypes").forEach(function(t){e.call(r,t)})},determineRelationshipType:function(e){var r=e.key;var t=e.kind;var i=this.inverseFor(r);var a,n;if(!i){return t==="belongsTo"?"oneToNone":"manyToNone"}a=i.name;n=i.kind;if(n==="belongsTo"){return t==="belongsTo"?"oneToOne":"manyToOne"}else{return t==="belongsTo"?"oneToMany":"manyToMany"}}});n.reopen({eachRelationship:function(e,r){this.constructor.eachRelationship(e,r)},relationshipFor:function(e){return u(this.constructor,"relationshipsByName").get(e)},inverseFor:function(e){return this.constructor.inverseFor(e)}})});r("ember-data/system/relationships/has_many",["ember-data/system/model","exports"],function(e,r){"use strict";var t=e.Model;function i(e,r){if(typeof e==="object"){r=e;e=undefined}r=r||{};var t={type:e,isRelationship:true,options:r,kind:"hasMany",key:null};return Ember.computed(function(e){var r=this._relationships[e];return r.getRecords()}).meta(t).readOnly()}t.reopen({notifyHasManyAdded:function(e,r,t){var i=this._relationships[e];var a=i.manyArray;a.addRecord(r,t);this.notifyPropertyChange(e)},notifyHasManyRemoved:function(e,r){var t=this._relationships[e];var i=t.manyArray;i.removeRecord(r)}});r["default"]=i});r("ember-data/system/relationships/relationship",["ember-data/system/promise_proxies","ember-data/system/map","exports"],function(e,r,t){"use strict";var i=e.PromiseManyArray;var a=e.PromiseObject;var n=r.OrderedSet;var s=function(e,r,t,i){this.members=new n;this.store=e;this.key=i.key;this.inverseKey=t;this.record=r;this.key=i.key;this.isAsync=i.options.async;this.relationshipMeta=i;this.inverseKeyForImplicit=this.store.modelFor(this.record.constructor).typeKey+this.key;this.linkPromise=null};s.prototype={constructor:s,destroy:Ember.K,clear:function(){this.members.forEach(function(e){this.removeRecord(e)},this)},disconnect:function(){this.members.forEach(function(e){this.removeRecordFromInverse(e)},this)},reconnect:function(){this.members.forEach(function(e){this.addRecordToInverse(e)},this)},removeRecords:function(e){var r=this;e.forEach(function(e){r.removeRecord(e)})},addRecords:function(e,r){var t=this;e.forEach(function(e){t.addRecord(e,r);if(r!==undefined){r++}})},addRecord:function(e,r){if(!this.members.has(e)){this.members.add(e);this.notifyRecordRelationshipAdded(e,r);if(this.inverseKey){e._relationships[this.inverseKey].addRecord(this.record)}else{if(!e._implicitRelationships[this.inverseKeyForImplicit]){e._implicitRelationships[this.inverseKeyForImplicit]=new s(this.store,e,this.key,{options:{}})}e._implicitRelationships[this.inverseKeyForImplicit].addRecord(this.record)}this.record.updateRecordArrays()}},removeRecord:function(e){if(this.members.has(e)){this.removeRecordFromOwn(e);if(this.inverseKey){this.removeRecordFromInverse(e)}else{if(e._implicitRelationships[this.inverseKeyForImplicit]){e._implicitRelationships[this.inverseKeyForImplicit].removeRecord(this.record)}}}},addRecordToInverse:function(e){if(this.inverseKey){e._relationships[this.inverseKey].addRecord(this.record)}},removeRecordFromInverse:function(e){var r=e._relationships[this.inverseKey];if(r){r.removeRecordFromOwn(this.record)}},removeRecordFromOwn:function(e){this.members["delete"](e);this.notifyRecordRelationshipRemoved(e);this.record.updateRecordArrays()},updateLink:function(e){if(e!==this.link){this.link=e;this.linkPromise=null;this.record.notifyPropertyChange(this.key)}},findLink:function(){if(this.linkPromise){return this.linkPromise}else{var e=this.fetchLink();this.linkPromise=e;return e.then(function(e){return e})}},updateRecordsFromAdapter:function(e){this.computeChanges(e)},notifyRecordRelationshipAdded:Ember.K,notifyRecordRelationshipRemoved:Ember.K};var o=function(e,r,t,i){this._super$constructor(e,r,t,i);this.belongsToType=i.type;this.manyArray=e.recordArrayManager.createManyArray(this.belongsToType,Ember.A());this.manyArray.relationship=this;this.isPolymorphic=i.options.polymorphic;this.manyArray.isPolymorphic=this.isPolymorphic};o.prototype=Object.create(s.prototype);o.prototype.constructor=o;o.prototype._super$constructor=s;o.prototype.destroy=function(){this.manyArray.destroy()};o.prototype.notifyRecordRelationshipAdded=function(e,r){this.record.notifyHasManyAdded(this.key,e,r)};o.prototype.notifyRecordRelationshipRemoved=function(e){this.record.notifyHasManyRemoved(this.key,e)};o.prototype.reload=function(){var e=this;if(this.link){return this.fetchLink()}else{return this.store.scheduleFetchMany(this.manyArray.toArray()).then(function(){e.manyArray.set("isLoaded",true);return e.manyArray})}};o.prototype.computeChanges=function(e){var r=this.members;var t=[];var i;var a;var n;e=d(e);r.forEach(function(r){if(e.has(r))return;t.push(r)});this.removeRecords(t);var s=this.manyArray;e=e.toArray();i=e.length;for(n=0;n<i;n++){a=e[n];if(s.objectAt(n)===a){continue}this.removeRecord(a);this.addRecord(a,n)}};o.prototype.fetchLink=function(){var e=this;return this.store.findHasMany(this.record,this.link,this.relationshipMeta).then(function(r){e.updateRecordsFromAdapter(r);return e.manyArray})};o.prototype.findRecords=function(){var e=this.manyArray;return this.store.findMany(e.toArray()).then(function(){e.set("isLoaded",true);return e})};o.prototype.getRecords=function(){if(this.isAsync){var e=this;var r;
3
+ if(this.link){r=this.findLink().then(function(){return e.findRecords()})}else{r=this.findRecords()}return i.create({content:this.manyArray,promise:r})}else{this.manyArray.set("isLoaded",true);return this.manyArray}};var u=function(e,r,t,i){this._super$constructor(e,r,t,i);this.record=r;this.key=i.key;this.inverseRecord=null};u.prototype=Object.create(s.prototype);u.prototype.constructor=u;u.prototype._super$constructor=s;u.prototype.setRecord=function(e){if(e){this.addRecord(e)}else if(this.inverseRecord){this.removeRecord(this.inverseRecord)}};u.prototype._super$addRecord=s.prototype.addRecord;u.prototype.addRecord=function(e){if(this.members.has(e)){return}var r=this.relationshipMeta.type;if(this.inverseRecord){this.removeRecord(this.inverseRecord)}this.inverseRecord=e;this._super$addRecord(e)};u.prototype.setRecordPromise=function(e){var r=e.get&&e.get("content");this.setRecord(r)};u.prototype.notifyRecordRelationshipAdded=function(e){this.record.notifyBelongsToAdded(this.key,this)};u.prototype.notifyRecordRelationshipRemoved=function(e){this.record.notifyBelongsToRemoved(this.key,this)};u.prototype._super$removeRecordFromOwn=s.prototype.removeRecordFromOwn;u.prototype.removeRecordFromOwn=function(e){if(!this.members.has(e)){return}this._super$removeRecordFromOwn(e);this.inverseRecord=null};u.prototype.findRecord=function(){if(this.inverseRecord){return this.store._findByRecord(this.inverseRecord)}else{return Ember.RSVP.Promise.resolve(null)}};u.prototype.fetchLink=function(){var e=this;return this.store.findBelongsTo(this.record,this.link,this.relationshipMeta).then(function(r){e.addRecord(r);return r})};u.prototype.getRecord=function(){if(this.isAsync){var e;if(this.link){var r=this;e=this.findLink().then(function(){return r.findRecord()})}else{e=this.findRecord()}return a.create({promise:e,content:this.inverseRecord})}else{return this.inverseRecord}};function d(e){var r=new n;if(e){for(var t=0,i=e.length;t<i;t++){r.add(e[t])}}return r}var c=function(e,r,t){var i;var a=e.constructor.inverseFor(r.key);if(a){i=a.name}if(r.kind==="hasMany"){return new o(t,e,i,r)}else{return new u(t,e,i,r)}};t.Relationship=s;t.ManyRelationship=o;t.BelongsToRelationship=u;t.createRelationshipFor=c});r("ember-data/system/store",["ember-data/system/adapter","ember-inflector/system/string","ember-data/system/map","ember-data/system/promise_proxies","exports"],function(e,r,i,a,n){"use strict";var s=e.InvalidError;var o=e.Adapter;var u=r.singularize;var d=i.Map;var c=a.promiseArray;var l=a.promiseObject;var f=Ember.get;var h=Ember.set;var p=Ember.run.once;var m=Ember.isNone;var y=Ember.EnumerableUtils.forEach;var v=Ember.EnumerableUtils.indexOf;var b=Ember.EnumerableUtils.map;var g=Ember.RSVP.Promise;var R=Ember.copy;var E,_,A;var F=Ember.String.camelize;function z(e){return e==null?null:e+""}E=Ember.Object.extend({init:function(){if(!_){_=t("ember-data/system/record_array_manager")["default"]}this.typeMaps={};this.recordArrayManager=_.create({store:this});this._pendingSave=[];this._pendingFetch=d.create()},adapter:"-rest",serialize:function(e,r){return this.serializerFor(e.constructor.typeKey).serialize(e,r)},defaultAdapter:Ember.computed("adapter",function(){var e=f(this,"adapter");if(typeof e==="string"){e=this.container.lookup("adapter:"+e)||this.container.lookup("adapter:application")||this.container.lookup("adapter:-rest")}if(DS.Adapter.detect(e)){e=e.create({container:this.container})}return e}),createRecord:function(e,r){var t=this.modelFor(e);var i=R(r)||{};if(m(i.id)){i.id=this._generateId(t)}i.id=z(i.id);var a=this.buildRecord(t,i.id);a.loadedData();a.setProperties(i);return a},_generateId:function(e){var r=this.adapterFor(e);if(r&&r.generateIdForRecord){return r.generateIdForRecord(this)}return null},deleteRecord:function(e){e.deleteRecord()},unloadRecord:function(e){e.unloadRecord()},find:function(e,r,t){if(arguments.length===1){return this.findAll(e)}if(Ember.typeOf(r)==="object"){return this.findQuery(e,r)}return this.findById(e,z(r),t)},findById:function(e,r,t){var i=this.modelFor(e);var a=this.recordForId(i,r);return this._findByRecord(a,t)},_findByRecord:function(e,r){var t;if(r){e._preloadData(r)}if(f(e,"isEmpty")){t=this.scheduleFetch(e)}else if(f(e,"isLoading")){t=e._loadingPromise}return l(t||e,"DS: Store#findByRecord "+e.typeKey+" with id: "+f(e,"id"))},findByIds:function(e,r){var t=this;return c(Ember.RSVP.all(b(r,function(r){return t.findById(e,r)})).then(Ember.A,null,"DS: Store#findByIds of "+e+" complete"))},fetchRecord:function(e){var r=e.constructor;var t=f(e,"id");var i=this.adapterFor(r);var a=$(i,this,r,t,e);return a},scheduleFetchMany:function(e){return Ember.RSVP.all(b(e,this.scheduleFetch,this))},scheduleFetch:function(e){var r=e.constructor;if(m(e)){return null}if(e._loadingPromise){return e._loadingPromise}var t=Ember.RSVP.defer("Fetching "+r+"with id: "+e.get("id"));var i={record:e,resolver:t};var a=t.promise;e.loadingData(a);if(!this._pendingFetch.get(r)){this._pendingFetch.set(r,[i])}else{this._pendingFetch.get(r).push(i)}Ember.run.scheduleOnce("afterRender",this,this.flushAllPendingFetches);return a},flushAllPendingFetches:function(){if(this.isDestroyed||this.isDestroying){return}this._pendingFetch.forEach(this._flushPendingFetchForType,this);this._pendingFetch=d.create()},_flushPendingFetchForType:function(e,r){var t=this;var i=t.adapterFor(r);var a=!!i.findMany&&i.coalesceFindRequests;var n=Ember.A(e).mapBy("record");function s(e){e.resolver.resolve(t.fetchRecord(e.record))}function o(r){y(r,function(r){var t=Ember.A(e).findBy("record",r);if(t){var i=t.resolver;i.resolve(r)}})}function u(e){return function r(t){var i=e.without(t);c(i)}}function d(e){return function(r){c(e,r)}}function c(r,t){y(r,function(r){var i=Ember.A(e).findBy("record",r);if(i){var a=i.resolver;a.reject(t)}})}if(e.length===1){s(e[0])}else if(a){var l=i.groupRecordsForFindMany(this,n);y(l,function(a){var n=Ember.A(a);var c=n.mapBy("id");if(c.length>1){I(i,t,r,c,n).then(o).then(u(n)).then(null,d(n))}else if(c.length===1){var l=Ember.A(e).findBy("record",a[0]);s(l)}else{}})}else{y(e,s)}},getById:function(e,r){if(this.hasRecordForId(e,r)){return this.recordForId(e,r)}else{return null}},reloadRecord:function(e){var r=e.constructor;var t=this.adapterFor(r);var i=f(e,"id");return this.scheduleFetch(e)},hasRecordForId:function(e,r){var t=this.modelFor(e);var i=z(r);return!!this.typeMapFor(t).idToRecord[i]},recordForId:function(e,r){var t=this.modelFor(e);var i=z(r);var a=this.typeMapFor(t).idToRecord;var n=a[i];if(!n||!a[i]){n=this.buildRecord(t,i)}return n},findMany:function(e){var r=this;return g.all(b(e,function(e){return r._findByRecord(e)}))},findHasMany:function(e,r,t){var i=this.adapterFor(e.constructor);return L(i,this,e,r,t)},findBelongsTo:function(e,r,t){var i=this.adapterFor(e.constructor);return j(i,this,e,r,t)},findQuery:function(e,r){var t=this.modelFor(e);var i=this.recordArrayManager.createAdapterPopulatedRecordArray(t,r);var a=this.adapterFor(t);return c(U(a,this,t,r,i))},findAll:function(e){var r=this.modelFor(e);return this.fetchAll(r,this.all(r))},fetchAll:function(e,r){var t=this.adapterFor(e);var i=this.typeMapFor(e).metadata.since;h(r,"isUpdating",true);return c(K(t,this,e,i))},didUpdateAll:function(e){var r=this.typeMapFor(e).findAllCache;h(r,"isUpdating",false)},all:function(e){var r=this.modelFor(e);var t=this.typeMapFor(r);var i=t.findAllCache;if(i){return i}var a=this.recordArrayManager.createRecordArray(r);t.findAllCache=a;return a},unloadAll:function(e){var r=this.modelFor(e);var t=this.typeMapFor(r);var i=t.records.slice();var a;for(var n=0;n<i.length;n++){a=i[n];a.unloadRecord();a.destroy()}t.findAllCache=null},filter:function(e,r,t){var i;var a=arguments.length;var n;var s=a===3;if(s){i=this.findQuery(e,r)}else if(arguments.length===2){t=r}e=this.modelFor(e);if(s){n=this.recordArrayManager.createFilteredRecordArray(e,t,r)}else{n=this.recordArrayManager.createFilteredRecordArray(e,t)}i=i||g.cast(n);return c(i.then(function(){return n},null,"DS: Store#filter of "+e))},recordIsLoaded:function(e,r){if(!this.hasRecordForId(e,r)){return false}return!f(this.recordForId(e,r),"isEmpty")},metadataFor:function(e){e=this.modelFor(e);return this.typeMapFor(e).metadata},dataWasUpdated:function(e,r){this.recordArrayManager.recordDidChange(r)},scheduleSave:function(e,r){e.adapterWillCommit();this._pendingSave.push([e,r]);p(this,"flushPendingSave")},flushPendingSave:function(){var e=this._pendingSave.slice();this._pendingSave=[];y(e,function(e){var r=e[0],t=e[1];var i=this.adapterFor(r.constructor);var a;if(f(r,"currentState.stateName")==="root.deleted.saved"){return t.resolve(r)}else if(f(r,"isNew")){a="createRecord"}else if(f(r,"isDeleted")){a="deleteRecord"}else{a="updateRecord"}t.resolve(B(i,this,a,r))},this)},didSaveRecord:function(e,r){if(r){r=x(this,e.constructor,r,e);N(this,e,r);this.updateId(e,r)}e.adapterDidCommit(r)},recordWasInvalid:function(e,r){e.adapterDidInvalidate(r)},recordWasError:function(e){e.adapterDidError()},updateId:function(e,r){var t=f(e,"id");var i=z(r.id);this.typeMapFor(e.constructor).idToRecord[i]=e;h(e,"id",i)},typeMapFor:function(e){var r=f(this,"typeMaps");var t=Ember.guidFor(e);var i;i=r[t];if(i){return i}i={idToRecord:Object.create(null),records:[],metadata:Object.create(null),type:e};r[t]=i;return i},_load:function(e,r,t){var i=z(r.id);var a=this.recordForId(e,i);a.setupData(r,t);this.recordArrayManager.recordDidChange(a);return a},modelFor:function(e){var r;if(typeof e==="string"){r=this.modelFactoryFor(e);if(!r){throw new Ember.Error("No model was found for '"+e+"'")}r.typeKey=r.typeKey||this._normalizeTypeKey(e)}else{r=e;if(r.typeKey){r.typeKey=this._normalizeTypeKey(r.typeKey)}}r.store=this;return r},modelFactoryFor:function(e){return this.container.lookupFactory("model:"+e)},push:function(e,r,t){var i=this.modelFor(e);r=x(this,i,r);this._load(i,r,t);var a=this.recordForId(i,r.id);N(this,a,r);return a},pushPayload:function(e,r){var t;var i;if(!r){i=e;t=D(this.container)}else{i=r;t=this.serializerFor(e)}t.pushPayload(this,i)},normalize:function(e,r){var t=this.serializerFor(e);var i=this.modelFor(e);return t.normalize(i,r)},update:function(e,r){return this.push(e,r,true)},pushMany:function(e,r){var t=r.length;var i=new Array(t);for(var a=0;a<t;a++){i[a]=this.push(e,r[a])}return i},metaForType:function(e,r){var t=this.modelFor(e);Ember.merge(this.typeMapFor(t).metadata,r)},buildRecord:function(e,r,t){var i=this.typeMapFor(e);var a=i.idToRecord;var n=e._create({id:r,store:this,container:this.container});if(t){n.setupData(t)}if(r){a[r]=n}i.records.push(n);return n},dematerializeRecord:function(e){var r=e.constructor;var t=this.typeMapFor(r);var i=f(e,"id");e.updateRecordArrays();if(i){delete t.idToRecord[i]}var a=v(t.records,e);t.records.splice(a,1)},adapterFor:function(e){var r=this.container,t;if(r){t=r.lookup("adapter:"+e.typeKey)||r.lookup("adapter:application")}return t||f(this,"defaultAdapter")},serializerFor:function(e){e=this.modelFor(e);var r=this.adapterFor(e);return M(this.container,e.typeKey,r&&r.defaultSerializer)},willDestroy:function(){var e=this.typeMaps;var r=Ember.keys(e);var t=b(r,i);this.recordArrayManager.destroy();y(t,this.unloadAll,this);function i(r){return e[r]["type"]}},_normalizeTypeKey:function(e){return F(u(e))}});function x(e,r,t,i){r.eachRelationship(function(r,i){var a=i.kind;var n=t[r];if(a==="belongsTo"){T(e,t,r,i,n)}else if(a==="hasMany"){k(e,t,r,i,n)}});return t}function T(e,r,i,a,n){if(!A){A=t("ember-data/system/model")["Model"]}if(m(n)||n instanceof A){return}var s;if(typeof n==="number"||typeof n==="string"){s=S(a,i,r);r[i]=e.recordForId(s,n)}else if(typeof n==="object"){r[i]=e.recordForId(n.type,n.id)}}function S(e,r,t){if(e.options.polymorphic){return t[r+"Type"]}else{return e.type}}function k(e,r,t,i,a){if(!Ember.isArray(a)){return}for(var n=0,s=a.length;n<s;n++){T(e,a,n,i,a[n])}}function M(e,r,t){return e.lookup("serializer:"+r)||e.lookup("serializer:application")||e.lookup("serializer:"+t)||e.lookup("serializer:-default")}function D(e){return e.lookup("serializer:application")||e.lookup("serializer:-default")}function P(e,r){var t=e.serializer;var i=e.defaultSerializer;var a=e.container;if(a&&t===undefined){t=M(a,r.typeKey,i)}if(t===null||t===undefined){t={extract:function(e,r,t){return t}}}return t}function O(e){return!(f(e,"isDestroyed")||f(e,"isDestroying"))}function C(e,r){var t=e["finally"](function(){if(!r()){t._subscribers.length=0}});return t}function w(e){var r=Array.prototype.slice.call(arguments,1);return function(){return e.apply(undefined,r)}}function $(e,r,t,i,a){var n=e.find(r,t,i,a);var s=P(e,t);var o="DS: Handle Adapter#find of "+t+" with id: "+i;n=g.cast(n,o);n=C(n,w(O,r));return n.then(function(e){var a=s.extract(r,t,e,i,"find");return r.push(t,a)},function(e){var a=r.getById(t,i);if(a){a.notFound()}throw e},"DS: Extract payload of '"+t+"'")}function I(e,r,t,i,a){var n=e.findMany(r,t,i,a);var s=P(e,t);var o="DS: Handle Adapter#findMany of "+t;if(n===undefined){throw new Error("adapter.findMany returned undefined, this was very likely a mistake")}n=g.cast(n,o);n=C(n,w(O,r));return n.then(function(e){var i=s.extract(r,t,e,null,"findMany");return r.pushMany(t,i)},null,"DS: Extract payload of "+t)}function L(e,r,t,i,a){var n=e.findHasMany(r,t,i,a);var s=P(e,a.type);var o="DS: Handle Adapter#findHasMany of "+t+" : "+a.type;n=g.cast(n,o);n=C(n,w(O,r));n=C(n,w(O,t));return n.then(function(e){var t=s.extract(r,a.type,e,null,"findHasMany");var i=r.pushMany(a.type,t);return i},null,"DS: Extract payload of "+t+" : hasMany "+a.type)}function j(e,r,t,i,a){var n=e.findBelongsTo(r,t,i,a);var s=P(e,a.type);var o="DS: Handle Adapter#findBelongsTo of "+t+" : "+a.type;n=g.cast(n,o);n=C(n,w(O,r));n=C(n,w(O,t));return n.then(function(e){var t=s.extract(r,a.type,e,null,"findBelongsTo");var i=r.push(a.type,t);return i},null,"DS: Extract payload of "+t+" : "+a.type)}function K(e,r,t,i){var a=e.findAll(r,t,i);var n=P(e,t);var s="DS: Handle Adapter#findAll of "+t;a=g.cast(a,s);a=C(a,w(O,r));return a.then(function(e){var i=n.extract(r,t,e,null,"findAll");r.pushMany(t,i);r.didUpdateAll(t);return r.all(t)},null,"DS: Extract payload of findAll "+t)}function U(e,r,t,i,a){var n=e.findQuery(r,t,i,a);var s=P(e,t);var o="DS: Handle Adapter#findQuery of "+t;n=g.cast(n,o);n=C(n,w(O,r));return n.then(function(e){var i=s.extract(r,t,e,null,"findQuery");a.load(i);return a},null,"DS: Extract payload of findQuery "+t)}function B(e,r,t,i){var a=i.constructor;var n=e[t](r,a,i);var o=P(e,a);var u="DS: Extract and notify about "+t+" completion of "+i;n=g.cast(n,u);n=C(n,w(O,r));n=C(n,w(O,i));return n.then(function(e){var n;if(e){n=o.extract(r,a,e,f(i,"id"),t)}else{n=e}r.didSaveRecord(i,n);return i},function(e){if(e instanceof s){r.recordWasInvalid(i,e.errors)}else{r.recordWasError(i,e)}throw e},u)}function N(e,r,t){var i=r.constructor;i.eachRelationship(function(e,i){var a=i.kind;var n=t[e];var s=r._relationships[e];if(t.links&&t.links[e]){s.updateLink(t.links[e])}if(a==="belongsTo"){if(n===undefined){return}s.setRecord(n)}else if(a==="hasMany"&&n){s.updateRecordsFromAdapter(n)}})}n.Store=E;n["default"]=E});r("ember-data/transforms",["ember-data/transforms/base","ember-data/transforms/number","ember-data/transforms/date","ember-data/transforms/string","ember-data/transforms/boolean","exports"],function(e,r,t,i,a,n){"use strict";var s=e["default"];var o=r["default"];var u=t["default"];var d=i["default"];var c=a["default"];n.Transform=s;n.NumberTransform=o;n.DateTransform=u;n.StringTransform=d;n.BooleanTransform=c});r("ember-data/transforms/base",["exports"],function(e){"use strict";e["default"]=Ember.Object.extend({serialize:Ember.required(),deserialize:Ember.required()})});r("ember-data/transforms/boolean",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];r["default"]=t.extend({deserialize:function(e){var r=typeof e;if(r==="boolean"){return e}else if(r==="string"){return e.match(/^true$|^t$|^1$/i)!==null}else if(r==="number"){return e===1}else{return false}},serialize:function(e){return Boolean(e)}})});r("ember-data/transforms/date",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];var i=Date.prototype.toISOString||function(){function e(e){if(e<10){return"0"+e}return e}return this.getUTCFullYear()+"-"+e(this.getUTCMonth()+1)+"-"+e(this.getUTCDate())+"T"+e(this.getUTCHours())+":"+e(this.getUTCMinutes())+":"+e(this.getUTCSeconds())+"."+(this.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z"};if(Ember.SHIM_ES5){if(!Date.prototype.toISOString){Date.prototype.toISOString=i}}r["default"]=t.extend({deserialize:function(e){var r=typeof e;if(r==="string"){return new Date(Ember.Date.parse(e))}else if(r==="number"){return new Date(e)}else if(e===null||e===undefined){return e}else{return null}},serialize:function(e){if(e instanceof Date){return i.call(e)}else{return null}}})});r("ember-data/transforms/number",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.isEmpty;r["default"]=t.extend({deserialize:function(e){return i(e)?null:Number(e)},serialize:function(e){return i(e)?null:Number(e)}})});r("ember-data/transforms/string",["ember-data/transforms/base","exports"],function(e,r){"use strict";var t=e["default"];var i=Ember.isNone;r["default"]=t.extend({deserialize:function(e){return i(e)?null:String(e)},serialize:function(e){return i(e)?null:String(e)}})});r("ember-inflector",["./system","./helpers","./ext/string","exports"],function(e,r,t,i){"use strict";var a=e.Inflector;var n=e.defaultRules;var s=e.pluralize;var o=e.singularize;a.defaultRules=n;Ember.Inflector=a;Ember.String.pluralize=s;Ember.String.singularize=o;i["default"]=a;i.pluralize=s;i.singularize=o});r("ember-inflector/ext/string",["../system/string"],function(e){"use strict";var r=e.pluralize;var t=e.singularize;if(Ember.EXTEND_PROTOTYPES===true||Ember.EXTEND_PROTOTYPES.String){String.prototype.pluralize=function(){return r(this)};String.prototype.singularize=function(){return t(this)}}});r("ember-inflector/helpers",["./system/string"],function(e){"use strict";var r=e.singularize;var t=e.pluralize;Ember.Handlebars.helper("singularize",r);Ember.Handlebars.helper("pluralize",t)});r("ember-inflector/system",["./system/inflector","./system/string","./system/inflections","exports"],function(e,r,t,i){"use strict";var a=e["default"];var n=r.pluralize;var s=r.singularize;var o=t["default"];a.inflector=new a(o);i.Inflector=a;i.singularize=s;i.pluralize=n;i.defaultRules=o});r("ember-inflector/system/inflections",["exports"],function(e){"use strict";e["default"]={plurals:[[/$/,"s"],[/s$/i,"s"],[/^(ax|test)is$/i,"$1es"],[/(octop|vir)us$/i,"$1i"],[/(octop|vir)i$/i,"$1i"],[/(alias|status)$/i,"$1es"],[/(bu)s$/i,"$1ses"],[/(buffal|tomat)o$/i,"$1oes"],[/([ti])um$/i,"$1a"],[/([ti])a$/i,"$1a"],[/sis$/i,"ses"],[/(?:([^f])fe|([lr])f)$/i,"$1$2ves"],[/(hive)$/i,"$1s"],[/([^aeiouy]|qu)y$/i,"$1ies"],[/(x|ch|ss|sh)$/i,"$1es"],[/(matr|vert|ind)(?:ix|ex)$/i,"$1ices"],[/^(m|l)ouse$/i,"$1ice"],[/^(m|l)ice$/i,"$1ice"],[/^(ox)$/i,"$1en"],[/^(oxen)$/i,"$1"],[/(quiz)$/i,"$1zes"]],singular:[[/s$/i,""],[/(ss)$/i,"$1"],[/(n)ews$/i,"$1ews"],[/([ti])a$/i,"$1um"],[/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/i,"$1sis"],[/(^analy)(sis|ses)$/i,"$1sis"],[/([^f])ves$/i,"$1fe"],[/(hive)s$/i,"$1"],[/(tive)s$/i,"$1"],[/([lr])ves$/i,"$1f"],[/([^aeiouy]|qu)ies$/i,"$1y"],[/(s)eries$/i,"$1eries"],[/(m)ovies$/i,"$1ovie"],[/(x|ch|ss|sh)es$/i,"$1"],[/^(m|l)ice$/i,"$1ouse"],[/(bus)(es)?$/i,"$1"],[/(o)es$/i,"$1"],[/(shoe)s$/i,"$1"],[/(cris|test)(is|es)$/i,"$1is"],[/^(a)x[ie]s$/i,"$1xis"],[/(octop|vir)(us|i)$/i,"$1us"],[/(alias|status)(es)?$/i,"$1"],[/^(ox)en/i,"$1"],[/(vert|ind)ices$/i,"$1ex"],[/(matr)ices$/i,"$1ix"],[/(quiz)zes$/i,"$1"],[/(database)s$/i,"$1"]],irregularPairs:[["person","people"],["man","men"],["child","children"],["sex","sexes"],["move","moves"],["cow","kine"],["zombie","zombies"]],uncountable:["equipment","information","rice","money","species","series","fish","sheep","jeans","police"]}});r("ember-inflector/system/inflector",["exports"],function(e){"use strict";var r=/^\s*$/;var t=/(\w+[_-])([a-z\d]+$)/;var i=/(\w+)([A-Z][a-z\d]*$)/;var a=/[A-Z][a-z\d]*$/;function n(e,r){for(var t=0,i=r.length;t<i;t++){e.uncountable[r[t].toLowerCase()]=true}}function s(e,r){var t;for(var i=0,a=r.length;i<a;i++){t=r[i];e.irregular[t[0].toLowerCase()]=t[1];e.irregular[t[1].toLowerCase()]=t[1];e.irregularInverse[t[1].toLowerCase()]=t[0];e.irregularInverse[t[0].toLowerCase()]=t[0]}}function o(e){e=e||{};e.uncountable=e.uncountable||u();e.irregularPairs=e.irregularPairs||u();var r=this.rules={plurals:e.plurals||[],singular:e.singular||[],irregular:u(),irregularInverse:u(),uncountable:u()};n(r,e.uncountable);s(r,e.irregularPairs);this.enableCache()}if(!Object.create&&!Object.create(null).hasOwnProperty){throw new Error("This browser does not support Object.create(null), please polyfil with es5-sham: http://git.io/yBU2rg")}function u(){var e=Object.create(null);e["_dict"]=null;delete e["_dict"];return e}o.prototype={enableCache:function(){this.purgeCache();this.singularize=function(e){this._cacheUsed=true;return this._sCache[e]||(this._sCache[e]=this._singularize(e))};this.pluralize=function(e){this._cacheUsed=true;return this._pCache[e]||(this._pCache[e]=this._pluralize(e))}},purgeCache:function(){this._cacheUsed=false;this._sCache=u();this._pCache=u()},disableCache:function(){this._sCache=null;this._pCache=null;this.singularize=function(e){return this._singularize(e)};this.pluralize=function(e){return this._pluralize(e)}},plural:function(e,r){if(this._cacheUsed){this.purgeCache()}this.rules.plurals.push([e,r.toLowerCase()])},singular:function(e,r){if(this._cacheUsed){this.purgeCache()}this.rules.singular.push([e,r.toLowerCase()])},uncountable:function(e){if(this._cacheUsed){this.purgeCache()}n(this.rules,[e.toLowerCase()])},irregular:function(e,r){if(this._cacheUsed){this.purgeCache()}s(this.rules,[[e,r]])},pluralize:function(e){return this._pluralize(e)},_pluralize:function(e){return this.inflect(e,this.rules.plurals,this.rules.irregular)},singularize:function(e){return this._singularize(e)},_singularize:function(e){return this.inflect(e,this.rules.singular,this.rules.irregularInverse)},inflect:function(e,n,s){var o,u,d,c,l,f,h,p,m,y,v,b,g;p=r.test(e);m=a.test(e);f="";if(p){return e}c=e.toLowerCase();l=t.exec(e)||i.exec(e);if(l){f=l[1];h=l[2].toLowerCase()}y=this.rules.uncountable[c]||this.rules.uncountable[h];if(y){return e}v=s&&(s[c]||s[h]);if(v){if(s[c]){return v}else{v=m?v.capitalize():v;return f+v}}for(var R=n.length,E=0;R>E;R--){o=n[R-1];g=o[0];if(g.test(e)){break}}o=o||[];g=o[0];u=o[1];d=e.replace(g,u);return d}};e["default"]=o});r("ember-inflector/system/string",["./inflector","exports"],function(e,r){"use strict";var t=e["default"];function i(e){return t.inflector.pluralize(e)}function a(e){return t.inflector.singularize(e)}r.pluralize=i;r.singularize=a});e.DS=t("ember-data")["default"]})(this);
@@ -178,7 +178,7 @@ define("activemodel-adapter/system/active_model_adapter",
178
178
  https://tools.ietf.org/html/rfc4918#section-11.2
179
179
 
180
180
  @method ajaxError
181
- @param jqXHR
181
+ @param {Object} jqXHR
182
182
  @return error
183
183
  */
184
184
  ajaxError: function(jqXHR) {
@@ -367,7 +367,7 @@ define("activemodel-adapter/system/active_model_serializer",
367
367
  @method serializePolymorphicType
368
368
  @param {DS.Model} record
369
369
  @param {Object} json
370
- @param relationship
370
+ @param {Object} relationship
371
371
  */
372
372
  serializePolymorphicType: function(record, json, relationship) {
373
373
  var key = relationship.key;
@@ -963,8 +963,8 @@ define("ember-data/adapters/fixture_adapter",
963
963
  });
964
964
  });
965
965
  define("ember-data/adapters/rest_adapter",
966
- ["ember-data/system/adapter","exports"],
967
- function(__dependency1__, __exports__) {
966
+ ["ember-data/system/adapter","ember-data/system/map","exports"],
967
+ function(__dependency1__, __dependency2__, __exports__) {
968
968
  "use strict";
969
969
  /**
970
970
  @module ember-data
@@ -972,6 +972,7 @@ define("ember-data/adapters/rest_adapter",
972
972
 
973
973
  var Adapter = __dependency1__.Adapter;
974
974
  var InvalidError = __dependency1__.InvalidError;
975
+ var MapWithDefault = __dependency2__.MapWithDefault;
975
976
  var get = Ember.get;
976
977
  var forEach = Ember.ArrayPolyfills.forEach;
977
978
 
@@ -1171,6 +1172,9 @@ define("ember-data/adapters/rest_adapter",
1171
1172
 
1172
1173
  will also send a request to: `GET /comments?ids[]=1&ids[]=2`
1173
1174
 
1175
+ Note: Requests coalescing rely on URL building strategy. So if you override `buildUrl` in your app
1176
+ `groupRecordsForFindMany` more likely should be overriden as well in order for coalescing to work.
1177
+
1174
1178
  @property coalesceFindRequests
1175
1179
  @type {boolean}
1176
1180
  */
@@ -1499,7 +1503,7 @@ define("ember-data/adapters/rest_adapter",
1499
1503
  //We might get passed in an array of ids from findMany
1500
1504
  //in which case we don't want to modify the url, as the
1501
1505
  //ids will be passed in through a query param
1502
- if (id && !Ember.isArray(id)) { url.push(id); }
1506
+ if (id && !Ember.isArray(id)) { url.push(encodeURIComponent(id)); }
1503
1507
 
1504
1508
  if (prefix) { url.unshift(prefix); }
1505
1509
 
@@ -1584,7 +1588,7 @@ define("ember-data/adapters/rest_adapter",
1584
1588
  loaded separately by `findMany`.
1585
1589
  */
1586
1590
  groupRecordsForFindMany: function (store, records) {
1587
- var groups = Ember.MapWithDefault.create({defaultValue: function(){return [];}});
1591
+ var groups = MapWithDefault.create({defaultValue: function(){return [];}});
1588
1592
  var adapter = this;
1589
1593
 
1590
1594
  forEach.call(records, function(record){
@@ -1614,7 +1618,7 @@ define("ember-data/adapters/rest_adapter",
1614
1618
  }
1615
1619
 
1616
1620
  var groupsArray = [];
1617
- groups.forEach(function(key, group){
1621
+ groups.forEach(function(group, key){
1618
1622
  // http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers
1619
1623
  var maxUrlLength = 2048;
1620
1624
  var splitGroups = splitGroupToFitInUrl(group, maxUrlLength);
@@ -1833,11 +1837,11 @@ define("ember-data/core",
1833
1837
  /**
1834
1838
  @property VERSION
1835
1839
  @type String
1836
- @default '1.0.0-beta.10'
1840
+ @default '1.0.0-beta.11'
1837
1841
  @static
1838
1842
  */
1839
1843
  DS = Ember.Namespace.create({
1840
- VERSION: '1.0.0-beta.10'
1844
+ VERSION: '1.0.0-beta.11'
1841
1845
  });
1842
1846
 
1843
1847
  if (Ember.libraries) {
@@ -1956,7 +1960,8 @@ define("ember-data/ext/date",
1956
1960
 
1957
1961
  /**
1958
1962
  @method parse
1959
- @param date
1963
+ @param {Date} date
1964
+ @return {Number} timestamp
1960
1965
  */
1961
1966
  Ember.Date.parse = function (date) {
1962
1967
  var timestamp, struct, minutesOffset = 0;
@@ -2128,21 +2133,24 @@ define("ember-data/serializers/embedded_records_mixin",
2128
2133
  ```js
2129
2134
  App.PostSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
2130
2135
  attrs: {
2131
- author: {embedded: 'always'},
2132
- comments: {serialize: 'ids'}
2136
+ author: { embedded: 'always' },
2137
+ comments: { serialize: 'ids' }
2133
2138
  }
2134
- })
2139
+ });
2135
2140
  ```
2136
- Note that this use of `{embedded: 'always'}` is unrelated to
2137
- the `{embedded: 'always'}` that is defined as an option on `DS.attr` as part of
2141
+ Note that this use of `{ embedded: 'always' }` is unrelated to
2142
+ the `{ embedded: 'always' }` that is defined as an option on `DS.attr` as part of
2138
2143
  defining a model while working with the ActiveModelSerializer. Nevertheless,
2139
- using `{embedded: 'always'}` as an option to DS.attr is not a valid way to setup
2144
+ using `{ embedded: 'always' }` as an option to DS.attr is not a valid way to setup
2140
2145
  embedded records.
2141
2146
 
2142
- The `attrs` option for a resource `{embedded: 'always'}` is shorthand for:
2147
+ The `attrs` option for a resource `{ embedded: 'always' }` is shorthand for:
2143
2148
 
2144
2149
  ```js
2145
- {serialize: 'records', deserialize: 'records'}
2150
+ {
2151
+ serialize: 'records',
2152
+ deserialize: 'records'
2153
+ }
2146
2154
  ```
2147
2155
 
2148
2156
  ### Configuring Attrs
@@ -2166,8 +2174,8 @@ define("ember-data/serializers/embedded_records_mixin",
2166
2174
  If you do not overwrite `attrs` for a specific relationship, the `EmbeddedRecordsMixin`
2167
2175
  will behave in the following way:
2168
2176
 
2169
- BelongsTo: `{serialize:'id', deserialize:'id'}`
2170
- HasMany: `{serialize:false, deserialize:'ids'}`
2177
+ BelongsTo: `{ serialize: 'id', deserialize: 'id' }`
2178
+ HasMany: `{ serialize: false, deserialize: 'ids' }`
2171
2179
 
2172
2180
  ### Model Relationships
2173
2181
 
@@ -3163,8 +3171,9 @@ define("ember-data/serializers/json_serializer",
3163
3171
  payloadKey = this.keyForRelationship(key, "belongsTo");
3164
3172
  }
3165
3173
 
3166
- if (isNone(belongsTo)) {
3167
- json[payloadKey] = belongsTo;
3174
+ //Need to check whether the id is there for new&async records
3175
+ if (isNone(belongsTo) || isNone(get(belongsTo, 'id'))) {
3176
+ json[payloadKey] = null;
3168
3177
  } else {
3169
3178
  json[payloadKey] = get(belongsTo, 'id');
3170
3179
  }
@@ -3672,7 +3681,7 @@ define("ember-data/serializers/rest_serializer",
3672
3681
  @namespace DS
3673
3682
  @extends DS.JSONSerializer
3674
3683
  */
3675
- __exports__["default"] = JSONSerializer.extend({
3684
+ var RESTSerializer = JSONSerializer.extend({
3676
3685
  /**
3677
3686
  If you want to do normalizations specific to some part of the payload, you
3678
3687
  can specify those under `normalizeHash`.
@@ -3885,6 +3894,10 @@ define("ember-data/serializers/rest_serializer",
3885
3894
 
3886
3895
  for (var prop in payload) {
3887
3896
  var typeName = this.typeForRoot(prop);
3897
+ if (!store.modelFactoryFor(typeName)){
3898
+ Ember.warn(this.warnMessageNoModelForKey(prop, typeName), false);
3899
+ continue;
3900
+ }
3888
3901
  var type = store.modelFor(typeName);
3889
3902
  var isPrimary = type.typeKey === primaryTypeName;
3890
3903
  var value = payload[prop];
@@ -4038,6 +4051,10 @@ define("ember-data/serializers/rest_serializer",
4038
4051
  }
4039
4052
 
4040
4053
  var typeName = this.typeForRoot(typeKey);
4054
+ if (!store.modelFactoryFor(typeName)) {
4055
+ Ember.warn(this.warnMessageNoModelForKey(prop, typeName), false);
4056
+ continue;
4057
+ }
4041
4058
  var type = store.modelFor(typeName);
4042
4059
  var typeSerializer = store.serializerFor(type);
4043
4060
  var isPrimary = (!forcedSecondary && (type.typeKey === primaryTypeName));
@@ -4093,6 +4110,10 @@ define("ember-data/serializers/rest_serializer",
4093
4110
 
4094
4111
  for (var prop in payload) {
4095
4112
  var typeName = this.typeForRoot(prop);
4113
+ if (!store.modelFactoryFor(typeName, prop)){
4114
+ Ember.warn(this.warnMessageNoModelForKey(prop, typeName), false);
4115
+ continue;
4116
+ }
4096
4117
  var type = store.modelFor(typeName);
4097
4118
  var typeSerializer = store.serializerFor(type);
4098
4119
 
@@ -4293,8 +4314,9 @@ define("ember-data/serializers/rest_serializer",
4293
4314
  ```
4294
4315
 
4295
4316
  @method serialize
4296
- @param record
4297
- @param options
4317
+ @param {subclass of DS.Model} record
4318
+ @param {Object} options
4319
+ @return {Object} json
4298
4320
  */
4299
4321
  serialize: function(record, options) {
4300
4322
  return this._super.apply(this, arguments);
@@ -4347,6 +4369,16 @@ define("ember-data/serializers/rest_serializer",
4347
4369
  }
4348
4370
  }
4349
4371
  });
4372
+
4373
+ Ember.runInDebug(function(){
4374
+ RESTSerializer.reopen({
4375
+ warnMessageNoModelForKey: function(prop, typeKey){
4376
+ return 'Encountered "' + prop + '" in payload, but no model was found for model name "' + typeKey + '" (resolved model name using ' + this.constructor.toString() + '.typeForRoot("' + prop + '"))';
4377
+ }
4378
+ });
4379
+ });
4380
+
4381
+ __exports__["default"] = RESTSerializer;
4350
4382
  });
4351
4383
  define("ember-data/setup-container",
4352
4384
  ["ember-data/initializers/store","ember-data/initializers/transforms","ember-data/initializers/store_injections","ember-data/initializers/data_adapter","activemodel-adapter/setup-container","exports"],
@@ -4942,7 +4974,7 @@ define("ember-data/system/debug/debug_adapter",
4942
4974
  }];
4943
4975
  var count = 0;
4944
4976
  var self = this;
4945
- get(type, 'attributes').forEach(function(name, meta) {
4977
+ get(type, 'attributes').forEach(function(meta, name) {
4946
4978
  if (count++ > self.attributeLimit) { return false; }
4947
4979
  var desc = capitalize(underscore(name).replace('_', ' '));
4948
4980
  columns.push({ name: name, desc: desc });
@@ -5099,6 +5131,101 @@ define("ember-data/system/debug/debug_info",
5099
5131
 
5100
5132
  __exports__["default"] = Model;
5101
5133
  });
5134
+ define("ember-data/system/map",
5135
+ ["exports"],
5136
+ function(__exports__) {
5137
+ "use strict";
5138
+ /**
5139
+ * Polyfill Ember.Map behavior for Ember <= 1.7
5140
+ * This can probably be removed before 1.0 final
5141
+ */
5142
+ var mapForEach, deleteFn;
5143
+
5144
+ function OrderedSet(){
5145
+ Ember.OrderedSet.apply(this, arguments);
5146
+ }
5147
+
5148
+ function Map() {
5149
+ Ember.Map.apply(this, arguments);
5150
+ }
5151
+
5152
+ function MapWithDefault(){
5153
+ Ember.MapWithDefault.apply(this, arguments);
5154
+ }
5155
+
5156
+ var testMap = Ember.Map.create();
5157
+ testMap.set('key', 'value');
5158
+
5159
+ var usesOldBehavior = false;
5160
+
5161
+ testMap.forEach(function(value, key){
5162
+ usesOldBehavior = value === 'key' && key === 'value';
5163
+ });
5164
+
5165
+ Map.prototype = Object.create(Ember.Map.prototype);
5166
+ MapWithDefault.prototype = Object.create(Ember.MapWithDefault.prototype);
5167
+ OrderedSet.prototype = Object.create(Ember.OrderedSet.prototype);
5168
+
5169
+ OrderedSet.create = function(){
5170
+ return new OrderedSet();
5171
+ };
5172
+
5173
+ /**
5174
+ * returns a function that calls the original
5175
+ * callback function in the correct order.
5176
+ * if we are in pre-Ember.1.8 land, Map/MapWithDefault
5177
+ * forEach calls with key, value, in that order.
5178
+ * >= 1.8 forEach is called with the order value, key as per
5179
+ * the ES6 spec.
5180
+ */
5181
+ function translate(valueKeyOrderedCallback){
5182
+ return function(key, value){
5183
+ valueKeyOrderedCallback.call(this, value, key);
5184
+ };
5185
+ }
5186
+
5187
+ // old, non ES6 compliant behavior
5188
+ if (usesOldBehavior){
5189
+ mapForEach = function(callback, thisArg){
5190
+ this.__super$forEach(translate(callback), thisArg);
5191
+ };
5192
+
5193
+ /* alias to remove */
5194
+ deleteFn = function(thing){
5195
+ this.remove(thing);
5196
+ };
5197
+
5198
+ Map.prototype.__super$forEach = Ember.Map.prototype.forEach;
5199
+ Map.prototype.forEach = mapForEach;
5200
+ Map.prototype["delete"] = deleteFn;
5201
+
5202
+ MapWithDefault.prototype.forEach = mapForEach;
5203
+ MapWithDefault.prototype.__super$forEach = Ember.MapWithDefault.prototype.forEach;
5204
+ MapWithDefault.prototype["delete"] = deleteFn;
5205
+
5206
+ OrderedSet.prototype["delete"] = deleteFn;
5207
+ }
5208
+
5209
+ MapWithDefault.constructor = MapWithDefault;
5210
+ Map.constructor = Map;
5211
+
5212
+ MapWithDefault.create = function(options){
5213
+ if (options) {
5214
+ return new MapWithDefault(options);
5215
+ } else {
5216
+ return new Map();
5217
+ }
5218
+ };
5219
+
5220
+ Map.create = function(){
5221
+ return new this.constructor();
5222
+ };
5223
+
5224
+ __exports__["default"] = Map;
5225
+ __exports__.Map = Map;
5226
+ __exports__.MapWithDefault = MapWithDefault;
5227
+ __exports__.OrderedSet = OrderedSet;
5228
+ });
5102
5229
  define("ember-data/system/model",
5103
5230
  ["ember-data/system/model/model","ember-data/system/model/attributes","ember-data/system/model/states","ember-data/system/model/errors","exports"],
5104
5231
  function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
@@ -5118,10 +5245,11 @@ define("ember-data/system/model",
5118
5245
  __exports__.Errors = Errors;
5119
5246
  });
5120
5247
  define("ember-data/system/model/attributes",
5121
- ["ember-data/system/model/model","exports"],
5122
- function(__dependency1__, __exports__) {
5248
+ ["ember-data/system/model/model","ember-data/system/map","exports"],
5249
+ function(__dependency1__, __dependency2__, __exports__) {
5123
5250
  "use strict";
5124
5251
  var Model = __dependency1__["default"];
5252
+ var Map = __dependency2__.Map;
5125
5253
 
5126
5254
  /**
5127
5255
  @module ember-data
@@ -5167,7 +5295,7 @@ define("ember-data/system/model/attributes",
5167
5295
  @readOnly
5168
5296
  */
5169
5297
  attributes: Ember.computed(function() {
5170
- var map = Ember.Map.create();
5298
+ var map = Map.create();
5171
5299
 
5172
5300
  this.eachComputedProperty(function(name, meta) {
5173
5301
  if (meta.isAttribute) {
@@ -5213,7 +5341,7 @@ define("ember-data/system/model/attributes",
5213
5341
  @readOnly
5214
5342
  */
5215
5343
  transformedAttributes: Ember.computed(function() {
5216
- var map = Ember.Map.create();
5344
+ var map = Map.create();
5217
5345
 
5218
5346
  this.eachAttribute(function(key, meta) {
5219
5347
  if (meta.type) {
@@ -5266,7 +5394,7 @@ define("ember-data/system/model/attributes",
5266
5394
  @static
5267
5395
  */
5268
5396
  eachAttribute: function(callback, binding) {
5269
- get(this, 'attributes').forEach(function(name, meta) {
5397
+ get(this, 'attributes').forEach(function(meta, name) {
5270
5398
  callback.call(binding, name, meta);
5271
5399
  }, binding);
5272
5400
  },
@@ -5314,7 +5442,7 @@ define("ember-data/system/model/attributes",
5314
5442
  @static
5315
5443
  */
5316
5444
  eachTransformedAttribute: function(callback, binding) {
5317
- get(this, 'transformedAttributes').forEach(function(name, type) {
5445
+ get(this, 'transformedAttributes').forEach(function(type, name) {
5318
5446
  callback.call(binding, name, type);
5319
5447
  });
5320
5448
  }
@@ -5428,13 +5556,15 @@ define("ember-data/system/model/attributes",
5428
5556
  };
5429
5557
  });
5430
5558
  define("ember-data/system/model/errors",
5431
- ["exports"],
5432
- function(__exports__) {
5559
+ ["ember-data/system/map","exports"],
5560
+ function(__dependency1__, __exports__) {
5433
5561
  "use strict";
5434
5562
  var get = Ember.get;
5435
5563
  var isEmpty = Ember.isEmpty;
5436
5564
  var map = Ember.EnumerableUtils.map;
5437
5565
 
5566
+ var MapWithDefault = __dependency1__.MapWithDefault;
5567
+
5438
5568
  /**
5439
5569
  @module ember-data
5440
5570
  */
@@ -5531,7 +5661,7 @@ define("ember-data/system/model/errors",
5531
5661
  */
5532
5662
  errorsByAttributeName: Ember.reduceComputed("content", {
5533
5663
  initialValue: function() {
5534
- return Ember.MapWithDefault.create({
5664
+ return MapWithDefault.create({
5535
5665
  defaultValue: function() {
5536
5666
  return Ember.A();
5537
5667
  }
@@ -6223,6 +6353,27 @@ define("ember-data/system/model/model",
6223
6353
  this._attributes = {};
6224
6354
  this._inFlightAttributes = {};
6225
6355
  this._relationships = {};
6356
+ /*
6357
+ implicit relationships are relationship which have not been declared but the inverse side exists on
6358
+ another record somewhere
6359
+ For example if there was
6360
+ ```
6361
+ App.Comment = DS.Model.extend({
6362
+ name: DS.attr()
6363
+ })
6364
+ ```
6365
+ but there is also
6366
+ ```
6367
+ App.Post = DS.Model.extend({
6368
+ name: DS.attr(),
6369
+ comments: DS.hasMany('comment')
6370
+ })
6371
+ ```
6372
+
6373
+ would have a implicit post relationship in order to be do things like remove ourselves from the post
6374
+ when we are deleted
6375
+ */
6376
+ this._implicitRelationships = Object.create(null);
6226
6377
  var model = this;
6227
6378
  //TODO Move into a getter for better perf
6228
6379
  this.constructor.eachRelationship(function(key, descriptor) {
@@ -6420,6 +6571,27 @@ define("ember-data/system/model/model",
6420
6571
  }, this);
6421
6572
  },
6422
6573
 
6574
+ disconnectRelationships: function() {
6575
+ this.eachRelationship(function(name, relationship) {
6576
+ this._relationships[name].disconnect();
6577
+ }, this);
6578
+ var model = this;
6579
+ forEach.call(Ember.keys(this._implicitRelationships), function(key) {
6580
+ model._implicitRelationships[key].disconnect();
6581
+ });
6582
+ },
6583
+
6584
+ reconnectRelationships: function() {
6585
+ this.eachRelationship(function(name, relationship) {
6586
+ this._relationships[name].reconnect();
6587
+ }, this);
6588
+ var model = this;
6589
+ forEach.call(Ember.keys(this._implicitRelationships), function(key) {
6590
+ model._implicitRelationships[key].reconnect();
6591
+ });
6592
+ },
6593
+
6594
+
6423
6595
  /**
6424
6596
  @method updateRecordArrays
6425
6597
  @private
@@ -6641,6 +6813,13 @@ define("ember-data/system/model/model",
6641
6813
  set(this, 'isError', false);
6642
6814
  }
6643
6815
 
6816
+ //Eventually rollback will always work for relationships
6817
+ //For now we support it only out of deleted state, because we
6818
+ //have an explicit way of knowing when the server acked the relationship change
6819
+ if (get(this, 'isDeleted')) {
6820
+ this.reconnectRelationships();
6821
+ }
6822
+
6644
6823
  if (!get(this, 'isValid')) {
6645
6824
  this._inFlightAttributes = {};
6646
6825
  }
@@ -6656,7 +6835,7 @@ define("ember-data/system/model/model",
6656
6835
 
6657
6836
  /**
6658
6837
  Save the record and persist any changes to the record to an
6659
- extenal source via the adapter.
6838
+ external source via the adapter.
6660
6839
 
6661
6840
  Example
6662
6841
 
@@ -6723,7 +6902,9 @@ define("ember-data/system/model/model",
6723
6902
  }, function(reason) {
6724
6903
  record.set('isError', true);
6725
6904
  throw reason;
6726
- }, "DS: Model#reload complete, update flags");
6905
+ }, "DS: Model#reload complete, update flags")['finally'](function () {
6906
+ record.updateRecordArrays();
6907
+ });
6727
6908
 
6728
6909
  return PromiseObject.create({
6729
6910
  promise: promise
@@ -6779,15 +6960,32 @@ define("ember-data/system/model/model",
6779
6960
 
6780
6961
  @method trigger
6781
6962
  @private
6782
- @param name
6963
+ @param {String} name
6783
6964
  */
6784
- trigger: function(name) {
6785
- Ember.tryInvoke(this, name, [].slice.call(arguments, 1));
6965
+ trigger: function() {
6966
+ var length = arguments.length;
6967
+ var args = new Array(length - 1);
6968
+ var name = arguments[0];
6969
+
6970
+ for (var i = 1; i < length; i++ ){
6971
+ args[i - 1] = arguments[i];
6972
+ }
6973
+
6974
+ Ember.tryInvoke(this, name, args);
6786
6975
  this._super.apply(this, arguments);
6787
6976
  },
6788
6977
 
6789
6978
  triggerLater: function() {
6790
- if (this._deferredTriggers.push(arguments) !== 1) { return; }
6979
+ var length = arguments.length;
6980
+ var args = new Array(length);
6981
+
6982
+ for (var i = 0; i < length; i++ ){
6983
+ args[i] = arguments[i];
6984
+ }
6985
+
6986
+ if (this._deferredTriggers.push(args) !== 1) {
6987
+ return;
6988
+ }
6791
6989
  Ember.run.schedule('actions', this, '_triggerDeferredTriggers');
6792
6990
  },
6793
6991
 
@@ -7171,7 +7369,7 @@ define("ember-data/system/model/states",
7171
7369
  // EVENTS
7172
7370
  deleteRecord: function(record) {
7173
7371
  record.transitionTo('deleted.uncommitted');
7174
- record.clearRelationships();
7372
+ record.disconnectRelationships();
7175
7373
  },
7176
7374
 
7177
7375
  didSetProperty: function(record, context) {
@@ -7252,7 +7450,7 @@ define("ember-data/system/model/states",
7252
7450
  });
7253
7451
 
7254
7452
  createdState.uncommitted.deleteRecord = function(record) {
7255
- record.clearRelationships();
7453
+ record.disconnectRelationships();
7256
7454
  record.transitionTo('deleted.saved');
7257
7455
  };
7258
7456
 
@@ -7271,7 +7469,7 @@ define("ember-data/system/model/states",
7271
7469
 
7272
7470
  updatedState.uncommitted.deleteRecord = function(record) {
7273
7471
  record.transitionTo('deleted.uncommitted');
7274
- record.clearRelationships();
7472
+ record.disconnectRelationships();
7275
7473
  };
7276
7474
 
7277
7475
  var RootState = {
@@ -7412,7 +7610,7 @@ define("ember-data/system/model/states",
7412
7610
 
7413
7611
  deleteRecord: function(record) {
7414
7612
  record.transitionTo('deleted.uncommitted');
7415
- record.clearRelationships();
7613
+ record.disconnectRelationships();
7416
7614
  },
7417
7615
 
7418
7616
  unloadRecord: function(record) {
@@ -7569,6 +7767,7 @@ define("ember-data/system/promise_proxies",
7569
7767
  function(__exports__) {
7570
7768
  "use strict";
7571
7769
  var Promise = Ember.RSVP.Promise;
7770
+ var get = Ember.get;
7572
7771
 
7573
7772
  /**
7574
7773
  A `PromiseArray` is an object that acts like both an `Ember.Array`
@@ -7644,14 +7843,38 @@ define("ember-data/system/promise_proxies",
7644
7843
  });
7645
7844
  };
7646
7845
 
7846
+ /**
7847
+ A PromiseManyArray is a PromiseArray that also proxies certain method calls
7848
+ to the underlying manyArray.
7849
+ Right now we proxy:
7850
+ `reload()`
7851
+ */
7852
+
7853
+ var PromiseManyArray = PromiseArray.extend({
7854
+ reload: function() {
7855
+ //I don't think this should ever happen right now, but worth guarding if we refactor the async relationships
7856
+ Ember.assert('You are trying to reload an async manyArray before it has been created', get(this, 'content'));
7857
+ return get(this, 'content').reload();
7858
+ }
7859
+ });
7860
+
7861
+ var promiseManyArray = function(promise, label) {
7862
+ return PromiseManyArray.create({
7863
+ promise: Promise.resolve(promise, label)
7864
+ });
7865
+ };
7866
+
7867
+
7647
7868
  __exports__.PromiseArray = PromiseArray;
7648
7869
  __exports__.PromiseObject = PromiseObject;
7870
+ __exports__.PromiseManyArray = PromiseManyArray;
7649
7871
  __exports__.promiseArray = promiseArray;
7650
7872
  __exports__.promiseObject = promiseObject;
7873
+ __exports__.promiseManyArray = promiseManyArray;
7651
7874
  });
7652
7875
  define("ember-data/system/record_array_manager",
7653
- ["ember-data/system/record_arrays","exports"],
7654
- function(__dependency1__, __exports__) {
7876
+ ["ember-data/system/record_arrays","ember-data/system/map","exports"],
7877
+ function(__dependency1__, __dependency2__, __exports__) {
7655
7878
  "use strict";
7656
7879
  /**
7657
7880
  @module ember-data
@@ -7661,6 +7884,8 @@ define("ember-data/system/record_array_manager",
7661
7884
  var FilteredRecordArray = __dependency1__.FilteredRecordArray;
7662
7885
  var AdapterPopulatedRecordArray = __dependency1__.AdapterPopulatedRecordArray;
7663
7886
  var ManyArray = __dependency1__.ManyArray;
7887
+ var MapWithDefault = __dependency2__.MapWithDefault;
7888
+ var OrderedSet = __dependency2__.OrderedSet;
7664
7889
  var get = Ember.get;
7665
7890
  var forEach = Ember.EnumerableUtils.forEach;
7666
7891
 
@@ -7672,7 +7897,7 @@ define("ember-data/system/record_array_manager",
7672
7897
  */
7673
7898
  __exports__["default"] = Ember.Object.extend({
7674
7899
  init: function() {
7675
- this.filteredRecordArrays = Ember.MapWithDefault.create({
7900
+ this.filteredRecordArrays = MapWithDefault.create({
7676
7901
  defaultValue: function() { return []; }
7677
7902
  });
7678
7903
 
@@ -7687,7 +7912,7 @@ define("ember-data/system/record_array_manager",
7687
7912
  },
7688
7913
 
7689
7914
  recordArraysForRecord: function(record) {
7690
- record._recordArrays = record._recordArrays || Ember.OrderedSet.create();
7915
+ record._recordArrays = record._recordArrays || OrderedSet.create();
7691
7916
  return record._recordArrays;
7692
7917
  },
7693
7918
 
@@ -7720,9 +7945,11 @@ define("ember-data/system/record_array_manager",
7720
7945
 
7721
7946
  if (!recordArrays) { return; }
7722
7947
 
7723
- forEach(recordArrays, function(array) {
7948
+ recordArrays.forEach(function(array){
7724
7949
  array.removeRecord(record);
7725
7950
  });
7951
+
7952
+ record._recordArrays = null;
7726
7953
  },
7727
7954
 
7728
7955
  _recordWasChanged: function (record) {
@@ -7774,7 +8001,7 @@ define("ember-data/system/record_array_manager",
7774
8001
  recordArrays.add(array);
7775
8002
  }
7776
8003
  } else if (!shouldBeInArray) {
7777
- recordArrays.remove(array);
8004
+ recordArrays["delete"](array);
7778
8005
  array.removeRecord(record);
7779
8006
  }
7780
8007
  },
@@ -7787,9 +8014,9 @@ define("ember-data/system/record_array_manager",
7787
8014
  method is invoked when the filter is created in th first place.
7788
8015
 
7789
8016
  @method updateFilter
7790
- @param array
7791
- @param type
7792
- @param filter
8017
+ @param {Array} array
8018
+ @param {String} type
8019
+ @param {Function} filter
7793
8020
  */
7794
8021
  updateFilter: function(array, type, filter) {
7795
8022
  var typeMap = this.store.typeMapFor(type);
@@ -8163,22 +8390,6 @@ define("ember-data/system/record_arrays/many_array",
8163
8390
  this._super.apply(this, arguments);
8164
8391
  },
8165
8392
 
8166
- /**
8167
- The property name of the relationship
8168
-
8169
- @property {String} name
8170
- @private
8171
- */
8172
- name: null,
8173
-
8174
- /**
8175
- The record to which this relationship belongs.
8176
-
8177
- @property {DS.Model} owner
8178
- @private
8179
- */
8180
- owner: null,
8181
-
8182
8393
  /**
8183
8394
  `true` if the relationship is polymorphic, `false` otherwise.
8184
8395
 
@@ -8241,6 +8452,13 @@ define("ember-data/system/record_arrays/many_array",
8241
8452
  this.get('relationship').addRecords(objects, idx);
8242
8453
  }
8243
8454
  },
8455
+ /**
8456
+ @method reload
8457
+ @public
8458
+ */
8459
+ reload: function() {
8460
+ return this.relationship.reload();
8461
+ },
8244
8462
 
8245
8463
  /**
8246
8464
  Create a child record within the owner
@@ -8461,7 +8679,7 @@ define("ember-data/system/record_arrays/record_array",
8461
8679
  var recordArrays = record._recordArrays;
8462
8680
 
8463
8681
  if (recordArrays) {
8464
- recordArrays.remove(array);
8682
+ recordArrays["delete"](array);
8465
8683
  }
8466
8684
  });
8467
8685
  },
@@ -8599,7 +8817,11 @@ define("ember-data/system/relationships/belongs_to",
8599
8817
  if ( value === undefined ) {
8600
8818
  value = null;
8601
8819
  }
8602
- this._relationships[key].setRecord(value);
8820
+ if (value && value.then) {
8821
+ this._relationships[key].setRecordPromise(value);
8822
+ } else {
8823
+ this._relationships[key].setRecord(value);
8824
+ }
8603
8825
  }
8604
8826
 
8605
8827
  return this._relationships[key].getRecord();
@@ -8626,14 +8848,17 @@ define("ember-data/system/relationships/belongs_to",
8626
8848
  __exports__["default"] = belongsTo;
8627
8849
  });
8628
8850
  define("ember-data/system/relationships/ext",
8629
- ["ember-data/system/relationship-meta","ember-data/system/model"],
8630
- function(__dependency1__, __dependency2__) {
8851
+ ["ember-data/system/relationship-meta","ember-data/system/model","ember-data/system/map"],
8852
+ function(__dependency1__, __dependency2__, __dependency3__) {
8631
8853
  "use strict";
8632
8854
  var typeForRelationshipMeta = __dependency1__.typeForRelationshipMeta;
8633
8855
  var relationshipFromMeta = __dependency1__.relationshipFromMeta;
8634
8856
  var Model = __dependency2__.Model;
8857
+ var Map = __dependency3__.Map;
8858
+ var MapWithDefault = __dependency3__.MapWithDefault;
8635
8859
 
8636
8860
  var get = Ember.get;
8861
+ var filter = Ember.ArrayPolyfills.filter;
8637
8862
 
8638
8863
  /**
8639
8864
  @module ember-data
@@ -8672,9 +8897,9 @@ define("ember-data/system/relationships/ext",
8672
8897
  property returned by `DS.belongsTo` as the value.
8673
8898
 
8674
8899
  @method didDefineProperty
8675
- @param proto
8676
- @param key
8677
- @param value
8900
+ @param {Object} proto
8901
+ @param {String} key
8902
+ @param {Ember.ComputedProperty} value
8678
8903
  */
8679
8904
  didDefineProperty: function(proto, key, value) {
8680
8905
  // Check if the value being set is a computed property.
@@ -8708,6 +8933,7 @@ define("ember-data/system/relationships/ext",
8708
8933
  */
8709
8934
 
8710
8935
  Model.reopenClass({
8936
+
8711
8937
  /**
8712
8938
  For a given relationship name, returns the model type of the relationship.
8713
8939
 
@@ -8731,17 +8957,59 @@ define("ember-data/system/relationships/ext",
8731
8957
  return relationship && relationship.type;
8732
8958
  },
8733
8959
 
8960
+ inverseMap: Ember.computed(function() {
8961
+ return Object.create(null);
8962
+ }),
8963
+
8964
+ /*
8965
+ Find the relationship which is the inverse of the one asked for.
8966
+
8967
+ For example, if you define models like this:
8968
+
8969
+ ```javascript
8970
+ App.Post = DS.Model.extend({
8971
+ comments: DS.hasMany('message')
8972
+ });
8973
+
8974
+ App.Message = DS.Model.extend({
8975
+ owner: DS.belongsTo('post')
8976
+ });
8977
+ ```
8978
+
8979
+ App.Post.inverseFor('comments') -> {type: App.Message, name:'owner', kind:'belongsTo'}
8980
+ App.Message.inverseFor('owner') -> {type: App.Post, name:'comments', kind:'hasMany'}
8981
+
8982
+ @method inverseFor
8983
+ @static
8984
+ @param {String} name the name of the relationship
8985
+ @return {Object} the inverse relationship, or null
8986
+ */
8734
8987
  inverseFor: function(name) {
8735
- var inverseType = this.typeForRelationship(name);
8988
+ var inverseMap = get(this, 'inverseMap');
8989
+ if (inverseMap[name]) {
8990
+ return inverseMap[name];
8991
+ } else {
8992
+ var inverse = this._findInverseFor(name);
8993
+ inverseMap[name] = inverse;
8994
+ return inverse;
8995
+ }
8996
+ },
8736
8997
 
8737
- if (!inverseType) { return null; }
8998
+ //Calculate the inverse, ignoring the cache
8999
+ _findInverseFor: function(name) {
8738
9000
 
8739
- var options = this.metaForProperty(name).options;
9001
+ var inverseType = this.typeForRelationship(name);
9002
+ if (!inverseType) {
9003
+ return null;
9004
+ }
8740
9005
 
9006
+ //If inverse is manually specified to be null, like `comments: DS.hasMany('message', {inverse: null})`
9007
+ var options = this.metaForProperty(name).options;
8741
9008
  if (options.inverse === null) { return null; }
8742
9009
 
8743
9010
  var inverseName, inverseKind, inverse;
8744
9011
 
9012
+ //If inverse is specified manually, return the inverse
8745
9013
  if (options.inverse) {
8746
9014
  inverseName = options.inverse;
8747
9015
  inverse = Ember.get(inverseType, 'relationshipsByName').get(inverseName);
@@ -8751,10 +9019,24 @@ define("ember-data/system/relationships/ext",
8751
9019
 
8752
9020
  inverseKind = inverse.kind;
8753
9021
  } else {
9022
+ //No inverse was specified manually, we need to use a heuristic to guess one
8754
9023
  var possibleRelationships = findPossibleInverses(this, inverseType);
8755
9024
 
8756
9025
  if (possibleRelationships.length === 0) { return null; }
8757
9026
 
9027
+ var filteredRelationships = filter.call(possibleRelationships, function(possibleRelationship) {
9028
+ var optionsForRelationship = inverseType.metaForProperty(possibleRelationship.name).options;
9029
+ return name === optionsForRelationship.inverse;
9030
+ });
9031
+
9032
+ Ember.assert("You defined the '" + name + "' relationship on " + this + ", but you defined the inverse relationships of type " +
9033
+ inverseType.toString() + " multiple times. Look at http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses for how to explicitly specify inverses",
9034
+ filteredRelationships.length < 2);
9035
+
9036
+ if (filteredRelationships.length === 1 ) {
9037
+ possibleRelationships = filteredRelationships;
9038
+ }
9039
+
8758
9040
  Ember.assert("You defined the '" + name + "' relationship on " + this + ", but multiple possible inverse relationships of type " +
8759
9041
  this + " were found on " + inverseType + ". Look at http://emberjs.com/guides/models/defining-models/#toc_explicit-inverses for how to explicitly specify inverses",
8760
9042
  possibleRelationships.length === 1);
@@ -8763,17 +9045,29 @@ define("ember-data/system/relationships/ext",
8763
9045
  inverseKind = possibleRelationships[0].kind;
8764
9046
  }
8765
9047
 
8766
- function findPossibleInverses(type, inverseType, possibleRelationships) {
8767
- possibleRelationships = possibleRelationships || [];
9048
+ function findPossibleInverses(type, inverseType, relationshipsSoFar) {
9049
+ var possibleRelationships = relationshipsSoFar || [];
8768
9050
 
8769
9051
  var relationshipMap = get(inverseType, 'relationships');
8770
9052
  if (!relationshipMap) { return; }
8771
9053
 
8772
9054
  var relationships = relationshipMap.get(type);
9055
+
9056
+ relationships = filter.call(relationships, function(relationship) {
9057
+ var optionsForRelationship = inverseType.metaForProperty(relationship.name).options;
9058
+
9059
+ if (!optionsForRelationship.inverse){
9060
+ return true;
9061
+ }
9062
+
9063
+ return name === optionsForRelationship.inverse;
9064
+ });
9065
+
8773
9066
  if (relationships) {
8774
- possibleRelationships.push.apply(possibleRelationships, relationshipMap.get(type));
9067
+ possibleRelationships.push.apply(possibleRelationships, relationships);
8775
9068
  }
8776
9069
 
9070
+ //Recurse to support polymorphism
8777
9071
  if (type.superclass) {
8778
9072
  findPossibleInverses(type.superclass, inverseType, possibleRelationships);
8779
9073
  }
@@ -8822,7 +9116,7 @@ define("ember-data/system/relationships/ext",
8822
9116
  @readOnly
8823
9117
  */
8824
9118
  relationships: Ember.computed(function() {
8825
- var map = new Ember.MapWithDefault({
9119
+ var map = new MapWithDefault({
8826
9120
  defaultValue: function() { return []; }
8827
9121
  });
8828
9122
 
@@ -8972,7 +9266,7 @@ define("ember-data/system/relationships/ext",
8972
9266
  @readOnly
8973
9267
  */
8974
9268
  relationshipsByName: Ember.computed(function() {
8975
- var map = Ember.Map.create();
9269
+ var map = Map.create();
8976
9270
 
8977
9271
  this.eachComputedProperty(function(name, meta) {
8978
9272
  if (meta.isRelationship) {
@@ -9022,7 +9316,7 @@ define("ember-data/system/relationships/ext",
9022
9316
  @readOnly
9023
9317
  */
9024
9318
  fields: Ember.computed(function() {
9025
- var map = Ember.Map.create();
9319
+ var map = Map.create();
9026
9320
 
9027
9321
  this.eachComputedProperty(function(name, meta) {
9028
9322
  if (meta.isRelationship) {
@@ -9046,7 +9340,7 @@ define("ember-data/system/relationships/ext",
9046
9340
  @param {any} binding the value to which the callback's `this` should be bound
9047
9341
  */
9048
9342
  eachRelationship: function(callback, binding) {
9049
- get(this, 'relationshipsByName').forEach(function(name, relationship) {
9343
+ get(this, 'relationshipsByName').forEach(function(relationship, name) {
9050
9344
  callback.call(binding, name, relationship);
9051
9345
  });
9052
9346
  },
@@ -9250,14 +9544,15 @@ define("ember-data/system/relationships/has_many",
9250
9544
  __exports__["default"] = hasMany;
9251
9545
  });
9252
9546
  define("ember-data/system/relationships/relationship",
9253
- ["ember-data/system/promise_proxies","exports"],
9254
- function(__dependency1__, __exports__) {
9547
+ ["ember-data/system/promise_proxies","ember-data/system/map","exports"],
9548
+ function(__dependency1__, __dependency2__, __exports__) {
9255
9549
  "use strict";
9256
- var PromiseArray = __dependency1__.PromiseArray;
9550
+ var PromiseManyArray = __dependency1__.PromiseManyArray;
9257
9551
  var PromiseObject = __dependency1__.PromiseObject;
9552
+ var OrderedSet = __dependency2__.OrderedSet;
9258
9553
 
9259
9554
  var Relationship = function(store, record, inverseKey, relationshipMeta) {
9260
- this.members = new Ember.OrderedSet();
9555
+ this.members = new OrderedSet();
9261
9556
  this.store = store;
9262
9557
  this.key = relationshipMeta.key;
9263
9558
  this.inverseKey = inverseKey;
@@ -9265,11 +9560,15 @@ define("ember-data/system/relationships/relationship",
9265
9560
  this.key = relationshipMeta.key;
9266
9561
  this.isAsync = relationshipMeta.options.async;
9267
9562
  this.relationshipMeta = relationshipMeta;
9563
+ //This probably breaks for polymorphic relationship in complex scenarios, due to
9564
+ //multiple possible typeKeys
9565
+ this.inverseKeyForImplicit = this.store.modelFor(this.record.constructor).typeKey + this.key;
9566
+ //Cached promise when fetching the relationship from a link
9567
+ this.linkPromise = null;
9268
9568
  };
9269
9569
 
9270
9570
  Relationship.prototype = {
9271
9571
  constructor: Relationship,
9272
- hasFetchedLink: false,
9273
9572
 
9274
9573
  destroy: Ember.K,
9275
9574
 
@@ -9279,6 +9578,18 @@ define("ember-data/system/relationships/relationship",
9279
9578
  }, this);
9280
9579
  },
9281
9580
 
9581
+ disconnect: function(){
9582
+ this.members.forEach(function(member) {
9583
+ this.removeRecordFromInverse(member);
9584
+ }, this);
9585
+ },
9586
+
9587
+ reconnect: function(){
9588
+ this.members.forEach(function(member) {
9589
+ this.addRecordToInverse(member);
9590
+ }, this);
9591
+ },
9592
+
9282
9593
  removeRecords: function(records){
9283
9594
  var that = this;
9284
9595
  records.forEach(function(record){
@@ -9296,13 +9607,17 @@ define("ember-data/system/relationships/relationship",
9296
9607
  });
9297
9608
  },
9298
9609
 
9299
-
9300
9610
  addRecord: function(record, idx) {
9301
9611
  if (!this.members.has(record)) {
9302
9612
  this.members.add(record);
9303
9613
  this.notifyRecordRelationshipAdded(record, idx);
9304
9614
  if (this.inverseKey) {
9305
9615
  record._relationships[this.inverseKey].addRecord(this.record);
9616
+ } else {
9617
+ if (!record._implicitRelationships[this.inverseKeyForImplicit]) {
9618
+ record._implicitRelationships[this.inverseKeyForImplicit] = new Relationship(this.store, record, this.key, {options:{}});
9619
+ }
9620
+ record._implicitRelationships[this.inverseKeyForImplicit].addRecord(this.record);
9306
9621
  }
9307
9622
  this.record.updateRecordArrays();
9308
9623
  }
@@ -9310,31 +9625,64 @@ define("ember-data/system/relationships/relationship",
9310
9625
 
9311
9626
  removeRecord: function(record) {
9312
9627
  if (this.members.has(record)) {
9313
- this.members.remove(record);
9314
- this.notifyRecordRelationshipRemoved(record);
9628
+ this.removeRecordFromOwn(record);
9315
9629
  if (this.inverseKey) {
9316
- var inverseRelationship = record._relationships[this.inverseKey];
9317
- //Need to check for existence, as the record might unloading at the moment
9318
- if (inverseRelationship) {
9319
- inverseRelationship.removeRecord(this.record);
9630
+ this.removeRecordFromInverse(record);
9631
+ } else {
9632
+ if (record._implicitRelationships[this.inverseKeyForImplicit]) {
9633
+ record._implicitRelationships[this.inverseKeyForImplicit].removeRecord(this.record);
9320
9634
  }
9321
9635
  }
9322
- this.record.updateRecordArrays();
9323
9636
  }
9324
9637
  },
9325
9638
 
9639
+ addRecordToInverse: function(record) {
9640
+ if (this.inverseKey) {
9641
+ record._relationships[this.inverseKey].addRecord(this.record);
9642
+ }
9643
+ },
9644
+
9645
+ removeRecordFromInverse: function(record) {
9646
+ var inverseRelationship = record._relationships[this.inverseKey];
9647
+ //Need to check for existence, as the record might unloading at the moment
9648
+ if (inverseRelationship) {
9649
+ inverseRelationship.removeRecordFromOwn(this.record);
9650
+ }
9651
+ },
9652
+
9653
+ removeRecordFromOwn: function(record) {
9654
+ this.members["delete"](record);
9655
+ this.notifyRecordRelationshipRemoved(record);
9656
+ this.record.updateRecordArrays();
9657
+ },
9658
+
9326
9659
  updateLink: function(link) {
9327
9660
  if (link !== this.link) {
9328
9661
  this.link = link;
9329
- this.hasFetchedLink = false;
9662
+ this.linkPromise = null;
9330
9663
  this.record.notifyPropertyChange(this.key);
9331
9664
  }
9332
9665
  },
9333
9666
 
9667
+ findLink: function() {
9668
+ if (this.linkPromise) {
9669
+ return this.linkPromise;
9670
+ } else {
9671
+ var promise = this.fetchLink();
9672
+ this.linkPromise = promise;
9673
+ return promise.then(function(result) {
9674
+ return result;
9675
+ });
9676
+ }
9677
+ },
9678
+
9334
9679
  updateRecordsFromAdapter: function(records) {
9335
9680
  //TODO Once we have adapter support, we need to handle updated and canonical changes
9336
9681
  this.computeChanges(records);
9337
- }
9682
+ },
9683
+
9684
+ notifyRecordRelationshipAdded: Ember.K,
9685
+ notifyRecordRelationshipRemoved: Ember.K
9338
9686
  };
9339
9687
 
9340
9688
  var ManyRelationship = function(store, record, inverseKey, relationshipMeta) {
@@ -9363,49 +9711,84 @@ define("ember-data/system/relationships/relationship",
9363
9711
  this.record.notifyHasManyRemoved(this.key, record);
9364
9712
  };
9365
9713
 
9714
+ ManyRelationship.prototype.reload = function() {
9715
+ var self = this;
9716
+ if (this.link) {
9717
+ return this.fetchLink();
9718
+ } else {
9719
+ return this.store.scheduleFetchMany(this.manyArray.toArray()).then(function() {
9720
+ //Goes away after the manyArray refactor
9721
+ self.manyArray.set('isLoaded', true);
9722
+ return self.manyArray;
9723
+ });
9724
+ }
9725
+ };
9726
+
9366
9727
  ManyRelationship.prototype.computeChanges = function(records) {
9367
9728
  var members = this.members;
9729
+ var recordsToRemove = [];
9730
+ var length;
9731
+ var record;
9732
+ var i;
9368
9733
 
9369
9734
  records = setForArray(records);
9370
9735
 
9371
9736
  members.forEach(function(member) {
9372
9737
  if (records.has(member)) return;
9373
9738
 
9374
- this.removeRecord(member);
9375
- }, this);
9739
+ recordsToRemove.push(member);
9740
+ });
9741
+ this.removeRecords(recordsToRemove);
9376
9742
 
9377
9743
  var hasManyArray = this.manyArray;
9378
9744
 
9379
- records.forEach(function(record, index) {
9745
+ // Using records.toArray() since currently using
9746
+ // removeRecord can modify length, messing stuff up
9747
+ // forEach since it directly looks at "length" each
9748
+ // iteration
9749
+ records = records.toArray();
9750
+ length = records.length;
9751
+ for (i = 0; i < length; i++){
9752
+ record = records[i];
9380
9753
  //Need to preserve the order of incoming records
9381
- if (hasManyArray.objectAt(index) === record ) return;
9382
-
9754
+ if (hasManyArray.objectAt(i) === record ) {
9755
+ continue;
9756
+ }
9383
9757
  this.removeRecord(record);
9384
- this.addRecord(record, index);
9385
- }, this);
9758
+ this.addRecord(record, i);
9759
+ }
9386
9760
  };
9387
9761
 
9762
+ ManyRelationship.prototype.fetchLink = function() {
9763
+ var self = this;
9764
+ return this.store.findHasMany(this.record, this.link, this.relationshipMeta).then(function(records){
9765
+ self.updateRecordsFromAdapter(records);
9766
+ return self.manyArray;
9767
+ });
9768
+ };
9769
+
9770
+ ManyRelationship.prototype.findRecords = function() {
9771
+ var manyArray = this.manyArray;
9772
+ return this.store.findMany(manyArray.toArray()).then(function(){
9773
+ //Goes away after the manyArray refactor
9774
+ manyArray.set('isLoaded', true);
9775
+ return manyArray;
9776
+ });
9777
+ };
9388
9778
 
9389
9779
  ManyRelationship.prototype.getRecords = function() {
9390
9780
  if (this.isAsync) {
9391
9781
  var self = this;
9392
9782
  var promise;
9393
- if (this.link && !this.hasFetchedLink) {
9394
- promise = this.store.findHasMany(this.record, this.link, this.relationshipMeta).then(function(records){
9395
- self.updateRecordsFromAdapter(records);
9396
- self.hasFetchedLink = true;
9397
- //TODO(Igor) try to abstract the isLoaded part
9398
- self.manyArray.set('isLoaded', true);
9399
- return self.manyArray;
9783
+ if (this.link) {
9784
+ promise = this.findLink().then(function() {
9785
+ return self.findRecords();
9400
9786
  });
9401
9787
  } else {
9402
- var manyArray = this.manyArray;
9403
- promise = this.store.findMany(manyArray.toArray()).then(function(){
9404
- self.manyArray.set('isLoaded', true);
9405
- return manyArray;
9406
- });
9788
+ promise = this.findRecords();
9407
9789
  }
9408
- return PromiseArray.create({
9790
+ return PromiseManyArray.create({
9791
+ content: this.manyArray,
9409
9792
  promise: promise
9410
9793
  });
9411
9794
  } else {
@@ -9418,10 +9801,8 @@ define("ember-data/system/relationships/relationship",
9418
9801
 
9419
9802
  var BelongsToRelationship = function(store, record, inverseKey, relationshipMeta) {
9420
9803
  this._super$constructor(store, record, inverseKey, relationshipMeta);
9421
- this.members.add(record);
9422
9804
  this.record = record;
9423
9805
  this.key = relationshipMeta.key;
9424
- this.inverseKey = inverseKey;
9425
9806
  this.inverseRecord = null;
9426
9807
  };
9427
9808
 
@@ -9443,7 +9824,7 @@ define("ember-data/system/relationships/relationship",
9443
9824
  var type = this.relationshipMeta.type;
9444
9825
  Ember.assert("You can only add a '" + type.typeKey + "' record to this relationship", newRecord instanceof type);
9445
9826
 
9446
- if (this.inverseRecord && this.inverseKey) {
9827
+ if (this.inverseRecord) {
9447
9828
  this.removeRecord(this.inverseRecord);
9448
9829
  }
9449
9830
 
@@ -9451,6 +9832,12 @@ define("ember-data/system/relationships/relationship",
9451
9832
  this._super$addRecord(newRecord);
9452
9833
  };
9453
9834
 
9835
+ BelongsToRelationship.prototype.setRecordPromise = function(newPromise) {
9836
+ var content = newPromise.get && newPromise.get('content');
9837
+ Ember.assert("You passed in a promise that did not originate from an EmberData relationship. You can only pass promises that come from a belongsTo or hasMany relationship to the get call.", content !== undefined);
9838
+ this.setRecord(content);
9839
+ };
9840
+
9454
9841
  BelongsToRelationship.prototype.notifyRecordRelationshipAdded = function(newRecord) {
9455
9842
  this.record.notifyBelongsToAdded(this.key, this);
9456
9843
  };
@@ -9459,36 +9846,44 @@ define("ember-data/system/relationships/relationship",
9459
9846
  this.record.notifyBelongsToRemoved(this.key, this);
9460
9847
  };
9461
9848
 
9462
- BelongsToRelationship.prototype._super$removeRecord = Relationship.prototype.removeRecord;
9463
- BelongsToRelationship.prototype.removeRecord = function(record) {
9849
+ BelongsToRelationship.prototype._super$removeRecordFromOwn = Relationship.prototype.removeRecordFromOwn;
9850
+ BelongsToRelationship.prototype.removeRecordFromOwn = function(record) {
9464
9851
  if (!this.members.has(record)){ return;}
9465
- this._super$removeRecord(record);
9852
+ this._super$removeRecordFromOwn(record);
9466
9853
  this.inverseRecord = null;
9467
9854
  };
9468
9855
 
9469
- BelongsToRelationship.prototype.currentOtherSideFor = function() {
9470
- return this.inverseRecord;
9856
+ BelongsToRelationship.prototype.findRecord = function() {
9857
+ if (this.inverseRecord) {
9858
+ return this.store._findByRecord(this.inverseRecord);
9859
+ } else {
9860
+ return Ember.RSVP.Promise.resolve(null);
9861
+ }
9862
+ };
9863
+
9864
+ BelongsToRelationship.prototype.fetchLink = function() {
9865
+ var self = this;
9866
+ return this.store.findBelongsTo(this.record, this.link, this.relationshipMeta).then(function(record){
9867
+ self.addRecord(record);
9868
+ return record;
9869
+ });
9471
9870
  };
9472
9871
 
9473
9872
  BelongsToRelationship.prototype.getRecord = function() {
9474
9873
  if (this.isAsync) {
9475
9874
  var promise;
9476
-
9477
- if (this.link && !this.hasFetchedLink){
9875
+ if (this.link){
9478
9876
  var self = this;
9479
- promise = this.store.findBelongsTo(this.record, this.link, this.relationshipMeta).then(function(record){
9480
- self.addRecord(record);
9481
- self.hasFetchedLink = true;
9482
- return record;
9877
+ promise = this.findLink().then(function() {
9878
+ return self.findRecord();
9483
9879
  });
9484
- } else if (this.inverseRecord) {
9485
- promise = this.store._findByRecord(this.inverseRecord);
9486
9880
  } else {
9487
- promise = Ember.RSVP.Promise.resolve(null);
9881
+ promise = this.findRecord();
9488
9882
  }
9489
9883
 
9490
9884
  return PromiseObject.create({
9491
- promise: promise
9885
+ promise: promise,
9886
+ content: this.inverseRecord
9492
9887
  });
9493
9888
  } else {
9494
9889
  Ember.assert("You looked up the '" + this.key + "' relationship on a '" + this.record.constructor.typeKey + "' with id " + this.record.get('id') + " but some of the associated records were not loaded. Either make sure they are all loaded together with the parent record, or specify that the relationship is async (`DS.belongsTo({ async: true })`)", this.inverseRecord === null || !this.inverseRecord.get('isEmpty'));
@@ -9497,7 +9892,7 @@ define("ember-data/system/relationships/relationship",
9497
9892
  };
9498
9893
 
9499
9894
  function setForArray(array) {
9500
- var set = new Ember.OrderedSet();
9895
+ var set = new OrderedSet();
9501
9896
 
9502
9897
  if (array) {
9503
9898
  for (var i=0, l=array.length; i<l; i++) {
@@ -9531,8 +9926,8 @@ define("ember-data/system/relationships/relationship",
9531
9926
  __exports__.createRelationshipFor = createRelationshipFor;
9532
9927
  });
9533
9928
  define("ember-data/system/store",
9534
- ["ember-data/system/adapter","ember-inflector/system/string","ember-data/system/promise_proxies","exports"],
9535
- function(__dependency1__, __dependency2__, __dependency3__, __exports__) {
9929
+ ["ember-data/system/adapter","ember-inflector/system/string","ember-data/system/map","ember-data/system/promise_proxies","exports"],
9930
+ function(__dependency1__, __dependency2__, __dependency3__, __dependency4__, __exports__) {
9536
9931
  "use strict";
9537
9932
  /*globals Ember*/
9538
9933
  /*jshint eqnull:true*/
@@ -9544,9 +9939,10 @@ define("ember-data/system/store",
9544
9939
  var InvalidError = __dependency1__.InvalidError;
9545
9940
  var Adapter = __dependency1__.Adapter;
9546
9941
  var singularize = __dependency2__.singularize;
9942
+ var Map = __dependency3__.Map;
9547
9943
 
9548
- var promiseArray = __dependency3__.promiseArray;
9549
- var promiseObject = __dependency3__.promiseObject;
9944
+ var promiseArray = __dependency4__.promiseArray;
9945
+ var promiseObject = __dependency4__.promiseObject;
9550
9946
 
9551
9947
 
9552
9948
  var get = Ember.get;
@@ -9681,7 +10077,7 @@ define("ember-data/system/store",
9681
10077
  });
9682
10078
  this._pendingSave = [];
9683
10079
  //Used to keep track of all the find requests that need to be coalesced
9684
- this._pendingFetch = Ember.Map.create();
10080
+ this._pendingFetch = Map.create();
9685
10081
  },
9686
10082
 
9687
10083
  /**
@@ -10069,10 +10465,10 @@ define("ember-data/system/store",
10069
10465
  }
10070
10466
 
10071
10467
  this._pendingFetch.forEach(this._flushPendingFetchForType, this);
10072
- this._pendingFetch = Ember.Map.create();
10468
+ this._pendingFetch = Map.create();
10073
10469
  },
10074
10470
 
10075
- _flushPendingFetchForType: function (type, recordResolverPairs) {
10471
+ _flushPendingFetchForType: function (recordResolverPairs, type) {
10076
10472
  var store = this;
10077
10473
  var adapter = store.adapterFor(type);
10078
10474
  var shouldCoalesce = !!adapter.findMany && adapter.coalesceFindRequests;
@@ -10676,7 +11072,7 @@ define("ember-data/system/store",
10676
11072
 
10677
11073
  @method typeMapFor
10678
11074
  @private
10679
- @param type
11075
+ @param {subclass of DS.Model} type
10680
11076
  @return {Object} typeMap
10681
11077
  */
10682
11078
  typeMapFor: function(type) {
@@ -10737,7 +11133,7 @@ define("ember-data/system/store",
10737
11133
  var factory;
10738
11134
 
10739
11135
  if (typeof key === 'string') {
10740
- factory = this.container.lookupFactory('model:' + key);
11136
+ factory = this.modelFactoryFor(key);
10741
11137
  if (!factory) {
10742
11138
  throw new Ember.Error("No model was found for '" + key + "'");
10743
11139
  }
@@ -10754,6 +11150,10 @@ define("ember-data/system/store",
10754
11150
  return factory;
10755
11151
  },
10756
11152
 
11153
+ modelFactoryFor: function(key){
11154
+ return this.container.lookupFactory('model:' + key);
11155
+ },
11156
+
10757
11157
  /**
10758
11158
  Push some data for a given type into the store.
10759
11159
 
@@ -10918,7 +11318,7 @@ define("ember-data/system/store",
10918
11318
  ```
10919
11319
 
10920
11320
  @method normalize
10921
- @param {String} The name of the model type for this payload
11321
+ @param {String} type The name of the model type for this payload
10922
11322
  @param {Object} payload
10923
11323
  @return {Object} The normalized payload
10924
11324
  */
@@ -11497,8 +11897,8 @@ define("ember-data/transforms/base",
11497
11897
  ```
11498
11898
 
11499
11899
  @method serialize
11500
- @param deserialized The deserialized value
11501
- @return The serialized value
11900
+ @param {mixed} deserialized The deserialized value
11901
+ @return {mixed} The serialized value
11502
11902
  */
11503
11903
  serialize: Ember.required(),
11504
11904
 
@@ -11515,8 +11915,8 @@ define("ember-data/transforms/base",
11515
11915
  ```
11516
11916
 
11517
11917
  @method deserialize
11518
- @param serialized The serialized value
11519
- @return The deserialized value
11918
+ @param {mixed} serialized The serialized value
11919
+ @return {mixed} The deserialized value
11520
11920
  */
11521
11921
  deserialize: Ember.required()
11522
11922
  });