From 2a510f1a34a1bbb3ce8a093ac49665dc8d8087d1 Mon Sep 17 00:00:00 2001 From: timwis Date: Fri, 18 Mar 2016 14:12:17 -0400 Subject: [PATCH 1/4] add repo.collaborators, update readme, add tests --- README.md | 7 +++++++ src/github.js | 9 +++++++++ test/test.repo.js | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/README.md b/README.md index 045a66bf..0ce7c058 100644 --- a/README.md +++ b/README.md @@ -246,6 +246,13 @@ Get contributors list with additions, deletions, and commit counts. repo.contributors(function(err, data) {}); ``` +Check if user is a collaborator on the repository. Pass in a falsy value (null, '', etc) for +'username' to retreive full list of collaborators. + +```js +repo.collaborators(username, function(err, data) {}); +``` + Check if a repository is starred. ```js diff --git a/src/github.js b/src/github.js index dd4da081..01b30b24 100644 --- a/src/github.js +++ b/src/github.js @@ -677,6 +677,15 @@ }); }; + // Show repository collaborators + // ------- + + this.collaborators = function (username, cb) { + var command = repoPath + '/collaborators' + (username ? '/' + username : '') + + _request('GET', command, null, cb); + }; + // Get contents // -------- diff --git a/test/test.repo.js b/test/test.repo.js index 16a72982..bd932f3a 100644 --- a/test/test.repo.js +++ b/test/test.repo.js @@ -174,6 +174,31 @@ describe('Github.Repository', function() { }); }); + it('should show repo collaborators', function(done) { + repo.collaborators(null, function(err, res, xhr) { + should.not.exist(err); + xhr.should.be.instanceof(XMLHttpRequest); + res.should.be.instanceof(Array); + res.should.have.length.above(1); + should.exist(res[0].login); + should.exist(res[0].id); + should.exist(res[0].permissions); + + done(); + }); + }); + + it('should test whether user is collaborator', function(done) { + repo.collaborators('michael', function(err, res, xhr) { + should.not.exist(err); + should.not.exist(res); + xhr.should.be.instanceof(XMLHttpRequest); + xhr.status.should.equal(204); + + done(); + }); + }); + // @TODO repo.branch, repo.pull it('should list repo branches', function(done) { From 62fe67c6a2d84c69ae80f6d5d086253386c8ff10 Mon Sep 17 00:00:00 2001 From: timwis Date: Tue, 22 Mar 2016 06:09:42 -0400 Subject: [PATCH 2/4] separate out isCollaborator --- README.md | 11 ++++++++--- src/github.js | 11 ++++++++--- test/test.repo.js | 4 ++-- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0ce7c058..e628c105 100644 --- a/README.md +++ b/README.md @@ -246,11 +246,16 @@ Get contributors list with additions, deletions, and commit counts. repo.contributors(function(err, data) {}); ``` -Check if user is a collaborator on the repository. Pass in a falsy value (null, '', etc) for -'username' to retreive full list of collaborators. +Get collaborators list. ```js -repo.collaborators(username, function(err, data) {}); +repo.collaborators(function(err, data) {}); +``` + +Check if user is a collaborator on the repository. + +```js +repo.isCollaborator(username, function(err, data) {}); ``` Check if a repository is starred. diff --git a/src/github.js b/src/github.js index 01b30b24..ae31df69 100644 --- a/src/github.js +++ b/src/github.js @@ -680,10 +680,15 @@ // Show repository collaborators // ------- - this.collaborators = function (username, cb) { - var command = repoPath + '/collaborators' + (username ? '/' + username : '') + this.collaborators = function (cb) { + _request('GET', repoPath + '/collaborators', null, cb); + }; - _request('GET', command, null, cb); + // Check whether user is a collaborator on the repository + // ------- + + this.isCollaborator = function (username, cb) { + _request('GET', repoPath + '/collaborators/' + username, null, cb); }; // Get contents diff --git a/test/test.repo.js b/test/test.repo.js index bd932f3a..d78826e1 100644 --- a/test/test.repo.js +++ b/test/test.repo.js @@ -175,7 +175,7 @@ describe('Github.Repository', function() { }); it('should show repo collaborators', function(done) { - repo.collaborators(null, function(err, res, xhr) { + repo.collaborators(function(err, res, xhr) { should.not.exist(err); xhr.should.be.instanceof(XMLHttpRequest); res.should.be.instanceof(Array); @@ -189,7 +189,7 @@ describe('Github.Repository', function() { }); it('should test whether user is collaborator', function(done) { - repo.collaborators('michael', function(err, res, xhr) { + repo.isCollaborator('michael', function(err, res, xhr) { should.not.exist(err); should.not.exist(res); xhr.should.be.instanceof(XMLHttpRequest); From 2b29a265f196e180aa36e459cf62395afe7a3f7e Mon Sep 17 00:00:00 2001 From: timwis Date: Thu, 24 Mar 2016 13:26:11 -0400 Subject: [PATCH 3/4] remove data arg in isCollaborator readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e628c105..592c1c1a 100644 --- a/README.md +++ b/README.md @@ -255,7 +255,7 @@ repo.collaborators(function(err, data) {}); Check if user is a collaborator on the repository. ```js -repo.isCollaborator(username, function(err, data) {}); +repo.isCollaborator(username, function(err) {}); ``` Check if a repository is starred. From ad167c1d22fd02a8bf159185792fb01c103fe1b4 Mon Sep 17 00:00:00 2001 From: timwis Date: Sun, 27 Mar 2016 18:10:20 -0400 Subject: [PATCH 4/4] build js --- dist/github.bundle.min.js | 4 ++-- dist/github.bundle.min.js.map | 2 +- dist/github.min.js | 2 +- dist/github.min.js.map | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dist/github.bundle.min.js b/dist/github.bundle.min.js index 56b02112..120bd034 100644 --- a/dist/github.bundle.min.js +++ b/dist/github.bundle.min.js @@ -1,3 +1,3 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Github=e()}}(function(){var e;return function t(e,n,r){function o(s,u){if(!n[s]){if(!e[s]){var a="function"==typeof require&&require;if(!u&&a)return a(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[s]={exports:{}};e[s][0].call(f.exports,function(t){var n=e[s][1][t];return o(n?n:t)},f,f.exports,t,e,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s=200&&o.status<300||!("status"in p)&&o.responseText?t:n)(o),p=null}},p.onerror=function(){n(new Error("Network Error")),p=null},r.isStandardBrowserEnv()){var m=e("./../helpers/cookies"),g=c.withCredentials||u(c.url)?m.read(c.xsrfCookieName):void 0;g&&(l[c.xsrfHeaderName]=g)}if("setRequestHeader"in p&&r.forEach(l,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,e)}),c.withCredentials&&(p.withCredentials=!0),c.responseType)try{p.responseType=c.responseType}catch(v){if("json"!==p.responseType)throw v}r.isArrayBuffer(f)&&(f=new DataView(f)),p.send(f)}},{"./../helpers/btoa":8,"./../helpers/buildURL":9,"./../helpers/cookies":11,"./../helpers/isURLSameOrigin":13,"./../helpers/parseHeaders":14,"./../helpers/transformData":16,"./../utils":17}],3:[function(e,t,n){"use strict";function r(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=e("./defaults"),i=e("./utils"),s=e("./core/dispatchRequest"),u=e("./core/InterceptorManager"),a=e("./helpers/isAbsoluteURL"),c=e("./helpers/combineURLs"),f=e("./helpers/bind"),l=e("./helpers/transformData");r.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),e=i.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!a(e.url)&&(e.url=c(e.baseURL,e.url)),e.withCredentials=e.withCredentials||this.defaults.withCredentials,e.data=l(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[s,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n};var p=new r(o),h=t.exports=f(r.prototype.request,p);h.create=function(e){return new r(e)},h.defaults=p.defaults,h.all=function(e){return Promise.all(e)},h.spread=e("./helpers/spread"),h.interceptors=p.interceptors,i.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))},h[e]=f(r.prototype[e],p)}),i.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))},h[e]=f(r.prototype[e],p)})},{"./core/InterceptorManager":4,"./core/dispatchRequest":5,"./defaults":6,"./helpers/bind":7,"./helpers/combineURLs":10,"./helpers/isAbsoluteURL":12,"./helpers/spread":15,"./helpers/transformData":16,"./utils":17}],4:[function(e,t,n){"use strict";function r(){this.handlers=[]}var o=e("./../utils");r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},t.exports=r},{"./../utils":17}],5:[function(e,t,n){(function(n){"use strict";t.exports=function(t){return new Promise(function(r,o){try{var i;"function"==typeof t.adapter?i=t.adapter:"undefined"!=typeof XMLHttpRequest?i=e("../adapters/xhr"):"undefined"!=typeof n&&(i=e("../adapters/http")),"function"==typeof i&&i(r,o,t)}catch(s){o(s)}})}}).call(this,e("_process"))},{"../adapters/http":2,"../adapters/xhr":2,_process:20}],6:[function(e,t,n){"use strict";var r=e("./utils"),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};t.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(e)?e:r.isArrayBufferView(e)?e.buffer:!r.isObject(e)||r.isFile(e)||r.isBlob(e)?e:(r.isUndefined(t)||(r.forEach(t,function(e,n){"content-type"===n.toLowerCase()&&(t["Content-Type"]=e)}),r.isUndefined(t["Content-Type"])&&(t["Content-Type"]="application/json;charset=utf-8")),JSON.stringify(e))}],transformResponse:[function(e){if("string"==typeof e){e=e.replace(o,"");try{e=JSON.parse(e)}catch(t){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(i),post:r.merge(i),put:r.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},{"./utils":17}],7:[function(e,t,n){"use strict";t.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r>8-u%1*8)){if(n=o.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return s}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",t.exports=o},{}],9:[function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=e("./../utils");t.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else{var s=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),s.push(r(t)+"="+r(e))}))}),i=s.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},{"./../utils":17}],10:[function(e,t,n){"use strict";t.exports=function(e,t){return e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,"")}},{}],11:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,s){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(i)&&u.push("domain="+i),s===!0&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},{"./../utils":17}],12:[function(e,t,n){"use strict";t.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},{}],13:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},{"./../utils":17}],14:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=function(e){var t,n,o,i={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+n:n)}),i):i}},{"./../utils":17}],15:[function(e,t,n){"use strict";t.exports=function(e){return function(t){return e.apply(null,t)}}},{}],16:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},{"./../utils":17}],17:[function(e,t,n){"use strict";function r(e){return"[object Array]"===y.call(e)}function o(e){return"[object ArrayBuffer]"===y.call(e)}function i(e){return"[object FormData]"===y.call(e)}function s(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function u(e){return"string"==typeof e}function a(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===y.call(e)}function p(e){return"[object File]"===y.call(e)}function h(e){return"[object Blob]"===y.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function m(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function g(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function v(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=v(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)g(arguments[n],e);return t}var y=Object.prototype.toString;t.exports={isArray:r,isArrayBuffer:o,isFormData:i,isArrayBufferView:s,isString:u,isNumber:a,isObject:f,isUndefined:c,isDate:l,isFile:p,isBlob:h,isStandardBrowserEnv:m,forEach:g,merge:v,trim:d}},{}],18:[function(t,n,r){(function(t){!function(o){var i="object"==typeof r&&r,s="object"==typeof n&&n&&n.exports==i&&n,u="object"==typeof t&&t;(u.global===u||u.window===u)&&(o=u);var a=function(e){this.message=e};a.prototype=new Error,a.prototype.name="InvalidCharacterError";var c=function(e){throw new a(e)},f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=/[\t\n\f\r ]/g,p=function(e){e=String(e).replace(l,"");var t=e.length;t%4==0&&(e=e.replace(/==?$/,""),t=e.length),(t%4==1||/[^+a-zA-Z0-9\/]/.test(e))&&c("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,o=0,i="",s=-1;++s>(-2*o&6)));return i},h=function(e){e=String(e),/[^\0-\xFF]/.test(e)&&c("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,o,i=e.length%3,s="",u=-1,a=e.length-i;++u>18&63)+f.charAt(o>>12&63)+f.charAt(o>>6&63)+f.charAt(63&o);return 2==i?(t=e.charCodeAt(u)<<8,n=e.charCodeAt(++u),o=t+n,s+=f.charAt(o>>10)+f.charAt(o>>4&63)+f.charAt(o<<2&63)+"="):1==i&&(o=e.charCodeAt(u),s+=f.charAt(o>>2)+f.charAt(o<<4&63)+"=="),s},d={encode:h,decode:p,version:"0.1.0"};if("function"==typeof e&&"object"==typeof e.amd&&e.amd)e(function(){return d});else if(i&&!i.nodeType)if(s)s.exports=d;else for(var m in d)d.hasOwnProperty(m)&&(i[m]=d[m]);else o.base64=d}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],19:[function(t,n,r){(function(r,o){(function(){"use strict";function i(e){return"function"==typeof e||"object"==typeof e&&null!==e}function s(e){return"function"==typeof e}function u(e){V=e}function a(e){$=e}function c(){return function(){r.nextTick(d)}}function f(){return function(){z(d)}}function l(){var e=0,t=new Q(d),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}function p(){var e=new MessageChannel;return e.port1.onmessage=d,function(){e.port2.postMessage(0)}}function h(){return function(){setTimeout(d,1)}}function d(){for(var e=0;Y>e;e+=2){var t=ne[e],n=ne[e+1];t(n),ne[e]=void 0,ne[e+1]=void 0}Y=0}function m(){try{var e=t,n=e("vertx");return z=n.runOnLoop||n.runOnContext,f()}catch(r){return h()}}function g(e,t){var n=this,r=n._state;if(r===se&&!e||r===ue&&!t)return this;var o=new this.constructor(y),i=n._result;if(r){var s=arguments[r-1];$(function(){P(r,o,s,i)})}else j(n,o,e,t);return o}function v(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(y);return C(n,e),n}function y(){}function w(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function E(e){try{return e.then}catch(t){return ae.error=t,ae}}function T(e,t,n,r){try{e.call(t,n,r)}catch(o){return o}}function R(e,t,n){$(function(e){var r=!1,o=T(n,t,function(n){r||(r=!0,t!==n?C(e,n):S(e,n))},function(t){r||(r=!0,U(e,t))},"Settle: "+(e._label||" unknown promise"));!r&&o&&(r=!0,U(e,o))},e)}function _(e,t){t._state===se?S(e,t._result):t._state===ue?U(e,t._result):j(t,void 0,function(t){C(e,t)},function(t){U(e,t)})}function A(e,t,n){t.constructor===e.constructor&&n===re&&constructor.resolve===oe?_(e,t):n===ae?U(e,ae.error):void 0===n?S(e,t):s(n)?R(e,t,n):S(e,t)}function C(e,t){e===t?U(e,w()):i(t)?A(e,t,E(t)):S(e,t)}function x(e){e._onerror&&e._onerror(e._result),I(e)}function S(e,t){e._state===ie&&(e._result=t,e._state=se,0!==e._subscribers.length&&$(I,e))}function U(e,t){e._state===ie&&(e._state=ue,e._result=t,$(x,e))}function j(e,t,n,r){var o=e._subscribers,i=o.length;e._onerror=null,o[i]=t,o[i+se]=n,o[i+ue]=r,0===i&&e._state&&$(I,e)}function I(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r,o,i=e._result,s=0;ss;s++)j(r.resolve(e[s]),void 0,t,n);return o}function q(e){var t=this,n=new t(y);return U(n,e),n}function H(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function B(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function F(e){this._id=he++,this._state=void 0,this._result=void 0,this._subscribers=[],y!==e&&("function"!=typeof e&&H(),this instanceof F?D(this,e):B())}function N(e,t){this._instanceConstructor=e,this.promise=new e(y),Array.isArray(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&S(this.promise,this._result))):U(this.promise,this._validationError())}function M(){var e;if("undefined"!=typeof o)e=o;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=e.Promise;(!n||"[object Promise]"!==Object.prototype.toString.call(n.resolve())||n.cast)&&(e.Promise=de)}var X;X=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var z,V,J,K=X,Y=0,$=function(e,t){ne[Y]=e,ne[Y+1]=t,Y+=2,2===Y&&(V?V(d):J())},W="undefined"!=typeof window?window:void 0,Z=W||{},Q=Z.MutationObserver||Z.WebKitMutationObserver,ee="undefined"!=typeof r&&"[object process]"==={}.toString.call(r),te="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,ne=new Array(1e3);J=ee?c():Q?l():te?p():void 0===W&&"function"==typeof t?m():h();var re=g,oe=v,ie=void 0,se=1,ue=2,ae=new O,ce=new O,fe=L,le=k,pe=q,he=0,de=F;F.all=fe,F.race=le,F.resolve=oe,F.reject=pe,F._setScheduler=u,F._setAsap=a,F._asap=$,F.prototype={constructor:F,then:re,"catch":function(e){return this.then(null,e)}};var me=N;N.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},N.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===ie&&e>n;n++)this._eachEntry(t[n],n)},N.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===oe){var o=E(e);if(o===re&&e._state!==ie)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(n===de){var i=new n(y);A(i,e,o),this._willSettleAt(i,t)}else this._willSettleAt(new n(function(t){t(e)}),t)}else this._willSettleAt(r(e),t)},N.prototype._settledAt=function(e,t,n){var r=this.promise;r._state===ie&&(this._remaining--,e===ue?U(r,n):this._result[t]=n),0===this._remaining&&S(r,this._result)},N.prototype._willSettleAt=function(e,t){var n=this;j(e,void 0,function(e){n._settledAt(se,t,e)},function(e){n._settledAt(ue,t,e)})};var ge=M,ve={Promise:de,polyfill:ge};"function"==typeof e&&e.amd?e(function(){return ve}):"undefined"!=typeof n&&n.exports?n.exports=ve:"undefined"!=typeof this&&(this.ES6Promise=ve),ge()}).call(this)}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:20}],20:[function(e,t,n){function r(){f=!1,u.length?c=u.concat(c):l=-1,c.length&&o()}function o(){if(!f){var e=setTimeout(r);f=!0;for(var t=c.length;t;){for(u=c,c=[];++l1)for(var n=1;no;)t=e.charCodeAt(o++),t>=55296&&56319>=t&&i>o?(n=e.charCodeAt(o++),56320==(64512&n)?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--)):r.push(t);return r}function s(e){for(var t,n=e.length,r=-1,o="";++r65535&&(t-=65536,o+=b(t>>>10&1023|55296),t=56320|1023&t),o+=b(t);return o}function u(e){if(e>=55296&&57343>=e)throw Error("Lone surrogate U+"+e.toString(16).toUpperCase()+" is not a scalar value")}function a(e,t){return b(e>>t&63|128)}function c(e){if(0==(4294967168&e))return b(e);var t="";return 0==(4294965248&e)?t=b(e>>6&31|192):0==(4294901760&e)?(u(e),t=b(e>>12&15|224),t+=a(e,6)):0==(4292870144&e)&&(t=b(e>>18&7|240),t+=a(e,12),t+=a(e,6)),t+=b(63&e|128)}function f(e){for(var t,n=i(e),r=n.length,o=-1,s="";++o=y)throw Error("Invalid byte index");var e=255&v[w];if(w++,128==(192&e))return 63&e;throw Error("Invalid continuation byte")}function p(){var e,t,n,r,o;if(w>y)throw Error("Invalid byte index");if(w==y)return!1;if(e=255&v[w],w++,0==(128&e))return e;if(192==(224&e)){var t=l();if(o=(31&e)<<6|t,o>=128)return o;throw Error("Invalid continuation byte")}if(224==(240&e)){if(t=l(),n=l(),o=(15&e)<<12|t<<6|n,o>=2048)return u(o),o;throw Error("Invalid continuation byte")}if(240==(248&e)&&(t=l(),n=l(),r=l(),o=(15&e)<<18|t<<12|n<<6|r,o>=65536&&1114111>=o))return o;throw Error("Invalid UTF-8 detected")}function h(e){v=i(e),y=v.length,w=0;for(var t,n=[];(t=p())!==!1;)n.push(t);return s(n)}var d="object"==typeof r&&r,m="object"==typeof n&&n&&n.exports==d&&n,g="object"==typeof t&&t;(g.global===g||g.window===g)&&(o=g);var v,y,w,b=String.fromCharCode,E={version:"2.0.0",encode:f,decode:h};if("function"==typeof e&&"object"==typeof e.amd&&e.amd)e(function(){return E});else if(d&&!d.nodeType)if(m)m.exports=E;else{var T={},R=T.hasOwnProperty;for(var _ in E)R.call(E,_)&&(d[_]=E[_])}else o.utf8=E}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],22:[function(t,n,r){"use strict";!function(r,o){"function"==typeof e&&e.amd?e(["es6-promise","base-64","utf8","axios"],function(e,t,n,i){return r.Github=o(e,t,n,i)}):"object"==typeof n&&n.exports?n.exports=o(t("es6-promise"),t("base-64"),t("utf8"),t("axios")):r.Github=o(r.Promise,r.base64,r.utf8,r.axios)}(this,function(e,t,n,r){function o(e){return t.encode(n.encode(e))}e.polyfill&&e.polyfill();var i=function(e){e=e||{};var t=e.apiUrl||"https://api.github.com",n=i._request=function(n,i,s,u,a){function c(){var e=i.indexOf("//")>=0?i:t+i;if(e+=/\?/.test(e)?"&":"?",s&&"object"==typeof s&&["GET","HEAD","DELETE"].indexOf(n)>-1)for(var r in s)s.hasOwnProperty(r)&&(e+="&"+encodeURIComponent(r)+"="+encodeURIComponent(s[r]));return e.replace(/(×tamp=\d+)/,"")+("undefined"!=typeof window?"×tamp="+(new Date).getTime():"")}var f={headers:{Accept:a?"application/vnd.github.v3.raw+json":"application/vnd.github.v3+json","Content-Type":"application/json;charset=UTF-8"},method:n,data:s?s:{},url:c()};return(e.token||e.username&&e.password)&&(f.headers.Authorization=e.token?"token "+e.token:"Basic "+o(e.username+":"+e.password)),r(f).then(function(e){u(null,e.data||!0,e.request)},function(e){304===e.status?u(null,e.data||!0,e.request):u({path:i,request:e.request,error:e.status})})},s=i._requestAllPages=function(e,t){var r=[];!function o(){n("GET",e,null,function(n,i,s){if(n)return t(n);i instanceof Array||(i=[i]),r.push.apply(r,i);var u=(s.getResponseHeader("link")||"").split(",").filter(function(e){return/rel="next"/.test(e)}).map(function(e){return(/<(.*)>/.exec(e)||[])[1]}).pop();u?(e=u,o()):t(n,r,s)})}()};return i.User=function(){this.repos=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var n="/user/repos",r=[];r.push("type="+encodeURIComponent(e.type||"all")),r.push("sort="+encodeURIComponent(e.sort||"updated")),r.push("per_page="+encodeURIComponent(e.per_page||"100")),e.page&&r.push("page="+encodeURIComponent(e.page)),n+="?"+r.join("&"),s(n,t)},this.orgs=function(e){n("GET","/user/orgs",null,e)},this.gists=function(e){n("GET","/gists",null,e)},this.notifications=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var r="/notifications",o=[];if(e.all&&o.push("all=true"),e.participating&&o.push("participating=true"),e.since){var i=e.since;i.constructor===Date&&(i=i.toISOString()),o.push("since="+encodeURIComponent(i))}if(e.before){var s=e.before;s.constructor===Date&&(s=s.toISOString()),o.push("before="+encodeURIComponent(s))}e.page&&o.push("page="+encodeURIComponent(e.page)),o.length>0&&(r+="?"+o.join("&")),n("GET",r,null,t)},this.show=function(e,t){var r=e?"/users/"+e:"/user";n("GET",r,null,t)},this.userRepos=function(e,t,n){"function"==typeof t&&(n=t,t={});var r="/users/"+e+"/repos",o=[];o.push("type="+encodeURIComponent(t.type||"all")),o.push("sort="+encodeURIComponent(t.sort||"updated")),o.push("per_page="+encodeURIComponent(t.per_page||"100")),t.page&&o.push("page="+encodeURIComponent(t.page)),r+="?"+o.join("&"),s(r,n)},this.userStarred=function(e,t){s("/users/"+e+"/starred?type=all&per_page=100",t)},this.userGists=function(e,t){n("GET","/users/"+e+"/gists",null,t)},this.orgRepos=function(e,t){s("/orgs/"+e+"/repos?type=all&&page_num=1000&sort=updated&direction=desc",t)},this.follow=function(e,t){n("PUT","/user/following/"+e,null,t)},this.unfollow=function(e,t){n("DELETE","/user/following/"+e,null,t)},this.createRepo=function(e,t){n("POST","/user/repos",e,t)}},i.Repository=function(e){function t(e,t){return e===f.branch&&f.sha?t(null,f.sha):void c.getRef("heads/"+e,function(n,r){f.branch=e,f.sha=r,t(n,r)})}var r,s=e.name,u=e.user,a=e.fullname,c=this;r=a?"/repos/"+a:"/repos/"+u+"/"+s;var f={branch:null,sha:null};this.getRef=function(e,t){n("GET",r+"/git/refs/"+e,null,function(e,n,r){return e?t(e):void t(null,n.object.sha,r)})},this.createRef=function(e,t){n("POST",r+"/git/refs",e,t)},this.deleteRef=function(t,o){n("DELETE",r+"/git/refs/"+t,e,o)},this.deleteRepo=function(t){n("DELETE",r,e,t)},this.listTags=function(e){n("GET",r+"/tags",null,e)},this.listPulls=function(e,t){e=e||{};var o=r+"/pulls",i=[];"string"==typeof e?i.push("state="+e):(e.state&&i.push("state="+encodeURIComponent(e.state)),e.head&&i.push("head="+encodeURIComponent(e.head)),e.base&&i.push("base="+encodeURIComponent(e.base)),e.sort&&i.push("sort="+encodeURIComponent(e.sort)),e.direction&&i.push("direction="+encodeURIComponent(e.direction)),e.page&&i.push("page="+e.page),e.per_page&&i.push("per_page="+e.per_page)),i.length>0&&(o+="?"+i.join("&")),n("GET",o,null,t)},this.getPull=function(e,t){n("GET",r+"/pulls/"+e,null,t)},this.compare=function(e,t,o){n("GET",r+"/compare/"+e+"..."+t,null,o)},this.listBranches=function(e){n("GET",r+"/git/refs/heads",null,function(t,n,r){return t?e(t):(n=n.map(function(e){return e.ref.replace(/^refs\/heads\//,"")}),void e(null,n,r))})},this.getBlob=function(e,t){n("GET",r+"/git/blobs/"+e,null,t,"raw")},this.getCommit=function(e,t,o){n("GET",r+"/git/commits/"+t,null,o)},this.getSha=function(e,t,o){return t&&""!==t?void n("GET",r+"/contents/"+t+(e?"?ref="+e:""),null,function(e,t,n){return e?o(e):void o(null,t.sha,n)}):c.getRef("heads/"+e,o)},this.getStatuses=function(e,t){n("GET",r+"/statuses/"+e,null,t)},this.getTree=function(e,t){n("GET",r+"/git/trees/"+e,null,function(e,n,r){return e?t(e):void t(null,n.tree,r)})},this.postBlob=function(e,t){e="string"==typeof e?{content:e,encoding:"utf-8"}:{content:o(e),encoding:"base64"},n("POST",r+"/git/blobs",e,function(e,n,r){return e?t(e):void t(null,n.sha,r)})},this.updateTree=function(e,t,o,i){var s={base_tree:e,tree:[{path:t,mode:"100644",type:"blob",sha:o}]};n("POST",r+"/git/trees",s,function(e,t,n){return e?i(e):void i(null,t.sha,n)})},this.postTree=function(e,t){n("POST",r+"/git/trees",{tree:e},function(e,n,r){return e?t(e):void t(null,n.sha,r)})},this.commit=function(t,o,s,u){var a=new i.User;a.show(null,function(i,a){if(i)return u(i);var c={message:s,author:{name:e.user,email:a.email},parents:[t],tree:o};n("POST",r+"/git/commits",c,function(e,t,n){return e?u(e):(f.sha=t.sha,void u(null,t.sha,n))})})},this.updateHead=function(e,t,o){n("PATCH",r+"/git/refs/heads/"+e,{sha:t},o)},this.show=function(e){n("GET",r,null,e)},this.contributors=function(e,t){t=t||1e3;var o=this;n("GET",r+"/stats/contributors",null,function(n,r,i){return n?e(n):void(202===i.status?setTimeout(function(){o.contributors(e,t)},t):e(n,r,i))})},this.contents=function(e,t,o){t=encodeURI(t),n("GET",r+"/contents"+(t?"/"+t:""),{ref:e},o)},this.fork=function(e){n("POST",r+"/forks",null,e)},this.listForks=function(e){n("GET",r+"/forks",null,e)},this.branch=function(e,t,n){2===arguments.length&&"function"==typeof arguments[1]&&(n=t,t=e,e="master"),this.getRef("heads/"+e,function(e,r){return e&&n?n(e):void c.createRef({ref:"refs/heads/"+t,sha:r},n)})},this.createPullRequest=function(e,t){n("POST",r+"/pulls",e,t)},this.listHooks=function(e){n("GET",r+"/hooks",null,e)},this.getHook=function(e,t){n("GET",r+"/hooks/"+e,null,t)},this.createHook=function(e,t){n("POST",r+"/hooks",e,t)},this.editHook=function(e,t,o){n("PATCH",r+"/hooks/"+e,t,o)},this.deleteHook=function(e,t){n("DELETE",r+"/hooks/"+e,null,t)},this.read=function(e,t,o){n("GET",r+"/contents/"+encodeURI(t)+(e?"?ref="+e:""),null,o,!0)},this.remove=function(e,t,o){c.getSha(e,t,function(i,s){return i?o(i):void n("DELETE",r+"/contents/"+t,{message:t+" is removed",sha:s,branch:e},o)})},this["delete"]=this.remove,this.move=function(e,n,r,o){t(e,function(t,i){c.getTree(i+"?recursive=true",function(t,s){s.forEach(function(e){e.path===n&&(e.path=r),"tree"===e.type&&delete e.sha}),c.postTree(s,function(t,r){c.commit(i,r,"Deleted "+n,function(t,n){c.updateHead(e,n,o)})})})})},this.write=function(e,t,i,s,u,a){"function"==typeof u&&(a=u,u={}),c.getSha(e,encodeURI(t),function(c,f){var l={message:s,content:"undefined"==typeof u.encode||u.encode?o(i):i,branch:e,committer:u&&u.committer?u.committer:void 0,author:u&&u.author?u.author:void 0};c&&404!==c.error||(l.sha=f),n("PUT",r+"/contents/"+encodeURI(t),l,a)})},this.getCommits=function(e,t){e=e||{};var o=r+"/commits",i=[];if(e.sha&&i.push("sha="+encodeURIComponent(e.sha)),e.path&&i.push("path="+encodeURIComponent(e.path)),e.author&&i.push("author="+encodeURIComponent(e.author)),e.since){var s=e.since;s.constructor===Date&&(s=s.toISOString()),i.push("since="+encodeURIComponent(s))}if(e.until){var u=e.until;u.constructor===Date&&(u=u.toISOString()),i.push("until="+encodeURIComponent(u))}e.page&&i.push("page="+e.page),e.perpage&&i.push("per_page="+e.perpage),i.length>0&&(o+="?"+i.join("&")),n("GET",o,null,t)},this.isStarred=function(e,t,r){n("GET","/user/starred/"+e+"/"+t,null,r)},this.star=function(e,t,r){n("PUT","/user/starred/"+e+"/"+t,null,r)},this.unstar=function(e,t,r){n("DELETE","/user/starred/"+e+"/"+t,null,r)},this.createRelease=function(e,t){n("POST",r+"/releases",e,t)},this.editRelease=function(e,t,o){n("PATCH",r+"/releases/"+e,t,o)},this.getRelease=function(e,t){n("GET",r+"/releases/"+e,null,t)},this.deleteRelease=function(e,t){n("DELETE",r+"/releases/"+e,null,t)}},i.Gist=function(e){var t=e.id,r="/gists/"+t;this.read=function(e){n("GET",r,null,e)},this.create=function(e,t){n("POST","/gists",e,t)},this["delete"]=function(e){n("DELETE",r,null,e)},this.fork=function(e){n("POST",r+"/fork",null,e)},this.update=function(e,t){n("PATCH",r,e,t)},this.star=function(e){n("PUT",r+"/star",null,e)},this.unstar=function(e){n("DELETE",r+"/star",null,e)},this.isStarred=function(e){n("GET",r+"/star",null,e)}},i.Issue=function(e){var t="/repos/"+e.user+"/"+e.repo+"/issues";this.create=function(e,r){n("POST",t,e,r)},this.list=function(e,n){var r=[];for(var o in e)e.hasOwnProperty(o)&&r.push(encodeURIComponent(o)+"="+encodeURIComponent(e[o]));s(t+"?"+r.join("&"),n)},this.comment=function(e,t,r){n("POST",e.comments_url,{body:t},r)},this.edit=function(e,r,o){n("PATCH",t+"/"+e,r,o)},this.get=function(e,r){n("GET",t+"/"+e,null,r)}},i.Search=function(e){var t="/search/",r="?q="+e.query;this.repositories=function(e,o){n("GET",t+"repositories"+r,e,o)},this.code=function(e,o){n("GET",t+"code"+r,e,o)},this.issues=function(e,o){n("GET",t+"issues"+r,e,o)},this.users=function(e,o){n("GET",t+"users"+r,e,o)}},i.RateLimit=function(){this.getRateLimit=function(e){n("GET","/rate_limit",null,e)}},i};return i.getIssues=function(e,t){return new i.Issue({user:e,repo:t})},i.getRepo=function(e,t){ -return t?new i.Repository({user:e,name:t}):new i.Repository({fullname:e})},i.getUser=function(){return new i.User},i.getGist=function(e){return new i.Gist({id:e})},i.getSearch=function(e){return new i.Search({query:e})},i.getRateLimit=function(){return new i.RateLimit},i})},{axios:1,"base-64":18,"es6-promise":19,utf8:21}]},{},[22])(22)}); +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Github=e()}}(function(){var e;return function t(e,n,r){function o(s,u){if(!n[s]){if(!e[s]){var a="function"==typeof require&&require;if(!u&&a)return a(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[s]={exports:{}};e[s][0].call(f.exports,function(t){var n=e[s][1][t];return o(n?n:t)},f,f.exports,t,e,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s=200&&o.status<300||!("status"in p)&&o.responseText?t:n)(o),p=null}},p.onerror=function(){n(new Error("Network Error")),p=null},r.isStandardBrowserEnv()){var m=e("./../helpers/cookies"),g=c.withCredentials||u(c.url)?m.read(c.xsrfCookieName):void 0;g&&(l[c.xsrfHeaderName]=g)}if("setRequestHeader"in p&&r.forEach(l,function(e,t){"undefined"==typeof f&&"content-type"===t.toLowerCase()?delete l[t]:p.setRequestHeader(t,e)}),c.withCredentials&&(p.withCredentials=!0),c.responseType)try{p.responseType=c.responseType}catch(v){if("json"!==p.responseType)throw v}r.isArrayBuffer(f)&&(f=new DataView(f)),p.send(f)}},{"./../helpers/btoa":8,"./../helpers/buildURL":9,"./../helpers/cookies":11,"./../helpers/isURLSameOrigin":13,"./../helpers/parseHeaders":14,"./../helpers/transformData":16,"./../utils":17}],3:[function(e,t,n){"use strict";function r(e){this.defaults=i.merge({},e),this.interceptors={request:new u,response:new u}}var o=e("./defaults"),i=e("./utils"),s=e("./core/dispatchRequest"),u=e("./core/InterceptorManager"),a=e("./helpers/isAbsoluteURL"),c=e("./helpers/combineURLs"),f=e("./helpers/bind"),l=e("./helpers/transformData");r.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),e=i.merge(o,this.defaults,{method:"get"},e),e.baseURL&&!a(e.url)&&(e.url=c(e.baseURL,e.url)),e.withCredentials=e.withCredentials||this.defaults.withCredentials,e.data=l(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=[s,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n};var p=new r(o),h=t.exports=f(r.prototype.request,p);h.create=function(e){return new r(e)},h.defaults=p.defaults,h.all=function(e){return Promise.all(e)},h.spread=e("./helpers/spread"),h.interceptors=p.interceptors,i.forEach(["delete","get","head"],function(e){r.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))},h[e]=f(r.prototype[e],p)}),i.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))},h[e]=f(r.prototype[e],p)})},{"./core/InterceptorManager":4,"./core/dispatchRequest":5,"./defaults":6,"./helpers/bind":7,"./helpers/combineURLs":10,"./helpers/isAbsoluteURL":12,"./helpers/spread":15,"./helpers/transformData":16,"./utils":17}],4:[function(e,t,n){"use strict";function r(){this.handlers=[]}var o=e("./../utils");r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},t.exports=r},{"./../utils":17}],5:[function(e,t,n){(function(n){"use strict";t.exports=function(t){return new Promise(function(r,o){try{var i;"function"==typeof t.adapter?i=t.adapter:"undefined"!=typeof XMLHttpRequest?i=e("../adapters/xhr"):"undefined"!=typeof n&&(i=e("../adapters/http")),"function"==typeof i&&i(r,o,t)}catch(s){o(s)}})}}).call(this,e("_process"))},{"../adapters/http":2,"../adapters/xhr":2,_process:20}],6:[function(e,t,n){"use strict";var r=e("./utils"),o=/^\)\]\}',?\n/,i={"Content-Type":"application/x-www-form-urlencoded"};t.exports={transformRequest:[function(e,t){return r.isFormData(e)?e:r.isArrayBuffer(e)?e:r.isArrayBufferView(e)?e.buffer:!r.isObject(e)||r.isFile(e)||r.isBlob(e)?e:(r.isUndefined(t)||(r.forEach(t,function(e,n){"content-type"===n.toLowerCase()&&(t["Content-Type"]=e)}),r.isUndefined(t["Content-Type"])&&(t["Content-Type"]="application/json;charset=utf-8")),JSON.stringify(e))}],transformResponse:[function(e){if("string"==typeof e){e=e.replace(o,"");try{e=JSON.parse(e)}catch(t){}}return e}],headers:{common:{Accept:"application/json, text/plain, */*"},patch:r.merge(i),post:r.merge(i),put:r.merge(i)},timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"}},{"./utils":17}],7:[function(e,t,n){"use strict";t.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r>8-u%1*8)){if(n=o.charCodeAt(u+=.75),n>255)throw new r("INVALID_CHARACTER_ERR: DOM Exception 5");t=t<<8|n}return s}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",t.exports=o},{}],9:[function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=e("./../utils");t.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else{var s=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),s.push(r(t)+"="+r(e))}))}),i=s.join("&")}return i&&(e+=(-1===e.indexOf("?")?"?":"&")+i),e}},{"./../utils":17}],10:[function(e,t,n){"use strict";t.exports=function(e,t){return e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,"")}},{}],11:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,s){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(i)&&u.push("domain="+i),s===!0&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},{"./../utils":17}],12:[function(e,t,n){"use strict";t.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},{}],13:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},{"./../utils":17}],14:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=function(e){var t,n,o,i={};return e?(r.forEach(e.split("\n"),function(e){o=e.indexOf(":"),t=r.trim(e.substr(0,o)).toLowerCase(),n=r.trim(e.substr(o+1)),t&&(i[t]=i[t]?i[t]+", "+n:n)}),i):i}},{"./../utils":17}],15:[function(e,t,n){"use strict";t.exports=function(e){return function(t){return e.apply(null,t)}}},{}],16:[function(e,t,n){"use strict";var r=e("./../utils");t.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},{"./../utils":17}],17:[function(e,t,n){"use strict";function r(e){return"[object Array]"===y.call(e)}function o(e){return"[object ArrayBuffer]"===y.call(e)}function i(e){return"[object FormData]"===y.call(e)}function s(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function u(e){return"string"==typeof e}function a(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function l(e){return"[object Date]"===y.call(e)}function p(e){return"[object File]"===y.call(e)}function h(e){return"[object Blob]"===y.call(e)}function d(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function m(){return"undefined"!=typeof window&&"undefined"!=typeof document&&"function"==typeof document.createElement}function g(e,t){if(null!==e&&"undefined"!=typeof e)if("object"==typeof e||r(e)||(e=[e]),r(e))for(var n=0,o=e.length;o>n;n++)t.call(null,e[n],n,e);else for(var i in e)e.hasOwnProperty(i)&&t.call(null,e[i],i,e)}function v(){function e(e,n){"object"==typeof t[n]&&"object"==typeof e?t[n]=v(t[n],e):t[n]=e}for(var t={},n=0,r=arguments.length;r>n;n++)g(arguments[n],e);return t}var y=Object.prototype.toString;t.exports={isArray:r,isArrayBuffer:o,isFormData:i,isArrayBufferView:s,isString:u,isNumber:a,isObject:f,isUndefined:c,isDate:l,isFile:p,isBlob:h,isStandardBrowserEnv:m,forEach:g,merge:v,trim:d}},{}],18:[function(t,n,r){(function(t){!function(o){var i="object"==typeof r&&r,s="object"==typeof n&&n&&n.exports==i&&n,u="object"==typeof t&&t;u.global!==u&&u.window!==u||(o=u);var a=function(e){this.message=e};a.prototype=new Error,a.prototype.name="InvalidCharacterError";var c=function(e){throw new a(e)},f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=/[\t\n\f\r ]/g,p=function(e){e=String(e).replace(l,"");var t=e.length;t%4==0&&(e=e.replace(/==?$/,""),t=e.length),(t%4==1||/[^+a-zA-Z0-9\/]/.test(e))&&c("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,o=0,i="",s=-1;++s>(-2*o&6)));return i},h=function(e){e=String(e),/[^\0-\xFF]/.test(e)&&c("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,o,i=e.length%3,s="",u=-1,a=e.length-i;++u>18&63)+f.charAt(o>>12&63)+f.charAt(o>>6&63)+f.charAt(63&o);return 2==i?(t=e.charCodeAt(u)<<8,n=e.charCodeAt(++u),o=t+n,s+=f.charAt(o>>10)+f.charAt(o>>4&63)+f.charAt(o<<2&63)+"="):1==i&&(o=e.charCodeAt(u),s+=f.charAt(o>>2)+f.charAt(o<<4&63)+"=="),s},d={encode:h,decode:p,version:"0.1.0"};if("function"==typeof e&&"object"==typeof e.amd&&e.amd)e(function(){return d});else if(i&&!i.nodeType)if(s)s.exports=d;else for(var m in d)d.hasOwnProperty(m)&&(i[m]=d[m]);else o.base64=d}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],19:[function(t,n,r){(function(r,o){(function(){"use strict";function i(e){return"function"==typeof e||"object"==typeof e&&null!==e}function s(e){return"function"==typeof e}function u(e){V=e}function a(e){$=e}function c(){return function(){r.nextTick(d)}}function f(){return function(){z(d)}}function l(){var e=0,t=new Q(d),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}function p(){var e=new MessageChannel;return e.port1.onmessage=d,function(){e.port2.postMessage(0)}}function h(){return function(){setTimeout(d,1)}}function d(){for(var e=0;Y>e;e+=2){var t=ne[e],n=ne[e+1];t(n),ne[e]=void 0,ne[e+1]=void 0}Y=0}function m(){try{var e=t,n=e("vertx");return z=n.runOnLoop||n.runOnContext,f()}catch(r){return h()}}function g(e,t){var n=this,r=n._state;if(r===se&&!e||r===ue&&!t)return this;var o=new this.constructor(y),i=n._result;if(r){var s=arguments[r-1];$(function(){P(r,o,s,i)})}else j(n,o,e,t);return o}function v(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(y);return C(n,e),n}function y(){}function w(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function E(e){try{return e.then}catch(t){return ae.error=t,ae}}function T(e,t,n,r){try{e.call(t,n,r)}catch(o){return o}}function R(e,t,n){$(function(e){var r=!1,o=T(n,t,function(n){r||(r=!0,t!==n?C(e,n):S(e,n))},function(t){r||(r=!0,U(e,t))},"Settle: "+(e._label||" unknown promise"));!r&&o&&(r=!0,U(e,o))},e)}function _(e,t){t._state===se?S(e,t._result):t._state===ue?U(e,t._result):j(t,void 0,function(t){C(e,t)},function(t){U(e,t)})}function A(e,t,n){t.constructor===e.constructor&&n===re&&constructor.resolve===oe?_(e,t):n===ae?U(e,ae.error):void 0===n?S(e,t):s(n)?R(e,t,n):S(e,t)}function C(e,t){e===t?U(e,w()):i(t)?A(e,t,E(t)):S(e,t)}function x(e){e._onerror&&e._onerror(e._result),I(e)}function S(e,t){e._state===ie&&(e._result=t,e._state=se,0!==e._subscribers.length&&$(I,e))}function U(e,t){e._state===ie&&(e._state=ue,e._result=t,$(x,e))}function j(e,t,n,r){var o=e._subscribers,i=o.length;e._onerror=null,o[i]=t,o[i+se]=n,o[i+ue]=r,0===i&&e._state&&$(I,e)}function I(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var r,o,i=e._result,s=0;ss;s++)j(r.resolve(e[s]),void 0,t,n);return o}function q(e){var t=this,n=new t(y);return U(n,e),n}function H(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function B(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function F(e){this._id=he++,this._state=void 0,this._result=void 0,this._subscribers=[],y!==e&&("function"!=typeof e&&H(),this instanceof F?D(this,e):B())}function N(e,t){this._instanceConstructor=e,this.promise=new e(y),Array.isArray(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&S(this.promise,this._result))):U(this.promise,this._validationError())}function M(){var e;if("undefined"!=typeof o)e=o;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(t){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=e.Promise;n&&"[object Promise]"===Object.prototype.toString.call(n.resolve())&&!n.cast||(e.Promise=de)}var X;X=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var z,V,J,K=X,Y=0,$=function(e,t){ne[Y]=e,ne[Y+1]=t,Y+=2,2===Y&&(V?V(d):J())},W="undefined"!=typeof window?window:void 0,Z=W||{},Q=Z.MutationObserver||Z.WebKitMutationObserver,ee="undefined"!=typeof r&&"[object process]"==={}.toString.call(r),te="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,ne=new Array(1e3);J=ee?c():Q?l():te?p():void 0===W&&"function"==typeof t?m():h();var re=g,oe=v,ie=void 0,se=1,ue=2,ae=new O,ce=new O,fe=L,le=k,pe=q,he=0,de=F;F.all=fe,F.race=le,F.resolve=oe,F.reject=pe,F._setScheduler=u,F._setAsap=a,F._asap=$,F.prototype={constructor:F,then:re,"catch":function(e){return this.then(null,e)}};var me=N;N.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},N.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===ie&&e>n;n++)this._eachEntry(t[n],n)},N.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,r=n.resolve;if(r===oe){var o=E(e);if(o===re&&e._state!==ie)this._settledAt(e._state,t,e._result);else if("function"!=typeof o)this._remaining--,this._result[t]=e;else if(n===de){var i=new n(y);A(i,e,o),this._willSettleAt(i,t)}else this._willSettleAt(new n(function(t){t(e)}),t)}else this._willSettleAt(r(e),t)},N.prototype._settledAt=function(e,t,n){var r=this.promise;r._state===ie&&(this._remaining--,e===ue?U(r,n):this._result[t]=n),0===this._remaining&&S(r,this._result)},N.prototype._willSettleAt=function(e,t){var n=this;j(e,void 0,function(e){n._settledAt(se,t,e)},function(e){n._settledAt(ue,t,e)})};var ge=M,ve={Promise:de,polyfill:ge};"function"==typeof e&&e.amd?e(function(){return ve}):"undefined"!=typeof n&&n.exports?n.exports=ve:"undefined"!=typeof this&&(this.ES6Promise=ve),ge()}).call(this)}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:20}],20:[function(e,t,n){function r(){f=!1,u.length?c=u.concat(c):l=-1,c.length&&o()}function o(){if(!f){var e=setTimeout(r);f=!0;for(var t=c.length;t;){for(u=c,c=[];++l1)for(var n=1;no;)t=e.charCodeAt(o++),t>=55296&&56319>=t&&i>o?(n=e.charCodeAt(o++),56320==(64512&n)?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),o--)):r.push(t);return r}function s(e){for(var t,n=e.length,r=-1,o="";++r65535&&(t-=65536,o+=b(t>>>10&1023|55296),t=56320|1023&t),o+=b(t);return o}function u(e){if(e>=55296&&57343>=e)throw Error("Lone surrogate U+"+e.toString(16).toUpperCase()+" is not a scalar value")}function a(e,t){return b(e>>t&63|128)}function c(e){if(0==(4294967168&e))return b(e);var t="";return 0==(4294965248&e)?t=b(e>>6&31|192):0==(4294901760&e)?(u(e),t=b(e>>12&15|224),t+=a(e,6)):0==(4292870144&e)&&(t=b(e>>18&7|240),t+=a(e,12),t+=a(e,6)),t+=b(63&e|128)}function f(e){for(var t,n=i(e),r=n.length,o=-1,s="";++o=y)throw Error("Invalid byte index");var e=255&v[w];if(w++,128==(192&e))return 63&e;throw Error("Invalid continuation byte")}function p(){var e,t,n,r,o;if(w>y)throw Error("Invalid byte index");if(w==y)return!1;if(e=255&v[w],w++,0==(128&e))return e;if(192==(224&e)){var t=l();if(o=(31&e)<<6|t,o>=128)return o;throw Error("Invalid continuation byte")}if(224==(240&e)){if(t=l(),n=l(),o=(15&e)<<12|t<<6|n,o>=2048)return u(o),o;throw Error("Invalid continuation byte")}if(240==(248&e)&&(t=l(),n=l(),r=l(),o=(15&e)<<18|t<<12|n<<6|r,o>=65536&&1114111>=o))return o;throw Error("Invalid UTF-8 detected")}function h(e){v=i(e),y=v.length,w=0;for(var t,n=[];(t=p())!==!1;)n.push(t);return s(n)}var d="object"==typeof r&&r,m="object"==typeof n&&n&&n.exports==d&&n,g="object"==typeof t&&t;g.global!==g&&g.window!==g||(o=g);var v,y,w,b=String.fromCharCode,E={version:"2.0.0",encode:f,decode:h};if("function"==typeof e&&"object"==typeof e.amd&&e.amd)e(function(){return E});else if(d&&!d.nodeType)if(m)m.exports=E;else{var T={},R=T.hasOwnProperty;for(var _ in E)R.call(E,_)&&(d[_]=E[_])}else o.utf8=E}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],22:[function(t,n,r){"use strict";!function(r,o){"function"==typeof e&&e.amd?e(["es6-promise","base-64","utf8","axios"],function(e,t,n,i){return r.Github=o(e,t,n,i)}):"object"==typeof n&&n.exports?n.exports=o(t("es6-promise"),t("base-64"),t("utf8"),t("axios")):r.Github=o(r.Promise,r.base64,r.utf8,r.axios)}(this,function(e,t,n,r){function o(e){return t.encode(n.encode(e))}e.polyfill&&e.polyfill();var i=function(e){e=e||{};var t=e.apiUrl||"https://api.github.com",n=i._request=function(n,i,s,u,a){function c(){var e=i.indexOf("//")>=0?i:t+i;if(e+=/\?/.test(e)?"&":"?",s&&"object"==typeof s&&["GET","HEAD","DELETE"].indexOf(n)>-1)for(var r in s)s.hasOwnProperty(r)&&(e+="&"+encodeURIComponent(r)+"="+encodeURIComponent(s[r]));return e.replace(/(×tamp=\d+)/,"")+("undefined"!=typeof window?"×tamp="+(new Date).getTime():"")}var f={headers:{Accept:a?"application/vnd.github.v3.raw+json":"application/vnd.github.v3+json","Content-Type":"application/json;charset=UTF-8"},method:n,data:s?s:{},url:c()};return(e.token||e.username&&e.password)&&(f.headers.Authorization=e.token?"token "+e.token:"Basic "+o(e.username+":"+e.password)),r(f).then(function(e){u(null,e.data||!0,e.request)},function(e){304===e.status?u(null,e.data||!0,e.request):u({path:i,request:e.request,error:e.status})})},s=i._requestAllPages=function(e,t){var r=[];!function o(){n("GET",e,null,function(n,i,s){if(n)return t(n);i instanceof Array||(i=[i]),r.push.apply(r,i);var u=(s.getResponseHeader("link")||"").split(",").filter(function(e){return/rel="next"/.test(e)}).map(function(e){return(/<(.*)>/.exec(e)||[])[1]}).pop();u?(e=u,o()):t(n,r,s)})}()};return i.User=function(){this.repos=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var n="/user/repos",r=[];r.push("type="+encodeURIComponent(e.type||"all")),r.push("sort="+encodeURIComponent(e.sort||"updated")),r.push("per_page="+encodeURIComponent(e.per_page||"100")),e.page&&r.push("page="+encodeURIComponent(e.page)),n+="?"+r.join("&"),s(n,t)},this.orgs=function(e){n("GET","/user/orgs",null,e)},this.gists=function(e){n("GET","/gists",null,e)},this.notifications=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var r="/notifications",o=[];if(e.all&&o.push("all=true"),e.participating&&o.push("participating=true"),e.since){var i=e.since;i.constructor===Date&&(i=i.toISOString()),o.push("since="+encodeURIComponent(i))}if(e.before){var s=e.before;s.constructor===Date&&(s=s.toISOString()),o.push("before="+encodeURIComponent(s))}e.page&&o.push("page="+encodeURIComponent(e.page)),o.length>0&&(r+="?"+o.join("&")),n("GET",r,null,t)},this.show=function(e,t){var r=e?"/users/"+e:"/user";n("GET",r,null,t)},this.userRepos=function(e,t,n){"function"==typeof t&&(n=t,t={});var r="/users/"+e+"/repos",o=[];o.push("type="+encodeURIComponent(t.type||"all")),o.push("sort="+encodeURIComponent(t.sort||"updated")),o.push("per_page="+encodeURIComponent(t.per_page||"100")),t.page&&o.push("page="+encodeURIComponent(t.page)),r+="?"+o.join("&"),s(r,n)},this.userStarred=function(e,t){s("/users/"+e+"/starred?type=all&per_page=100",t)},this.userGists=function(e,t){n("GET","/users/"+e+"/gists",null,t)},this.orgRepos=function(e,t){s("/orgs/"+e+"/repos?type=all&&page_num=1000&sort=updated&direction=desc",t)},this.follow=function(e,t){n("PUT","/user/following/"+e,null,t)},this.unfollow=function(e,t){n("DELETE","/user/following/"+e,null,t)},this.createRepo=function(e,t){n("POST","/user/repos",e,t)}},i.Repository=function(e){function t(e,t){return e===f.branch&&f.sha?t(null,f.sha):void c.getRef("heads/"+e,function(n,r){f.branch=e,f.sha=r,t(n,r)})}var r,s=e.name,u=e.user,a=e.fullname,c=this;r=a?"/repos/"+a:"/repos/"+u+"/"+s;var f={branch:null,sha:null};this.getRef=function(e,t){n("GET",r+"/git/refs/"+e,null,function(e,n,r){return e?t(e):void t(null,n.object.sha,r)})},this.createRef=function(e,t){n("POST",r+"/git/refs",e,t)},this.deleteRef=function(t,o){n("DELETE",r+"/git/refs/"+t,e,o)},this.deleteRepo=function(t){n("DELETE",r,e,t)},this.listTags=function(e){n("GET",r+"/tags",null,e)},this.listPulls=function(e,t){e=e||{};var o=r+"/pulls",i=[];"string"==typeof e?i.push("state="+e):(e.state&&i.push("state="+encodeURIComponent(e.state)),e.head&&i.push("head="+encodeURIComponent(e.head)),e.base&&i.push("base="+encodeURIComponent(e.base)),e.sort&&i.push("sort="+encodeURIComponent(e.sort)),e.direction&&i.push("direction="+encodeURIComponent(e.direction)),e.page&&i.push("page="+e.page),e.per_page&&i.push("per_page="+e.per_page)),i.length>0&&(o+="?"+i.join("&")),n("GET",o,null,t)},this.getPull=function(e,t){n("GET",r+"/pulls/"+e,null,t)},this.compare=function(e,t,o){n("GET",r+"/compare/"+e+"..."+t,null,o)},this.listBranches=function(e){n("GET",r+"/git/refs/heads",null,function(t,n,r){return t?e(t):(n=n.map(function(e){return e.ref.replace(/^refs\/heads\//,"")}),void e(null,n,r))})},this.getBlob=function(e,t){n("GET",r+"/git/blobs/"+e,null,t,"raw")},this.getCommit=function(e,t,o){n("GET",r+"/git/commits/"+t,null,o)},this.getSha=function(e,t,o){return t&&""!==t?void n("GET",r+"/contents/"+t+(e?"?ref="+e:""),null,function(e,t,n){return e?o(e):void o(null,t.sha,n)}):c.getRef("heads/"+e,o)},this.getStatuses=function(e,t){n("GET",r+"/statuses/"+e,null,t)},this.getTree=function(e,t){n("GET",r+"/git/trees/"+e,null,function(e,n,r){return e?t(e):void t(null,n.tree,r)})},this.postBlob=function(e,t){e="string"==typeof e?{content:e,encoding:"utf-8"}:{content:o(e),encoding:"base64"},n("POST",r+"/git/blobs",e,function(e,n,r){return e?t(e):void t(null,n.sha,r)})},this.updateTree=function(e,t,o,i){var s={base_tree:e,tree:[{path:t,mode:"100644",type:"blob",sha:o}]};n("POST",r+"/git/trees",s,function(e,t,n){return e?i(e):void i(null,t.sha,n)})},this.postTree=function(e,t){n("POST",r+"/git/trees",{tree:e},function(e,n,r){return e?t(e):void t(null,n.sha,r)})},this.commit=function(t,o,s,u){var a=new i.User;a.show(null,function(i,a){if(i)return u(i);var c={message:s,author:{name:e.user,email:a.email},parents:[t],tree:o};n("POST",r+"/git/commits",c,function(e,t,n){return e?u(e):(f.sha=t.sha,void u(null,t.sha,n))})})},this.updateHead=function(e,t,o){n("PATCH",r+"/git/refs/heads/"+e,{sha:t},o)},this.show=function(e){n("GET",r,null,e)},this.contributors=function(e,t){t=t||1e3;var o=this;n("GET",r+"/stats/contributors",null,function(n,r,i){return n?e(n):void(202===i.status?setTimeout(function(){o.contributors(e,t)},t):e(n,r,i))})},this.collaborators=function(e){n("GET",r+"/collaborators",null,e)},this.isCollaborator=function(e,t){n("GET",r+"/collaborators/"+e,null,t)},this.contents=function(e,t,o){t=encodeURI(t),n("GET",r+"/contents"+(t?"/"+t:""),{ref:e},o)},this.fork=function(e){n("POST",r+"/forks",null,e)},this.listForks=function(e){n("GET",r+"/forks",null,e)},this.branch=function(e,t,n){2===arguments.length&&"function"==typeof arguments[1]&&(n=t,t=e,e="master"),this.getRef("heads/"+e,function(e,r){return e&&n?n(e):void c.createRef({ref:"refs/heads/"+t,sha:r},n)})},this.createPullRequest=function(e,t){n("POST",r+"/pulls",e,t)},this.listHooks=function(e){n("GET",r+"/hooks",null,e)},this.getHook=function(e,t){n("GET",r+"/hooks/"+e,null,t)},this.createHook=function(e,t){n("POST",r+"/hooks",e,t)},this.editHook=function(e,t,o){n("PATCH",r+"/hooks/"+e,t,o)},this.deleteHook=function(e,t){n("DELETE",r+"/hooks/"+e,null,t)},this.read=function(e,t,o){n("GET",r+"/contents/"+encodeURI(t)+(e?"?ref="+e:""),null,o,!0)},this.remove=function(e,t,o){c.getSha(e,t,function(i,s){return i?o(i):void n("DELETE",r+"/contents/"+t,{message:t+" is removed",sha:s,branch:e},o)})},this["delete"]=this.remove,this.move=function(e,n,r,o){t(e,function(t,i){c.getTree(i+"?recursive=true",function(t,s){s.forEach(function(e){e.path===n&&(e.path=r),"tree"===e.type&&delete e.sha}),c.postTree(s,function(t,r){c.commit(i,r,"Deleted "+n,function(t,n){c.updateHead(e,n,o)})})})})},this.write=function(e,t,i,s,u,a){"function"==typeof u&&(a=u,u={}),c.getSha(e,encodeURI(t),function(c,f){var l={message:s,content:"undefined"==typeof u.encode||u.encode?o(i):i,branch:e,committer:u&&u.committer?u.committer:void 0,author:u&&u.author?u.author:void 0};c&&404!==c.error||(l.sha=f),n("PUT",r+"/contents/"+encodeURI(t),l,a)})},this.getCommits=function(e,t){e=e||{};var o=r+"/commits",i=[];if(e.sha&&i.push("sha="+encodeURIComponent(e.sha)),e.path&&i.push("path="+encodeURIComponent(e.path)),e.author&&i.push("author="+encodeURIComponent(e.author)),e.since){var s=e.since;s.constructor===Date&&(s=s.toISOString()),i.push("since="+encodeURIComponent(s))}if(e.until){var u=e.until;u.constructor===Date&&(u=u.toISOString()),i.push("until="+encodeURIComponent(u))}e.page&&i.push("page="+e.page),e.perpage&&i.push("per_page="+e.perpage),i.length>0&&(o+="?"+i.join("&")),n("GET",o,null,t)},this.isStarred=function(e,t,r){n("GET","/user/starred/"+e+"/"+t,null,r)},this.star=function(e,t,r){n("PUT","/user/starred/"+e+"/"+t,null,r)},this.unstar=function(e,t,r){n("DELETE","/user/starred/"+e+"/"+t,null,r)},this.createRelease=function(e,t){n("POST",r+"/releases",e,t)},this.editRelease=function(e,t,o){n("PATCH",r+"/releases/"+e,t,o)},this.getRelease=function(e,t){n("GET",r+"/releases/"+e,null,t)},this.deleteRelease=function(e,t){n("DELETE",r+"/releases/"+e,null,t)}},i.Gist=function(e){var t=e.id,r="/gists/"+t;this.read=function(e){n("GET",r,null,e)},this.create=function(e,t){n("POST","/gists",e,t)},this["delete"]=function(e){n("DELETE",r,null,e)},this.fork=function(e){n("POST",r+"/fork",null,e)},this.update=function(e,t){n("PATCH",r,e,t)},this.star=function(e){n("PUT",r+"/star",null,e)},this.unstar=function(e){n("DELETE",r+"/star",null,e)},this.isStarred=function(e){n("GET",r+"/star",null,e)}},i.Issue=function(e){var t="/repos/"+e.user+"/"+e.repo+"/issues";this.create=function(e,r){n("POST",t,e,r)},this.list=function(e,n){var r=[];for(var o in e)e.hasOwnProperty(o)&&r.push(encodeURIComponent(o)+"="+encodeURIComponent(e[o]));s(t+"?"+r.join("&"),n)},this.comment=function(e,t,r){n("POST",e.comments_url,{body:t},r)},this.edit=function(e,r,o){n("PATCH",t+"/"+e,r,o)},this.get=function(e,r){n("GET",t+"/"+e,null,r)}},i.Search=function(e){var t="/search/",r="?q="+e.query;this.repositories=function(e,o){n("GET",t+"repositories"+r,e,o)},this.code=function(e,o){n("GET",t+"code"+r,e,o)},this.issues=function(e,o){n("GET",t+"issues"+r,e,o)},this.users=function(e,o){n("GET",t+"users"+r,e,o)}},i.RateLimit=function(){this.getRateLimit=function(e){ +n("GET","/rate_limit",null,e)}},i};return i.getIssues=function(e,t){return new i.Issue({user:e,repo:t})},i.getRepo=function(e,t){return t?new i.Repository({user:e,name:t}):new i.Repository({fullname:e})},i.getUser=function(){return new i.User},i.getGist=function(e){return new i.Gist({id:e})},i.getSearch=function(e){return new i.Search({query:e})},i.getRateLimit=function(){return new i.RateLimit},i})},{axios:1,"base-64":18,"es6-promise":19,utf8:21}]},{},[22])(22)}); //# sourceMappingURL=github.bundle.min.js.map diff --git a/dist/github.bundle.min.js.map b/dist/github.bundle.min.js.map index 7580a0bd..da955218 100644 --- a/dist/github.bundle.min.js.map +++ b/dist/github.bundle.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/axios/index.js","github.js","node_modules/axios/lib/adapters/xhr.js","node_modules/axios/lib/axios.js","node_modules/axios/lib/core/InterceptorManager.js","node_modules/axios/lib/core/dispatchRequest.js","node_modules/axios/lib/defaults.js","node_modules/axios/lib/helpers/bind.js","node_modules/axios/lib/helpers/btoa.js","node_modules/axios/lib/helpers/buildURL.js","node_modules/axios/lib/helpers/combineURLs.js","node_modules/axios/lib/helpers/cookies.js","node_modules/axios/lib/helpers/isAbsoluteURL.js","node_modules/axios/lib/helpers/isURLSameOrigin.js","node_modules/axios/lib/helpers/parseHeaders.js","node_modules/axios/lib/helpers/spread.js","node_modules/axios/lib/helpers/transformData.js","node_modules/axios/lib/utils.js","node_modules/base-64/base64.js","node_modules/es6-promise/dist/es6-promise.js","node_modules/process/browser.js","node_modules/utf8/utf8.js","src/github.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Github","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"./lib/axios",2,"utils","buildURL","parseHeaders","transformData","isURLSameOrigin","btoa","resolve","reject","config","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","XDomainRequest","url","auth","username","password","Authorization","open","method","toUpperCase","params","paramsSerializer","timeout","onload","responseHeaders","getAllResponseHeaders","responseData","indexOf","responseType","responseText","response","transformResponse","status","statusText","onerror","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","read","xsrfCookieName","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isArrayBuffer","DataView","send","./../helpers/btoa","./../helpers/buildURL","./../helpers/cookies","./../helpers/isURLSameOrigin","./../helpers/parseHeaders","./../helpers/transformData","./../utils",3,"Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","prototype","arguments","baseURL","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","push","then","shift","defaultInstance","axios","create","all","promises","spread","./core/InterceptorManager","./core/dispatchRequest","./defaults","./helpers/bind","./helpers/combineURLs","./helpers/isAbsoluteURL","./helpers/spread","./helpers/transformData","./utils",4,"handlers","use","eject","id","fn","h",5,"process","adapter","../adapters/http","../adapters/xhr","_process",6,"PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isArrayBufferView","buffer","isObject","isFile","isBlob","isUndefined","JSON","stringify","replace","parse","Accept","patch","post","put",7,"thisArg","args","Array","apply",8,"InvalidCharacterError","message","input","block","charCode","str","String","output","idx","map","chars","charAt","charCodeAt","name",9,"encode","encodeURIComponent","serializedParams","parts","isArray","v","isDate","toISOString","join",10,"relativeURL",11,"write","value","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","document","match","RegExp","decodeURIComponent","remove","now",12,"test",13,"resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","pathname","originURL","navigator","userAgent","createElement","location","requestURL","parsed",14,"split","line","trim","substr",15,"callback","arr",16,"fns",17,"toString","result","ArrayBuffer","isView","obj","hasOwnProperty","assignValue","Object",18,"root","freeExports","freeModule","freeGlobal","error","TABLE","REGEX_SPACE_CHARACTERS","decode","bitStorage","bitCounter","position","fromCharCode","b","c","padding","base64","version","nodeType",19,"lib$es6$promise$utils$$objectOrFunction","x","lib$es6$promise$utils$$isFunction","lib$es6$promise$asap$$setScheduler","scheduleFn","lib$es6$promise$asap$$customSchedulerFn","lib$es6$promise$asap$$setAsap","asapFn","lib$es6$promise$asap$$asap","lib$es6$promise$asap$$useNextTick","nextTick","lib$es6$promise$asap$$flush","lib$es6$promise$asap$$useVertxTimer","lib$es6$promise$asap$$vertxNext","lib$es6$promise$asap$$useMutationObserver","iterations","observer","lib$es6$promise$asap$$BrowserMutationObserver","node","createTextNode","observe","characterData","lib$es6$promise$asap$$useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","lib$es6$promise$asap$$useSetTimeout","setTimeout","lib$es6$promise$asap$$len","lib$es6$promise$asap$$queue","arg","lib$es6$promise$asap$$attemptVertx","vertx","runOnLoop","runOnContext","lib$es6$promise$then$$then","onFulfillment","onRejection","parent","state","_state","lib$es6$promise$$internal$$FULFILLED","lib$es6$promise$$internal$$REJECTED","child","constructor","lib$es6$promise$$internal$$noop","_result","lib$es6$promise$$internal$$invokeCallback","lib$es6$promise$$internal$$subscribe","lib$es6$promise$promise$resolve$$resolve","object","Constructor","lib$es6$promise$$internal$$resolve","lib$es6$promise$$internal$$selfFulfillment","TypeError","lib$es6$promise$$internal$$cannotReturnOwn","lib$es6$promise$$internal$$getThen","lib$es6$promise$$internal$$GET_THEN_ERROR","lib$es6$promise$$internal$$tryThen","fulfillmentHandler","rejectionHandler","lib$es6$promise$$internal$$handleForeignThenable","thenable","sealed","lib$es6$promise$$internal$$fulfill","reason","lib$es6$promise$$internal$$reject","_label","lib$es6$promise$$internal$$handleOwnThenable","lib$es6$promise$$internal$$handleMaybeThenable","maybeThenable","lib$es6$promise$then$$default","lib$es6$promise$promise$resolve$$default","lib$es6$promise$$internal$$publishRejection","_onerror","lib$es6$promise$$internal$$publish","lib$es6$promise$$internal$$PENDING","_subscribers","subscribers","settled","detail","lib$es6$promise$$internal$$ErrorObject","lib$es6$promise$$internal$$tryCatch","lib$es6$promise$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","lib$es6$promise$$internal$$initializePromise","resolver","lib$es6$promise$promise$all$$all","entries","lib$es6$promise$enumerator$$default","lib$es6$promise$promise$race$$race","lib$es6$promise$utils$$isArray","lib$es6$promise$promise$reject$$reject","lib$es6$promise$promise$$needsResolver","lib$es6$promise$promise$$needsNew","lib$es6$promise$promise$$Promise","_id","lib$es6$promise$promise$$counter","lib$es6$promise$enumerator$$Enumerator","_instanceConstructor","_input","_remaining","_enumerate","_validationError","lib$es6$promise$polyfill$$polyfill","local","Function","P","cast","lib$es6$promise$promise$$default","lib$es6$promise$utils$$_isArray","lib$es6$promise$asap$$scheduleFlush","lib$es6$promise$asap$$browserWindow","lib$es6$promise$asap$$browserGlobal","MutationObserver","WebKitMutationObserver","lib$es6$promise$asap$$isNode","lib$es6$promise$asap$$isWorker","Uint8ClampedArray","importScripts","lib$es6$promise$promise$all$$default","lib$es6$promise$promise$race$$default","lib$es6$promise$promise$reject$$default","race","_setScheduler","_setAsap","_asap","catch","_eachEntry","entry","_settledAt","_willSettleAt","enumerator","lib$es6$promise$polyfill$$default","lib$es6$promise$umd$$ES6Promise","polyfill",20,"cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","len","run","clearTimeout","Item","fun","array","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask",21,"ucs2decode","string","extra","counter","ucs2encode","index","stringFromCharCode","checkScalarValue","codePoint","createByte","encodeCodePoint","symbol","utf8encode","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","utf8decode","tmp","utf8",22,"factory","Base64","Utf8","b64encode","options","API_URL","apiUrl","_request","cb","raw","getURL","param","getTime","token","_requestAllPages","results","iterate","err","res","xhr","next","getResponseHeader","filter","link","exec","pop","User","repos","type","sort","per_page","page","orgs","gists","notifications","participating","since","before","show","command","userRepos","userStarred","userGists","orgRepos","orgname","follow","unfollow","createRepo","Repository","updateTree","branch","currentTree","sha","that","getRef","repoPath","repo","user","fullname","ref","createRef","deleteRef","deleteRepo","listTags","listPulls","head","base","direction","getPull","number","compare","listBranches","heads","getBlob","getCommit","getSha","pathContent","getStatuses","getTree","tree","postBlob","content","encoding","baseTree","blob","base_tree","mode","postTree","commit","userData","author","email","parents","updateHead","contributors","retry","contents","encodeURI","fork","listForks","oldBranch","newBranch","createPullRequest","listHooks","getHook","createHook","editHook","deleteHook","move","newPath","latestCommit","rootTree","writeOptions","committer","getCommits","until","perpage","isStarred","owner","repository","star","unstar","createRelease","editRelease","getRelease","deleteRelease","Gist","gistPath","update","Issue","list","query","comment","issue","comments_url","body","edit","get","Search","repositories","issues","users","RateLimit","getRateLimit","getIssues","getRepo","getUser","getGist","getSearch","base-64","es6-promise"],"mappings":"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","file":"github.bundle.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= 200 && response.status < 300) ||\r\n (!('status' in request) && response.responseText) ?\r\n resolve :\r\n reject)(response);\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Handle low level network errors\r\n request.onerror = function handleError() {\r\n // Real errors are hidden from us by the browser\r\n // onerror should only fire if it's a network error\r\n reject(new Error('Network Error'));\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Add xsrf header\r\n // This is only done if running in a standard browser environment.\r\n // Specifically not if we're in a web worker, or react-native.\r\n if (utils.isStandardBrowserEnv()) {\r\n var cookies = require('./../helpers/cookies');\r\n\r\n // Add xsrf header\r\n var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?\r\n cookies.read(config.xsrfCookieName) :\r\n undefined;\r\n\r\n if (xsrfValue) {\r\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\r\n }\r\n }\r\n\r\n // Add headers to the request\r\n if ('setRequestHeader' in request) {\r\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\r\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\r\n // Remove Content-Type if data is undefined\r\n delete requestHeaders[key];\r\n } else {\r\n // Otherwise add header to the request\r\n request.setRequestHeader(key, val);\r\n }\r\n });\r\n }\r\n\r\n // Add withCredentials to request if needed\r\n if (config.withCredentials) {\r\n request.withCredentials = true;\r\n }\r\n\r\n // Add responseType to request if needed\r\n if (config.responseType) {\r\n try {\r\n request.responseType = config.responseType;\r\n } catch (e) {\r\n if (request.responseType !== 'json') {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n if (utils.isArrayBuffer(requestData)) {\r\n requestData = new DataView(requestData);\r\n }\r\n\r\n // Send the request\r\n request.send(requestData);\r\n};\r\n\n},{\"./../helpers/btoa\":8,\"./../helpers/buildURL\":9,\"./../helpers/cookies\":11,\"./../helpers/isURLSameOrigin\":13,\"./../helpers/parseHeaders\":14,\"./../helpers/transformData\":16,\"./../utils\":17}],3:[function(require,module,exports){\n'use strict';\r\n\r\nvar defaults = require('./defaults');\r\nvar utils = require('./utils');\r\nvar dispatchRequest = require('./core/dispatchRequest');\r\nvar InterceptorManager = require('./core/InterceptorManager');\r\nvar isAbsoluteURL = require('./helpers/isAbsoluteURL');\r\nvar combineURLs = require('./helpers/combineURLs');\r\nvar bind = require('./helpers/bind');\r\nvar transformData = require('./helpers/transformData');\r\n\r\nfunction Axios(defaultConfig) {\r\n this.defaults = utils.merge({}, defaultConfig);\r\n this.interceptors = {\r\n request: new InterceptorManager(),\r\n response: new InterceptorManager()\r\n };\r\n}\r\n\r\nAxios.prototype.request = function request(config) {\r\n /*eslint no-param-reassign:0*/\r\n // Allow for axios('example/url'[, config]) a la fetch API\r\n if (typeof config === 'string') {\r\n config = utils.merge({\r\n url: arguments[0]\r\n }, arguments[1]);\r\n }\r\n\r\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\r\n\r\n // Support baseURL config\r\n if (config.baseURL && !isAbsoluteURL(config.url)) {\r\n config.url = combineURLs(config.baseURL, config.url);\r\n }\r\n\r\n // Don't allow overriding defaults.withCredentials\r\n config.withCredentials = config.withCredentials || this.defaults.withCredentials;\r\n\r\n // Transform request data\r\n config.data = transformData(\r\n config.data,\r\n config.headers,\r\n config.transformRequest\r\n );\r\n\r\n // Flatten headers\r\n config.headers = utils.merge(\r\n config.headers.common || {},\r\n config.headers[config.method] || {},\r\n config.headers || {}\r\n );\r\n\r\n utils.forEach(\r\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\r\n function cleanHeaderConfig(method) {\r\n delete config.headers[method];\r\n }\r\n );\r\n\r\n // Hook up interceptors middleware\r\n var chain = [dispatchRequest, undefined];\r\n var promise = Promise.resolve(config);\r\n\r\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\r\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\r\n });\r\n\r\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\r\n chain.push(interceptor.fulfilled, interceptor.rejected);\r\n });\r\n\r\n while (chain.length) {\r\n promise = promise.then(chain.shift(), chain.shift());\r\n }\r\n\r\n return promise;\r\n};\r\n\r\nvar defaultInstance = new Axios(defaults);\r\nvar axios = module.exports = bind(Axios.prototype.request, defaultInstance);\r\n\r\naxios.create = function create(defaultConfig) {\r\n return new Axios(defaultConfig);\r\n};\r\n\r\n// Expose defaults\r\naxios.defaults = defaultInstance.defaults;\r\n\r\n// Expose all/spread\r\naxios.all = function all(promises) {\r\n return Promise.all(promises);\r\n};\r\naxios.spread = require('./helpers/spread');\r\n\r\n// Expose interceptors\r\naxios.interceptors = defaultInstance.interceptors;\r\n\r\n// Provide aliases for supported request methods\r\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\r\n /*eslint func-names:0*/\r\n Axios.prototype[method] = function(url, config) {\r\n return this.request(utils.merge(config || {}, {\r\n method: method,\r\n url: url\r\n }));\r\n };\r\n axios[method] = bind(Axios.prototype[method], defaultInstance);\r\n});\r\n\r\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\r\n /*eslint func-names:0*/\r\n Axios.prototype[method] = function(url, data, config) {\r\n return this.request(utils.merge(config || {}, {\r\n method: method,\r\n url: url,\r\n data: data\r\n }));\r\n };\r\n axios[method] = bind(Axios.prototype[method], defaultInstance);\r\n});\r\n\n},{\"./core/InterceptorManager\":4,\"./core/dispatchRequest\":5,\"./defaults\":6,\"./helpers/bind\":7,\"./helpers/combineURLs\":10,\"./helpers/isAbsoluteURL\":12,\"./helpers/spread\":15,\"./helpers/transformData\":16,\"./utils\":17}],4:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nfunction InterceptorManager() {\r\n this.handlers = [];\r\n}\r\n\r\n/**\r\n * Add a new interceptor to the stack\r\n *\r\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\r\n * @param {Function} rejected The function to handle `reject` for a `Promise`\r\n *\r\n * @return {Number} An ID used to remove interceptor later\r\n */\r\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\r\n this.handlers.push({\r\n fulfilled: fulfilled,\r\n rejected: rejected\r\n });\r\n return this.handlers.length - 1;\r\n};\r\n\r\n/**\r\n * Remove an interceptor from the stack\r\n *\r\n * @param {Number} id The ID that was returned by `use`\r\n */\r\nInterceptorManager.prototype.eject = function eject(id) {\r\n if (this.handlers[id]) {\r\n this.handlers[id] = null;\r\n }\r\n};\r\n\r\n/**\r\n * Iterate over all the registered interceptors\r\n *\r\n * This method is particularly useful for skipping over any\r\n * interceptors that may have become `null` calling `eject`.\r\n *\r\n * @param {Function} fn The function to call for each interceptor\r\n */\r\nInterceptorManager.prototype.forEach = function forEach(fn) {\r\n utils.forEach(this.handlers, function forEachHandler(h) {\r\n if (h !== null) {\r\n fn(h);\r\n }\r\n });\r\n};\r\n\r\nmodule.exports = InterceptorManager;\r\n\n},{\"./../utils\":17}],5:[function(require,module,exports){\n(function (process){\n'use strict';\r\n\r\n/**\r\n * Dispatch a request to the server using whichever adapter\r\n * is supported by the current environment.\r\n *\r\n * @param {object} config The config that is to be used for the request\r\n * @returns {Promise} The Promise to be fulfilled\r\n */\r\nmodule.exports = function dispatchRequest(config) {\r\n return new Promise(function executor(resolve, reject) {\r\n try {\r\n var adapter;\r\n\r\n if (typeof config.adapter === 'function') {\r\n // For custom adapter support\r\n adapter = config.adapter;\r\n } else if (typeof XMLHttpRequest !== 'undefined') {\r\n // For browsers use XHR adapter\r\n adapter = require('../adapters/xhr');\r\n } else if (typeof process !== 'undefined') {\r\n // For node use HTTP adapter\r\n adapter = require('../adapters/http');\r\n }\r\n\r\n if (typeof adapter === 'function') {\r\n adapter(resolve, reject, config);\r\n }\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\n\r\n\n}).call(this,require('_process'))\n\n},{\"../adapters/http\":2,\"../adapters/xhr\":2,\"_process\":20}],6:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./utils');\r\n\r\nvar PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\r\nvar DEFAULT_CONTENT_TYPE = {\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n};\r\n\r\nmodule.exports = {\r\n transformRequest: [function transformResponseJSON(data, headers) {\r\n if (utils.isFormData(data)) {\r\n return data;\r\n }\r\n if (utils.isArrayBuffer(data)) {\r\n return data;\r\n }\r\n if (utils.isArrayBufferView(data)) {\r\n return data.buffer;\r\n }\r\n if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) {\r\n // Set application/json if no Content-Type has been specified\r\n if (!utils.isUndefined(headers)) {\r\n utils.forEach(headers, function processContentTypeHeader(val, key) {\r\n if (key.toLowerCase() === 'content-type') {\r\n headers['Content-Type'] = val;\r\n }\r\n });\r\n\r\n if (utils.isUndefined(headers['Content-Type'])) {\r\n headers['Content-Type'] = 'application/json;charset=utf-8';\r\n }\r\n }\r\n return JSON.stringify(data);\r\n }\r\n return data;\r\n }],\r\n\r\n transformResponse: [function transformResponseJSON(data) {\r\n /*eslint no-param-reassign:0*/\r\n if (typeof data === 'string') {\r\n data = data.replace(PROTECTION_PREFIX, '');\r\n try {\r\n data = JSON.parse(data);\r\n } catch (e) { /* Ignore */ }\r\n }\r\n return data;\r\n }],\r\n\r\n headers: {\r\n common: {\r\n 'Accept': 'application/json, text/plain, */*'\r\n },\r\n patch: utils.merge(DEFAULT_CONTENT_TYPE),\r\n post: utils.merge(DEFAULT_CONTENT_TYPE),\r\n put: utils.merge(DEFAULT_CONTENT_TYPE)\r\n },\r\n\r\n timeout: 0,\r\n\r\n xsrfCookieName: 'XSRF-TOKEN',\r\n xsrfHeaderName: 'X-XSRF-TOKEN'\r\n};\r\n\n},{\"./utils\":17}],7:[function(require,module,exports){\n'use strict';\r\n\r\nmodule.exports = function bind(fn, thisArg) {\r\n return function wrap() {\r\n var args = new Array(arguments.length);\r\n for (var i = 0; i < args.length; i++) {\r\n args[i] = arguments[i];\r\n }\r\n return fn.apply(thisArg, args);\r\n };\r\n};\r\n\n},{}],8:[function(require,module,exports){\n'use strict';\r\n\r\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\r\n\r\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n\r\nfunction InvalidCharacterError(message) {\r\n this.message = message;\r\n}\r\nInvalidCharacterError.prototype = new Error;\r\nInvalidCharacterError.prototype.code = 5;\r\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\r\n\r\nfunction btoa(input) {\r\n var str = String(input);\r\n var output = '';\r\n for (\r\n // initialize result and counter\r\n var block, charCode, idx = 0, map = chars;\r\n // if the next str index does not exist:\r\n // change the mapping table to \"=\"\r\n // check if d has no fractional digits\r\n str.charAt(idx | 0) || (map = '=', idx % 1);\r\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\r\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\r\n ) {\r\n charCode = str.charCodeAt(idx += 3 / 4);\r\n if (charCode > 0xFF) {\r\n throw new InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\r\n }\r\n block = block << 8 | charCode;\r\n }\r\n return output;\r\n}\r\n\r\nmodule.exports = btoa;\r\n\n},{}],9:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nfunction encode(val) {\r\n return encodeURIComponent(val).\r\n replace(/%40/gi, '@').\r\n replace(/%3A/gi, ':').\r\n replace(/%24/g, '$').\r\n replace(/%2C/gi, ',').\r\n replace(/%20/g, '+').\r\n replace(/%5B/gi, '[').\r\n replace(/%5D/gi, ']');\r\n}\r\n\r\n/**\r\n * Build a URL by appending params to the end\r\n *\r\n * @param {string} url The base of the url (e.g., http://www.google.com)\r\n * @param {object} [params] The params to be appended\r\n * @returns {string} The formatted url\r\n */\r\nmodule.exports = function buildURL(url, params, paramsSerializer) {\r\n /*eslint no-param-reassign:0*/\r\n if (!params) {\r\n return url;\r\n }\r\n\r\n var serializedParams;\r\n if (paramsSerializer) {\r\n serializedParams = paramsSerializer(params);\r\n } else {\r\n var parts = [];\r\n\r\n utils.forEach(params, function serialize(val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return;\r\n }\r\n\r\n if (utils.isArray(val)) {\r\n key = key + '[]';\r\n }\r\n\r\n if (!utils.isArray(val)) {\r\n val = [val];\r\n }\r\n\r\n utils.forEach(val, function parseValue(v) {\r\n if (utils.isDate(v)) {\r\n v = v.toISOString();\r\n } else if (utils.isObject(v)) {\r\n v = JSON.stringify(v);\r\n }\r\n parts.push(encode(key) + '=' + encode(v));\r\n });\r\n });\r\n\r\n serializedParams = parts.join('&');\r\n }\r\n\r\n if (serializedParams) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\r\n }\r\n\r\n return url;\r\n};\r\n\r\n\n},{\"./../utils\":17}],10:[function(require,module,exports){\n'use strict';\r\n\r\n/**\r\n * Creates a new URL by combining the specified URLs\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} relativeURL The relative URL\r\n * @returns {string} The combined URL\r\n */\r\nmodule.exports = function combineURLs(baseURL, relativeURL) {\r\n return baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '');\r\n};\r\n\n},{}],11:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nmodule.exports = (\r\n utils.isStandardBrowserEnv() ?\r\n\r\n // Standard browser envs support document.cookie\r\n (function standardBrowserEnv() {\r\n return {\r\n write: function write(name, value, expires, path, domain, secure) {\r\n var cookie = [];\r\n cookie.push(name + '=' + encodeURIComponent(value));\r\n\r\n if (utils.isNumber(expires)) {\r\n cookie.push('expires=' + new Date(expires).toGMTString());\r\n }\r\n\r\n if (utils.isString(path)) {\r\n cookie.push('path=' + path);\r\n }\r\n\r\n if (utils.isString(domain)) {\r\n cookie.push('domain=' + domain);\r\n }\r\n\r\n if (secure === true) {\r\n cookie.push('secure');\r\n }\r\n\r\n document.cookie = cookie.join('; ');\r\n },\r\n\r\n read: function read(name) {\r\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\r\n return (match ? decodeURIComponent(match[3]) : null);\r\n },\r\n\r\n remove: function remove(name) {\r\n this.write(name, '', Date.now() - 86400000);\r\n }\r\n };\r\n })() :\r\n\r\n // Non standard browser env (web workers, react-native) lack needed support.\r\n (function nonStandardBrowserEnv() {\r\n return {\r\n write: function write() {},\r\n read: function read() { return null; },\r\n remove: function remove() {}\r\n };\r\n })()\r\n);\r\n\n},{\"./../utils\":17}],12:[function(require,module,exports){\n'use strict';\r\n\r\n/**\r\n * Determines whether the specified URL is absolute\r\n *\r\n * @param {string} url The URL to test\r\n * @returns {boolean} True if the specified URL is absolute, otherwise false\r\n */\r\nmodule.exports = function isAbsoluteURL(url) {\r\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\r\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\r\n // by any combination of letters, digits, plus, period, or hyphen.\r\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\r\n};\r\n\n},{}],13:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nmodule.exports = (\r\n utils.isStandardBrowserEnv() ?\r\n\r\n // Standard browser envs have full support of the APIs needed to test\r\n // whether the request URL is of the same origin as current location.\r\n (function standardBrowserEnv() {\r\n var msie = /(msie|trident)/i.test(navigator.userAgent);\r\n var urlParsingNode = document.createElement('a');\r\n var originURL;\r\n\r\n /**\r\n * Parse a URL to discover it's components\r\n *\r\n * @param {String} url The URL to be parsed\r\n * @returns {Object}\r\n */\r\n function resolveURL(url) {\r\n var href = url;\r\n\r\n if (msie) {\r\n // IE needs attribute set twice to normalize properties\r\n urlParsingNode.setAttribute('href', href);\r\n href = urlParsingNode.href;\r\n }\r\n\r\n urlParsingNode.setAttribute('href', href);\r\n\r\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\r\n return {\r\n href: urlParsingNode.href,\r\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\r\n host: urlParsingNode.host,\r\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\r\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\r\n hostname: urlParsingNode.hostname,\r\n port: urlParsingNode.port,\r\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\r\n urlParsingNode.pathname :\r\n '/' + urlParsingNode.pathname\r\n };\r\n }\r\n\r\n originURL = resolveURL(window.location.href);\r\n\r\n /**\r\n * Determine if a URL shares the same origin as the current location\r\n *\r\n * @param {String} requestURL The URL to test\r\n * @returns {boolean} True if URL shares the same origin, otherwise false\r\n */\r\n return function isURLSameOrigin(requestURL) {\r\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\r\n return (parsed.protocol === originURL.protocol &&\r\n parsed.host === originURL.host);\r\n };\r\n })() :\r\n\r\n // Non standard browser envs (web workers, react-native) lack needed support.\r\n (function nonStandardBrowserEnv() {\r\n return function isURLSameOrigin() {\r\n return true;\r\n };\r\n })()\r\n);\r\n\n},{\"./../utils\":17}],14:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\n/**\r\n * Parse headers into an object\r\n *\r\n * ```\r\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\r\n * Content-Type: application/json\r\n * Connection: keep-alive\r\n * Transfer-Encoding: chunked\r\n * ```\r\n *\r\n * @param {String} headers Headers needing to be parsed\r\n * @returns {Object} Headers parsed into an object\r\n */\r\nmodule.exports = function parseHeaders(headers) {\r\n var parsed = {};\r\n var key;\r\n var val;\r\n var i;\r\n\r\n if (!headers) { return parsed; }\r\n\r\n utils.forEach(headers.split('\\n'), function parser(line) {\r\n i = line.indexOf(':');\r\n key = utils.trim(line.substr(0, i)).toLowerCase();\r\n val = utils.trim(line.substr(i + 1));\r\n\r\n if (key) {\r\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\r\n }\r\n });\r\n\r\n return parsed;\r\n};\r\n\n},{\"./../utils\":17}],15:[function(require,module,exports){\n'use strict';\r\n\r\n/**\r\n * Syntactic sugar for invoking a function and expanding an array for arguments.\r\n *\r\n * Common use case would be to use `Function.prototype.apply`.\r\n *\r\n * ```js\r\n * function f(x, y, z) {}\r\n * var args = [1, 2, 3];\r\n * f.apply(null, args);\r\n * ```\r\n *\r\n * With `spread` this example can be re-written.\r\n *\r\n * ```js\r\n * spread(function(x, y, z) {})([1, 2, 3]);\r\n * ```\r\n *\r\n * @param {Function} callback\r\n * @returns {Function}\r\n */\r\nmodule.exports = function spread(callback) {\r\n return function wrap(arr) {\r\n return callback.apply(null, arr);\r\n };\r\n};\r\n\n},{}],16:[function(require,module,exports){\n'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\n/**\r\n * Transform the data for a request or a response\r\n *\r\n * @param {Object|String} data The data to be transformed\r\n * @param {Array} headers The headers for the request or response\r\n * @param {Array|Function} fns A single function or Array of functions\r\n * @returns {*} The resulting transformed data\r\n */\r\nmodule.exports = function transformData(data, headers, fns) {\r\n /*eslint no-param-reassign:0*/\r\n utils.forEach(fns, function transform(fn) {\r\n data = fn(data, headers);\r\n });\r\n\r\n return data;\r\n};\r\n\n},{\"./../utils\":17}],17:[function(require,module,exports){\n'use strict';\r\n\r\n/*global toString:true*/\r\n\r\n// utils is a library of generic helper functions non-specific to axios\r\n\r\nvar toString = Object.prototype.toString;\r\n\r\n/**\r\n * Determine if a value is an Array\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Array, otherwise false\r\n */\r\nfunction isArray(val) {\r\n return toString.call(val) === '[object Array]';\r\n}\r\n\r\n/**\r\n * Determine if a value is an ArrayBuffer\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\r\n */\r\nfunction isArrayBuffer(val) {\r\n return toString.call(val) === '[object ArrayBuffer]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a FormData\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an FormData, otherwise false\r\n */\r\nfunction isFormData(val) {\r\n return toString.call(val) === '[object FormData]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a view on an ArrayBuffer\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\r\n */\r\nfunction isArrayBufferView(val) {\r\n var result;\r\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\r\n result = ArrayBuffer.isView(val);\r\n } else {\r\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Determine if a value is a String\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a String, otherwise false\r\n */\r\nfunction isString(val) {\r\n return typeof val === 'string';\r\n}\r\n\r\n/**\r\n * Determine if a value is a Number\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Number, otherwise false\r\n */\r\nfunction isNumber(val) {\r\n return typeof val === 'number';\r\n}\r\n\r\n/**\r\n * Determine if a value is undefined\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if the value is undefined, otherwise false\r\n */\r\nfunction isUndefined(val) {\r\n return typeof val === 'undefined';\r\n}\r\n\r\n/**\r\n * Determine if a value is an Object\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Object, otherwise false\r\n */\r\nfunction isObject(val) {\r\n return val !== null && typeof val === 'object';\r\n}\r\n\r\n/**\r\n * Determine if a value is a Date\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Date, otherwise false\r\n */\r\nfunction isDate(val) {\r\n return toString.call(val) === '[object Date]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a File\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a File, otherwise false\r\n */\r\nfunction isFile(val) {\r\n return toString.call(val) === '[object File]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a Blob\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Blob, otherwise false\r\n */\r\nfunction isBlob(val) {\r\n return toString.call(val) === '[object Blob]';\r\n}\r\n\r\n/**\r\n * Trim excess whitespace off the beginning and end of a string\r\n *\r\n * @param {String} str The String to trim\r\n * @returns {String} The String freed of excess whitespace\r\n */\r\nfunction trim(str) {\r\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\r\n}\r\n\r\n/**\r\n * Determine if we're running in a standard browser environment\r\n *\r\n * This allows axios to run in a web worker, and react-native.\r\n * Both environments support XMLHttpRequest, but not fully standard globals.\r\n *\r\n * web workers:\r\n * typeof window -> undefined\r\n * typeof document -> undefined\r\n *\r\n * react-native:\r\n * typeof document.createElement -> undefined\r\n */\r\nfunction isStandardBrowserEnv() {\r\n return (\r\n typeof window !== 'undefined' &&\r\n typeof document !== 'undefined' &&\r\n typeof document.createElement === 'function'\r\n );\r\n}\r\n\r\n/**\r\n * Iterate over an Array or an Object invoking a function for each item.\r\n *\r\n * If `obj` is an Array callback will be called passing\r\n * the value, index, and complete array for each item.\r\n *\r\n * If 'obj' is an Object callback will be called passing\r\n * the value, key, and complete object for each property.\r\n *\r\n * @param {Object|Array} obj The object to iterate\r\n * @param {Function} fn The callback to invoke for each item\r\n */\r\nfunction forEach(obj, fn) {\r\n // Don't bother if no value provided\r\n if (obj === null || typeof obj === 'undefined') {\r\n return;\r\n }\r\n\r\n // Force an array if not already something iterable\r\n if (typeof obj !== 'object' && !isArray(obj)) {\r\n /*eslint no-param-reassign:0*/\r\n obj = [obj];\r\n }\r\n\r\n if (isArray(obj)) {\r\n // Iterate over array values\r\n for (var i = 0, l = obj.length; i < l; i++) {\r\n fn.call(null, obj[i], i, obj);\r\n }\r\n } else {\r\n // Iterate over object keys\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n fn.call(null, obj[key], key, obj);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Accepts varargs expecting each argument to be an object, then\r\n * immutably merges the properties of each object and returns result.\r\n *\r\n * When multiple objects contain the same key the later object in\r\n * the arguments list will take precedence.\r\n *\r\n * Example:\r\n *\r\n * ```js\r\n * var result = merge({foo: 123}, {foo: 456});\r\n * console.log(result.foo); // outputs 456\r\n * ```\r\n *\r\n * @param {Object} obj1 Object to merge\r\n * @returns {Object} Result of all merge properties\r\n */\r\nfunction merge(/* obj1, obj2, obj3, ... */) {\r\n var result = {};\r\n function assignValue(val, key) {\r\n if (typeof result[key] === 'object' && typeof val === 'object') {\r\n result[key] = merge(result[key], val);\r\n } else {\r\n result[key] = val;\r\n }\r\n }\r\n\r\n for (var i = 0, l = arguments.length; i < l; i++) {\r\n forEach(arguments[i], assignValue);\r\n }\r\n return result;\r\n}\r\n\r\nmodule.exports = {\r\n isArray: isArray,\r\n isArrayBuffer: isArrayBuffer,\r\n isFormData: isFormData,\r\n isArrayBufferView: isArrayBufferView,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isObject: isObject,\r\n isUndefined: isUndefined,\r\n isDate: isDate,\r\n isFile: isFile,\r\n isBlob: isBlob,\r\n isStandardBrowserEnv: isStandardBrowserEnv,\r\n forEach: forEach,\r\n merge: merge,\r\n trim: trim\r\n};\r\n\n},{}],18:[function(require,module,exports){\n(function (global){\n/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],19:[function(require,module,exports){\n(function (process,global){\n/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\n * @version 3.1.2\n */\n\n(function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n }\n\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n // test for web worker but not in IE10\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n // node\n function lib$es6$promise$asap$$useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function() {\n process.nextTick(lib$es6$promise$asap$$flush);\n };\n }\n\n // vertx\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n\n // web worker\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function () {\n channel.port2.postMessage(0);\n };\n }\n\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i+1];\n\n callback(arg);\n\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i+1] = undefined;\n }\n\n lib$es6$promise$asap$$len = 0;\n }\n\n function lib$es6$promise$asap$$attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch(e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n\n var lib$es6$promise$asap$$scheduleFlush;\n // Decide what async method to use to triggering processing of queued callbacks:\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n function lib$es6$promise$then$$then(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function(){\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n var lib$es6$promise$then$$default = lib$es6$promise$then$$then;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n\n function lib$es6$promise$$internal$$noop() {}\n\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch(error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch(e) {\n return e;\n }\n }\n\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) { return; }\n sealed = true;\n\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor &&\n then === lib$es6$promise$then$$default &&\n constructor.resolve === lib$es6$promise$promise$resolve$$default) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n lib$es6$promise$$internal$$publish(promise);\n }\n\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n\n parent._onerror = null;\n\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n var child, callback, detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch(e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value){\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch(e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n\n var length = entries.length;\n\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$reject$$reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n\n var lib$es6$promise$promise$$counter = 0;\n\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n var promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n var xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n\n if (lib$es6$promise$$internal$$noop !== resolver) {\n typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();\n this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();\n }\n }\n\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: lib$es6$promise$then$$default,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (Array.isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(this.promise, this._validationError());\n }\n }\n\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var input = this._input;\n\n for (var i = 0; this._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n if (resolve === lib$es6$promise$promise$resolve$$default) {\n var then = lib$es6$promise$$internal$$getThen(entry);\n\n if (then === lib$es6$promise$then$$default &&\n entry._state !== lib$es6$promise$$internal$$PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === lib$es6$promise$promise$$default) {\n var promise = new c(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function(resolve) { resolve(entry); }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n this._remaining--;\n\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, this._result);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n\n /* global define:true module:true window: true */\n if (typeof define === 'function' && define['amd']) {\n define(function() { return lib$es6$promise$umd$$ES6Promise; });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n\n lib$es6$promise$polyfill$$default();\n}).call(this);\n\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"_process\":20}],20:[function(require,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],21:[function(require,module,exports){\n(function (global){\n/*! https://mths.be/utf8js v2.0.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tvar byte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.0.0',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],22:[function(require,module,exports){\n/*!\r\n * @overview Github.js\r\n *\r\n * @copyright (c) 2013 Michael Aufreiter, Development Seed\r\n * Github.js is freely distributable.\r\n *\r\n * @license Licensed under BSD-3-Clause-Clear\r\n *\r\n * For all details and documentation:\r\n * http://substance.io/michael/github\r\n */\r\n'use strict';\r\n\r\n(function (root, factory) {\r\n /* istanbul ignore next */\r\n if (typeof define === 'function' && define.amd) {\r\n define(\r\n [\r\n 'es6-promise',\r\n 'base-64',\r\n 'utf8',\r\n 'axios'\r\n ],\r\n function (Promise, Base64, Utf8, axios) {\r\n return (root.Github = factory(Promise, Base64, Utf8, axios));\r\n }\r\n );\r\n } else if (typeof module === 'object' && module.exports) {\r\n module.exports = factory(require('es6-promise'), require('base-64'), require('utf8'), require('axios'));\r\n } else {\r\n root.Github = factory(root.Promise, root.base64, root.utf8, root.axios);\r\n }\r\n}(this, function(Promise, Base64, Utf8, axios) { // jshint ignore:line\r\n function b64encode(string) {\r\n return Base64.encode(Utf8.encode(string));\r\n }\r\n\r\n if (Promise.polyfill) {\r\n Promise.polyfill();\r\n }\r\n\r\n // Initial Setup\r\n // -------------\r\n\r\n var Github = function (options) {\r\n options = options || {};\r\n\r\n var API_URL = options.apiUrl || 'https://api.github.com';\r\n\r\n // HTTP Request Abstraction\r\n // =======\r\n //\r\n // I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.\r\n\r\n var _request = Github._request = function _request(method, path, data, cb, raw) {\r\n function getURL() {\r\n var url = path.indexOf('//') >= 0 ? path : API_URL + path;\r\n\r\n url += ((/\\?/).test(url) ? '&' : '?');\r\n\r\n if (data && typeof data === 'object' && ['GET', 'HEAD', 'DELETE'].indexOf(method) > -1) {\r\n for(var param in data) {\r\n if (data.hasOwnProperty(param)) {\r\n url += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(data[param]);\r\n }\r\n }\r\n }\r\n\r\n return url.replace(/(×tamp=\\d+)/, '') +\r\n (typeof window !== 'undefined' ? '×tamp=' + new Date().getTime() : '');\r\n }\r\n\r\n var config = {\r\n headers: {\r\n Accept: raw ? 'application/vnd.github.v3.raw+json' : 'application/vnd.github.v3+json',\r\n 'Content-Type': 'application/json;charset=UTF-8'\r\n },\r\n method: method,\r\n data: data ? data : {},\r\n url: getURL()\r\n };\r\n\r\n if ((options.token) || (options.username && options.password)) {\r\n config.headers.Authorization = options.token ?\r\n 'token ' + options.token :\r\n 'Basic ' + b64encode(options.username + ':' + options.password);\r\n }\r\n\r\n return axios(config)\r\n .then(function (response) {\r\n cb(\r\n null,\r\n response.data || true,\r\n response.request\r\n );\r\n }, function (response) {\r\n if (response.status === 304) {\r\n cb(\r\n null,\r\n response.data || true,\r\n response.request\r\n );\r\n } else {\r\n cb({\r\n path: path,\r\n request: response.request,\r\n error: response.status\r\n });\r\n }\r\n });\r\n };\r\n\r\n var _requestAllPages = Github._requestAllPages = function _requestAllPages(path, cb) {\r\n var results = [];\r\n\r\n (function iterate() {\r\n _request('GET', path, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n if (!(res instanceof Array)) {\r\n res = [res];\r\n }\r\n\r\n results.push.apply(results, res);\r\n\r\n var next = (xhr.getResponseHeader('link') || '')\r\n .split(',')\r\n .filter(function(link) {\r\n return /rel=\"next\"/.test(link);\r\n })\r\n .map(function(link) {\r\n return (/<(.*)>/.exec(link) || [])[1];\r\n })\r\n .pop();\r\n\r\n if (!next) {\r\n cb(err, results, xhr);\r\n } else {\r\n path = next;\r\n iterate();\r\n }\r\n });\r\n })();\r\n };\r\n\r\n // User API\r\n // =======\r\n\r\n Github.User = function () {\r\n this.repos = function (options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n options = options || {};\r\n\r\n var url = '/user/repos';\r\n var params = [];\r\n\r\n params.push('type=' + encodeURIComponent(options.type || 'all'));\r\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\r\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n url += '?' + params.join('&');\r\n\r\n _requestAllPages(url, cb);\r\n };\r\n\r\n // List user organizations\r\n // -------\r\n\r\n this.orgs = function (cb) {\r\n _request('GET', '/user/orgs', null, cb);\r\n };\r\n\r\n // List authenticated user's gists\r\n // -------\r\n\r\n this.gists = function (cb) {\r\n _request('GET', '/gists', null, cb);\r\n };\r\n\r\n // List authenticated user's unread notifications\r\n // -------\r\n\r\n this.notifications = function (options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n options = options || {};\r\n var url = '/notifications';\r\n var params = [];\r\n\r\n if (options.all) {\r\n params.push('all=true');\r\n }\r\n\r\n if (options.participating) {\r\n params.push('participating=true');\r\n }\r\n\r\n if (options.since) {\r\n var since = options.since;\r\n\r\n if (since.constructor === Date) {\r\n since = since.toISOString();\r\n }\r\n\r\n params.push('since=' + encodeURIComponent(since));\r\n }\r\n\r\n if (options.before) {\r\n var before = options.before;\r\n\r\n if (before.constructor === Date) {\r\n before = before.toISOString();\r\n }\r\n\r\n params.push('before=' + encodeURIComponent(before));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Show user information\r\n // -------\r\n\r\n this.show = function (username, cb) {\r\n var command = username ? '/users/' + username : '/user';\r\n\r\n _request('GET', command, null, cb);\r\n };\r\n\r\n // List user repositories\r\n // -------\r\n\r\n this.userRepos = function (username, options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n var url = '/users/' + username + '/repos';\r\n var params = [];\r\n\r\n params.push('type=' + encodeURIComponent(options.type || 'all'));\r\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\r\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n url += '?' + params.join('&');\r\n\r\n _requestAllPages(url, cb);\r\n };\r\n\r\n // List user starred repositories\r\n // -------\r\n\r\n this.userStarred = function (username, cb) {\r\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\r\n _requestAllPages('/users/' + username + '/starred?type=all&per_page=100', cb);\r\n };\r\n\r\n // List a user's gists\r\n // -------\r\n\r\n this.userGists = function (username, cb) {\r\n _request('GET', '/users/' + username + '/gists', null, cb);\r\n };\r\n\r\n // List organization repositories\r\n // -------\r\n\r\n this.orgRepos = function (orgname, cb) {\r\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\r\n _requestAllPages('/orgs/' + orgname + '/repos?type=all&&page_num=1000&sort=updated&direction=desc', cb);\r\n };\r\n\r\n // Follow user\r\n // -------\r\n\r\n this.follow = function (username, cb) {\r\n _request('PUT', '/user/following/' + username, null, cb);\r\n };\r\n\r\n // Unfollow user\r\n // -------\r\n\r\n this.unfollow = function (username, cb) {\r\n _request('DELETE', '/user/following/' + username, null, cb);\r\n };\r\n\r\n // Create a repo\r\n // -------\r\n this.createRepo = function (options, cb) {\r\n _request('POST', '/user/repos', options, cb);\r\n };\r\n };\r\n\r\n // Repository API\r\n // =======\r\n\r\n Github.Repository = function (options) {\r\n var repo = options.name;\r\n var user = options.user;\r\n var fullname = options.fullname;\r\n\r\n var that = this;\r\n var repoPath;\r\n\r\n if (fullname) {\r\n repoPath = '/repos/' + fullname;\r\n } else {\r\n repoPath = '/repos/' + user + '/' + repo;\r\n }\r\n\r\n var currentTree = {\r\n branch: null,\r\n sha: null\r\n };\r\n\r\n // Uses the cache if branch has not been changed\r\n // -------\r\n\r\n function updateTree(branch, cb) {\r\n if (branch === currentTree.branch && currentTree.sha) {\r\n return cb(null, currentTree.sha);\r\n }\r\n\r\n that.getRef('heads/' + branch, function (err, sha) {\r\n currentTree.branch = branch;\r\n currentTree.sha = sha;\r\n cb(err, sha);\r\n });\r\n }\r\n\r\n // Get a particular reference\r\n // -------\r\n\r\n this.getRef = function (ref, cb) {\r\n _request('GET', repoPath + '/git/refs/' + ref, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.object.sha, xhr);\r\n });\r\n };\r\n\r\n // Create a new reference\r\n // --------\r\n //\r\n // {\r\n // \"ref\": \"refs/heads/my-new-branch-name\",\r\n // \"sha\": \"827efc6d56897b048c772eb4087f854f46256132\"\r\n // }\r\n\r\n this.createRef = function (options, cb) {\r\n _request('POST', repoPath + '/git/refs', options, cb);\r\n };\r\n\r\n // Delete a reference\r\n // --------\r\n //\r\n // Repo.deleteRef('heads/gh-pages')\r\n // repo.deleteRef('tags/v1.0')\r\n\r\n this.deleteRef = function (ref, cb) {\r\n _request('DELETE', repoPath + '/git/refs/' + ref, options, cb);\r\n };\r\n\r\n // Delete a repo\r\n // --------\r\n\r\n this.deleteRepo = function (cb) {\r\n _request('DELETE', repoPath, options, cb);\r\n };\r\n\r\n // List all tags of a repository\r\n // -------\r\n\r\n this.listTags = function (cb) {\r\n _request('GET', repoPath + '/tags', null, cb);\r\n };\r\n\r\n // List all pull requests of a respository\r\n // -------\r\n\r\n this.listPulls = function (options, cb) {\r\n options = options || {};\r\n var url = repoPath + '/pulls';\r\n var params = [];\r\n\r\n if (typeof options === 'string') {\r\n // Backward compatibility\r\n params.push('state=' + options);\r\n } else {\r\n if (options.state) {\r\n params.push('state=' + encodeURIComponent(options.state));\r\n }\r\n\r\n if (options.head) {\r\n params.push('head=' + encodeURIComponent(options.head));\r\n }\r\n\r\n if (options.base) {\r\n params.push('base=' + encodeURIComponent(options.base));\r\n }\r\n\r\n if (options.sort) {\r\n params.push('sort=' + encodeURIComponent(options.sort));\r\n }\r\n\r\n if (options.direction) {\r\n params.push('direction=' + encodeURIComponent(options.direction));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + options.page);\r\n }\r\n\r\n if (options.per_page) {\r\n params.push('per_page=' + options.per_page);\r\n }\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Gets details for a specific pull request\r\n // -------\r\n\r\n this.getPull = function (number, cb) {\r\n _request('GET', repoPath + '/pulls/' + number, null, cb);\r\n };\r\n\r\n // Retrieve the changes made between base and head\r\n // -------\r\n\r\n this.compare = function (base, head, cb) {\r\n _request('GET', repoPath + '/compare/' + base + '...' + head, null, cb);\r\n };\r\n\r\n // List all branches of a repository\r\n // -------\r\n\r\n this.listBranches = function (cb) {\r\n _request('GET', repoPath + '/git/refs/heads', null, function (err, heads, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n heads = heads.map(function (head) {\r\n return head.ref.replace(/^refs\\/heads\\//, '');\r\n });\r\n\r\n cb(null, heads, xhr);\r\n });\r\n };\r\n\r\n // Retrieve the contents of a blob\r\n // -------\r\n\r\n this.getBlob = function (sha, cb) {\r\n _request('GET', repoPath + '/git/blobs/' + sha, null, cb, 'raw');\r\n };\r\n\r\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\r\n // -------\r\n\r\n this.getCommit = function (branch, sha, cb) {\r\n _request('GET', repoPath + '/git/commits/' + sha, null, cb);\r\n };\r\n\r\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\r\n // -------\r\n\r\n this.getSha = function (branch, path, cb) {\r\n if (!path || path === '') {\r\n return that.getRef('heads/' + branch, cb);\r\n }\r\n\r\n _request('GET', repoPath + '/contents/' + path + (branch ? '?ref=' + branch : ''),\r\n null, function (err, pathContent, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, pathContent.sha, xhr);\r\n });\r\n };\r\n\r\n // Get the statuses for a particular SHA\r\n // -------\r\n\r\n this.getStatuses = function (sha, cb) {\r\n _request('GET', repoPath + '/statuses/' + sha, null, cb);\r\n };\r\n\r\n // Retrieve the tree a commit points to\r\n // -------\r\n\r\n this.getTree = function (tree, cb) {\r\n _request('GET', repoPath + '/git/trees/' + tree, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.tree, xhr);\r\n });\r\n };\r\n\r\n // Post a new blob object, getting a blob SHA back\r\n // -------\r\n\r\n this.postBlob = function (content, cb) {\r\n if (typeof content === 'string') {\r\n content = {\r\n content: content,\r\n encoding: 'utf-8'\r\n };\r\n } else {\r\n content = {\r\n content: b64encode(content),\r\n encoding: 'base64'\r\n };\r\n }\r\n\r\n _request('POST', repoPath + '/git/blobs', content, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Update an existing tree adding a new blob object getting a tree SHA back\r\n // -------\r\n\r\n this.updateTree = function (baseTree, path, blob, cb) {\r\n var data = {\r\n base_tree: baseTree,\r\n tree: [\r\n {\r\n path: path,\r\n mode: '100644',\r\n type: 'blob',\r\n sha: blob\r\n }\r\n ]\r\n };\r\n\r\n _request('POST', repoPath + '/git/trees', data, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Post a new tree object having a file path pointer replaced\r\n // with a new blob SHA getting a tree SHA back\r\n // -------\r\n\r\n this.postTree = function (tree, cb) {\r\n _request('POST', repoPath + '/git/trees', {\r\n tree: tree\r\n }, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Create a new commit object with the current commit SHA as the parent\r\n // and the new tree SHA, getting a commit SHA back\r\n // -------\r\n\r\n this.commit = function (parent, tree, message, cb) {\r\n var user = new Github.User();\r\n\r\n user.show(null, function (err, userData) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n var data = {\r\n message: message,\r\n author: {\r\n name: options.user,\r\n email: userData.email\r\n },\r\n parents: [\r\n parent\r\n ],\r\n tree: tree\r\n };\r\n\r\n _request('POST', repoPath + '/git/commits', data, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n currentTree.sha = res.sha; // Update latest commit\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n });\r\n };\r\n\r\n // Update the reference of your head to point to the new commit SHA\r\n // -------\r\n\r\n this.updateHead = function (head, commit, cb) {\r\n _request('PATCH', repoPath + '/git/refs/heads/' + head, {\r\n sha: commit\r\n }, cb);\r\n };\r\n\r\n // Show repository information\r\n // -------\r\n\r\n this.show = function (cb) {\r\n _request('GET', repoPath, null, cb);\r\n };\r\n\r\n // Show repository contributors\r\n // -------\r\n\r\n this.contributors = function (cb, retry) {\r\n retry = retry || 1000;\r\n var that = this;\r\n\r\n _request('GET', repoPath + '/stats/contributors', null, function (err, data, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n if (xhr.status === 202) {\r\n setTimeout(\r\n function () {\r\n that.contributors(cb, retry);\r\n },\r\n retry\r\n );\r\n } else {\r\n cb(err, data, xhr);\r\n }\r\n });\r\n };\r\n\r\n // Get contents\r\n // --------\r\n\r\n this.contents = function (ref, path, cb) {\r\n path = encodeURI(path);\r\n _request('GET', repoPath + '/contents' + (path ? '/' + path : ''), {\r\n ref: ref\r\n }, cb);\r\n };\r\n\r\n // Fork repository\r\n // -------\r\n\r\n this.fork = function (cb) {\r\n _request('POST', repoPath + '/forks', null, cb);\r\n };\r\n\r\n // List forks\r\n // --------\r\n\r\n this.listForks = function (cb) {\r\n _request('GET', repoPath + '/forks', null, cb);\r\n };\r\n\r\n // Branch repository\r\n // --------\r\n\r\n this.branch = function (oldBranch, newBranch, cb) {\r\n if (arguments.length === 2 && typeof arguments[1] === 'function') {\r\n cb = newBranch;\r\n newBranch = oldBranch;\r\n oldBranch = 'master';\r\n }\r\n\r\n this.getRef('heads/' + oldBranch, function (err, ref) {\r\n if (err && cb) {\r\n return cb(err);\r\n }\r\n\r\n that.createRef({\r\n ref: 'refs/heads/' + newBranch,\r\n sha: ref\r\n }, cb);\r\n });\r\n };\r\n\r\n // Create pull request\r\n // --------\r\n\r\n this.createPullRequest = function (options, cb) {\r\n _request('POST', repoPath + '/pulls', options, cb);\r\n };\r\n\r\n // List hooks\r\n // --------\r\n\r\n this.listHooks = function (cb) {\r\n _request('GET', repoPath + '/hooks', null, cb);\r\n };\r\n\r\n // Get a hook\r\n // --------\r\n\r\n this.getHook = function (id, cb) {\r\n _request('GET', repoPath + '/hooks/' + id, null, cb);\r\n };\r\n\r\n // Create a hook\r\n // --------\r\n\r\n this.createHook = function (options, cb) {\r\n _request('POST', repoPath + '/hooks', options, cb);\r\n };\r\n\r\n // Edit a hook\r\n // --------\r\n\r\n this.editHook = function (id, options, cb) {\r\n _request('PATCH', repoPath + '/hooks/' + id, options, cb);\r\n };\r\n\r\n // Delete a hook\r\n // --------\r\n\r\n this.deleteHook = function (id, cb) {\r\n _request('DELETE', repoPath + '/hooks/' + id, null, cb);\r\n };\r\n\r\n // Read file at given path\r\n // -------\r\n\r\n this.read = function (branch, path, cb) {\r\n _request('GET', repoPath + '/contents/' + encodeURI(path) + (branch ? '?ref=' + branch : ''),\r\n null, cb, true);\r\n };\r\n\r\n // Remove a file\r\n // -------\r\n\r\n this.remove = function (branch, path, cb) {\r\n that.getSha(branch, path, function (err, sha) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n _request('DELETE', repoPath + '/contents/' + path, {\r\n message: path + ' is removed',\r\n sha: sha,\r\n branch: branch\r\n }, cb);\r\n });\r\n };\r\n\r\n // Alias for repo.remove for backwards comapt.\r\n // -------\r\n this.delete = this.remove;\r\n\r\n // Move a file to a new location\r\n // -------\r\n\r\n this.move = function (branch, path, newPath, cb) {\r\n updateTree(branch, function (err, latestCommit) {\r\n that.getTree(latestCommit + '?recursive=true', function (err, tree) {\r\n // Update Tree\r\n tree.forEach(function (ref) {\r\n if (ref.path === path) {\r\n ref.path = newPath;\r\n }\r\n\r\n if (ref.type === 'tree') {\r\n delete ref.sha;\r\n }\r\n });\r\n\r\n that.postTree(tree, function (err, rootTree) {\r\n that.commit(latestCommit, rootTree, 'Deleted ' + path, function (err, commit) {\r\n that.updateHead(branch, commit, cb);\r\n });\r\n });\r\n });\r\n });\r\n };\r\n\r\n // Write file contents to a given branch and path\r\n // -------\r\n\r\n this.write = function (branch, path, content, message, options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n that.getSha(branch, encodeURI(path), function (err, sha) {\r\n var writeOptions = {\r\n message: message,\r\n content: typeof options.encode === 'undefined' || options.encode ? b64encode(content) : content,\r\n branch: branch,\r\n committer: options && options.committer ? options.committer : undefined,\r\n author: options && options.author ? options.author : undefined\r\n };\r\n\r\n // If no error, we set the sha to overwrite an existing file\r\n if (!(err && err.error !== 404)) {\r\n writeOptions.sha = sha;\r\n }\r\n\r\n _request('PUT', repoPath + '/contents/' + encodeURI(path), writeOptions, cb);\r\n });\r\n };\r\n\r\n // List commits on a repository. Takes an object of optional parameters:\r\n // sha: SHA or branch to start listing commits from\r\n // path: Only commits containing this file path will be returned\r\n // author: Only commits by this author will be returned. Its value can be the GitHub login or the email address\r\n // since: ISO 8601 date - only commits after this date will be returned\r\n // until: ISO 8601 date - only commits before this date will be returned\r\n // -------\r\n\r\n this.getCommits = function (options, cb) {\r\n options = options || {};\r\n var url = repoPath + '/commits';\r\n var params = [];\r\n\r\n if (options.sha) {\r\n params.push('sha=' + encodeURIComponent(options.sha));\r\n }\r\n\r\n if (options.path) {\r\n params.push('path=' + encodeURIComponent(options.path));\r\n }\r\n\r\n if (options.author) {\r\n params.push('author=' + encodeURIComponent(options.author));\r\n }\r\n\r\n if (options.since) {\r\n var since = options.since;\r\n\r\n if (since.constructor === Date) {\r\n since = since.toISOString();\r\n }\r\n\r\n params.push('since=' + encodeURIComponent(since));\r\n }\r\n\r\n if (options.until) {\r\n var until = options.until;\r\n\r\n if (until.constructor === Date) {\r\n until = until.toISOString();\r\n }\r\n\r\n params.push('until=' + encodeURIComponent(until));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + options.page);\r\n }\r\n\r\n if (options.perpage) {\r\n params.push('per_page=' + options.perpage);\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Check if a repository is starred.\r\n // --------\r\n\r\n this.isStarred = function(owner, repository, cb) {\r\n _request('GET', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Star a repository.\r\n // --------\r\n\r\n this.star = function(owner, repository, cb) {\r\n _request('PUT', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Unstar a repository.\r\n // --------\r\n\r\n this.unstar = function(owner, repository, cb) {\r\n _request('DELETE', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Create a new release\r\n // --------\r\n\r\n this.createRelease = function(options, cb) {\r\n _request('POST', repoPath + '/releases', options, cb);\r\n };\r\n\r\n // Edit a release\r\n // --------\r\n\r\n this.editRelease = function(id, options, cb) {\r\n _request('PATCH', repoPath + '/releases/' + id, options, cb);\r\n };\r\n\r\n // Get a single release\r\n // --------\r\n\r\n this.getRelease = function(id, cb) {\r\n _request('GET', repoPath + '/releases/' + id, null, cb);\r\n };\r\n\r\n // Remove a release\r\n // --------\r\n\r\n this.deleteRelease = function(id, cb) {\r\n _request('DELETE', repoPath + '/releases/' + id, null, cb);\r\n };\r\n };\r\n\r\n // Gists API\r\n // =======\r\n\r\n Github.Gist = function (options) {\r\n var id = options.id;\r\n var gistPath = '/gists/' + id;\r\n\r\n // Read the gist\r\n // --------\r\n\r\n this.read = function (cb) {\r\n _request('GET', gistPath, null, cb);\r\n };\r\n\r\n // Create the gist\r\n // --------\r\n // {\r\n // \"description\": \"the description for this gist\",\r\n // \"public\": true,\r\n // \"files\": {\r\n // \"file1.txt\": {\r\n // \"content\": \"String file contents\"\r\n // }\r\n // }\r\n // }\r\n\r\n this.create = function (options, cb) {\r\n _request('POST', '/gists', options, cb);\r\n };\r\n\r\n // Delete the gist\r\n // --------\r\n\r\n this.delete = function (cb) {\r\n _request('DELETE', gistPath, null, cb);\r\n };\r\n\r\n // Fork a gist\r\n // --------\r\n\r\n this.fork = function (cb) {\r\n _request('POST', gistPath + '/fork', null, cb);\r\n };\r\n\r\n // Update a gist with the new stuff\r\n // --------\r\n\r\n this.update = function (options, cb) {\r\n _request('PATCH', gistPath, options, cb);\r\n };\r\n\r\n // Star a gist\r\n // --------\r\n\r\n this.star = function (cb) {\r\n _request('PUT', gistPath + '/star', null, cb);\r\n };\r\n\r\n // Untar a gist\r\n // --------\r\n\r\n this.unstar = function (cb) {\r\n _request('DELETE', gistPath + '/star', null, cb);\r\n };\r\n\r\n // Check if a gist is starred\r\n // --------\r\n\r\n this.isStarred = function (cb) {\r\n _request('GET', gistPath + '/star', null, cb);\r\n };\r\n };\r\n\r\n // Issues API\r\n // ==========\r\n\r\n Github.Issue = function (options) {\r\n var path = '/repos/' + options.user + '/' + options.repo + '/issues';\r\n\r\n this.create = function(options, cb) {\r\n _request('POST', path, options, cb);\r\n };\r\n\r\n this.list = function (options, cb) {\r\n var query = [];\r\n\r\n for(var key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(options[key]));\r\n }\r\n }\r\n\r\n _requestAllPages(path + '?' + query.join('&'), cb);\r\n };\r\n\r\n this.comment = function (issue, comment, cb) {\r\n _request('POST', issue.comments_url, {\r\n body: comment\r\n }, cb);\r\n };\r\n\r\n this.edit = function (issue, options, cb) {\r\n _request('PATCH', path + '/' + issue, options, cb);\r\n };\r\n\r\n this.get = function (issue, cb) {\r\n _request('GET', path + '/' + issue, null, cb);\r\n };\r\n };\r\n\r\n // Search API\r\n // ==========\r\n\r\n Github.Search = function (options) {\r\n var path = '/search/';\r\n var query = '?q=' + options.query;\r\n\r\n this.repositories = function (options, cb) {\r\n _request('GET', path + 'repositories' + query, options, cb);\r\n };\r\n\r\n this.code = function (options, cb) {\r\n _request('GET', path + 'code' + query, options, cb);\r\n };\r\n\r\n this.issues = function (options, cb) {\r\n _request('GET', path + 'issues' + query, options, cb);\r\n };\r\n\r\n this.users = function (options, cb) {\r\n _request('GET', path + 'users' + query, options, cb);\r\n };\r\n };\r\n\r\n // Rate Limit API\r\n // ==========\r\n\r\n Github.RateLimit = function() {\r\n this.getRateLimit = function(cb) {\r\n _request('GET', '/rate_limit', null, cb);\r\n };\r\n };\r\n\r\n return Github;\r\n };\r\n\r\n // Top Level API\r\n // -------\r\n\r\n Github.getIssues = function (user, repo) {\r\n return new Github.Issue({\r\n user: user,\r\n repo: repo\r\n });\r\n };\r\n\r\n Github.getRepo = function (user, repo) {\r\n if (!repo) {\r\n return new Github.Repository({\r\n fullname: user\r\n });\r\n } else {\r\n return new Github.Repository({\r\n user: user,\r\n name: repo\r\n });\r\n }\r\n };\r\n\r\n Github.getUser = function () {\r\n return new Github.User();\r\n };\r\n\r\n Github.getGist = function (id) {\r\n return new Github.Gist({\r\n id: id\r\n });\r\n };\r\n\r\n Github.getSearch = function (query) {\r\n return new Github.Search({\r\n query: query\r\n });\r\n };\r\n\r\n Github.getRateLimit = function() {\r\n return new Github.RateLimit();\r\n };\r\n\r\n return Github;\r\n}));\r\n\n},{\"axios\":1,\"base-64\":18,\"es6-promise\":19,\"utf8\":21}]},{},[22])(22)\n});\n\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\nvar buildURL = require('./../helpers/buildURL');\r\nvar parseHeaders = require('./../helpers/parseHeaders');\r\nvar transformData = require('./../helpers/transformData');\r\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\r\nvar btoa = window.btoa || require('./../helpers/btoa');\r\n\r\nmodule.exports = function xhrAdapter(resolve, reject, config) {\r\n var requestData = config.data;\r\n var requestHeaders = config.headers;\r\n\r\n if (utils.isFormData(requestData)) {\r\n delete requestHeaders['Content-Type']; // Let the browser set it\r\n }\r\n\r\n var request = new XMLHttpRequest();\r\n\r\n // For IE 8/9 CORS support\r\n // Only supports POST and GET calls and doesn't returns the response headers.\r\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\r\n request = new window.XDomainRequest();\r\n }\r\n\r\n // HTTP basic authentication\r\n if (config.auth) {\r\n var username = config.auth.username || '';\r\n var password = config.auth.password || '';\r\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\r\n }\r\n\r\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\r\n\r\n // Set the request timeout in MS\r\n request.timeout = config.timeout;\r\n\r\n // Listen for ready state\r\n request.onload = function handleLoad() {\r\n if (!request) {\r\n return;\r\n }\r\n // Prepare the response\r\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\r\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response;\r\n var response = {\r\n data: transformData(\r\n responseData,\r\n responseHeaders,\r\n config.transformResponse\r\n ),\r\n // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)\r\n status: request.status === 1223 ? 204 : request.status,\r\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\r\n headers: responseHeaders,\r\n config: config,\r\n request: request\r\n };\r\n\r\n // Resolve or reject the Promise based on the status\r\n ((response.status >= 200 && response.status < 300) ||\r\n (!('status' in request) && response.responseText) ?\r\n resolve :\r\n reject)(response);\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Handle low level network errors\r\n request.onerror = function handleError() {\r\n // Real errors are hidden from us by the browser\r\n // onerror should only fire if it's a network error\r\n reject(new Error('Network Error'));\r\n\r\n // Clean up request\r\n request = null;\r\n };\r\n\r\n // Add xsrf header\r\n // This is only done if running in a standard browser environment.\r\n // Specifically not if we're in a web worker, or react-native.\r\n if (utils.isStandardBrowserEnv()) {\r\n var cookies = require('./../helpers/cookies');\r\n\r\n // Add xsrf header\r\n var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?\r\n cookies.read(config.xsrfCookieName) :\r\n undefined;\r\n\r\n if (xsrfValue) {\r\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\r\n }\r\n }\r\n\r\n // Add headers to the request\r\n if ('setRequestHeader' in request) {\r\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\r\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\r\n // Remove Content-Type if data is undefined\r\n delete requestHeaders[key];\r\n } else {\r\n // Otherwise add header to the request\r\n request.setRequestHeader(key, val);\r\n }\r\n });\r\n }\r\n\r\n // Add withCredentials to request if needed\r\n if (config.withCredentials) {\r\n request.withCredentials = true;\r\n }\r\n\r\n // Add responseType to request if needed\r\n if (config.responseType) {\r\n try {\r\n request.responseType = config.responseType;\r\n } catch (e) {\r\n if (request.responseType !== 'json') {\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n if (utils.isArrayBuffer(requestData)) {\r\n requestData = new DataView(requestData);\r\n }\r\n\r\n // Send the request\r\n request.send(requestData);\r\n};\r\n","'use strict';\r\n\r\nvar defaults = require('./defaults');\r\nvar utils = require('./utils');\r\nvar dispatchRequest = require('./core/dispatchRequest');\r\nvar InterceptorManager = require('./core/InterceptorManager');\r\nvar isAbsoluteURL = require('./helpers/isAbsoluteURL');\r\nvar combineURLs = require('./helpers/combineURLs');\r\nvar bind = require('./helpers/bind');\r\nvar transformData = require('./helpers/transformData');\r\n\r\nfunction Axios(defaultConfig) {\r\n this.defaults = utils.merge({}, defaultConfig);\r\n this.interceptors = {\r\n request: new InterceptorManager(),\r\n response: new InterceptorManager()\r\n };\r\n}\r\n\r\nAxios.prototype.request = function request(config) {\r\n /*eslint no-param-reassign:0*/\r\n // Allow for axios('example/url'[, config]) a la fetch API\r\n if (typeof config === 'string') {\r\n config = utils.merge({\r\n url: arguments[0]\r\n }, arguments[1]);\r\n }\r\n\r\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\r\n\r\n // Support baseURL config\r\n if (config.baseURL && !isAbsoluteURL(config.url)) {\r\n config.url = combineURLs(config.baseURL, config.url);\r\n }\r\n\r\n // Don't allow overriding defaults.withCredentials\r\n config.withCredentials = config.withCredentials || this.defaults.withCredentials;\r\n\r\n // Transform request data\r\n config.data = transformData(\r\n config.data,\r\n config.headers,\r\n config.transformRequest\r\n );\r\n\r\n // Flatten headers\r\n config.headers = utils.merge(\r\n config.headers.common || {},\r\n config.headers[config.method] || {},\r\n config.headers || {}\r\n );\r\n\r\n utils.forEach(\r\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\r\n function cleanHeaderConfig(method) {\r\n delete config.headers[method];\r\n }\r\n );\r\n\r\n // Hook up interceptors middleware\r\n var chain = [dispatchRequest, undefined];\r\n var promise = Promise.resolve(config);\r\n\r\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\r\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\r\n });\r\n\r\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\r\n chain.push(interceptor.fulfilled, interceptor.rejected);\r\n });\r\n\r\n while (chain.length) {\r\n promise = promise.then(chain.shift(), chain.shift());\r\n }\r\n\r\n return promise;\r\n};\r\n\r\nvar defaultInstance = new Axios(defaults);\r\nvar axios = module.exports = bind(Axios.prototype.request, defaultInstance);\r\n\r\naxios.create = function create(defaultConfig) {\r\n return new Axios(defaultConfig);\r\n};\r\n\r\n// Expose defaults\r\naxios.defaults = defaultInstance.defaults;\r\n\r\n// Expose all/spread\r\naxios.all = function all(promises) {\r\n return Promise.all(promises);\r\n};\r\naxios.spread = require('./helpers/spread');\r\n\r\n// Expose interceptors\r\naxios.interceptors = defaultInstance.interceptors;\r\n\r\n// Provide aliases for supported request methods\r\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\r\n /*eslint func-names:0*/\r\n Axios.prototype[method] = function(url, config) {\r\n return this.request(utils.merge(config || {}, {\r\n method: method,\r\n url: url\r\n }));\r\n };\r\n axios[method] = bind(Axios.prototype[method], defaultInstance);\r\n});\r\n\r\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\r\n /*eslint func-names:0*/\r\n Axios.prototype[method] = function(url, data, config) {\r\n return this.request(utils.merge(config || {}, {\r\n method: method,\r\n url: url,\r\n data: data\r\n }));\r\n };\r\n axios[method] = bind(Axios.prototype[method], defaultInstance);\r\n});\r\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nfunction InterceptorManager() {\r\n this.handlers = [];\r\n}\r\n\r\n/**\r\n * Add a new interceptor to the stack\r\n *\r\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\r\n * @param {Function} rejected The function to handle `reject` for a `Promise`\r\n *\r\n * @return {Number} An ID used to remove interceptor later\r\n */\r\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\r\n this.handlers.push({\r\n fulfilled: fulfilled,\r\n rejected: rejected\r\n });\r\n return this.handlers.length - 1;\r\n};\r\n\r\n/**\r\n * Remove an interceptor from the stack\r\n *\r\n * @param {Number} id The ID that was returned by `use`\r\n */\r\nInterceptorManager.prototype.eject = function eject(id) {\r\n if (this.handlers[id]) {\r\n this.handlers[id] = null;\r\n }\r\n};\r\n\r\n/**\r\n * Iterate over all the registered interceptors\r\n *\r\n * This method is particularly useful for skipping over any\r\n * interceptors that may have become `null` calling `eject`.\r\n *\r\n * @param {Function} fn The function to call for each interceptor\r\n */\r\nInterceptorManager.prototype.forEach = function forEach(fn) {\r\n utils.forEach(this.handlers, function forEachHandler(h) {\r\n if (h !== null) {\r\n fn(h);\r\n }\r\n });\r\n};\r\n\r\nmodule.exports = InterceptorManager;\r\n","'use strict';\r\n\r\n/**\r\n * Dispatch a request to the server using whichever adapter\r\n * is supported by the current environment.\r\n *\r\n * @param {object} config The config that is to be used for the request\r\n * @returns {Promise} The Promise to be fulfilled\r\n */\r\nmodule.exports = function dispatchRequest(config) {\r\n return new Promise(function executor(resolve, reject) {\r\n try {\r\n var adapter;\r\n\r\n if (typeof config.adapter === 'function') {\r\n // For custom adapter support\r\n adapter = config.adapter;\r\n } else if (typeof XMLHttpRequest !== 'undefined') {\r\n // For browsers use XHR adapter\r\n adapter = require('../adapters/xhr');\r\n } else if (typeof process !== 'undefined') {\r\n // For node use HTTP adapter\r\n adapter = require('../adapters/http');\r\n }\r\n\r\n if (typeof adapter === 'function') {\r\n adapter(resolve, reject, config);\r\n }\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n};\r\n\r\n","'use strict';\r\n\r\nvar utils = require('./utils');\r\n\r\nvar PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\r\nvar DEFAULT_CONTENT_TYPE = {\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n};\r\n\r\nmodule.exports = {\r\n transformRequest: [function transformResponseJSON(data, headers) {\r\n if (utils.isFormData(data)) {\r\n return data;\r\n }\r\n if (utils.isArrayBuffer(data)) {\r\n return data;\r\n }\r\n if (utils.isArrayBufferView(data)) {\r\n return data.buffer;\r\n }\r\n if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) {\r\n // Set application/json if no Content-Type has been specified\r\n if (!utils.isUndefined(headers)) {\r\n utils.forEach(headers, function processContentTypeHeader(val, key) {\r\n if (key.toLowerCase() === 'content-type') {\r\n headers['Content-Type'] = val;\r\n }\r\n });\r\n\r\n if (utils.isUndefined(headers['Content-Type'])) {\r\n headers['Content-Type'] = 'application/json;charset=utf-8';\r\n }\r\n }\r\n return JSON.stringify(data);\r\n }\r\n return data;\r\n }],\r\n\r\n transformResponse: [function transformResponseJSON(data) {\r\n /*eslint no-param-reassign:0*/\r\n if (typeof data === 'string') {\r\n data = data.replace(PROTECTION_PREFIX, '');\r\n try {\r\n data = JSON.parse(data);\r\n } catch (e) { /* Ignore */ }\r\n }\r\n return data;\r\n }],\r\n\r\n headers: {\r\n common: {\r\n 'Accept': 'application/json, text/plain, */*'\r\n },\r\n patch: utils.merge(DEFAULT_CONTENT_TYPE),\r\n post: utils.merge(DEFAULT_CONTENT_TYPE),\r\n put: utils.merge(DEFAULT_CONTENT_TYPE)\r\n },\r\n\r\n timeout: 0,\r\n\r\n xsrfCookieName: 'XSRF-TOKEN',\r\n xsrfHeaderName: 'X-XSRF-TOKEN'\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = function bind(fn, thisArg) {\r\n return function wrap() {\r\n var args = new Array(arguments.length);\r\n for (var i = 0; i < args.length; i++) {\r\n args[i] = arguments[i];\r\n }\r\n return fn.apply(thisArg, args);\r\n };\r\n};\r\n","'use strict';\r\n\r\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\r\n\r\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n\r\nfunction InvalidCharacterError(message) {\r\n this.message = message;\r\n}\r\nInvalidCharacterError.prototype = new Error;\r\nInvalidCharacterError.prototype.code = 5;\r\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\r\n\r\nfunction btoa(input) {\r\n var str = String(input);\r\n var output = '';\r\n for (\r\n // initialize result and counter\r\n var block, charCode, idx = 0, map = chars;\r\n // if the next str index does not exist:\r\n // change the mapping table to \"=\"\r\n // check if d has no fractional digits\r\n str.charAt(idx | 0) || (map = '=', idx % 1);\r\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\r\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\r\n ) {\r\n charCode = str.charCodeAt(idx += 3 / 4);\r\n if (charCode > 0xFF) {\r\n throw new InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\r\n }\r\n block = block << 8 | charCode;\r\n }\r\n return output;\r\n}\r\n\r\nmodule.exports = btoa;\r\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nfunction encode(val) {\r\n return encodeURIComponent(val).\r\n replace(/%40/gi, '@').\r\n replace(/%3A/gi, ':').\r\n replace(/%24/g, '$').\r\n replace(/%2C/gi, ',').\r\n replace(/%20/g, '+').\r\n replace(/%5B/gi, '[').\r\n replace(/%5D/gi, ']');\r\n}\r\n\r\n/**\r\n * Build a URL by appending params to the end\r\n *\r\n * @param {string} url The base of the url (e.g., http://www.google.com)\r\n * @param {object} [params] The params to be appended\r\n * @returns {string} The formatted url\r\n */\r\nmodule.exports = function buildURL(url, params, paramsSerializer) {\r\n /*eslint no-param-reassign:0*/\r\n if (!params) {\r\n return url;\r\n }\r\n\r\n var serializedParams;\r\n if (paramsSerializer) {\r\n serializedParams = paramsSerializer(params);\r\n } else {\r\n var parts = [];\r\n\r\n utils.forEach(params, function serialize(val, key) {\r\n if (val === null || typeof val === 'undefined') {\r\n return;\r\n }\r\n\r\n if (utils.isArray(val)) {\r\n key = key + '[]';\r\n }\r\n\r\n if (!utils.isArray(val)) {\r\n val = [val];\r\n }\r\n\r\n utils.forEach(val, function parseValue(v) {\r\n if (utils.isDate(v)) {\r\n v = v.toISOString();\r\n } else if (utils.isObject(v)) {\r\n v = JSON.stringify(v);\r\n }\r\n parts.push(encode(key) + '=' + encode(v));\r\n });\r\n });\r\n\r\n serializedParams = parts.join('&');\r\n }\r\n\r\n if (serializedParams) {\r\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\r\n }\r\n\r\n return url;\r\n};\r\n\r\n","'use strict';\r\n\r\n/**\r\n * Creates a new URL by combining the specified URLs\r\n *\r\n * @param {string} baseURL The base URL\r\n * @param {string} relativeURL The relative URL\r\n * @returns {string} The combined URL\r\n */\r\nmodule.exports = function combineURLs(baseURL, relativeURL) {\r\n return baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '');\r\n};\r\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nmodule.exports = (\r\n utils.isStandardBrowserEnv() ?\r\n\r\n // Standard browser envs support document.cookie\r\n (function standardBrowserEnv() {\r\n return {\r\n write: function write(name, value, expires, path, domain, secure) {\r\n var cookie = [];\r\n cookie.push(name + '=' + encodeURIComponent(value));\r\n\r\n if (utils.isNumber(expires)) {\r\n cookie.push('expires=' + new Date(expires).toGMTString());\r\n }\r\n\r\n if (utils.isString(path)) {\r\n cookie.push('path=' + path);\r\n }\r\n\r\n if (utils.isString(domain)) {\r\n cookie.push('domain=' + domain);\r\n }\r\n\r\n if (secure === true) {\r\n cookie.push('secure');\r\n }\r\n\r\n document.cookie = cookie.join('; ');\r\n },\r\n\r\n read: function read(name) {\r\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\r\n return (match ? decodeURIComponent(match[3]) : null);\r\n },\r\n\r\n remove: function remove(name) {\r\n this.write(name, '', Date.now() - 86400000);\r\n }\r\n };\r\n })() :\r\n\r\n // Non standard browser env (web workers, react-native) lack needed support.\r\n (function nonStandardBrowserEnv() {\r\n return {\r\n write: function write() {},\r\n read: function read() { return null; },\r\n remove: function remove() {}\r\n };\r\n })()\r\n);\r\n","'use strict';\r\n\r\n/**\r\n * Determines whether the specified URL is absolute\r\n *\r\n * @param {string} url The URL to test\r\n * @returns {boolean} True if the specified URL is absolute, otherwise false\r\n */\r\nmodule.exports = function isAbsoluteURL(url) {\r\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\r\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\r\n // by any combination of letters, digits, plus, period, or hyphen.\r\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\r\n};\r\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\nmodule.exports = (\r\n utils.isStandardBrowserEnv() ?\r\n\r\n // Standard browser envs have full support of the APIs needed to test\r\n // whether the request URL is of the same origin as current location.\r\n (function standardBrowserEnv() {\r\n var msie = /(msie|trident)/i.test(navigator.userAgent);\r\n var urlParsingNode = document.createElement('a');\r\n var originURL;\r\n\r\n /**\r\n * Parse a URL to discover it's components\r\n *\r\n * @param {String} url The URL to be parsed\r\n * @returns {Object}\r\n */\r\n function resolveURL(url) {\r\n var href = url;\r\n\r\n if (msie) {\r\n // IE needs attribute set twice to normalize properties\r\n urlParsingNode.setAttribute('href', href);\r\n href = urlParsingNode.href;\r\n }\r\n\r\n urlParsingNode.setAttribute('href', href);\r\n\r\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\r\n return {\r\n href: urlParsingNode.href,\r\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\r\n host: urlParsingNode.host,\r\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\r\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\r\n hostname: urlParsingNode.hostname,\r\n port: urlParsingNode.port,\r\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\r\n urlParsingNode.pathname :\r\n '/' + urlParsingNode.pathname\r\n };\r\n }\r\n\r\n originURL = resolveURL(window.location.href);\r\n\r\n /**\r\n * Determine if a URL shares the same origin as the current location\r\n *\r\n * @param {String} requestURL The URL to test\r\n * @returns {boolean} True if URL shares the same origin, otherwise false\r\n */\r\n return function isURLSameOrigin(requestURL) {\r\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\r\n return (parsed.protocol === originURL.protocol &&\r\n parsed.host === originURL.host);\r\n };\r\n })() :\r\n\r\n // Non standard browser envs (web workers, react-native) lack needed support.\r\n (function nonStandardBrowserEnv() {\r\n return function isURLSameOrigin() {\r\n return true;\r\n };\r\n })()\r\n);\r\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\n/**\r\n * Parse headers into an object\r\n *\r\n * ```\r\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\r\n * Content-Type: application/json\r\n * Connection: keep-alive\r\n * Transfer-Encoding: chunked\r\n * ```\r\n *\r\n * @param {String} headers Headers needing to be parsed\r\n * @returns {Object} Headers parsed into an object\r\n */\r\nmodule.exports = function parseHeaders(headers) {\r\n var parsed = {};\r\n var key;\r\n var val;\r\n var i;\r\n\r\n if (!headers) { return parsed; }\r\n\r\n utils.forEach(headers.split('\\n'), function parser(line) {\r\n i = line.indexOf(':');\r\n key = utils.trim(line.substr(0, i)).toLowerCase();\r\n val = utils.trim(line.substr(i + 1));\r\n\r\n if (key) {\r\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\r\n }\r\n });\r\n\r\n return parsed;\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Syntactic sugar for invoking a function and expanding an array for arguments.\r\n *\r\n * Common use case would be to use `Function.prototype.apply`.\r\n *\r\n * ```js\r\n * function f(x, y, z) {}\r\n * var args = [1, 2, 3];\r\n * f.apply(null, args);\r\n * ```\r\n *\r\n * With `spread` this example can be re-written.\r\n *\r\n * ```js\r\n * spread(function(x, y, z) {})([1, 2, 3]);\r\n * ```\r\n *\r\n * @param {Function} callback\r\n * @returns {Function}\r\n */\r\nmodule.exports = function spread(callback) {\r\n return function wrap(arr) {\r\n return callback.apply(null, arr);\r\n };\r\n};\r\n","'use strict';\r\n\r\nvar utils = require('./../utils');\r\n\r\n/**\r\n * Transform the data for a request or a response\r\n *\r\n * @param {Object|String} data The data to be transformed\r\n * @param {Array} headers The headers for the request or response\r\n * @param {Array|Function} fns A single function or Array of functions\r\n * @returns {*} The resulting transformed data\r\n */\r\nmodule.exports = function transformData(data, headers, fns) {\r\n /*eslint no-param-reassign:0*/\r\n utils.forEach(fns, function transform(fn) {\r\n data = fn(data, headers);\r\n });\r\n\r\n return data;\r\n};\r\n","'use strict';\r\n\r\n/*global toString:true*/\r\n\r\n// utils is a library of generic helper functions non-specific to axios\r\n\r\nvar toString = Object.prototype.toString;\r\n\r\n/**\r\n * Determine if a value is an Array\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Array, otherwise false\r\n */\r\nfunction isArray(val) {\r\n return toString.call(val) === '[object Array]';\r\n}\r\n\r\n/**\r\n * Determine if a value is an ArrayBuffer\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\r\n */\r\nfunction isArrayBuffer(val) {\r\n return toString.call(val) === '[object ArrayBuffer]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a FormData\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an FormData, otherwise false\r\n */\r\nfunction isFormData(val) {\r\n return toString.call(val) === '[object FormData]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a view on an ArrayBuffer\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\r\n */\r\nfunction isArrayBufferView(val) {\r\n var result;\r\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\r\n result = ArrayBuffer.isView(val);\r\n } else {\r\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Determine if a value is a String\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a String, otherwise false\r\n */\r\nfunction isString(val) {\r\n return typeof val === 'string';\r\n}\r\n\r\n/**\r\n * Determine if a value is a Number\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Number, otherwise false\r\n */\r\nfunction isNumber(val) {\r\n return typeof val === 'number';\r\n}\r\n\r\n/**\r\n * Determine if a value is undefined\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if the value is undefined, otherwise false\r\n */\r\nfunction isUndefined(val) {\r\n return typeof val === 'undefined';\r\n}\r\n\r\n/**\r\n * Determine if a value is an Object\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is an Object, otherwise false\r\n */\r\nfunction isObject(val) {\r\n return val !== null && typeof val === 'object';\r\n}\r\n\r\n/**\r\n * Determine if a value is a Date\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Date, otherwise false\r\n */\r\nfunction isDate(val) {\r\n return toString.call(val) === '[object Date]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a File\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a File, otherwise false\r\n */\r\nfunction isFile(val) {\r\n return toString.call(val) === '[object File]';\r\n}\r\n\r\n/**\r\n * Determine if a value is a Blob\r\n *\r\n * @param {Object} val The value to test\r\n * @returns {boolean} True if value is a Blob, otherwise false\r\n */\r\nfunction isBlob(val) {\r\n return toString.call(val) === '[object Blob]';\r\n}\r\n\r\n/**\r\n * Trim excess whitespace off the beginning and end of a string\r\n *\r\n * @param {String} str The String to trim\r\n * @returns {String} The String freed of excess whitespace\r\n */\r\nfunction trim(str) {\r\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\r\n}\r\n\r\n/**\r\n * Determine if we're running in a standard browser environment\r\n *\r\n * This allows axios to run in a web worker, and react-native.\r\n * Both environments support XMLHttpRequest, but not fully standard globals.\r\n *\r\n * web workers:\r\n * typeof window -> undefined\r\n * typeof document -> undefined\r\n *\r\n * react-native:\r\n * typeof document.createElement -> undefined\r\n */\r\nfunction isStandardBrowserEnv() {\r\n return (\r\n typeof window !== 'undefined' &&\r\n typeof document !== 'undefined' &&\r\n typeof document.createElement === 'function'\r\n );\r\n}\r\n\r\n/**\r\n * Iterate over an Array or an Object invoking a function for each item.\r\n *\r\n * If `obj` is an Array callback will be called passing\r\n * the value, index, and complete array for each item.\r\n *\r\n * If 'obj' is an Object callback will be called passing\r\n * the value, key, and complete object for each property.\r\n *\r\n * @param {Object|Array} obj The object to iterate\r\n * @param {Function} fn The callback to invoke for each item\r\n */\r\nfunction forEach(obj, fn) {\r\n // Don't bother if no value provided\r\n if (obj === null || typeof obj === 'undefined') {\r\n return;\r\n }\r\n\r\n // Force an array if not already something iterable\r\n if (typeof obj !== 'object' && !isArray(obj)) {\r\n /*eslint no-param-reassign:0*/\r\n obj = [obj];\r\n }\r\n\r\n if (isArray(obj)) {\r\n // Iterate over array values\r\n for (var i = 0, l = obj.length; i < l; i++) {\r\n fn.call(null, obj[i], i, obj);\r\n }\r\n } else {\r\n // Iterate over object keys\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n fn.call(null, obj[key], key, obj);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Accepts varargs expecting each argument to be an object, then\r\n * immutably merges the properties of each object and returns result.\r\n *\r\n * When multiple objects contain the same key the later object in\r\n * the arguments list will take precedence.\r\n *\r\n * Example:\r\n *\r\n * ```js\r\n * var result = merge({foo: 123}, {foo: 456});\r\n * console.log(result.foo); // outputs 456\r\n * ```\r\n *\r\n * @param {Object} obj1 Object to merge\r\n * @returns {Object} Result of all merge properties\r\n */\r\nfunction merge(/* obj1, obj2, obj3, ... */) {\r\n var result = {};\r\n function assignValue(val, key) {\r\n if (typeof result[key] === 'object' && typeof val === 'object') {\r\n result[key] = merge(result[key], val);\r\n } else {\r\n result[key] = val;\r\n }\r\n }\r\n\r\n for (var i = 0, l = arguments.length; i < l; i++) {\r\n forEach(arguments[i], assignValue);\r\n }\r\n return result;\r\n}\r\n\r\nmodule.exports = {\r\n isArray: isArray,\r\n isArrayBuffer: isArrayBuffer,\r\n isFormData: isFormData,\r\n isArrayBufferView: isArrayBufferView,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isObject: isObject,\r\n isUndefined: isUndefined,\r\n isDate: isDate,\r\n isFile: isFile,\r\n isBlob: isBlob,\r\n isStandardBrowserEnv: isStandardBrowserEnv,\r\n forEach: forEach,\r\n merge: merge,\r\n trim: trim\r\n};\r\n","/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\n * @version 3.1.2\n */\n\n(function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n }\n\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n // test for web worker but not in IE10\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n // node\n function lib$es6$promise$asap$$useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function() {\n process.nextTick(lib$es6$promise$asap$$flush);\n };\n }\n\n // vertx\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n\n // web worker\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function () {\n channel.port2.postMessage(0);\n };\n }\n\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i+1];\n\n callback(arg);\n\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i+1] = undefined;\n }\n\n lib$es6$promise$asap$$len = 0;\n }\n\n function lib$es6$promise$asap$$attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch(e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n\n var lib$es6$promise$asap$$scheduleFlush;\n // Decide what async method to use to triggering processing of queued callbacks:\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n function lib$es6$promise$then$$then(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function(){\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n var lib$es6$promise$then$$default = lib$es6$promise$then$$then;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n\n function lib$es6$promise$$internal$$noop() {}\n\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch(error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch(e) {\n return e;\n }\n }\n\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) { return; }\n sealed = true;\n\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor &&\n then === lib$es6$promise$then$$default &&\n constructor.resolve === lib$es6$promise$promise$resolve$$default) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n lib$es6$promise$$internal$$publish(promise);\n }\n\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n\n parent._onerror = null;\n\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n var child, callback, detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch(e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value){\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch(e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n\n var length = entries.length;\n\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$reject$$reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n\n var lib$es6$promise$promise$$counter = 0;\n\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n var promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n var xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n\n if (lib$es6$promise$$internal$$noop !== resolver) {\n typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();\n this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();\n }\n }\n\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: lib$es6$promise$then$$default,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (Array.isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(this.promise, this._validationError());\n }\n }\n\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var input = this._input;\n\n for (var i = 0; this._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n if (resolve === lib$es6$promise$promise$resolve$$default) {\n var then = lib$es6$promise$$internal$$getThen(entry);\n\n if (then === lib$es6$promise$then$$default &&\n entry._state !== lib$es6$promise$$internal$$PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === lib$es6$promise$promise$$default) {\n var promise = new c(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function(resolve) { resolve(entry); }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n this._remaining--;\n\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, this._result);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n\n /* global define:true module:true window: true */\n if (typeof define === 'function' && define['amd']) {\n define(function() { return lib$es6$promise$umd$$ES6Promise; });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n\n lib$es6$promise$polyfill$$default();\n}).call(this);\n\n","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! https://mths.be/utf8js v2.0.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tvar byte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.0.0',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n","/*!\r\n * @overview Github.js\r\n *\r\n * @copyright (c) 2013 Michael Aufreiter, Development Seed\r\n * Github.js is freely distributable.\r\n *\r\n * @license Licensed under BSD-3-Clause-Clear\r\n *\r\n * For all details and documentation:\r\n * http://substance.io/michael/github\r\n */\r\n'use strict';\r\n\r\n(function (root, factory) {\r\n /* istanbul ignore next */\r\n if (typeof define === 'function' && define.amd) {\r\n define(\r\n [\r\n 'es6-promise',\r\n 'base-64',\r\n 'utf8',\r\n 'axios'\r\n ],\r\n function (Promise, Base64, Utf8, axios) {\r\n return (root.Github = factory(Promise, Base64, Utf8, axios));\r\n }\r\n );\r\n } else if (typeof module === 'object' && module.exports) {\r\n module.exports = factory(require('es6-promise'), require('base-64'), require('utf8'), require('axios'));\r\n } else {\r\n root.Github = factory(root.Promise, root.base64, root.utf8, root.axios);\r\n }\r\n}(this, function(Promise, Base64, Utf8, axios) { // jshint ignore:line\r\n function b64encode(string) {\r\n return Base64.encode(Utf8.encode(string));\r\n }\r\n\r\n if (Promise.polyfill) {\r\n Promise.polyfill();\r\n }\r\n\r\n // Initial Setup\r\n // -------------\r\n\r\n var Github = function (options) {\r\n options = options || {};\r\n\r\n var API_URL = options.apiUrl || 'https://api.github.com';\r\n\r\n // HTTP Request Abstraction\r\n // =======\r\n //\r\n // I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.\r\n\r\n var _request = Github._request = function _request(method, path, data, cb, raw) {\r\n function getURL() {\r\n var url = path.indexOf('//') >= 0 ? path : API_URL + path;\r\n\r\n url += ((/\\?/).test(url) ? '&' : '?');\r\n\r\n if (data && typeof data === 'object' && ['GET', 'HEAD', 'DELETE'].indexOf(method) > -1) {\r\n for(var param in data) {\r\n if (data.hasOwnProperty(param)) {\r\n url += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(data[param]);\r\n }\r\n }\r\n }\r\n\r\n return url.replace(/(×tamp=\\d+)/, '') +\r\n (typeof window !== 'undefined' ? '×tamp=' + new Date().getTime() : '');\r\n }\r\n\r\n var config = {\r\n headers: {\r\n Accept: raw ? 'application/vnd.github.v3.raw+json' : 'application/vnd.github.v3+json',\r\n 'Content-Type': 'application/json;charset=UTF-8'\r\n },\r\n method: method,\r\n data: data ? data : {},\r\n url: getURL()\r\n };\r\n\r\n if ((options.token) || (options.username && options.password)) {\r\n config.headers.Authorization = options.token ?\r\n 'token ' + options.token :\r\n 'Basic ' + b64encode(options.username + ':' + options.password);\r\n }\r\n\r\n return axios(config)\r\n .then(function (response) {\r\n cb(\r\n null,\r\n response.data || true,\r\n response.request\r\n );\r\n }, function (response) {\r\n if (response.status === 304) {\r\n cb(\r\n null,\r\n response.data || true,\r\n response.request\r\n );\r\n } else {\r\n cb({\r\n path: path,\r\n request: response.request,\r\n error: response.status\r\n });\r\n }\r\n });\r\n };\r\n\r\n var _requestAllPages = Github._requestAllPages = function _requestAllPages(path, cb) {\r\n var results = [];\r\n\r\n (function iterate() {\r\n _request('GET', path, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n if (!(res instanceof Array)) {\r\n res = [res];\r\n }\r\n\r\n results.push.apply(results, res);\r\n\r\n var next = (xhr.getResponseHeader('link') || '')\r\n .split(',')\r\n .filter(function(link) {\r\n return /rel=\"next\"/.test(link);\r\n })\r\n .map(function(link) {\r\n return (/<(.*)>/.exec(link) || [])[1];\r\n })\r\n .pop();\r\n\r\n if (!next) {\r\n cb(err, results, xhr);\r\n } else {\r\n path = next;\r\n iterate();\r\n }\r\n });\r\n })();\r\n };\r\n\r\n // User API\r\n // =======\r\n\r\n Github.User = function () {\r\n this.repos = function (options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n options = options || {};\r\n\r\n var url = '/user/repos';\r\n var params = [];\r\n\r\n params.push('type=' + encodeURIComponent(options.type || 'all'));\r\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\r\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n url += '?' + params.join('&');\r\n\r\n _requestAllPages(url, cb);\r\n };\r\n\r\n // List user organizations\r\n // -------\r\n\r\n this.orgs = function (cb) {\r\n _request('GET', '/user/orgs', null, cb);\r\n };\r\n\r\n // List authenticated user's gists\r\n // -------\r\n\r\n this.gists = function (cb) {\r\n _request('GET', '/gists', null, cb);\r\n };\r\n\r\n // List authenticated user's unread notifications\r\n // -------\r\n\r\n this.notifications = function (options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n options = options || {};\r\n var url = '/notifications';\r\n var params = [];\r\n\r\n if (options.all) {\r\n params.push('all=true');\r\n }\r\n\r\n if (options.participating) {\r\n params.push('participating=true');\r\n }\r\n\r\n if (options.since) {\r\n var since = options.since;\r\n\r\n if (since.constructor === Date) {\r\n since = since.toISOString();\r\n }\r\n\r\n params.push('since=' + encodeURIComponent(since));\r\n }\r\n\r\n if (options.before) {\r\n var before = options.before;\r\n\r\n if (before.constructor === Date) {\r\n before = before.toISOString();\r\n }\r\n\r\n params.push('before=' + encodeURIComponent(before));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Show user information\r\n // -------\r\n\r\n this.show = function (username, cb) {\r\n var command = username ? '/users/' + username : '/user';\r\n\r\n _request('GET', command, null, cb);\r\n };\r\n\r\n // List user repositories\r\n // -------\r\n\r\n this.userRepos = function (username, options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n var url = '/users/' + username + '/repos';\r\n var params = [];\r\n\r\n params.push('type=' + encodeURIComponent(options.type || 'all'));\r\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\r\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n url += '?' + params.join('&');\r\n\r\n _requestAllPages(url, cb);\r\n };\r\n\r\n // List user starred repositories\r\n // -------\r\n\r\n this.userStarred = function (username, cb) {\r\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\r\n _requestAllPages('/users/' + username + '/starred?type=all&per_page=100', cb);\r\n };\r\n\r\n // List a user's gists\r\n // -------\r\n\r\n this.userGists = function (username, cb) {\r\n _request('GET', '/users/' + username + '/gists', null, cb);\r\n };\r\n\r\n // List organization repositories\r\n // -------\r\n\r\n this.orgRepos = function (orgname, cb) {\r\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\r\n _requestAllPages('/orgs/' + orgname + '/repos?type=all&&page_num=1000&sort=updated&direction=desc', cb);\r\n };\r\n\r\n // Follow user\r\n // -------\r\n\r\n this.follow = function (username, cb) {\r\n _request('PUT', '/user/following/' + username, null, cb);\r\n };\r\n\r\n // Unfollow user\r\n // -------\r\n\r\n this.unfollow = function (username, cb) {\r\n _request('DELETE', '/user/following/' + username, null, cb);\r\n };\r\n\r\n // Create a repo\r\n // -------\r\n this.createRepo = function (options, cb) {\r\n _request('POST', '/user/repos', options, cb);\r\n };\r\n };\r\n\r\n // Repository API\r\n // =======\r\n\r\n Github.Repository = function (options) {\r\n var repo = options.name;\r\n var user = options.user;\r\n var fullname = options.fullname;\r\n\r\n var that = this;\r\n var repoPath;\r\n\r\n if (fullname) {\r\n repoPath = '/repos/' + fullname;\r\n } else {\r\n repoPath = '/repos/' + user + '/' + repo;\r\n }\r\n\r\n var currentTree = {\r\n branch: null,\r\n sha: null\r\n };\r\n\r\n // Uses the cache if branch has not been changed\r\n // -------\r\n\r\n function updateTree(branch, cb) {\r\n if (branch === currentTree.branch && currentTree.sha) {\r\n return cb(null, currentTree.sha);\r\n }\r\n\r\n that.getRef('heads/' + branch, function (err, sha) {\r\n currentTree.branch = branch;\r\n currentTree.sha = sha;\r\n cb(err, sha);\r\n });\r\n }\r\n\r\n // Get a particular reference\r\n // -------\r\n\r\n this.getRef = function (ref, cb) {\r\n _request('GET', repoPath + '/git/refs/' + ref, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.object.sha, xhr);\r\n });\r\n };\r\n\r\n // Create a new reference\r\n // --------\r\n //\r\n // {\r\n // \"ref\": \"refs/heads/my-new-branch-name\",\r\n // \"sha\": \"827efc6d56897b048c772eb4087f854f46256132\"\r\n // }\r\n\r\n this.createRef = function (options, cb) {\r\n _request('POST', repoPath + '/git/refs', options, cb);\r\n };\r\n\r\n // Delete a reference\r\n // --------\r\n //\r\n // Repo.deleteRef('heads/gh-pages')\r\n // repo.deleteRef('tags/v1.0')\r\n\r\n this.deleteRef = function (ref, cb) {\r\n _request('DELETE', repoPath + '/git/refs/' + ref, options, cb);\r\n };\r\n\r\n // Delete a repo\r\n // --------\r\n\r\n this.deleteRepo = function (cb) {\r\n _request('DELETE', repoPath, options, cb);\r\n };\r\n\r\n // List all tags of a repository\r\n // -------\r\n\r\n this.listTags = function (cb) {\r\n _request('GET', repoPath + '/tags', null, cb);\r\n };\r\n\r\n // List all pull requests of a respository\r\n // -------\r\n\r\n this.listPulls = function (options, cb) {\r\n options = options || {};\r\n var url = repoPath + '/pulls';\r\n var params = [];\r\n\r\n if (typeof options === 'string') {\r\n // Backward compatibility\r\n params.push('state=' + options);\r\n } else {\r\n if (options.state) {\r\n params.push('state=' + encodeURIComponent(options.state));\r\n }\r\n\r\n if (options.head) {\r\n params.push('head=' + encodeURIComponent(options.head));\r\n }\r\n\r\n if (options.base) {\r\n params.push('base=' + encodeURIComponent(options.base));\r\n }\r\n\r\n if (options.sort) {\r\n params.push('sort=' + encodeURIComponent(options.sort));\r\n }\r\n\r\n if (options.direction) {\r\n params.push('direction=' + encodeURIComponent(options.direction));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + options.page);\r\n }\r\n\r\n if (options.per_page) {\r\n params.push('per_page=' + options.per_page);\r\n }\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Gets details for a specific pull request\r\n // -------\r\n\r\n this.getPull = function (number, cb) {\r\n _request('GET', repoPath + '/pulls/' + number, null, cb);\r\n };\r\n\r\n // Retrieve the changes made between base and head\r\n // -------\r\n\r\n this.compare = function (base, head, cb) {\r\n _request('GET', repoPath + '/compare/' + base + '...' + head, null, cb);\r\n };\r\n\r\n // List all branches of a repository\r\n // -------\r\n\r\n this.listBranches = function (cb) {\r\n _request('GET', repoPath + '/git/refs/heads', null, function (err, heads, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n heads = heads.map(function (head) {\r\n return head.ref.replace(/^refs\\/heads\\//, '');\r\n });\r\n\r\n cb(null, heads, xhr);\r\n });\r\n };\r\n\r\n // Retrieve the contents of a blob\r\n // -------\r\n\r\n this.getBlob = function (sha, cb) {\r\n _request('GET', repoPath + '/git/blobs/' + sha, null, cb, 'raw');\r\n };\r\n\r\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\r\n // -------\r\n\r\n this.getCommit = function (branch, sha, cb) {\r\n _request('GET', repoPath + '/git/commits/' + sha, null, cb);\r\n };\r\n\r\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\r\n // -------\r\n\r\n this.getSha = function (branch, path, cb) {\r\n if (!path || path === '') {\r\n return that.getRef('heads/' + branch, cb);\r\n }\r\n\r\n _request('GET', repoPath + '/contents/' + path + (branch ? '?ref=' + branch : ''),\r\n null, function (err, pathContent, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, pathContent.sha, xhr);\r\n });\r\n };\r\n\r\n // Get the statuses for a particular SHA\r\n // -------\r\n\r\n this.getStatuses = function (sha, cb) {\r\n _request('GET', repoPath + '/statuses/' + sha, null, cb);\r\n };\r\n\r\n // Retrieve the tree a commit points to\r\n // -------\r\n\r\n this.getTree = function (tree, cb) {\r\n _request('GET', repoPath + '/git/trees/' + tree, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.tree, xhr);\r\n });\r\n };\r\n\r\n // Post a new blob object, getting a blob SHA back\r\n // -------\r\n\r\n this.postBlob = function (content, cb) {\r\n if (typeof content === 'string') {\r\n content = {\r\n content: content,\r\n encoding: 'utf-8'\r\n };\r\n } else {\r\n content = {\r\n content: b64encode(content),\r\n encoding: 'base64'\r\n };\r\n }\r\n\r\n _request('POST', repoPath + '/git/blobs', content, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Update an existing tree adding a new blob object getting a tree SHA back\r\n // -------\r\n\r\n this.updateTree = function (baseTree, path, blob, cb) {\r\n var data = {\r\n base_tree: baseTree,\r\n tree: [\r\n {\r\n path: path,\r\n mode: '100644',\r\n type: 'blob',\r\n sha: blob\r\n }\r\n ]\r\n };\r\n\r\n _request('POST', repoPath + '/git/trees', data, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Post a new tree object having a file path pointer replaced\r\n // with a new blob SHA getting a tree SHA back\r\n // -------\r\n\r\n this.postTree = function (tree, cb) {\r\n _request('POST', repoPath + '/git/trees', {\r\n tree: tree\r\n }, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Create a new commit object with the current commit SHA as the parent\r\n // and the new tree SHA, getting a commit SHA back\r\n // -------\r\n\r\n this.commit = function (parent, tree, message, cb) {\r\n var user = new Github.User();\r\n\r\n user.show(null, function (err, userData) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n var data = {\r\n message: message,\r\n author: {\r\n name: options.user,\r\n email: userData.email\r\n },\r\n parents: [\r\n parent\r\n ],\r\n tree: tree\r\n };\r\n\r\n _request('POST', repoPath + '/git/commits', data, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n currentTree.sha = res.sha; // Update latest commit\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n });\r\n };\r\n\r\n // Update the reference of your head to point to the new commit SHA\r\n // -------\r\n\r\n this.updateHead = function (head, commit, cb) {\r\n _request('PATCH', repoPath + '/git/refs/heads/' + head, {\r\n sha: commit\r\n }, cb);\r\n };\r\n\r\n // Show repository information\r\n // -------\r\n\r\n this.show = function (cb) {\r\n _request('GET', repoPath, null, cb);\r\n };\r\n\r\n // Show repository contributors\r\n // -------\r\n\r\n this.contributors = function (cb, retry) {\r\n retry = retry || 1000;\r\n var that = this;\r\n\r\n _request('GET', repoPath + '/stats/contributors', null, function (err, data, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n if (xhr.status === 202) {\r\n setTimeout(\r\n function () {\r\n that.contributors(cb, retry);\r\n },\r\n retry\r\n );\r\n } else {\r\n cb(err, data, xhr);\r\n }\r\n });\r\n };\r\n\r\n // Get contents\r\n // --------\r\n\r\n this.contents = function (ref, path, cb) {\r\n path = encodeURI(path);\r\n _request('GET', repoPath + '/contents' + (path ? '/' + path : ''), {\r\n ref: ref\r\n }, cb);\r\n };\r\n\r\n // Fork repository\r\n // -------\r\n\r\n this.fork = function (cb) {\r\n _request('POST', repoPath + '/forks', null, cb);\r\n };\r\n\r\n // List forks\r\n // --------\r\n\r\n this.listForks = function (cb) {\r\n _request('GET', repoPath + '/forks', null, cb);\r\n };\r\n\r\n // Branch repository\r\n // --------\r\n\r\n this.branch = function (oldBranch, newBranch, cb) {\r\n if (arguments.length === 2 && typeof arguments[1] === 'function') {\r\n cb = newBranch;\r\n newBranch = oldBranch;\r\n oldBranch = 'master';\r\n }\r\n\r\n this.getRef('heads/' + oldBranch, function (err, ref) {\r\n if (err && cb) {\r\n return cb(err);\r\n }\r\n\r\n that.createRef({\r\n ref: 'refs/heads/' + newBranch,\r\n sha: ref\r\n }, cb);\r\n });\r\n };\r\n\r\n // Create pull request\r\n // --------\r\n\r\n this.createPullRequest = function (options, cb) {\r\n _request('POST', repoPath + '/pulls', options, cb);\r\n };\r\n\r\n // List hooks\r\n // --------\r\n\r\n this.listHooks = function (cb) {\r\n _request('GET', repoPath + '/hooks', null, cb);\r\n };\r\n\r\n // Get a hook\r\n // --------\r\n\r\n this.getHook = function (id, cb) {\r\n _request('GET', repoPath + '/hooks/' + id, null, cb);\r\n };\r\n\r\n // Create a hook\r\n // --------\r\n\r\n this.createHook = function (options, cb) {\r\n _request('POST', repoPath + '/hooks', options, cb);\r\n };\r\n\r\n // Edit a hook\r\n // --------\r\n\r\n this.editHook = function (id, options, cb) {\r\n _request('PATCH', repoPath + '/hooks/' + id, options, cb);\r\n };\r\n\r\n // Delete a hook\r\n // --------\r\n\r\n this.deleteHook = function (id, cb) {\r\n _request('DELETE', repoPath + '/hooks/' + id, null, cb);\r\n };\r\n\r\n // Read file at given path\r\n // -------\r\n\r\n this.read = function (branch, path, cb) {\r\n _request('GET', repoPath + '/contents/' + encodeURI(path) + (branch ? '?ref=' + branch : ''),\r\n null, cb, true);\r\n };\r\n\r\n // Remove a file\r\n // -------\r\n\r\n this.remove = function (branch, path, cb) {\r\n that.getSha(branch, path, function (err, sha) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n _request('DELETE', repoPath + '/contents/' + path, {\r\n message: path + ' is removed',\r\n sha: sha,\r\n branch: branch\r\n }, cb);\r\n });\r\n };\r\n\r\n // Alias for repo.remove for backwards comapt.\r\n // -------\r\n this.delete = this.remove;\r\n\r\n // Move a file to a new location\r\n // -------\r\n\r\n this.move = function (branch, path, newPath, cb) {\r\n updateTree(branch, function (err, latestCommit) {\r\n that.getTree(latestCommit + '?recursive=true', function (err, tree) {\r\n // Update Tree\r\n tree.forEach(function (ref) {\r\n if (ref.path === path) {\r\n ref.path = newPath;\r\n }\r\n\r\n if (ref.type === 'tree') {\r\n delete ref.sha;\r\n }\r\n });\r\n\r\n that.postTree(tree, function (err, rootTree) {\r\n that.commit(latestCommit, rootTree, 'Deleted ' + path, function (err, commit) {\r\n that.updateHead(branch, commit, cb);\r\n });\r\n });\r\n });\r\n });\r\n };\r\n\r\n // Write file contents to a given branch and path\r\n // -------\r\n\r\n this.write = function (branch, path, content, message, options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n that.getSha(branch, encodeURI(path), function (err, sha) {\r\n var writeOptions = {\r\n message: message,\r\n content: typeof options.encode === 'undefined' || options.encode ? b64encode(content) : content,\r\n branch: branch,\r\n committer: options && options.committer ? options.committer : undefined,\r\n author: options && options.author ? options.author : undefined\r\n };\r\n\r\n // If no error, we set the sha to overwrite an existing file\r\n if (!(err && err.error !== 404)) {\r\n writeOptions.sha = sha;\r\n }\r\n\r\n _request('PUT', repoPath + '/contents/' + encodeURI(path), writeOptions, cb);\r\n });\r\n };\r\n\r\n // List commits on a repository. Takes an object of optional parameters:\r\n // sha: SHA or branch to start listing commits from\r\n // path: Only commits containing this file path will be returned\r\n // author: Only commits by this author will be returned. Its value can be the GitHub login or the email address\r\n // since: ISO 8601 date - only commits after this date will be returned\r\n // until: ISO 8601 date - only commits before this date will be returned\r\n // -------\r\n\r\n this.getCommits = function (options, cb) {\r\n options = options || {};\r\n var url = repoPath + '/commits';\r\n var params = [];\r\n\r\n if (options.sha) {\r\n params.push('sha=' + encodeURIComponent(options.sha));\r\n }\r\n\r\n if (options.path) {\r\n params.push('path=' + encodeURIComponent(options.path));\r\n }\r\n\r\n if (options.author) {\r\n params.push('author=' + encodeURIComponent(options.author));\r\n }\r\n\r\n if (options.since) {\r\n var since = options.since;\r\n\r\n if (since.constructor === Date) {\r\n since = since.toISOString();\r\n }\r\n\r\n params.push('since=' + encodeURIComponent(since));\r\n }\r\n\r\n if (options.until) {\r\n var until = options.until;\r\n\r\n if (until.constructor === Date) {\r\n until = until.toISOString();\r\n }\r\n\r\n params.push('until=' + encodeURIComponent(until));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + options.page);\r\n }\r\n\r\n if (options.perpage) {\r\n params.push('per_page=' + options.perpage);\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Check if a repository is starred.\r\n // --------\r\n\r\n this.isStarred = function(owner, repository, cb) {\r\n _request('GET', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Star a repository.\r\n // --------\r\n\r\n this.star = function(owner, repository, cb) {\r\n _request('PUT', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Unstar a repository.\r\n // --------\r\n\r\n this.unstar = function(owner, repository, cb) {\r\n _request('DELETE', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Create a new release\r\n // --------\r\n\r\n this.createRelease = function(options, cb) {\r\n _request('POST', repoPath + '/releases', options, cb);\r\n };\r\n\r\n // Edit a release\r\n // --------\r\n\r\n this.editRelease = function(id, options, cb) {\r\n _request('PATCH', repoPath + '/releases/' + id, options, cb);\r\n };\r\n\r\n // Get a single release\r\n // --------\r\n\r\n this.getRelease = function(id, cb) {\r\n _request('GET', repoPath + '/releases/' + id, null, cb);\r\n };\r\n\r\n // Remove a release\r\n // --------\r\n\r\n this.deleteRelease = function(id, cb) {\r\n _request('DELETE', repoPath + '/releases/' + id, null, cb);\r\n };\r\n };\r\n\r\n // Gists API\r\n // =======\r\n\r\n Github.Gist = function (options) {\r\n var id = options.id;\r\n var gistPath = '/gists/' + id;\r\n\r\n // Read the gist\r\n // --------\r\n\r\n this.read = function (cb) {\r\n _request('GET', gistPath, null, cb);\r\n };\r\n\r\n // Create the gist\r\n // --------\r\n // {\r\n // \"description\": \"the description for this gist\",\r\n // \"public\": true,\r\n // \"files\": {\r\n // \"file1.txt\": {\r\n // \"content\": \"String file contents\"\r\n // }\r\n // }\r\n // }\r\n\r\n this.create = function (options, cb) {\r\n _request('POST', '/gists', options, cb);\r\n };\r\n\r\n // Delete the gist\r\n // --------\r\n\r\n this.delete = function (cb) {\r\n _request('DELETE', gistPath, null, cb);\r\n };\r\n\r\n // Fork a gist\r\n // --------\r\n\r\n this.fork = function (cb) {\r\n _request('POST', gistPath + '/fork', null, cb);\r\n };\r\n\r\n // Update a gist with the new stuff\r\n // --------\r\n\r\n this.update = function (options, cb) {\r\n _request('PATCH', gistPath, options, cb);\r\n };\r\n\r\n // Star a gist\r\n // --------\r\n\r\n this.star = function (cb) {\r\n _request('PUT', gistPath + '/star', null, cb);\r\n };\r\n\r\n // Untar a gist\r\n // --------\r\n\r\n this.unstar = function (cb) {\r\n _request('DELETE', gistPath + '/star', null, cb);\r\n };\r\n\r\n // Check if a gist is starred\r\n // --------\r\n\r\n this.isStarred = function (cb) {\r\n _request('GET', gistPath + '/star', null, cb);\r\n };\r\n };\r\n\r\n // Issues API\r\n // ==========\r\n\r\n Github.Issue = function (options) {\r\n var path = '/repos/' + options.user + '/' + options.repo + '/issues';\r\n\r\n this.create = function(options, cb) {\r\n _request('POST', path, options, cb);\r\n };\r\n\r\n this.list = function (options, cb) {\r\n var query = [];\r\n\r\n for(var key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(options[key]));\r\n }\r\n }\r\n\r\n _requestAllPages(path + '?' + query.join('&'), cb);\r\n };\r\n\r\n this.comment = function (issue, comment, cb) {\r\n _request('POST', issue.comments_url, {\r\n body: comment\r\n }, cb);\r\n };\r\n\r\n this.edit = function (issue, options, cb) {\r\n _request('PATCH', path + '/' + issue, options, cb);\r\n };\r\n\r\n this.get = function (issue, cb) {\r\n _request('GET', path + '/' + issue, null, cb);\r\n };\r\n };\r\n\r\n // Search API\r\n // ==========\r\n\r\n Github.Search = function (options) {\r\n var path = '/search/';\r\n var query = '?q=' + options.query;\r\n\r\n this.repositories = function (options, cb) {\r\n _request('GET', path + 'repositories' + query, options, cb);\r\n };\r\n\r\n this.code = function (options, cb) {\r\n _request('GET', path + 'code' + query, options, cb);\r\n };\r\n\r\n this.issues = function (options, cb) {\r\n _request('GET', path + 'issues' + query, options, cb);\r\n };\r\n\r\n this.users = function (options, cb) {\r\n _request('GET', path + 'users' + query, options, cb);\r\n };\r\n };\r\n\r\n // Rate Limit API\r\n // ==========\r\n\r\n Github.RateLimit = function() {\r\n this.getRateLimit = function(cb) {\r\n _request('GET', '/rate_limit', null, cb);\r\n };\r\n };\r\n\r\n return Github;\r\n };\r\n\r\n // Top Level API\r\n // -------\r\n\r\n Github.getIssues = function (user, repo) {\r\n return new Github.Issue({\r\n user: user,\r\n repo: repo\r\n });\r\n };\r\n\r\n Github.getRepo = function (user, repo) {\r\n if (!repo) {\r\n return new Github.Repository({\r\n fullname: user\r\n });\r\n } else {\r\n return new Github.Repository({\r\n user: user,\r\n name: repo\r\n });\r\n }\r\n };\r\n\r\n Github.getUser = function () {\r\n return new Github.User();\r\n };\r\n\r\n Github.getGist = function (id) {\r\n return new Github.Gist({\r\n id: id\r\n });\r\n };\r\n\r\n Github.getSearch = function (query) {\r\n return new Github.Search({\r\n query: query\r\n });\r\n };\r\n\r\n Github.getRateLimit = function() {\r\n return new Github.RateLimit();\r\n };\r\n\r\n return Github;\r\n}));\r\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/axios/index.js","github.js","node_modules/axios/lib/adapters/xhr.js","node_modules/axios/lib/axios.js","node_modules/axios/lib/core/InterceptorManager.js","node_modules/axios/lib/core/dispatchRequest.js","node_modules/axios/lib/defaults.js","node_modules/axios/lib/helpers/bind.js","node_modules/axios/lib/helpers/btoa.js","node_modules/axios/lib/helpers/buildURL.js","node_modules/axios/lib/helpers/combineURLs.js","node_modules/axios/lib/helpers/cookies.js","node_modules/axios/lib/helpers/isAbsoluteURL.js","node_modules/axios/lib/helpers/isURLSameOrigin.js","node_modules/axios/lib/helpers/parseHeaders.js","node_modules/axios/lib/helpers/spread.js","node_modules/axios/lib/helpers/transformData.js","node_modules/axios/lib/utils.js","node_modules/base-64/base64.js","node_modules/es6-promise/dist/es6-promise.js","node_modules/process/browser.js","node_modules/utf8/utf8.js","src/github.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Github","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,"./lib/axios",2,"utils","buildURL","parseHeaders","transformData","isURLSameOrigin","btoa","resolve","reject","config","requestData","data","requestHeaders","headers","isFormData","request","XMLHttpRequest","XDomainRequest","url","auth","username","password","Authorization","open","method","toUpperCase","params","paramsSerializer","timeout","onload","responseHeaders","getAllResponseHeaders","responseData","indexOf","responseType","responseText","response","transformResponse","status","statusText","onerror","isStandardBrowserEnv","cookies","xsrfValue","withCredentials","read","xsrfCookieName","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isArrayBuffer","DataView","send","./../helpers/btoa","./../helpers/buildURL","./../helpers/cookies","./../helpers/isURLSameOrigin","./../helpers/parseHeaders","./../helpers/transformData","./../utils",3,"Axios","defaultConfig","defaults","merge","interceptors","InterceptorManager","dispatchRequest","isAbsoluteURL","combineURLs","bind","prototype","arguments","baseURL","transformRequest","common","chain","promise","Promise","interceptor","unshift","fulfilled","rejected","push","then","shift","defaultInstance","axios","create","all","promises","spread","./core/InterceptorManager","./core/dispatchRequest","./defaults","./helpers/bind","./helpers/combineURLs","./helpers/isAbsoluteURL","./helpers/spread","./helpers/transformData","./utils",4,"handlers","use","eject","id","fn","h",5,"process","adapter","../adapters/http","../adapters/xhr","_process",6,"PROTECTION_PREFIX","DEFAULT_CONTENT_TYPE","Content-Type","isArrayBufferView","buffer","isObject","isFile","isBlob","isUndefined","JSON","stringify","replace","parse","Accept","patch","post","put",7,"thisArg","args","Array","apply",8,"InvalidCharacterError","message","input","block","charCode","str","String","output","idx","map","chars","charAt","charCodeAt","name",9,"encode","encodeURIComponent","serializedParams","parts","isArray","v","isDate","toISOString","join",10,"relativeURL",11,"write","value","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","isString","document","match","RegExp","decodeURIComponent","remove","now",12,"test",13,"resolveURL","href","msie","urlParsingNode","setAttribute","protocol","host","search","hash","hostname","port","pathname","originURL","navigator","userAgent","createElement","location","requestURL","parsed",14,"split","line","trim","substr",15,"callback","arr",16,"fns",17,"toString","result","ArrayBuffer","isView","obj","hasOwnProperty","assignValue","Object",18,"root","freeExports","freeModule","freeGlobal","error","TABLE","REGEX_SPACE_CHARACTERS","decode","bitStorage","bitCounter","position","fromCharCode","b","c","padding","base64","version","nodeType",19,"lib$es6$promise$utils$$objectOrFunction","x","lib$es6$promise$utils$$isFunction","lib$es6$promise$asap$$setScheduler","scheduleFn","lib$es6$promise$asap$$customSchedulerFn","lib$es6$promise$asap$$setAsap","asapFn","lib$es6$promise$asap$$asap","lib$es6$promise$asap$$useNextTick","nextTick","lib$es6$promise$asap$$flush","lib$es6$promise$asap$$useVertxTimer","lib$es6$promise$asap$$vertxNext","lib$es6$promise$asap$$useMutationObserver","iterations","observer","lib$es6$promise$asap$$BrowserMutationObserver","node","createTextNode","observe","characterData","lib$es6$promise$asap$$useMessageChannel","channel","MessageChannel","port1","onmessage","port2","postMessage","lib$es6$promise$asap$$useSetTimeout","setTimeout","lib$es6$promise$asap$$len","lib$es6$promise$asap$$queue","arg","lib$es6$promise$asap$$attemptVertx","vertx","runOnLoop","runOnContext","lib$es6$promise$then$$then","onFulfillment","onRejection","parent","state","_state","lib$es6$promise$$internal$$FULFILLED","lib$es6$promise$$internal$$REJECTED","child","constructor","lib$es6$promise$$internal$$noop","_result","lib$es6$promise$$internal$$invokeCallback","lib$es6$promise$$internal$$subscribe","lib$es6$promise$promise$resolve$$resolve","object","Constructor","lib$es6$promise$$internal$$resolve","lib$es6$promise$$internal$$selfFulfillment","TypeError","lib$es6$promise$$internal$$cannotReturnOwn","lib$es6$promise$$internal$$getThen","lib$es6$promise$$internal$$GET_THEN_ERROR","lib$es6$promise$$internal$$tryThen","fulfillmentHandler","rejectionHandler","lib$es6$promise$$internal$$handleForeignThenable","thenable","sealed","lib$es6$promise$$internal$$fulfill","reason","lib$es6$promise$$internal$$reject","_label","lib$es6$promise$$internal$$handleOwnThenable","lib$es6$promise$$internal$$handleMaybeThenable","maybeThenable","lib$es6$promise$then$$default","lib$es6$promise$promise$resolve$$default","lib$es6$promise$$internal$$publishRejection","_onerror","lib$es6$promise$$internal$$publish","lib$es6$promise$$internal$$PENDING","_subscribers","subscribers","settled","detail","lib$es6$promise$$internal$$ErrorObject","lib$es6$promise$$internal$$tryCatch","lib$es6$promise$$internal$$TRY_CATCH_ERROR","succeeded","failed","hasCallback","lib$es6$promise$$internal$$initializePromise","resolver","lib$es6$promise$promise$all$$all","entries","lib$es6$promise$enumerator$$default","lib$es6$promise$promise$race$$race","lib$es6$promise$utils$$isArray","lib$es6$promise$promise$reject$$reject","lib$es6$promise$promise$$needsResolver","lib$es6$promise$promise$$needsNew","lib$es6$promise$promise$$Promise","_id","lib$es6$promise$promise$$counter","lib$es6$promise$enumerator$$Enumerator","_instanceConstructor","_input","_remaining","_enumerate","_validationError","lib$es6$promise$polyfill$$polyfill","local","Function","P","cast","lib$es6$promise$promise$$default","lib$es6$promise$utils$$_isArray","lib$es6$promise$asap$$scheduleFlush","lib$es6$promise$asap$$browserWindow","lib$es6$promise$asap$$browserGlobal","MutationObserver","WebKitMutationObserver","lib$es6$promise$asap$$isNode","lib$es6$promise$asap$$isWorker","Uint8ClampedArray","importScripts","lib$es6$promise$promise$all$$default","lib$es6$promise$promise$race$$default","lib$es6$promise$promise$reject$$default","race","_setScheduler","_setAsap","_asap","catch","_eachEntry","entry","_settledAt","_willSettleAt","enumerator","lib$es6$promise$polyfill$$default","lib$es6$promise$umd$$ES6Promise","polyfill",20,"cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","len","run","clearTimeout","Item","fun","array","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","binding","cwd","chdir","dir","umask",21,"ucs2decode","string","extra","counter","ucs2encode","index","stringFromCharCode","checkScalarValue","codePoint","createByte","encodeCodePoint","symbol","utf8encode","codePoints","byteString","readContinuationByte","byteIndex","byteCount","continuationByte","byteArray","decodeSymbol","byte1","byte2","byte3","byte4","utf8decode","tmp","utf8",22,"factory","Base64","Utf8","b64encode","options","API_URL","apiUrl","_request","cb","raw","getURL","param","getTime","token","_requestAllPages","results","iterate","err","res","xhr","next","getResponseHeader","filter","link","exec","pop","User","repos","type","sort","per_page","page","orgs","gists","notifications","participating","since","before","show","command","userRepos","userStarred","userGists","orgRepos","orgname","follow","unfollow","createRepo","Repository","updateTree","branch","currentTree","sha","that","getRef","repoPath","repo","user","fullname","ref","createRef","deleteRef","deleteRepo","listTags","listPulls","head","base","direction","getPull","number","compare","listBranches","heads","getBlob","getCommit","getSha","pathContent","getStatuses","getTree","tree","postBlob","content","encoding","baseTree","blob","base_tree","mode","postTree","commit","userData","author","email","parents","updateHead","contributors","retry","collaborators","isCollaborator","contents","encodeURI","fork","listForks","oldBranch","newBranch","createPullRequest","listHooks","getHook","createHook","editHook","deleteHook","move","newPath","latestCommit","rootTree","writeOptions","committer","getCommits","until","perpage","isStarred","owner","repository","star","unstar","createRelease","editRelease","getRelease","deleteRelease","Gist","gistPath","update","Issue","list","query","comment","issue","comments_url","body","edit","get","Search","repositories","issues","users","RateLimit","getRateLimit","getIssues","getRepo","getUser","getGist","getSearch","base-64","es6-promise"],"mappings":"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","file":"github.bundle.min.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n reject)(response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new Error('Network Error'));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n if (request.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\n }\n\n // Send the request\n request.send(requestData);\n};\n\n},{\"./../helpers/btoa\":8,\"./../helpers/buildURL\":9,\"./../helpers/cookies\":11,\"./../helpers/isURLSameOrigin\":13,\"./../helpers/parseHeaders\":14,\"./../helpers/transformData\":16,\"./../utils\":17}],3:[function(require,module,exports){\n'use strict';\n\nvar defaults = require('./defaults');\nvar utils = require('./utils');\nvar dispatchRequest = require('./core/dispatchRequest');\nvar InterceptorManager = require('./core/InterceptorManager');\nvar isAbsoluteURL = require('./helpers/isAbsoluteURL');\nvar combineURLs = require('./helpers/combineURLs');\nvar bind = require('./helpers/bind');\nvar transformData = require('./helpers/transformData');\n\nfunction Axios(defaultConfig) {\n this.defaults = utils.merge({}, defaultConfig);\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Don't allow overriding defaults.withCredentials\n config.withCredentials = config.withCredentials || this.defaults.withCredentials;\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nvar defaultInstance = new Axios(defaults);\nvar axios = module.exports = bind(Axios.prototype.request, defaultInstance);\n\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\n},{\"./core/InterceptorManager\":4,\"./core/dispatchRequest\":5,\"./defaults\":6,\"./helpers/bind\":7,\"./helpers/combineURLs\":10,\"./helpers/isAbsoluteURL\":12,\"./helpers/spread\":15,\"./helpers/transformData\":16,\"./utils\":17}],4:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n},{\"./../utils\":17}],5:[function(require,module,exports){\n(function (process){\n'use strict';\n\n/**\n * Dispatch a request to the server using whichever adapter\n * is supported by the current environment.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n return new Promise(function executor(resolve, reject) {\n try {\n var adapter;\n\n if (typeof config.adapter === 'function') {\n // For custom adapter support\n adapter = config.adapter;\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n\n if (typeof adapter === 'function') {\n adapter(resolve, reject, config);\n }\n } catch (e) {\n reject(e);\n }\n });\n};\n\n\n}).call(this,require('_process'))\n\n},{\"../adapters/http\":2,\"../adapters/xhr\":2,\"_process\":20}],6:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./utils');\n\nvar PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nmodule.exports = {\n transformRequest: [function transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) {\n // Set application/json if no Content-Type has been specified\n if (!utils.isUndefined(headers)) {\n utils.forEach(headers, function processContentTypeHeader(val, key) {\n if (key.toLowerCase() === 'content-type') {\n headers['Content-Type'] = val;\n }\n });\n\n if (utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = 'application/json;charset=utf-8';\n }\n }\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponseJSON(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n data = data.replace(PROTECTION_PREFIX, '');\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n patch: utils.merge(DEFAULT_CONTENT_TYPE),\n post: utils.merge(DEFAULT_CONTENT_TYPE),\n put: utils.merge(DEFAULT_CONTENT_TYPE)\n },\n\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN'\n};\n\n},{\"./utils\":17}],7:[function(require,module,exports){\n'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n},{}],8:[function(require,module,exports){\n'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n},{}],9:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n }\n\n if (!utils.isArray(val)) {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n},{\"./../utils\":17}],10:[function(require,module,exports){\n'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '');\n};\n\n},{}],11:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n},{\"./../utils\":17}],12:[function(require,module,exports){\n'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n},{}],13:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n},{\"./../utils\":17}],14:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\n},{\"./../utils\":17}],15:[function(require,module,exports){\n'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n},{}],16:[function(require,module,exports){\n'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n},{\"./../utils\":17}],17:[function(require,module,exports){\n'use strict';\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * typeof document.createElement -> undefined\n */\nfunction isStandardBrowserEnv() {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object' && !isArray(obj)) {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n trim: trim\n};\n\n},{}],18:[function(require,module,exports){\n(function (global){\n/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],19:[function(require,module,exports){\n(function (process,global){\n/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\n * @version 3.1.2\n */\n\n(function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n }\n\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n // test for web worker but not in IE10\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n // node\n function lib$es6$promise$asap$$useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function() {\n process.nextTick(lib$es6$promise$asap$$flush);\n };\n }\n\n // vertx\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n\n // web worker\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function () {\n channel.port2.postMessage(0);\n };\n }\n\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i+1];\n\n callback(arg);\n\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i+1] = undefined;\n }\n\n lib$es6$promise$asap$$len = 0;\n }\n\n function lib$es6$promise$asap$$attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch(e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n\n var lib$es6$promise$asap$$scheduleFlush;\n // Decide what async method to use to triggering processing of queued callbacks:\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n function lib$es6$promise$then$$then(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function(){\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n var lib$es6$promise$then$$default = lib$es6$promise$then$$then;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n\n function lib$es6$promise$$internal$$noop() {}\n\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch(error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch(e) {\n return e;\n }\n }\n\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) { return; }\n sealed = true;\n\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor &&\n then === lib$es6$promise$then$$default &&\n constructor.resolve === lib$es6$promise$promise$resolve$$default) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n lib$es6$promise$$internal$$publish(promise);\n }\n\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n\n parent._onerror = null;\n\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n var child, callback, detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch(e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value){\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch(e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n\n var length = entries.length;\n\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$reject$$reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n\n var lib$es6$promise$promise$$counter = 0;\n\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n var promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n var xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n\n if (lib$es6$promise$$internal$$noop !== resolver) {\n typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();\n this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();\n }\n }\n\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: lib$es6$promise$then$$default,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (Array.isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(this.promise, this._validationError());\n }\n }\n\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var input = this._input;\n\n for (var i = 0; this._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n if (resolve === lib$es6$promise$promise$resolve$$default) {\n var then = lib$es6$promise$$internal$$getThen(entry);\n\n if (then === lib$es6$promise$then$$default &&\n entry._state !== lib$es6$promise$$internal$$PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === lib$es6$promise$promise$$default) {\n var promise = new c(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function(resolve) { resolve(entry); }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n this._remaining--;\n\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, this._result);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n\n /* global define:true module:true window: true */\n if (typeof define === 'function' && define['amd']) {\n define(function() { return lib$es6$promise$umd$$ES6Promise; });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n\n lib$es6$promise$polyfill$$default();\n}).call(this);\n\n\n}).call(this,require('_process'),typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{\"_process\":20}],20:[function(require,module,exports){\n// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n},{}],21:[function(require,module,exports){\n(function (global){\n/*! https://mths.be/utf8js v2.0.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tvar byte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.0.0',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n\n},{}],22:[function(require,module,exports){\n/*!\n * @overview Github.js\n *\n * @copyright (c) 2013 Michael Aufreiter, Development Seed\n * Github.js is freely distributable.\n *\n * @license Licensed under BSD-3-Clause-Clear\n *\n * For all details and documentation:\n * http://substance.io/michael/github\n */\n'use strict';\n\n(function (root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define(\n [\n 'es6-promise',\n 'base-64',\n 'utf8',\n 'axios'\n ],\n function (Promise, Base64, Utf8, axios) {\n return (root.Github = factory(Promise, Base64, Utf8, axios));\n }\n );\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('es6-promise'), require('base-64'), require('utf8'), require('axios'));\n } else {\n root.Github = factory(root.Promise, root.base64, root.utf8, root.axios);\n }\n}(this, function(Promise, Base64, Utf8, axios) { // jshint ignore:line\n function b64encode(string) {\n return Base64.encode(Utf8.encode(string));\n }\n\n if (Promise.polyfill) {\n Promise.polyfill();\n }\n\n // Initial Setup\n // -------------\n\n var Github = function (options) {\n options = options || {};\n\n var API_URL = options.apiUrl || 'https://api.github.com';\n\n // HTTP Request Abstraction\n // =======\n //\n // I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.\n\n var _request = Github._request = function _request(method, path, data, cb, raw) {\n function getURL() {\n var url = path.indexOf('//') >= 0 ? path : API_URL + path;\n\n url += ((/\\?/).test(url) ? '&' : '?');\n\n if (data && typeof data === 'object' && ['GET', 'HEAD', 'DELETE'].indexOf(method) > -1) {\n for(var param in data) {\n if (data.hasOwnProperty(param)) {\n url += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(data[param]);\n }\n }\n }\n\n return url.replace(/(×tamp=\\d+)/, '') +\n (typeof window !== 'undefined' ? '×tamp=' + new Date().getTime() : '');\n }\n\n var config = {\n headers: {\n Accept: raw ? 'application/vnd.github.v3.raw+json' : 'application/vnd.github.v3+json',\n 'Content-Type': 'application/json;charset=UTF-8'\n },\n method: method,\n data: data ? data : {},\n url: getURL()\n };\n\n if ((options.token) || (options.username && options.password)) {\n config.headers.Authorization = options.token ?\n 'token ' + options.token :\n 'Basic ' + b64encode(options.username + ':' + options.password);\n }\n\n return axios(config)\n .then(function (response) {\n cb(\n null,\n response.data || true,\n response.request\n );\n }, function (response) {\n if (response.status === 304) {\n cb(\n null,\n response.data || true,\n response.request\n );\n } else {\n cb({\n path: path,\n request: response.request,\n error: response.status\n });\n }\n });\n };\n\n var _requestAllPages = Github._requestAllPages = function _requestAllPages(path, cb) {\n var results = [];\n\n (function iterate() {\n _request('GET', path, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n if (!(res instanceof Array)) {\n res = [res];\n }\n\n results.push.apply(results, res);\n\n var next = (xhr.getResponseHeader('link') || '')\n .split(',')\n .filter(function(link) {\n return /rel=\"next\"/.test(link);\n })\n .map(function(link) {\n return (/<(.*)>/.exec(link) || [])[1];\n })\n .pop();\n\n if (!next) {\n cb(err, results, xhr);\n } else {\n path = next;\n iterate();\n }\n });\n })();\n };\n\n // User API\n // =======\n\n Github.User = function () {\n this.repos = function (options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n options = options || {};\n\n var url = '/user/repos';\n var params = [];\n\n params.push('type=' + encodeURIComponent(options.type || 'all'));\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n url += '?' + params.join('&');\n\n _requestAllPages(url, cb);\n };\n\n // List user organizations\n // -------\n\n this.orgs = function (cb) {\n _request('GET', '/user/orgs', null, cb);\n };\n\n // List authenticated user's gists\n // -------\n\n this.gists = function (cb) {\n _request('GET', '/gists', null, cb);\n };\n\n // List authenticated user's unread notifications\n // -------\n\n this.notifications = function (options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n options = options || {};\n var url = '/notifications';\n var params = [];\n\n if (options.all) {\n params.push('all=true');\n }\n\n if (options.participating) {\n params.push('participating=true');\n }\n\n if (options.since) {\n var since = options.since;\n\n if (since.constructor === Date) {\n since = since.toISOString();\n }\n\n params.push('since=' + encodeURIComponent(since));\n }\n\n if (options.before) {\n var before = options.before;\n\n if (before.constructor === Date) {\n before = before.toISOString();\n }\n\n params.push('before=' + encodeURIComponent(before));\n }\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Show user information\n // -------\n\n this.show = function (username, cb) {\n var command = username ? '/users/' + username : '/user';\n\n _request('GET', command, null, cb);\n };\n\n // List user repositories\n // -------\n\n this.userRepos = function (username, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n var url = '/users/' + username + '/repos';\n var params = [];\n\n params.push('type=' + encodeURIComponent(options.type || 'all'));\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n url += '?' + params.join('&');\n\n _requestAllPages(url, cb);\n };\n\n // List user starred repositories\n // -------\n\n this.userStarred = function (username, cb) {\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\n _requestAllPages('/users/' + username + '/starred?type=all&per_page=100', cb);\n };\n\n // List a user's gists\n // -------\n\n this.userGists = function (username, cb) {\n _request('GET', '/users/' + username + '/gists', null, cb);\n };\n\n // List organization repositories\n // -------\n\n this.orgRepos = function (orgname, cb) {\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\n _requestAllPages('/orgs/' + orgname + '/repos?type=all&&page_num=1000&sort=updated&direction=desc', cb);\n };\n\n // Follow user\n // -------\n\n this.follow = function (username, cb) {\n _request('PUT', '/user/following/' + username, null, cb);\n };\n\n // Unfollow user\n // -------\n\n this.unfollow = function (username, cb) {\n _request('DELETE', '/user/following/' + username, null, cb);\n };\n\n // Create a repo\n // -------\n this.createRepo = function (options, cb) {\n _request('POST', '/user/repos', options, cb);\n };\n };\n\n // Repository API\n // =======\n\n Github.Repository = function (options) {\n var repo = options.name;\n var user = options.user;\n var fullname = options.fullname;\n\n var that = this;\n var repoPath;\n\n if (fullname) {\n repoPath = '/repos/' + fullname;\n } else {\n repoPath = '/repos/' + user + '/' + repo;\n }\n\n var currentTree = {\n branch: null,\n sha: null\n };\n\n // Uses the cache if branch has not been changed\n // -------\n\n function updateTree(branch, cb) {\n if (branch === currentTree.branch && currentTree.sha) {\n return cb(null, currentTree.sha);\n }\n\n that.getRef('heads/' + branch, function (err, sha) {\n currentTree.branch = branch;\n currentTree.sha = sha;\n cb(err, sha);\n });\n }\n\n // Get a particular reference\n // -------\n\n this.getRef = function (ref, cb) {\n _request('GET', repoPath + '/git/refs/' + ref, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.object.sha, xhr);\n });\n };\n\n // Create a new reference\n // --------\n //\n // {\n // \"ref\": \"refs/heads/my-new-branch-name\",\n // \"sha\": \"827efc6d56897b048c772eb4087f854f46256132\"\n // }\n\n this.createRef = function (options, cb) {\n _request('POST', repoPath + '/git/refs', options, cb);\n };\n\n // Delete a reference\n // --------\n //\n // Repo.deleteRef('heads/gh-pages')\n // repo.deleteRef('tags/v1.0')\n\n this.deleteRef = function (ref, cb) {\n _request('DELETE', repoPath + '/git/refs/' + ref, options, cb);\n };\n\n // Delete a repo\n // --------\n\n this.deleteRepo = function (cb) {\n _request('DELETE', repoPath, options, cb);\n };\n\n // List all tags of a repository\n // -------\n\n this.listTags = function (cb) {\n _request('GET', repoPath + '/tags', null, cb);\n };\n\n // List all pull requests of a respository\n // -------\n\n this.listPulls = function (options, cb) {\n options = options || {};\n var url = repoPath + '/pulls';\n var params = [];\n\n if (typeof options === 'string') {\n // Backward compatibility\n params.push('state=' + options);\n } else {\n if (options.state) {\n params.push('state=' + encodeURIComponent(options.state));\n }\n\n if (options.head) {\n params.push('head=' + encodeURIComponent(options.head));\n }\n\n if (options.base) {\n params.push('base=' + encodeURIComponent(options.base));\n }\n\n if (options.sort) {\n params.push('sort=' + encodeURIComponent(options.sort));\n }\n\n if (options.direction) {\n params.push('direction=' + encodeURIComponent(options.direction));\n }\n\n if (options.page) {\n params.push('page=' + options.page);\n }\n\n if (options.per_page) {\n params.push('per_page=' + options.per_page);\n }\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Gets details for a specific pull request\n // -------\n\n this.getPull = function (number, cb) {\n _request('GET', repoPath + '/pulls/' + number, null, cb);\n };\n\n // Retrieve the changes made between base and head\n // -------\n\n this.compare = function (base, head, cb) {\n _request('GET', repoPath + '/compare/' + base + '...' + head, null, cb);\n };\n\n // List all branches of a repository\n // -------\n\n this.listBranches = function (cb) {\n _request('GET', repoPath + '/git/refs/heads', null, function (err, heads, xhr) {\n if (err) {\n return cb(err);\n }\n\n heads = heads.map(function (head) {\n return head.ref.replace(/^refs\\/heads\\//, '');\n });\n\n cb(null, heads, xhr);\n });\n };\n\n // Retrieve the contents of a blob\n // -------\n\n this.getBlob = function (sha, cb) {\n _request('GET', repoPath + '/git/blobs/' + sha, null, cb, 'raw');\n };\n\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\n // -------\n\n this.getCommit = function (branch, sha, cb) {\n _request('GET', repoPath + '/git/commits/' + sha, null, cb);\n };\n\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\n // -------\n\n this.getSha = function (branch, path, cb) {\n if (!path || path === '') {\n return that.getRef('heads/' + branch, cb);\n }\n\n _request('GET', repoPath + '/contents/' + path + (branch ? '?ref=' + branch : ''),\n null, function (err, pathContent, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, pathContent.sha, xhr);\n });\n };\n\n // Get the statuses for a particular SHA\n // -------\n\n this.getStatuses = function (sha, cb) {\n _request('GET', repoPath + '/statuses/' + sha, null, cb);\n };\n\n // Retrieve the tree a commit points to\n // -------\n\n this.getTree = function (tree, cb) {\n _request('GET', repoPath + '/git/trees/' + tree, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.tree, xhr);\n });\n };\n\n // Post a new blob object, getting a blob SHA back\n // -------\n\n this.postBlob = function (content, cb) {\n if (typeof content === 'string') {\n content = {\n content: content,\n encoding: 'utf-8'\n };\n } else {\n content = {\n content: b64encode(content),\n encoding: 'base64'\n };\n }\n\n _request('POST', repoPath + '/git/blobs', content, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Update an existing tree adding a new blob object getting a tree SHA back\n // -------\n\n this.updateTree = function (baseTree, path, blob, cb) {\n var data = {\n base_tree: baseTree,\n tree: [\n {\n path: path,\n mode: '100644',\n type: 'blob',\n sha: blob\n }\n ]\n };\n\n _request('POST', repoPath + '/git/trees', data, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Post a new tree object having a file path pointer replaced\n // with a new blob SHA getting a tree SHA back\n // -------\n\n this.postTree = function (tree, cb) {\n _request('POST', repoPath + '/git/trees', {\n tree: tree\n }, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Create a new commit object with the current commit SHA as the parent\n // and the new tree SHA, getting a commit SHA back\n // -------\n\n this.commit = function (parent, tree, message, cb) {\n var user = new Github.User();\n\n user.show(null, function (err, userData) {\n if (err) {\n return cb(err);\n }\n\n var data = {\n message: message,\n author: {\n name: options.user,\n email: userData.email\n },\n parents: [\n parent\n ],\n tree: tree\n };\n\n _request('POST', repoPath + '/git/commits', data, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n currentTree.sha = res.sha; // Update latest commit\n\n cb(null, res.sha, xhr);\n });\n });\n };\n\n // Update the reference of your head to point to the new commit SHA\n // -------\n\n this.updateHead = function (head, commit, cb) {\n _request('PATCH', repoPath + '/git/refs/heads/' + head, {\n sha: commit\n }, cb);\n };\n\n // Show repository information\n // -------\n\n this.show = function (cb) {\n _request('GET', repoPath, null, cb);\n };\n\n // Show repository contributors\n // -------\n\n this.contributors = function (cb, retry) {\n retry = retry || 1000;\n var that = this;\n\n _request('GET', repoPath + '/stats/contributors', null, function (err, data, xhr) {\n if (err) {\n return cb(err);\n }\n\n if (xhr.status === 202) {\n setTimeout(\n function () {\n that.contributors(cb, retry);\n },\n retry\n );\n } else {\n cb(err, data, xhr);\n }\n });\n };\n\n // Show repository collaborators\n // -------\n\n this.collaborators = function (cb) {\n _request('GET', repoPath + '/collaborators', null, cb);\n };\n\n // Check whether user is a collaborator on the repository\n // -------\n\n this.isCollaborator = function (username, cb) {\n _request('GET', repoPath + '/collaborators/' + username, null, cb);\n };\n\n // Get contents\n // --------\n\n this.contents = function (ref, path, cb) {\n path = encodeURI(path);\n _request('GET', repoPath + '/contents' + (path ? '/' + path : ''), {\n ref: ref\n }, cb);\n };\n\n // Fork repository\n // -------\n\n this.fork = function (cb) {\n _request('POST', repoPath + '/forks', null, cb);\n };\n\n // List forks\n // --------\n\n this.listForks = function (cb) {\n _request('GET', repoPath + '/forks', null, cb);\n };\n\n // Branch repository\n // --------\n\n this.branch = function (oldBranch, newBranch, cb) {\n if (arguments.length === 2 && typeof arguments[1] === 'function') {\n cb = newBranch;\n newBranch = oldBranch;\n oldBranch = 'master';\n }\n\n this.getRef('heads/' + oldBranch, function (err, ref) {\n if (err && cb) {\n return cb(err);\n }\n\n that.createRef({\n ref: 'refs/heads/' + newBranch,\n sha: ref\n }, cb);\n });\n };\n\n // Create pull request\n // --------\n\n this.createPullRequest = function (options, cb) {\n _request('POST', repoPath + '/pulls', options, cb);\n };\n\n // List hooks\n // --------\n\n this.listHooks = function (cb) {\n _request('GET', repoPath + '/hooks', null, cb);\n };\n\n // Get a hook\n // --------\n\n this.getHook = function (id, cb) {\n _request('GET', repoPath + '/hooks/' + id, null, cb);\n };\n\n // Create a hook\n // --------\n\n this.createHook = function (options, cb) {\n _request('POST', repoPath + '/hooks', options, cb);\n };\n\n // Edit a hook\n // --------\n\n this.editHook = function (id, options, cb) {\n _request('PATCH', repoPath + '/hooks/' + id, options, cb);\n };\n\n // Delete a hook\n // --------\n\n this.deleteHook = function (id, cb) {\n _request('DELETE', repoPath + '/hooks/' + id, null, cb);\n };\n\n // Read file at given path\n // -------\n\n this.read = function (branch, path, cb) {\n _request('GET', repoPath + '/contents/' + encodeURI(path) + (branch ? '?ref=' + branch : ''),\n null, cb, true);\n };\n\n // Remove a file\n // -------\n\n this.remove = function (branch, path, cb) {\n that.getSha(branch, path, function (err, sha) {\n if (err) {\n return cb(err);\n }\n\n _request('DELETE', repoPath + '/contents/' + path, {\n message: path + ' is removed',\n sha: sha,\n branch: branch\n }, cb);\n });\n };\n\n // Alias for repo.remove for backwards comapt.\n // -------\n this.delete = this.remove;\n\n // Move a file to a new location\n // -------\n\n this.move = function (branch, path, newPath, cb) {\n updateTree(branch, function (err, latestCommit) {\n that.getTree(latestCommit + '?recursive=true', function (err, tree) {\n // Update Tree\n tree.forEach(function (ref) {\n if (ref.path === path) {\n ref.path = newPath;\n }\n\n if (ref.type === 'tree') {\n delete ref.sha;\n }\n });\n\n that.postTree(tree, function (err, rootTree) {\n that.commit(latestCommit, rootTree, 'Deleted ' + path, function (err, commit) {\n that.updateHead(branch, commit, cb);\n });\n });\n });\n });\n };\n\n // Write file contents to a given branch and path\n // -------\n\n this.write = function (branch, path, content, message, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n that.getSha(branch, encodeURI(path), function (err, sha) {\n var writeOptions = {\n message: message,\n content: typeof options.encode === 'undefined' || options.encode ? b64encode(content) : content,\n branch: branch,\n committer: options && options.committer ? options.committer : undefined,\n author: options && options.author ? options.author : undefined\n };\n\n // If no error, we set the sha to overwrite an existing file\n if (!(err && err.error !== 404)) {\n writeOptions.sha = sha;\n }\n\n _request('PUT', repoPath + '/contents/' + encodeURI(path), writeOptions, cb);\n });\n };\n\n // List commits on a repository. Takes an object of optional parameters:\n // sha: SHA or branch to start listing commits from\n // path: Only commits containing this file path will be returned\n // author: Only commits by this author will be returned. Its value can be the GitHub login or the email address\n // since: ISO 8601 date - only commits after this date will be returned\n // until: ISO 8601 date - only commits before this date will be returned\n // -------\n\n this.getCommits = function (options, cb) {\n options = options || {};\n var url = repoPath + '/commits';\n var params = [];\n\n if (options.sha) {\n params.push('sha=' + encodeURIComponent(options.sha));\n }\n\n if (options.path) {\n params.push('path=' + encodeURIComponent(options.path));\n }\n\n if (options.author) {\n params.push('author=' + encodeURIComponent(options.author));\n }\n\n if (options.since) {\n var since = options.since;\n\n if (since.constructor === Date) {\n since = since.toISOString();\n }\n\n params.push('since=' + encodeURIComponent(since));\n }\n\n if (options.until) {\n var until = options.until;\n\n if (until.constructor === Date) {\n until = until.toISOString();\n }\n\n params.push('until=' + encodeURIComponent(until));\n }\n\n if (options.page) {\n params.push('page=' + options.page);\n }\n\n if (options.perpage) {\n params.push('per_page=' + options.perpage);\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Check if a repository is starred.\n // --------\n\n this.isStarred = function(owner, repository, cb) {\n _request('GET', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Star a repository.\n // --------\n\n this.star = function(owner, repository, cb) {\n _request('PUT', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Unstar a repository.\n // --------\n\n this.unstar = function(owner, repository, cb) {\n _request('DELETE', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Create a new release\n // --------\n\n this.createRelease = function(options, cb) {\n _request('POST', repoPath + '/releases', options, cb);\n };\n\n // Edit a release\n // --------\n\n this.editRelease = function(id, options, cb) {\n _request('PATCH', repoPath + '/releases/' + id, options, cb);\n };\n\n // Get a single release\n // --------\n\n this.getRelease = function(id, cb) {\n _request('GET', repoPath + '/releases/' + id, null, cb);\n };\n\n // Remove a release\n // --------\n\n this.deleteRelease = function(id, cb) {\n _request('DELETE', repoPath + '/releases/' + id, null, cb);\n };\n };\n\n // Gists API\n // =======\n\n Github.Gist = function (options) {\n var id = options.id;\n var gistPath = '/gists/' + id;\n\n // Read the gist\n // --------\n\n this.read = function (cb) {\n _request('GET', gistPath, null, cb);\n };\n\n // Create the gist\n // --------\n // {\n // \"description\": \"the description for this gist\",\n // \"public\": true,\n // \"files\": {\n // \"file1.txt\": {\n // \"content\": \"String file contents\"\n // }\n // }\n // }\n\n this.create = function (options, cb) {\n _request('POST', '/gists', options, cb);\n };\n\n // Delete the gist\n // --------\n\n this.delete = function (cb) {\n _request('DELETE', gistPath, null, cb);\n };\n\n // Fork a gist\n // --------\n\n this.fork = function (cb) {\n _request('POST', gistPath + '/fork', null, cb);\n };\n\n // Update a gist with the new stuff\n // --------\n\n this.update = function (options, cb) {\n _request('PATCH', gistPath, options, cb);\n };\n\n // Star a gist\n // --------\n\n this.star = function (cb) {\n _request('PUT', gistPath + '/star', null, cb);\n };\n\n // Untar a gist\n // --------\n\n this.unstar = function (cb) {\n _request('DELETE', gistPath + '/star', null, cb);\n };\n\n // Check if a gist is starred\n // --------\n\n this.isStarred = function (cb) {\n _request('GET', gistPath + '/star', null, cb);\n };\n };\n\n // Issues API\n // ==========\n\n Github.Issue = function (options) {\n var path = '/repos/' + options.user + '/' + options.repo + '/issues';\n\n this.create = function(options, cb) {\n _request('POST', path, options, cb);\n };\n\n this.list = function (options, cb) {\n var query = [];\n\n for(var key in options) {\n if (options.hasOwnProperty(key)) {\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(options[key]));\n }\n }\n\n _requestAllPages(path + '?' + query.join('&'), cb);\n };\n\n this.comment = function (issue, comment, cb) {\n _request('POST', issue.comments_url, {\n body: comment\n }, cb);\n };\n\n this.edit = function (issue, options, cb) {\n _request('PATCH', path + '/' + issue, options, cb);\n };\n\n this.get = function (issue, cb) {\n _request('GET', path + '/' + issue, null, cb);\n };\n };\n\n // Search API\n // ==========\n\n Github.Search = function (options) {\n var path = '/search/';\n var query = '?q=' + options.query;\n\n this.repositories = function (options, cb) {\n _request('GET', path + 'repositories' + query, options, cb);\n };\n\n this.code = function (options, cb) {\n _request('GET', path + 'code' + query, options, cb);\n };\n\n this.issues = function (options, cb) {\n _request('GET', path + 'issues' + query, options, cb);\n };\n\n this.users = function (options, cb) {\n _request('GET', path + 'users' + query, options, cb);\n };\n };\n\n // Rate Limit API\n // ==========\n\n Github.RateLimit = function() {\n this.getRateLimit = function(cb) {\n _request('GET', '/rate_limit', null, cb);\n };\n };\n\n return Github;\n };\n\n // Top Level API\n // -------\n\n Github.getIssues = function (user, repo) {\n return new Github.Issue({\n user: user,\n repo: repo\n });\n };\n\n Github.getRepo = function (user, repo) {\n if (!repo) {\n return new Github.Repository({\n fullname: user\n });\n } else {\n return new Github.Repository({\n user: user,\n name: repo\n });\n }\n };\n\n Github.getUser = function () {\n return new Github.User();\n };\n\n Github.getGist = function (id) {\n return new Github.Gist({\n id: id\n });\n };\n\n Github.getSearch = function (query) {\n return new Github.Search({\n query: query\n });\n };\n\n Github.getRateLimit = function() {\n return new Github.RateLimit();\n };\n\n return Github;\n}));\n\n},{\"axios\":1,\"base-64\":18,\"es6-promise\":19,\"utf8\":21}]},{},[22])(22)\n});\n\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar transformData = require('./../helpers/transformData');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar btoa = window.btoa || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(resolve, reject, config) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n if (window.XDomainRequest && !('withCredentials' in request) && !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onload = function handleLoad() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response;\n var response = {\n data: transformData(\n responseData,\n responseHeaders,\n config.transformResponse\n ),\n // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n // Resolve or reject the Promise based on the status\n ((response.status >= 200 && response.status < 300) ||\n (!('status' in request) && response.responseText) ?\n resolve :\n reject)(response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new Error('Network Error'));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = config.withCredentials || isURLSameOrigin(config.url) ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n if (request.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n if (utils.isArrayBuffer(requestData)) {\n requestData = new DataView(requestData);\n }\n\n // Send the request\n request.send(requestData);\n};\n","'use strict';\n\nvar defaults = require('./defaults');\nvar utils = require('./utils');\nvar dispatchRequest = require('./core/dispatchRequest');\nvar InterceptorManager = require('./core/InterceptorManager');\nvar isAbsoluteURL = require('./helpers/isAbsoluteURL');\nvar combineURLs = require('./helpers/combineURLs');\nvar bind = require('./helpers/bind');\nvar transformData = require('./helpers/transformData');\n\nfunction Axios(defaultConfig) {\n this.defaults = utils.merge({}, defaultConfig);\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Don't allow overriding defaults.withCredentials\n config.withCredentials = config.withCredentials || this.defaults.withCredentials;\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nvar defaultInstance = new Axios(defaults);\nvar axios = module.exports = bind(Axios.prototype.request, defaultInstance);\n\naxios.create = function create(defaultConfig) {\n return new Axios(defaultConfig);\n};\n\n// Expose defaults\naxios.defaults = defaultInstance.defaults;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose interceptors\naxios.interceptors = defaultInstance.interceptors;\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n axios[method] = bind(Axios.prototype[method], defaultInstance);\n});\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\n/**\n * Dispatch a request to the server using whichever adapter\n * is supported by the current environment.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n return new Promise(function executor(resolve, reject) {\n try {\n var adapter;\n\n if (typeof config.adapter === 'function') {\n // For custom adapter support\n adapter = config.adapter;\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n\n if (typeof adapter === 'function') {\n adapter(resolve, reject, config);\n }\n } catch (e) {\n reject(e);\n }\n });\n};\n\n","'use strict';\n\nvar utils = require('./utils');\n\nvar PROTECTION_PREFIX = /^\\)\\]\\}',?\\n/;\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nmodule.exports = {\n transformRequest: [function transformResponseJSON(data, headers) {\n if (utils.isFormData(data)) {\n return data;\n }\n if (utils.isArrayBuffer(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isObject(data) && !utils.isFile(data) && !utils.isBlob(data)) {\n // Set application/json if no Content-Type has been specified\n if (!utils.isUndefined(headers)) {\n utils.forEach(headers, function processContentTypeHeader(val, key) {\n if (key.toLowerCase() === 'content-type') {\n headers['Content-Type'] = val;\n }\n });\n\n if (utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = 'application/json;charset=utf-8';\n }\n }\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponseJSON(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n data = data.replace(PROTECTION_PREFIX, '');\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n },\n patch: utils.merge(DEFAULT_CONTENT_TYPE),\n post: utils.merge(DEFAULT_CONTENT_TYPE),\n put: utils.merge(DEFAULT_CONTENT_TYPE)\n },\n\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN'\n};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\nInvalidCharacterError.prototype = new Error;\nInvalidCharacterError.prototype.code = 5;\nInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new InvalidCharacterError('INVALID_CHARACTER_ERR: DOM Exception 5');\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n }\n\n if (!utils.isArray(val)) {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '');\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * typeof document.createElement -> undefined\n */\nfunction isStandardBrowserEnv() {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object' && !isArray(obj)) {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n trim: trim\n};\n","/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE\n * @version 3.1.2\n */\n\n(function() {\n \"use strict\";\n function lib$es6$promise$utils$$objectOrFunction(x) {\n return typeof x === 'function' || (typeof x === 'object' && x !== null);\n }\n\n function lib$es6$promise$utils$$isFunction(x) {\n return typeof x === 'function';\n }\n\n function lib$es6$promise$utils$$isMaybeThenable(x) {\n return typeof x === 'object' && x !== null;\n }\n\n var lib$es6$promise$utils$$_isArray;\n if (!Array.isArray) {\n lib$es6$promise$utils$$_isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n } else {\n lib$es6$promise$utils$$_isArray = Array.isArray;\n }\n\n var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;\n var lib$es6$promise$asap$$len = 0;\n var lib$es6$promise$asap$$vertxNext;\n var lib$es6$promise$asap$$customSchedulerFn;\n\n var lib$es6$promise$asap$$asap = function asap(callback, arg) {\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;\n lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;\n lib$es6$promise$asap$$len += 2;\n if (lib$es6$promise$asap$$len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (lib$es6$promise$asap$$customSchedulerFn) {\n lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);\n } else {\n lib$es6$promise$asap$$scheduleFlush();\n }\n }\n }\n\n function lib$es6$promise$asap$$setScheduler(scheduleFn) {\n lib$es6$promise$asap$$customSchedulerFn = scheduleFn;\n }\n\n function lib$es6$promise$asap$$setAsap(asapFn) {\n lib$es6$promise$asap$$asap = asapFn;\n }\n\n var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;\n var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};\n var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;\n var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n // test for web worker but not in IE10\n var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&\n typeof importScripts !== 'undefined' &&\n typeof MessageChannel !== 'undefined';\n\n // node\n function lib$es6$promise$asap$$useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function() {\n process.nextTick(lib$es6$promise$asap$$flush);\n };\n }\n\n // vertx\n function lib$es6$promise$asap$$useVertxTimer() {\n return function() {\n lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);\n };\n }\n\n function lib$es6$promise$asap$$useMutationObserver() {\n var iterations = 0;\n var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function() {\n node.data = (iterations = ++iterations % 2);\n };\n }\n\n // web worker\n function lib$es6$promise$asap$$useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = lib$es6$promise$asap$$flush;\n return function () {\n channel.port2.postMessage(0);\n };\n }\n\n function lib$es6$promise$asap$$useSetTimeout() {\n return function() {\n setTimeout(lib$es6$promise$asap$$flush, 1);\n };\n }\n\n var lib$es6$promise$asap$$queue = new Array(1000);\n function lib$es6$promise$asap$$flush() {\n for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {\n var callback = lib$es6$promise$asap$$queue[i];\n var arg = lib$es6$promise$asap$$queue[i+1];\n\n callback(arg);\n\n lib$es6$promise$asap$$queue[i] = undefined;\n lib$es6$promise$asap$$queue[i+1] = undefined;\n }\n\n lib$es6$promise$asap$$len = 0;\n }\n\n function lib$es6$promise$asap$$attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return lib$es6$promise$asap$$useVertxTimer();\n } catch(e) {\n return lib$es6$promise$asap$$useSetTimeout();\n }\n }\n\n var lib$es6$promise$asap$$scheduleFlush;\n // Decide what async method to use to triggering processing of queued callbacks:\n if (lib$es6$promise$asap$$isNode) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();\n } else if (lib$es6$promise$asap$$BrowserMutationObserver) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();\n } else if (lib$es6$promise$asap$$isWorker) {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();\n } else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertx();\n } else {\n lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();\n }\n function lib$es6$promise$then$$then(onFulfillment, onRejection) {\n var parent = this;\n var state = parent._state;\n\n if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {\n return this;\n }\n\n var child = new this.constructor(lib$es6$promise$$internal$$noop);\n var result = parent._result;\n\n if (state) {\n var callback = arguments[state - 1];\n lib$es6$promise$asap$$asap(function(){\n lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);\n });\n } else {\n lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n }\n var lib$es6$promise$then$$default = lib$es6$promise$then$$then;\n function lib$es6$promise$promise$resolve$$resolve(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$resolve(promise, object);\n return promise;\n }\n var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;\n\n function lib$es6$promise$$internal$$noop() {}\n\n var lib$es6$promise$$internal$$PENDING = void 0;\n var lib$es6$promise$$internal$$FULFILLED = 1;\n var lib$es6$promise$$internal$$REJECTED = 2;\n\n var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n }\n\n function lib$es6$promise$$internal$$cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n }\n\n function lib$es6$promise$$internal$$getThen(promise) {\n try {\n return promise.then;\n } catch(error) {\n lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;\n return lib$es6$promise$$internal$$GET_THEN_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {\n try {\n then.call(value, fulfillmentHandler, rejectionHandler);\n } catch(e) {\n return e;\n }\n }\n\n function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {\n lib$es6$promise$asap$$asap(function(promise) {\n var sealed = false;\n var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {\n if (sealed) { return; }\n sealed = true;\n if (thenable !== value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }, function(reason) {\n if (sealed) { return; }\n sealed = true;\n\n lib$es6$promise$$internal$$reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n lib$es6$promise$$internal$$reject(promise, error);\n }\n }, promise);\n }\n\n function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {\n if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, thenable._result);\n } else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, thenable._result);\n } else {\n lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n }\n }\n\n function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable, then) {\n if (maybeThenable.constructor === promise.constructor &&\n then === lib$es6$promise$then$$default &&\n constructor.resolve === lib$es6$promise$promise$resolve$$default) {\n lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);\n } else {\n if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);\n } else if (then === undefined) {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n } else if (lib$es6$promise$utils$$isFunction(then)) {\n lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);\n } else {\n lib$es6$promise$$internal$$fulfill(promise, maybeThenable);\n }\n }\n }\n\n function lib$es6$promise$$internal$$resolve(promise, value) {\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFulfillment());\n } else if (lib$es6$promise$utils$$objectOrFunction(value)) {\n lib$es6$promise$$internal$$handleMaybeThenable(promise, value, lib$es6$promise$$internal$$getThen(value));\n } else {\n lib$es6$promise$$internal$$fulfill(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n lib$es6$promise$$internal$$publish(promise);\n }\n\n function lib$es6$promise$$internal$$fulfill(promise, value) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n\n promise._result = value;\n promise._state = lib$es6$promise$$internal$$FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);\n }\n }\n\n function lib$es6$promise$$internal$$reject(promise, reason) {\n if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }\n promise._state = lib$es6$promise$$internal$$REJECTED;\n promise._result = reason;\n\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);\n }\n\n function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {\n var subscribers = parent._subscribers;\n var length = subscribers.length;\n\n parent._onerror = null;\n\n subscribers[length] = child;\n subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;\n subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);\n }\n }\n\n function lib$es6$promise$$internal$$publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) { return; }\n\n var child, callback, detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n }\n\n function lib$es6$promise$$internal$$ErrorObject() {\n this.error = null;\n }\n\n var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();\n\n function lib$es6$promise$$internal$$tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch(e) {\n lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;\n return lib$es6$promise$$internal$$TRY_CATCH_ERROR;\n }\n }\n\n function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {\n var hasCallback = lib$es6$promise$utils$$isFunction(callback),\n value, error, succeeded, failed;\n\n if (hasCallback) {\n value = lib$es6$promise$$internal$$tryCatch(callback, detail);\n\n if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());\n return;\n }\n\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== lib$es6$promise$$internal$$PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n lib$es6$promise$$internal$$resolve(promise, value);\n } else if (failed) {\n lib$es6$promise$$internal$$reject(promise, error);\n } else if (settled === lib$es6$promise$$internal$$FULFILLED) {\n lib$es6$promise$$internal$$fulfill(promise, value);\n } else if (settled === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n }\n }\n\n function lib$es6$promise$$internal$$initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value){\n lib$es6$promise$$internal$$resolve(promise, value);\n }, function rejectPromise(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n });\n } catch(e) {\n lib$es6$promise$$internal$$reject(promise, e);\n }\n }\n\n function lib$es6$promise$promise$all$$all(entries) {\n return new lib$es6$promise$enumerator$$default(this, entries).promise;\n }\n var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;\n function lib$es6$promise$promise$race$$race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (!lib$es6$promise$utils$$isArray(entries)) {\n lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));\n return promise;\n }\n\n var length = entries.length;\n\n function onFulfillment(value) {\n lib$es6$promise$$internal$$resolve(promise, value);\n }\n\n function onRejection(reason) {\n lib$es6$promise$$internal$$reject(promise, reason);\n }\n\n for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);\n }\n\n return promise;\n }\n var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;\n function lib$es6$promise$promise$reject$$reject(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$reject(promise, reason);\n return promise;\n }\n var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;\n\n var lib$es6$promise$promise$$counter = 0;\n\n function lib$es6$promise$promise$$needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n }\n\n function lib$es6$promise$promise$$needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n }\n\n var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;\n /**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n var promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n var xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n */\n function lib$es6$promise$promise$$Promise(resolver) {\n this._id = lib$es6$promise$promise$$counter++;\n this._state = undefined;\n this._result = undefined;\n this._subscribers = [];\n\n if (lib$es6$promise$$internal$$noop !== resolver) {\n typeof resolver !== 'function' && lib$es6$promise$promise$$needsResolver();\n this instanceof lib$es6$promise$promise$$Promise ? lib$es6$promise$$internal$$initializePromise(this, resolver) : lib$es6$promise$promise$$needsNew();\n }\n }\n\n lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;\n lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;\n lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;\n lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;\n lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;\n lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;\n lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;\n\n lib$es6$promise$promise$$Promise.prototype = {\n constructor: lib$es6$promise$promise$$Promise,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n\n Chaining\n --------\n\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n\n Assimilation\n ------------\n\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n\n If the assimliated promise rejects, then the downstream promise will also reject.\n\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n\n Simple Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var result;\n\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n\n Advanced Example\n --------------\n\n Synchronous Example\n\n ```javascript\n var author, books;\n\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n\n Errback Example\n\n ```js\n\n function foundBooks(books) {\n\n }\n\n function failure(reason) {\n\n }\n\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n\n Promise Example;\n\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: lib$es6$promise$then$$default,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function(onRejection) {\n return this.then(null, onRejection);\n }\n };\n var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;\n function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(lib$es6$promise$$internal$$noop);\n\n if (Array.isArray(input)) {\n this._input = input;\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate();\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(this.promise, this._result);\n }\n }\n } else {\n lib$es6$promise$$internal$$reject(this.promise, this._validationError());\n }\n }\n\n lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {\n return new Error('Array Methods must be provided an Array');\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {\n var length = this.length;\n var input = this._input;\n\n for (var i = 0; this._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {\n var c = this._instanceConstructor;\n var resolve = c.resolve;\n\n if (resolve === lib$es6$promise$promise$resolve$$default) {\n var then = lib$es6$promise$$internal$$getThen(entry);\n\n if (then === lib$es6$promise$then$$default &&\n entry._state !== lib$es6$promise$$internal$$PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === lib$es6$promise$promise$$default) {\n var promise = new c(lib$es6$promise$$internal$$noop);\n lib$es6$promise$$internal$$handleMaybeThenable(promise, entry, then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function(resolve) { resolve(entry); }), i);\n }\n } else {\n this._willSettleAt(resolve(entry), i);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {\n var promise = this.promise;\n\n if (promise._state === lib$es6$promise$$internal$$PENDING) {\n this._remaining--;\n\n if (state === lib$es6$promise$$internal$$REJECTED) {\n lib$es6$promise$$internal$$reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n lib$es6$promise$$internal$$fulfill(promise, this._result);\n }\n };\n\n lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {\n var enumerator = this;\n\n lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {\n enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);\n }, function(reason) {\n enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);\n });\n };\n function lib$es6$promise$polyfill$$polyfill() {\n var local;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {\n return;\n }\n\n local.Promise = lib$es6$promise$promise$$default;\n }\n var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;\n\n var lib$es6$promise$umd$$ES6Promise = {\n 'Promise': lib$es6$promise$promise$$default,\n 'polyfill': lib$es6$promise$polyfill$$default\n };\n\n /* global define:true module:true window: true */\n if (typeof define === 'function' && define['amd']) {\n define(function() { return lib$es6$promise$umd$$ES6Promise; });\n } else if (typeof module !== 'undefined' && module['exports']) {\n module['exports'] = lib$es6$promise$umd$$ES6Promise;\n } else if (typeof this !== 'undefined') {\n this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;\n }\n\n lib$es6$promise$polyfill$$default();\n}).call(this);\n\n","// shim for using process in browser\n\nvar process = module.exports = {};\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = setTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n clearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n setTimeout(drainQueue, 0);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*! https://mths.be/utf8js v2.0.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar stringFromCharCode = String.fromCharCode;\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2decode(string) {\n\t\tvar output = [];\n\t\tvar counter = 0;\n\t\tvar length = string.length;\n\t\tvar value;\n\t\tvar extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t// Taken from https://mths.be/punycode\n\tfunction ucs2encode(array) {\n\t\tvar length = array.length;\n\t\tvar index = -1;\n\t\tvar value;\n\t\tvar output = '';\n\t\twhile (++index < length) {\n\t\t\tvalue = array[index];\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t}\n\t\treturn output;\n\t}\n\n\tfunction checkScalarValue(codePoint) {\n\t\tif (codePoint >= 0xD800 && codePoint <= 0xDFFF) {\n\t\t\tthrow Error(\n\t\t\t\t'Lone surrogate U+' + codePoint.toString(16).toUpperCase() +\n\t\t\t\t' is not a scalar value'\n\t\t\t);\n\t\t}\n\t}\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction createByte(codePoint, shift) {\n\t\treturn stringFromCharCode(((codePoint >> shift) & 0x3F) | 0x80);\n\t}\n\n\tfunction encodeCodePoint(codePoint) {\n\t\tif ((codePoint & 0xFFFFFF80) == 0) { // 1-byte sequence\n\t\t\treturn stringFromCharCode(codePoint);\n\t\t}\n\t\tvar symbol = '';\n\t\tif ((codePoint & 0xFFFFF800) == 0) { // 2-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 6) & 0x1F) | 0xC0);\n\t\t}\n\t\telse if ((codePoint & 0xFFFF0000) == 0) { // 3-byte sequence\n\t\t\tcheckScalarValue(codePoint);\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 12) & 0x0F) | 0xE0);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\telse if ((codePoint & 0xFFE00000) == 0) { // 4-byte sequence\n\t\t\tsymbol = stringFromCharCode(((codePoint >> 18) & 0x07) | 0xF0);\n\t\t\tsymbol += createByte(codePoint, 12);\n\t\t\tsymbol += createByte(codePoint, 6);\n\t\t}\n\t\tsymbol += stringFromCharCode((codePoint & 0x3F) | 0x80);\n\t\treturn symbol;\n\t}\n\n\tfunction utf8encode(string) {\n\t\tvar codePoints = ucs2decode(string);\n\t\tvar length = codePoints.length;\n\t\tvar index = -1;\n\t\tvar codePoint;\n\t\tvar byteString = '';\n\t\twhile (++index < length) {\n\t\t\tcodePoint = codePoints[index];\n\t\t\tbyteString += encodeCodePoint(codePoint);\n\t\t}\n\t\treturn byteString;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tfunction readContinuationByte() {\n\t\tif (byteIndex >= byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tvar continuationByte = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\tif ((continuationByte & 0xC0) == 0x80) {\n\t\t\treturn continuationByte & 0x3F;\n\t\t}\n\n\t\t// If we end up here, it’s not a continuation byte\n\t\tthrow Error('Invalid continuation byte');\n\t}\n\n\tfunction decodeSymbol() {\n\t\tvar byte1;\n\t\tvar byte2;\n\t\tvar byte3;\n\t\tvar byte4;\n\t\tvar codePoint;\n\n\t\tif (byteIndex > byteCount) {\n\t\t\tthrow Error('Invalid byte index');\n\t\t}\n\n\t\tif (byteIndex == byteCount) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Read first byte\n\t\tbyte1 = byteArray[byteIndex] & 0xFF;\n\t\tbyteIndex++;\n\n\t\t// 1-byte sequence (no continuation bytes)\n\t\tif ((byte1 & 0x80) == 0) {\n\t\t\treturn byte1;\n\t\t}\n\n\t\t// 2-byte sequence\n\t\tif ((byte1 & 0xE0) == 0xC0) {\n\t\t\tvar byte2 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x1F) << 6) | byte2;\n\t\t\tif (codePoint >= 0x80) {\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 3-byte sequence (may include unpaired surrogates)\n\t\tif ((byte1 & 0xF0) == 0xE0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 12) | (byte2 << 6) | byte3;\n\t\t\tif (codePoint >= 0x0800) {\n\t\t\t\tcheckScalarValue(codePoint);\n\t\t\t\treturn codePoint;\n\t\t\t} else {\n\t\t\t\tthrow Error('Invalid continuation byte');\n\t\t\t}\n\t\t}\n\n\t\t// 4-byte sequence\n\t\tif ((byte1 & 0xF8) == 0xF0) {\n\t\t\tbyte2 = readContinuationByte();\n\t\t\tbyte3 = readContinuationByte();\n\t\t\tbyte4 = readContinuationByte();\n\t\t\tcodePoint = ((byte1 & 0x0F) << 0x12) | (byte2 << 0x0C) |\n\t\t\t\t(byte3 << 0x06) | byte4;\n\t\t\tif (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\n\t\t\t\treturn codePoint;\n\t\t\t}\n\t\t}\n\n\t\tthrow Error('Invalid UTF-8 detected');\n\t}\n\n\tvar byteArray;\n\tvar byteCount;\n\tvar byteIndex;\n\tfunction utf8decode(byteString) {\n\t\tbyteArray = ucs2decode(byteString);\n\t\tbyteCount = byteArray.length;\n\t\tbyteIndex = 0;\n\t\tvar codePoints = [];\n\t\tvar tmp;\n\t\twhile ((tmp = decodeSymbol()) !== false) {\n\t\t\tcodePoints.push(tmp);\n\t\t}\n\t\treturn ucs2encode(codePoints);\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar utf8 = {\n\t\t'version': '2.0.0',\n\t\t'encode': utf8encode,\n\t\t'decode': utf8decode\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn utf8;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = utf8;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tvar object = {};\n\t\t\tvar hasOwnProperty = object.hasOwnProperty;\n\t\t\tfor (var key in utf8) {\n\t\t\t\thasOwnProperty.call(utf8, key) && (freeExports[key] = utf8[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.utf8 = utf8;\n\t}\n\n}(this));\n","/*!\n * @overview Github.js\n *\n * @copyright (c) 2013 Michael Aufreiter, Development Seed\n * Github.js is freely distributable.\n *\n * @license Licensed under BSD-3-Clause-Clear\n *\n * For all details and documentation:\n * http://substance.io/michael/github\n */\n'use strict';\n\n(function (root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define(\n [\n 'es6-promise',\n 'base-64',\n 'utf8',\n 'axios'\n ],\n function (Promise, Base64, Utf8, axios) {\n return (root.Github = factory(Promise, Base64, Utf8, axios));\n }\n );\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('es6-promise'), require('base-64'), require('utf8'), require('axios'));\n } else {\n root.Github = factory(root.Promise, root.base64, root.utf8, root.axios);\n }\n}(this, function(Promise, Base64, Utf8, axios) { // jshint ignore:line\n function b64encode(string) {\n return Base64.encode(Utf8.encode(string));\n }\n\n if (Promise.polyfill) {\n Promise.polyfill();\n }\n\n // Initial Setup\n // -------------\n\n var Github = function (options) {\n options = options || {};\n\n var API_URL = options.apiUrl || 'https://api.github.com';\n\n // HTTP Request Abstraction\n // =======\n //\n // I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.\n\n var _request = Github._request = function _request(method, path, data, cb, raw) {\n function getURL() {\n var url = path.indexOf('//') >= 0 ? path : API_URL + path;\n\n url += ((/\\?/).test(url) ? '&' : '?');\n\n if (data && typeof data === 'object' && ['GET', 'HEAD', 'DELETE'].indexOf(method) > -1) {\n for(var param in data) {\n if (data.hasOwnProperty(param)) {\n url += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(data[param]);\n }\n }\n }\n\n return url.replace(/(×tamp=\\d+)/, '') +\n (typeof window !== 'undefined' ? '×tamp=' + new Date().getTime() : '');\n }\n\n var config = {\n headers: {\n Accept: raw ? 'application/vnd.github.v3.raw+json' : 'application/vnd.github.v3+json',\n 'Content-Type': 'application/json;charset=UTF-8'\n },\n method: method,\n data: data ? data : {},\n url: getURL()\n };\n\n if ((options.token) || (options.username && options.password)) {\n config.headers.Authorization = options.token ?\n 'token ' + options.token :\n 'Basic ' + b64encode(options.username + ':' + options.password);\n }\n\n return axios(config)\n .then(function (response) {\n cb(\n null,\n response.data || true,\n response.request\n );\n }, function (response) {\n if (response.status === 304) {\n cb(\n null,\n response.data || true,\n response.request\n );\n } else {\n cb({\n path: path,\n request: response.request,\n error: response.status\n });\n }\n });\n };\n\n var _requestAllPages = Github._requestAllPages = function _requestAllPages(path, cb) {\n var results = [];\n\n (function iterate() {\n _request('GET', path, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n if (!(res instanceof Array)) {\n res = [res];\n }\n\n results.push.apply(results, res);\n\n var next = (xhr.getResponseHeader('link') || '')\n .split(',')\n .filter(function(link) {\n return /rel=\"next\"/.test(link);\n })\n .map(function(link) {\n return (/<(.*)>/.exec(link) || [])[1];\n })\n .pop();\n\n if (!next) {\n cb(err, results, xhr);\n } else {\n path = next;\n iterate();\n }\n });\n })();\n };\n\n // User API\n // =======\n\n Github.User = function () {\n this.repos = function (options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n options = options || {};\n\n var url = '/user/repos';\n var params = [];\n\n params.push('type=' + encodeURIComponent(options.type || 'all'));\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n url += '?' + params.join('&');\n\n _requestAllPages(url, cb);\n };\n\n // List user organizations\n // -------\n\n this.orgs = function (cb) {\n _request('GET', '/user/orgs', null, cb);\n };\n\n // List authenticated user's gists\n // -------\n\n this.gists = function (cb) {\n _request('GET', '/gists', null, cb);\n };\n\n // List authenticated user's unread notifications\n // -------\n\n this.notifications = function (options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n options = options || {};\n var url = '/notifications';\n var params = [];\n\n if (options.all) {\n params.push('all=true');\n }\n\n if (options.participating) {\n params.push('participating=true');\n }\n\n if (options.since) {\n var since = options.since;\n\n if (since.constructor === Date) {\n since = since.toISOString();\n }\n\n params.push('since=' + encodeURIComponent(since));\n }\n\n if (options.before) {\n var before = options.before;\n\n if (before.constructor === Date) {\n before = before.toISOString();\n }\n\n params.push('before=' + encodeURIComponent(before));\n }\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Show user information\n // -------\n\n this.show = function (username, cb) {\n var command = username ? '/users/' + username : '/user';\n\n _request('GET', command, null, cb);\n };\n\n // List user repositories\n // -------\n\n this.userRepos = function (username, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n var url = '/users/' + username + '/repos';\n var params = [];\n\n params.push('type=' + encodeURIComponent(options.type || 'all'));\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n url += '?' + params.join('&');\n\n _requestAllPages(url, cb);\n };\n\n // List user starred repositories\n // -------\n\n this.userStarred = function (username, cb) {\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\n _requestAllPages('/users/' + username + '/starred?type=all&per_page=100', cb);\n };\n\n // List a user's gists\n // -------\n\n this.userGists = function (username, cb) {\n _request('GET', '/users/' + username + '/gists', null, cb);\n };\n\n // List organization repositories\n // -------\n\n this.orgRepos = function (orgname, cb) {\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\n _requestAllPages('/orgs/' + orgname + '/repos?type=all&&page_num=1000&sort=updated&direction=desc', cb);\n };\n\n // Follow user\n // -------\n\n this.follow = function (username, cb) {\n _request('PUT', '/user/following/' + username, null, cb);\n };\n\n // Unfollow user\n // -------\n\n this.unfollow = function (username, cb) {\n _request('DELETE', '/user/following/' + username, null, cb);\n };\n\n // Create a repo\n // -------\n this.createRepo = function (options, cb) {\n _request('POST', '/user/repos', options, cb);\n };\n };\n\n // Repository API\n // =======\n\n Github.Repository = function (options) {\n var repo = options.name;\n var user = options.user;\n var fullname = options.fullname;\n\n var that = this;\n var repoPath;\n\n if (fullname) {\n repoPath = '/repos/' + fullname;\n } else {\n repoPath = '/repos/' + user + '/' + repo;\n }\n\n var currentTree = {\n branch: null,\n sha: null\n };\n\n // Uses the cache if branch has not been changed\n // -------\n\n function updateTree(branch, cb) {\n if (branch === currentTree.branch && currentTree.sha) {\n return cb(null, currentTree.sha);\n }\n\n that.getRef('heads/' + branch, function (err, sha) {\n currentTree.branch = branch;\n currentTree.sha = sha;\n cb(err, sha);\n });\n }\n\n // Get a particular reference\n // -------\n\n this.getRef = function (ref, cb) {\n _request('GET', repoPath + '/git/refs/' + ref, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.object.sha, xhr);\n });\n };\n\n // Create a new reference\n // --------\n //\n // {\n // \"ref\": \"refs/heads/my-new-branch-name\",\n // \"sha\": \"827efc6d56897b048c772eb4087f854f46256132\"\n // }\n\n this.createRef = function (options, cb) {\n _request('POST', repoPath + '/git/refs', options, cb);\n };\n\n // Delete a reference\n // --------\n //\n // Repo.deleteRef('heads/gh-pages')\n // repo.deleteRef('tags/v1.0')\n\n this.deleteRef = function (ref, cb) {\n _request('DELETE', repoPath + '/git/refs/' + ref, options, cb);\n };\n\n // Delete a repo\n // --------\n\n this.deleteRepo = function (cb) {\n _request('DELETE', repoPath, options, cb);\n };\n\n // List all tags of a repository\n // -------\n\n this.listTags = function (cb) {\n _request('GET', repoPath + '/tags', null, cb);\n };\n\n // List all pull requests of a respository\n // -------\n\n this.listPulls = function (options, cb) {\n options = options || {};\n var url = repoPath + '/pulls';\n var params = [];\n\n if (typeof options === 'string') {\n // Backward compatibility\n params.push('state=' + options);\n } else {\n if (options.state) {\n params.push('state=' + encodeURIComponent(options.state));\n }\n\n if (options.head) {\n params.push('head=' + encodeURIComponent(options.head));\n }\n\n if (options.base) {\n params.push('base=' + encodeURIComponent(options.base));\n }\n\n if (options.sort) {\n params.push('sort=' + encodeURIComponent(options.sort));\n }\n\n if (options.direction) {\n params.push('direction=' + encodeURIComponent(options.direction));\n }\n\n if (options.page) {\n params.push('page=' + options.page);\n }\n\n if (options.per_page) {\n params.push('per_page=' + options.per_page);\n }\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Gets details for a specific pull request\n // -------\n\n this.getPull = function (number, cb) {\n _request('GET', repoPath + '/pulls/' + number, null, cb);\n };\n\n // Retrieve the changes made between base and head\n // -------\n\n this.compare = function (base, head, cb) {\n _request('GET', repoPath + '/compare/' + base + '...' + head, null, cb);\n };\n\n // List all branches of a repository\n // -------\n\n this.listBranches = function (cb) {\n _request('GET', repoPath + '/git/refs/heads', null, function (err, heads, xhr) {\n if (err) {\n return cb(err);\n }\n\n heads = heads.map(function (head) {\n return head.ref.replace(/^refs\\/heads\\//, '');\n });\n\n cb(null, heads, xhr);\n });\n };\n\n // Retrieve the contents of a blob\n // -------\n\n this.getBlob = function (sha, cb) {\n _request('GET', repoPath + '/git/blobs/' + sha, null, cb, 'raw');\n };\n\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\n // -------\n\n this.getCommit = function (branch, sha, cb) {\n _request('GET', repoPath + '/git/commits/' + sha, null, cb);\n };\n\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\n // -------\n\n this.getSha = function (branch, path, cb) {\n if (!path || path === '') {\n return that.getRef('heads/' + branch, cb);\n }\n\n _request('GET', repoPath + '/contents/' + path + (branch ? '?ref=' + branch : ''),\n null, function (err, pathContent, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, pathContent.sha, xhr);\n });\n };\n\n // Get the statuses for a particular SHA\n // -------\n\n this.getStatuses = function (sha, cb) {\n _request('GET', repoPath + '/statuses/' + sha, null, cb);\n };\n\n // Retrieve the tree a commit points to\n // -------\n\n this.getTree = function (tree, cb) {\n _request('GET', repoPath + '/git/trees/' + tree, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.tree, xhr);\n });\n };\n\n // Post a new blob object, getting a blob SHA back\n // -------\n\n this.postBlob = function (content, cb) {\n if (typeof content === 'string') {\n content = {\n content: content,\n encoding: 'utf-8'\n };\n } else {\n content = {\n content: b64encode(content),\n encoding: 'base64'\n };\n }\n\n _request('POST', repoPath + '/git/blobs', content, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Update an existing tree adding a new blob object getting a tree SHA back\n // -------\n\n this.updateTree = function (baseTree, path, blob, cb) {\n var data = {\n base_tree: baseTree,\n tree: [\n {\n path: path,\n mode: '100644',\n type: 'blob',\n sha: blob\n }\n ]\n };\n\n _request('POST', repoPath + '/git/trees', data, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Post a new tree object having a file path pointer replaced\n // with a new blob SHA getting a tree SHA back\n // -------\n\n this.postTree = function (tree, cb) {\n _request('POST', repoPath + '/git/trees', {\n tree: tree\n }, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Create a new commit object with the current commit SHA as the parent\n // and the new tree SHA, getting a commit SHA back\n // -------\n\n this.commit = function (parent, tree, message, cb) {\n var user = new Github.User();\n\n user.show(null, function (err, userData) {\n if (err) {\n return cb(err);\n }\n\n var data = {\n message: message,\n author: {\n name: options.user,\n email: userData.email\n },\n parents: [\n parent\n ],\n tree: tree\n };\n\n _request('POST', repoPath + '/git/commits', data, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n currentTree.sha = res.sha; // Update latest commit\n\n cb(null, res.sha, xhr);\n });\n });\n };\n\n // Update the reference of your head to point to the new commit SHA\n // -------\n\n this.updateHead = function (head, commit, cb) {\n _request('PATCH', repoPath + '/git/refs/heads/' + head, {\n sha: commit\n }, cb);\n };\n\n // Show repository information\n // -------\n\n this.show = function (cb) {\n _request('GET', repoPath, null, cb);\n };\n\n // Show repository contributors\n // -------\n\n this.contributors = function (cb, retry) {\n retry = retry || 1000;\n var that = this;\n\n _request('GET', repoPath + '/stats/contributors', null, function (err, data, xhr) {\n if (err) {\n return cb(err);\n }\n\n if (xhr.status === 202) {\n setTimeout(\n function () {\n that.contributors(cb, retry);\n },\n retry\n );\n } else {\n cb(err, data, xhr);\n }\n });\n };\n\n // Show repository collaborators\n // -------\n\n this.collaborators = function (cb) {\n _request('GET', repoPath + '/collaborators', null, cb);\n };\n\n // Check whether user is a collaborator on the repository\n // -------\n\n this.isCollaborator = function (username, cb) {\n _request('GET', repoPath + '/collaborators/' + username, null, cb);\n };\n\n // Get contents\n // --------\n\n this.contents = function (ref, path, cb) {\n path = encodeURI(path);\n _request('GET', repoPath + '/contents' + (path ? '/' + path : ''), {\n ref: ref\n }, cb);\n };\n\n // Fork repository\n // -------\n\n this.fork = function (cb) {\n _request('POST', repoPath + '/forks', null, cb);\n };\n\n // List forks\n // --------\n\n this.listForks = function (cb) {\n _request('GET', repoPath + '/forks', null, cb);\n };\n\n // Branch repository\n // --------\n\n this.branch = function (oldBranch, newBranch, cb) {\n if (arguments.length === 2 && typeof arguments[1] === 'function') {\n cb = newBranch;\n newBranch = oldBranch;\n oldBranch = 'master';\n }\n\n this.getRef('heads/' + oldBranch, function (err, ref) {\n if (err && cb) {\n return cb(err);\n }\n\n that.createRef({\n ref: 'refs/heads/' + newBranch,\n sha: ref\n }, cb);\n });\n };\n\n // Create pull request\n // --------\n\n this.createPullRequest = function (options, cb) {\n _request('POST', repoPath + '/pulls', options, cb);\n };\n\n // List hooks\n // --------\n\n this.listHooks = function (cb) {\n _request('GET', repoPath + '/hooks', null, cb);\n };\n\n // Get a hook\n // --------\n\n this.getHook = function (id, cb) {\n _request('GET', repoPath + '/hooks/' + id, null, cb);\n };\n\n // Create a hook\n // --------\n\n this.createHook = function (options, cb) {\n _request('POST', repoPath + '/hooks', options, cb);\n };\n\n // Edit a hook\n // --------\n\n this.editHook = function (id, options, cb) {\n _request('PATCH', repoPath + '/hooks/' + id, options, cb);\n };\n\n // Delete a hook\n // --------\n\n this.deleteHook = function (id, cb) {\n _request('DELETE', repoPath + '/hooks/' + id, null, cb);\n };\n\n // Read file at given path\n // -------\n\n this.read = function (branch, path, cb) {\n _request('GET', repoPath + '/contents/' + encodeURI(path) + (branch ? '?ref=' + branch : ''),\n null, cb, true);\n };\n\n // Remove a file\n // -------\n\n this.remove = function (branch, path, cb) {\n that.getSha(branch, path, function (err, sha) {\n if (err) {\n return cb(err);\n }\n\n _request('DELETE', repoPath + '/contents/' + path, {\n message: path + ' is removed',\n sha: sha,\n branch: branch\n }, cb);\n });\n };\n\n // Alias for repo.remove for backwards comapt.\n // -------\n this.delete = this.remove;\n\n // Move a file to a new location\n // -------\n\n this.move = function (branch, path, newPath, cb) {\n updateTree(branch, function (err, latestCommit) {\n that.getTree(latestCommit + '?recursive=true', function (err, tree) {\n // Update Tree\n tree.forEach(function (ref) {\n if (ref.path === path) {\n ref.path = newPath;\n }\n\n if (ref.type === 'tree') {\n delete ref.sha;\n }\n });\n\n that.postTree(tree, function (err, rootTree) {\n that.commit(latestCommit, rootTree, 'Deleted ' + path, function (err, commit) {\n that.updateHead(branch, commit, cb);\n });\n });\n });\n });\n };\n\n // Write file contents to a given branch and path\n // -------\n\n this.write = function (branch, path, content, message, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n that.getSha(branch, encodeURI(path), function (err, sha) {\n var writeOptions = {\n message: message,\n content: typeof options.encode === 'undefined' || options.encode ? b64encode(content) : content,\n branch: branch,\n committer: options && options.committer ? options.committer : undefined,\n author: options && options.author ? options.author : undefined\n };\n\n // If no error, we set the sha to overwrite an existing file\n if (!(err && err.error !== 404)) {\n writeOptions.sha = sha;\n }\n\n _request('PUT', repoPath + '/contents/' + encodeURI(path), writeOptions, cb);\n });\n };\n\n // List commits on a repository. Takes an object of optional parameters:\n // sha: SHA or branch to start listing commits from\n // path: Only commits containing this file path will be returned\n // author: Only commits by this author will be returned. Its value can be the GitHub login or the email address\n // since: ISO 8601 date - only commits after this date will be returned\n // until: ISO 8601 date - only commits before this date will be returned\n // -------\n\n this.getCommits = function (options, cb) {\n options = options || {};\n var url = repoPath + '/commits';\n var params = [];\n\n if (options.sha) {\n params.push('sha=' + encodeURIComponent(options.sha));\n }\n\n if (options.path) {\n params.push('path=' + encodeURIComponent(options.path));\n }\n\n if (options.author) {\n params.push('author=' + encodeURIComponent(options.author));\n }\n\n if (options.since) {\n var since = options.since;\n\n if (since.constructor === Date) {\n since = since.toISOString();\n }\n\n params.push('since=' + encodeURIComponent(since));\n }\n\n if (options.until) {\n var until = options.until;\n\n if (until.constructor === Date) {\n until = until.toISOString();\n }\n\n params.push('until=' + encodeURIComponent(until));\n }\n\n if (options.page) {\n params.push('page=' + options.page);\n }\n\n if (options.perpage) {\n params.push('per_page=' + options.perpage);\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Check if a repository is starred.\n // --------\n\n this.isStarred = function(owner, repository, cb) {\n _request('GET', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Star a repository.\n // --------\n\n this.star = function(owner, repository, cb) {\n _request('PUT', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Unstar a repository.\n // --------\n\n this.unstar = function(owner, repository, cb) {\n _request('DELETE', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Create a new release\n // --------\n\n this.createRelease = function(options, cb) {\n _request('POST', repoPath + '/releases', options, cb);\n };\n\n // Edit a release\n // --------\n\n this.editRelease = function(id, options, cb) {\n _request('PATCH', repoPath + '/releases/' + id, options, cb);\n };\n\n // Get a single release\n // --------\n\n this.getRelease = function(id, cb) {\n _request('GET', repoPath + '/releases/' + id, null, cb);\n };\n\n // Remove a release\n // --------\n\n this.deleteRelease = function(id, cb) {\n _request('DELETE', repoPath + '/releases/' + id, null, cb);\n };\n };\n\n // Gists API\n // =======\n\n Github.Gist = function (options) {\n var id = options.id;\n var gistPath = '/gists/' + id;\n\n // Read the gist\n // --------\n\n this.read = function (cb) {\n _request('GET', gistPath, null, cb);\n };\n\n // Create the gist\n // --------\n // {\n // \"description\": \"the description for this gist\",\n // \"public\": true,\n // \"files\": {\n // \"file1.txt\": {\n // \"content\": \"String file contents\"\n // }\n // }\n // }\n\n this.create = function (options, cb) {\n _request('POST', '/gists', options, cb);\n };\n\n // Delete the gist\n // --------\n\n this.delete = function (cb) {\n _request('DELETE', gistPath, null, cb);\n };\n\n // Fork a gist\n // --------\n\n this.fork = function (cb) {\n _request('POST', gistPath + '/fork', null, cb);\n };\n\n // Update a gist with the new stuff\n // --------\n\n this.update = function (options, cb) {\n _request('PATCH', gistPath, options, cb);\n };\n\n // Star a gist\n // --------\n\n this.star = function (cb) {\n _request('PUT', gistPath + '/star', null, cb);\n };\n\n // Untar a gist\n // --------\n\n this.unstar = function (cb) {\n _request('DELETE', gistPath + '/star', null, cb);\n };\n\n // Check if a gist is starred\n // --------\n\n this.isStarred = function (cb) {\n _request('GET', gistPath + '/star', null, cb);\n };\n };\n\n // Issues API\n // ==========\n\n Github.Issue = function (options) {\n var path = '/repos/' + options.user + '/' + options.repo + '/issues';\n\n this.create = function(options, cb) {\n _request('POST', path, options, cb);\n };\n\n this.list = function (options, cb) {\n var query = [];\n\n for(var key in options) {\n if (options.hasOwnProperty(key)) {\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(options[key]));\n }\n }\n\n _requestAllPages(path + '?' + query.join('&'), cb);\n };\n\n this.comment = function (issue, comment, cb) {\n _request('POST', issue.comments_url, {\n body: comment\n }, cb);\n };\n\n this.edit = function (issue, options, cb) {\n _request('PATCH', path + '/' + issue, options, cb);\n };\n\n this.get = function (issue, cb) {\n _request('GET', path + '/' + issue, null, cb);\n };\n };\n\n // Search API\n // ==========\n\n Github.Search = function (options) {\n var path = '/search/';\n var query = '?q=' + options.query;\n\n this.repositories = function (options, cb) {\n _request('GET', path + 'repositories' + query, options, cb);\n };\n\n this.code = function (options, cb) {\n _request('GET', path + 'code' + query, options, cb);\n };\n\n this.issues = function (options, cb) {\n _request('GET', path + 'issues' + query, options, cb);\n };\n\n this.users = function (options, cb) {\n _request('GET', path + 'users' + query, options, cb);\n };\n };\n\n // Rate Limit API\n // ==========\n\n Github.RateLimit = function() {\n this.getRateLimit = function(cb) {\n _request('GET', '/rate_limit', null, cb);\n };\n };\n\n return Github;\n };\n\n // Top Level API\n // -------\n\n Github.getIssues = function (user, repo) {\n return new Github.Issue({\n user: user,\n repo: repo\n });\n };\n\n Github.getRepo = function (user, repo) {\n if (!repo) {\n return new Github.Repository({\n fullname: user\n });\n } else {\n return new Github.Repository({\n user: user,\n name: repo\n });\n }\n };\n\n Github.getUser = function () {\n return new Github.User();\n };\n\n Github.getGist = function (id) {\n return new Github.Gist({\n id: id\n });\n };\n\n Github.getSearch = function (query) {\n return new Github.Search({\n query: query\n });\n };\n\n Github.getRateLimit = function() {\n return new Github.RateLimit();\n };\n\n return Github;\n}));\n"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/dist/github.min.js b/dist/github.min.js index e178e5da..2a59b9ce 100644 --- a/dist/github.min.js +++ b/dist/github.min.js @@ -1,2 +1,2 @@ -"use strict";!function(e,t){"function"==typeof define&&define.amd?define(["es6-promise","base-64","utf8","axios"],function(n,o,s,i){return e.Github=t(n,o,s,i)}):"object"==typeof module&&module.exports?module.exports=t(require("es6-promise"),require("base-64"),require("utf8"),require("axios")):e.Github=t(e.Promise,e.base64,e.utf8,e.axios)}(this,function(e,t,n,o){function s(e){return t.encode(n.encode(e))}e.polyfill&&e.polyfill();var i=function(e){e=e||{};var t=e.apiUrl||"https://api.github.com",n=i._request=function(n,i,u,r,a){function c(){var e=i.indexOf("//")>=0?i:t+i;if(e+=/\?/.test(e)?"&":"?",u&&"object"==typeof u&&["GET","HEAD","DELETE"].indexOf(n)>-1)for(var o in u)u.hasOwnProperty(o)&&(e+="&"+encodeURIComponent(o)+"="+encodeURIComponent(u[o]));return e.replace(/(×tamp=\d+)/,"")+("undefined"!=typeof window?"×tamp="+(new Date).getTime():"")}var l={headers:{Accept:a?"application/vnd.github.v3.raw+json":"application/vnd.github.v3+json","Content-Type":"application/json;charset=UTF-8"},method:n,data:u?u:{},url:c()};return(e.token||e.username&&e.password)&&(l.headers.Authorization=e.token?"token "+e.token:"Basic "+s(e.username+":"+e.password)),o(l).then(function(e){r(null,e.data||!0,e.request)},function(e){304===e.status?r(null,e.data||!0,e.request):r({path:i,request:e.request,error:e.status})})},u=i._requestAllPages=function(e,t){var o=[];!function s(){n("GET",e,null,function(n,i,u){if(n)return t(n);i instanceof Array||(i=[i]),o.push.apply(o,i);var r=(u.getResponseHeader("link")||"").split(",").filter(function(e){return/rel="next"/.test(e)}).map(function(e){return(/<(.*)>/.exec(e)||[])[1]}).pop();r?(e=r,s()):t(n,o,u)})}()};return i.User=function(){this.repos=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var n="/user/repos",o=[];o.push("type="+encodeURIComponent(e.type||"all")),o.push("sort="+encodeURIComponent(e.sort||"updated")),o.push("per_page="+encodeURIComponent(e.per_page||"100")),e.page&&o.push("page="+encodeURIComponent(e.page)),n+="?"+o.join("&"),u(n,t)},this.orgs=function(e){n("GET","/user/orgs",null,e)},this.gists=function(e){n("GET","/gists",null,e)},this.notifications=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var o="/notifications",s=[];if(e.all&&s.push("all=true"),e.participating&&s.push("participating=true"),e.since){var i=e.since;i.constructor===Date&&(i=i.toISOString()),s.push("since="+encodeURIComponent(i))}if(e.before){var u=e.before;u.constructor===Date&&(u=u.toISOString()),s.push("before="+encodeURIComponent(u))}e.page&&s.push("page="+encodeURIComponent(e.page)),s.length>0&&(o+="?"+s.join("&")),n("GET",o,null,t)},this.show=function(e,t){var o=e?"/users/"+e:"/user";n("GET",o,null,t)},this.userRepos=function(e,t,n){"function"==typeof t&&(n=t,t={});var o="/users/"+e+"/repos",s=[];s.push("type="+encodeURIComponent(t.type||"all")),s.push("sort="+encodeURIComponent(t.sort||"updated")),s.push("per_page="+encodeURIComponent(t.per_page||"100")),t.page&&s.push("page="+encodeURIComponent(t.page)),o+="?"+s.join("&"),u(o,n)},this.userStarred=function(e,t){u("/users/"+e+"/starred?type=all&per_page=100",t)},this.userGists=function(e,t){n("GET","/users/"+e+"/gists",null,t)},this.orgRepos=function(e,t){u("/orgs/"+e+"/repos?type=all&&page_num=1000&sort=updated&direction=desc",t)},this.follow=function(e,t){n("PUT","/user/following/"+e,null,t)},this.unfollow=function(e,t){n("DELETE","/user/following/"+e,null,t)},this.createRepo=function(e,t){n("POST","/user/repos",e,t)}},i.Repository=function(e){function t(e,t){return e===l.branch&&l.sha?t(null,l.sha):void c.getRef("heads/"+e,function(n,o){l.branch=e,l.sha=o,t(n,o)})}var o,u=e.name,r=e.user,a=e.fullname,c=this;o=a?"/repos/"+a:"/repos/"+r+"/"+u;var l={branch:null,sha:null};this.getRef=function(e,t){n("GET",o+"/git/refs/"+e,null,function(e,n,o){return e?t(e):void t(null,n.object.sha,o)})},this.createRef=function(e,t){n("POST",o+"/git/refs",e,t)},this.deleteRef=function(t,s){n("DELETE",o+"/git/refs/"+t,e,s)},this.deleteRepo=function(t){n("DELETE",o,e,t)},this.listTags=function(e){n("GET",o+"/tags",null,e)},this.listPulls=function(e,t){e=e||{};var s=o+"/pulls",i=[];"string"==typeof e?i.push("state="+e):(e.state&&i.push("state="+encodeURIComponent(e.state)),e.head&&i.push("head="+encodeURIComponent(e.head)),e.base&&i.push("base="+encodeURIComponent(e.base)),e.sort&&i.push("sort="+encodeURIComponent(e.sort)),e.direction&&i.push("direction="+encodeURIComponent(e.direction)),e.page&&i.push("page="+e.page),e.per_page&&i.push("per_page="+e.per_page)),i.length>0&&(s+="?"+i.join("&")),n("GET",s,null,t)},this.getPull=function(e,t){n("GET",o+"/pulls/"+e,null,t)},this.compare=function(e,t,s){n("GET",o+"/compare/"+e+"..."+t,null,s)},this.listBranches=function(e){n("GET",o+"/git/refs/heads",null,function(t,n,o){return t?e(t):(n=n.map(function(e){return e.ref.replace(/^refs\/heads\//,"")}),void e(null,n,o))})},this.getBlob=function(e,t){n("GET",o+"/git/blobs/"+e,null,t,"raw")},this.getCommit=function(e,t,s){n("GET",o+"/git/commits/"+t,null,s)},this.getSha=function(e,t,s){return t&&""!==t?void n("GET",o+"/contents/"+t+(e?"?ref="+e:""),null,function(e,t,n){return e?s(e):void s(null,t.sha,n)}):c.getRef("heads/"+e,s)},this.getStatuses=function(e,t){n("GET",o+"/statuses/"+e,null,t)},this.getTree=function(e,t){n("GET",o+"/git/trees/"+e,null,function(e,n,o){return e?t(e):void t(null,n.tree,o)})},this.postBlob=function(e,t){e="string"==typeof e?{content:e,encoding:"utf-8"}:{content:s(e),encoding:"base64"},n("POST",o+"/git/blobs",e,function(e,n,o){return e?t(e):void t(null,n.sha,o)})},this.updateTree=function(e,t,s,i){var u={base_tree:e,tree:[{path:t,mode:"100644",type:"blob",sha:s}]};n("POST",o+"/git/trees",u,function(e,t,n){return e?i(e):void i(null,t.sha,n)})},this.postTree=function(e,t){n("POST",o+"/git/trees",{tree:e},function(e,n,o){return e?t(e):void t(null,n.sha,o)})},this.commit=function(t,s,u,r){var a=new i.User;a.show(null,function(i,a){if(i)return r(i);var c={message:u,author:{name:e.user,email:a.email},parents:[t],tree:s};n("POST",o+"/git/commits",c,function(e,t,n){return e?r(e):(l.sha=t.sha,void r(null,t.sha,n))})})},this.updateHead=function(e,t,s){n("PATCH",o+"/git/refs/heads/"+e,{sha:t},s)},this.show=function(e){n("GET",o,null,e)},this.contributors=function(e,t){t=t||1e3;var s=this;n("GET",o+"/stats/contributors",null,function(n,o,i){return n?e(n):void(202===i.status?setTimeout(function(){s.contributors(e,t)},t):e(n,o,i))})},this.contents=function(e,t,s){t=encodeURI(t),n("GET",o+"/contents"+(t?"/"+t:""),{ref:e},s)},this.fork=function(e){n("POST",o+"/forks",null,e)},this.listForks=function(e){n("GET",o+"/forks",null,e)},this.branch=function(e,t,n){2===arguments.length&&"function"==typeof arguments[1]&&(n=t,t=e,e="master"),this.getRef("heads/"+e,function(e,o){return e&&n?n(e):void c.createRef({ref:"refs/heads/"+t,sha:o},n)})},this.createPullRequest=function(e,t){n("POST",o+"/pulls",e,t)},this.listHooks=function(e){n("GET",o+"/hooks",null,e)},this.getHook=function(e,t){n("GET",o+"/hooks/"+e,null,t)},this.createHook=function(e,t){n("POST",o+"/hooks",e,t)},this.editHook=function(e,t,s){n("PATCH",o+"/hooks/"+e,t,s)},this.deleteHook=function(e,t){n("DELETE",o+"/hooks/"+e,null,t)},this.read=function(e,t,s){n("GET",o+"/contents/"+encodeURI(t)+(e?"?ref="+e:""),null,s,!0)},this.remove=function(e,t,s){c.getSha(e,t,function(i,u){return i?s(i):void n("DELETE",o+"/contents/"+t,{message:t+" is removed",sha:u,branch:e},s)})},this["delete"]=this.remove,this.move=function(e,n,o,s){t(e,function(t,i){c.getTree(i+"?recursive=true",function(t,u){u.forEach(function(e){e.path===n&&(e.path=o),"tree"===e.type&&delete e.sha}),c.postTree(u,function(t,o){c.commit(i,o,"Deleted "+n,function(t,n){c.updateHead(e,n,s)})})})})},this.write=function(e,t,i,u,r,a){"function"==typeof r&&(a=r,r={}),c.getSha(e,encodeURI(t),function(c,l){var f={message:u,content:"undefined"==typeof r.encode||r.encode?s(i):i,branch:e,committer:r&&r.committer?r.committer:void 0,author:r&&r.author?r.author:void 0};c&&404!==c.error||(f.sha=l),n("PUT",o+"/contents/"+encodeURI(t),f,a)})},this.getCommits=function(e,t){e=e||{};var s=o+"/commits",i=[];if(e.sha&&i.push("sha="+encodeURIComponent(e.sha)),e.path&&i.push("path="+encodeURIComponent(e.path)),e.author&&i.push("author="+encodeURIComponent(e.author)),e.since){var u=e.since;u.constructor===Date&&(u=u.toISOString()),i.push("since="+encodeURIComponent(u))}if(e.until){var r=e.until;r.constructor===Date&&(r=r.toISOString()),i.push("until="+encodeURIComponent(r))}e.page&&i.push("page="+e.page),e.perpage&&i.push("per_page="+e.perpage),i.length>0&&(s+="?"+i.join("&")),n("GET",s,null,t)},this.isStarred=function(e,t,o){n("GET","/user/starred/"+e+"/"+t,null,o)},this.star=function(e,t,o){n("PUT","/user/starred/"+e+"/"+t,null,o)},this.unstar=function(e,t,o){n("DELETE","/user/starred/"+e+"/"+t,null,o)},this.createRelease=function(e,t){n("POST",o+"/releases",e,t)},this.editRelease=function(e,t,s){n("PATCH",o+"/releases/"+e,t,s)},this.getRelease=function(e,t){n("GET",o+"/releases/"+e,null,t)},this.deleteRelease=function(e,t){n("DELETE",o+"/releases/"+e,null,t)}},i.Gist=function(e){var t=e.id,o="/gists/"+t;this.read=function(e){n("GET",o,null,e)},this.create=function(e,t){n("POST","/gists",e,t)},this["delete"]=function(e){n("DELETE",o,null,e)},this.fork=function(e){n("POST",o+"/fork",null,e)},this.update=function(e,t){n("PATCH",o,e,t)},this.star=function(e){n("PUT",o+"/star",null,e)},this.unstar=function(e){n("DELETE",o+"/star",null,e)},this.isStarred=function(e){n("GET",o+"/star",null,e)}},i.Issue=function(e){var t="/repos/"+e.user+"/"+e.repo+"/issues";this.create=function(e,o){n("POST",t,e,o)},this.list=function(e,n){var o=[];for(var s in e)e.hasOwnProperty(s)&&o.push(encodeURIComponent(s)+"="+encodeURIComponent(e[s]));u(t+"?"+o.join("&"),n)},this.comment=function(e,t,o){n("POST",e.comments_url,{body:t},o)},this.edit=function(e,o,s){n("PATCH",t+"/"+e,o,s)},this.get=function(e,o){n("GET",t+"/"+e,null,o)}},i.Search=function(e){var t="/search/",o="?q="+e.query;this.repositories=function(e,s){n("GET",t+"repositories"+o,e,s)},this.code=function(e,s){n("GET",t+"code"+o,e,s)},this.issues=function(e,s){n("GET",t+"issues"+o,e,s)},this.users=function(e,s){n("GET",t+"users"+o,e,s)}},i.RateLimit=function(){this.getRateLimit=function(e){n("GET","/rate_limit",null,e)}},i};return i.getIssues=function(e,t){return new i.Issue({user:e,repo:t})},i.getRepo=function(e,t){return t?new i.Repository({user:e,name:t}):new i.Repository({fullname:e})},i.getUser=function(){return new i.User},i.getGist=function(e){return new i.Gist({id:e})},i.getSearch=function(e){return new i.Search({query:e})},i.getRateLimit=function(){return new i.RateLimit},i}); +"use strict";!function(e,t){"function"==typeof define&&define.amd?define(["es6-promise","base-64","utf8","axios"],function(n,o,s,i){return e.Github=t(n,o,s,i)}):"object"==typeof module&&module.exports?module.exports=t(require("es6-promise"),require("base-64"),require("utf8"),require("axios")):e.Github=t(e.Promise,e.base64,e.utf8,e.axios)}(this,function(e,t,n,o){function s(e){return t.encode(n.encode(e))}e.polyfill&&e.polyfill();var i=function(e){e=e||{};var t=e.apiUrl||"https://api.github.com",n=i._request=function(n,i,u,r,a){function c(){var e=i.indexOf("//")>=0?i:t+i;if(e+=/\?/.test(e)?"&":"?",u&&"object"==typeof u&&["GET","HEAD","DELETE"].indexOf(n)>-1)for(var o in u)u.hasOwnProperty(o)&&(e+="&"+encodeURIComponent(o)+"="+encodeURIComponent(u[o]));return e.replace(/(×tamp=\d+)/,"")+("undefined"!=typeof window?"×tamp="+(new Date).getTime():"")}var l={headers:{Accept:a?"application/vnd.github.v3.raw+json":"application/vnd.github.v3+json","Content-Type":"application/json;charset=UTF-8"},method:n,data:u?u:{},url:c()};return(e.token||e.username&&e.password)&&(l.headers.Authorization=e.token?"token "+e.token:"Basic "+s(e.username+":"+e.password)),o(l).then(function(e){r(null,e.data||!0,e.request)},function(e){304===e.status?r(null,e.data||!0,e.request):r({path:i,request:e.request,error:e.status})})},u=i._requestAllPages=function(e,t){var o=[];!function s(){n("GET",e,null,function(n,i,u){if(n)return t(n);i instanceof Array||(i=[i]),o.push.apply(o,i);var r=(u.getResponseHeader("link")||"").split(",").filter(function(e){return/rel="next"/.test(e)}).map(function(e){return(/<(.*)>/.exec(e)||[])[1]}).pop();r?(e=r,s()):t(n,o,u)})}()};return i.User=function(){this.repos=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var n="/user/repos",o=[];o.push("type="+encodeURIComponent(e.type||"all")),o.push("sort="+encodeURIComponent(e.sort||"updated")),o.push("per_page="+encodeURIComponent(e.per_page||"100")),e.page&&o.push("page="+encodeURIComponent(e.page)),n+="?"+o.join("&"),u(n,t)},this.orgs=function(e){n("GET","/user/orgs",null,e)},this.gists=function(e){n("GET","/gists",null,e)},this.notifications=function(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};var o="/notifications",s=[];if(e.all&&s.push("all=true"),e.participating&&s.push("participating=true"),e.since){var i=e.since;i.constructor===Date&&(i=i.toISOString()),s.push("since="+encodeURIComponent(i))}if(e.before){var u=e.before;u.constructor===Date&&(u=u.toISOString()),s.push("before="+encodeURIComponent(u))}e.page&&s.push("page="+encodeURIComponent(e.page)),s.length>0&&(o+="?"+s.join("&")),n("GET",o,null,t)},this.show=function(e,t){var o=e?"/users/"+e:"/user";n("GET",o,null,t)},this.userRepos=function(e,t,n){"function"==typeof t&&(n=t,t={});var o="/users/"+e+"/repos",s=[];s.push("type="+encodeURIComponent(t.type||"all")),s.push("sort="+encodeURIComponent(t.sort||"updated")),s.push("per_page="+encodeURIComponent(t.per_page||"100")),t.page&&s.push("page="+encodeURIComponent(t.page)),o+="?"+s.join("&"),u(o,n)},this.userStarred=function(e,t){u("/users/"+e+"/starred?type=all&per_page=100",t)},this.userGists=function(e,t){n("GET","/users/"+e+"/gists",null,t)},this.orgRepos=function(e,t){u("/orgs/"+e+"/repos?type=all&&page_num=1000&sort=updated&direction=desc",t)},this.follow=function(e,t){n("PUT","/user/following/"+e,null,t)},this.unfollow=function(e,t){n("DELETE","/user/following/"+e,null,t)},this.createRepo=function(e,t){n("POST","/user/repos",e,t)}},i.Repository=function(e){function t(e,t){return e===l.branch&&l.sha?t(null,l.sha):void c.getRef("heads/"+e,function(n,o){l.branch=e,l.sha=o,t(n,o)})}var o,u=e.name,r=e.user,a=e.fullname,c=this;o=a?"/repos/"+a:"/repos/"+r+"/"+u;var l={branch:null,sha:null};this.getRef=function(e,t){n("GET",o+"/git/refs/"+e,null,function(e,n,o){return e?t(e):void t(null,n.object.sha,o)})},this.createRef=function(e,t){n("POST",o+"/git/refs",e,t)},this.deleteRef=function(t,s){n("DELETE",o+"/git/refs/"+t,e,s)},this.deleteRepo=function(t){n("DELETE",o,e,t)},this.listTags=function(e){n("GET",o+"/tags",null,e)},this.listPulls=function(e,t){e=e||{};var s=o+"/pulls",i=[];"string"==typeof e?i.push("state="+e):(e.state&&i.push("state="+encodeURIComponent(e.state)),e.head&&i.push("head="+encodeURIComponent(e.head)),e.base&&i.push("base="+encodeURIComponent(e.base)),e.sort&&i.push("sort="+encodeURIComponent(e.sort)),e.direction&&i.push("direction="+encodeURIComponent(e.direction)),e.page&&i.push("page="+e.page),e.per_page&&i.push("per_page="+e.per_page)),i.length>0&&(s+="?"+i.join("&")),n("GET",s,null,t)},this.getPull=function(e,t){n("GET",o+"/pulls/"+e,null,t)},this.compare=function(e,t,s){n("GET",o+"/compare/"+e+"..."+t,null,s)},this.listBranches=function(e){n("GET",o+"/git/refs/heads",null,function(t,n,o){return t?e(t):(n=n.map(function(e){return e.ref.replace(/^refs\/heads\//,"")}),void e(null,n,o))})},this.getBlob=function(e,t){n("GET",o+"/git/blobs/"+e,null,t,"raw")},this.getCommit=function(e,t,s){n("GET",o+"/git/commits/"+t,null,s)},this.getSha=function(e,t,s){return t&&""!==t?void n("GET",o+"/contents/"+t+(e?"?ref="+e:""),null,function(e,t,n){return e?s(e):void s(null,t.sha,n)}):c.getRef("heads/"+e,s)},this.getStatuses=function(e,t){n("GET",o+"/statuses/"+e,null,t)},this.getTree=function(e,t){n("GET",o+"/git/trees/"+e,null,function(e,n,o){return e?t(e):void t(null,n.tree,o)})},this.postBlob=function(e,t){e="string"==typeof e?{content:e,encoding:"utf-8"}:{content:s(e),encoding:"base64"},n("POST",o+"/git/blobs",e,function(e,n,o){return e?t(e):void t(null,n.sha,o)})},this.updateTree=function(e,t,s,i){var u={base_tree:e,tree:[{path:t,mode:"100644",type:"blob",sha:s}]};n("POST",o+"/git/trees",u,function(e,t,n){return e?i(e):void i(null,t.sha,n)})},this.postTree=function(e,t){n("POST",o+"/git/trees",{tree:e},function(e,n,o){return e?t(e):void t(null,n.sha,o)})},this.commit=function(t,s,u,r){var a=new i.User;a.show(null,function(i,a){if(i)return r(i);var c={message:u,author:{name:e.user,email:a.email},parents:[t],tree:s};n("POST",o+"/git/commits",c,function(e,t,n){return e?r(e):(l.sha=t.sha,void r(null,t.sha,n))})})},this.updateHead=function(e,t,s){n("PATCH",o+"/git/refs/heads/"+e,{sha:t},s)},this.show=function(e){n("GET",o,null,e)},this.contributors=function(e,t){t=t||1e3;var s=this;n("GET",o+"/stats/contributors",null,function(n,o,i){return n?e(n):void(202===i.status?setTimeout(function(){s.contributors(e,t)},t):e(n,o,i))})},this.collaborators=function(e){n("GET",o+"/collaborators",null,e)},this.isCollaborator=function(e,t){n("GET",o+"/collaborators/"+e,null,t)},this.contents=function(e,t,s){t=encodeURI(t),n("GET",o+"/contents"+(t?"/"+t:""),{ref:e},s)},this.fork=function(e){n("POST",o+"/forks",null,e)},this.listForks=function(e){n("GET",o+"/forks",null,e)},this.branch=function(e,t,n){2===arguments.length&&"function"==typeof arguments[1]&&(n=t,t=e,e="master"),this.getRef("heads/"+e,function(e,o){return e&&n?n(e):void c.createRef({ref:"refs/heads/"+t,sha:o},n)})},this.createPullRequest=function(e,t){n("POST",o+"/pulls",e,t)},this.listHooks=function(e){n("GET",o+"/hooks",null,e)},this.getHook=function(e,t){n("GET",o+"/hooks/"+e,null,t)},this.createHook=function(e,t){n("POST",o+"/hooks",e,t)},this.editHook=function(e,t,s){n("PATCH",o+"/hooks/"+e,t,s)},this.deleteHook=function(e,t){n("DELETE",o+"/hooks/"+e,null,t)},this.read=function(e,t,s){n("GET",o+"/contents/"+encodeURI(t)+(e?"?ref="+e:""),null,s,!0)},this.remove=function(e,t,s){c.getSha(e,t,function(i,u){return i?s(i):void n("DELETE",o+"/contents/"+t,{message:t+" is removed",sha:u,branch:e},s)})},this["delete"]=this.remove,this.move=function(e,n,o,s){t(e,function(t,i){c.getTree(i+"?recursive=true",function(t,u){u.forEach(function(e){e.path===n&&(e.path=o),"tree"===e.type&&delete e.sha}),c.postTree(u,function(t,o){c.commit(i,o,"Deleted "+n,function(t,n){c.updateHead(e,n,s)})})})})},this.write=function(e,t,i,u,r,a){"function"==typeof r&&(a=r,r={}),c.getSha(e,encodeURI(t),function(c,l){var f={message:u,content:"undefined"==typeof r.encode||r.encode?s(i):i,branch:e,committer:r&&r.committer?r.committer:void 0,author:r&&r.author?r.author:void 0};c&&404!==c.error||(f.sha=l),n("PUT",o+"/contents/"+encodeURI(t),f,a)})},this.getCommits=function(e,t){e=e||{};var s=o+"/commits",i=[];if(e.sha&&i.push("sha="+encodeURIComponent(e.sha)),e.path&&i.push("path="+encodeURIComponent(e.path)),e.author&&i.push("author="+encodeURIComponent(e.author)),e.since){var u=e.since;u.constructor===Date&&(u=u.toISOString()),i.push("since="+encodeURIComponent(u))}if(e.until){var r=e.until;r.constructor===Date&&(r=r.toISOString()),i.push("until="+encodeURIComponent(r))}e.page&&i.push("page="+e.page),e.perpage&&i.push("per_page="+e.perpage),i.length>0&&(s+="?"+i.join("&")),n("GET",s,null,t)},this.isStarred=function(e,t,o){n("GET","/user/starred/"+e+"/"+t,null,o)},this.star=function(e,t,o){n("PUT","/user/starred/"+e+"/"+t,null,o)},this.unstar=function(e,t,o){n("DELETE","/user/starred/"+e+"/"+t,null,o)},this.createRelease=function(e,t){n("POST",o+"/releases",e,t)},this.editRelease=function(e,t,s){n("PATCH",o+"/releases/"+e,t,s)},this.getRelease=function(e,t){n("GET",o+"/releases/"+e,null,t)},this.deleteRelease=function(e,t){n("DELETE",o+"/releases/"+e,null,t)}},i.Gist=function(e){var t=e.id,o="/gists/"+t;this.read=function(e){n("GET",o,null,e)},this.create=function(e,t){n("POST","/gists",e,t)},this["delete"]=function(e){n("DELETE",o,null,e)},this.fork=function(e){n("POST",o+"/fork",null,e)},this.update=function(e,t){n("PATCH",o,e,t)},this.star=function(e){n("PUT",o+"/star",null,e)},this.unstar=function(e){n("DELETE",o+"/star",null,e)},this.isStarred=function(e){n("GET",o+"/star",null,e)}},i.Issue=function(e){var t="/repos/"+e.user+"/"+e.repo+"/issues";this.create=function(e,o){n("POST",t,e,o)},this.list=function(e,n){var o=[];for(var s in e)e.hasOwnProperty(s)&&o.push(encodeURIComponent(s)+"="+encodeURIComponent(e[s]));u(t+"?"+o.join("&"),n)},this.comment=function(e,t,o){n("POST",e.comments_url,{body:t},o)},this.edit=function(e,o,s){n("PATCH",t+"/"+e,o,s)},this.get=function(e,o){n("GET",t+"/"+e,null,o)}},i.Search=function(e){var t="/search/",o="?q="+e.query;this.repositories=function(e,s){n("GET",t+"repositories"+o,e,s)},this.code=function(e,s){n("GET",t+"code"+o,e,s)},this.issues=function(e,s){n("GET",t+"issues"+o,e,s)},this.users=function(e,s){n("GET",t+"users"+o,e,s)}},i.RateLimit=function(){this.getRateLimit=function(e){n("GET","/rate_limit",null,e)}},i};return i.getIssues=function(e,t){return new i.Issue({user:e,repo:t})},i.getRepo=function(e,t){return t?new i.Repository({user:e,name:t}):new i.Repository({fullname:e})},i.getUser=function(){return new i.User},i.getGist=function(e){return new i.Gist({id:e})},i.getSearch=function(e){return new i.Search({query:e})},i.getRateLimit=function(){return new i.RateLimit},i}); //# sourceMappingURL=github.min.js.map diff --git a/dist/github.min.js.map b/dist/github.min.js.map index 920d463b..f34d88f1 100644 --- a/dist/github.min.js.map +++ b/dist/github.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["github.min.js"],"names":["root","factory","define","amd","Promise","Base64","Utf8","axios","Github","module","exports","require","base64","utf8","this","b64encode","string","encode","polyfill","options","API_URL","apiUrl","_request","method","path","data","cb","raw","getURL","url","indexOf","test","param","hasOwnProperty","encodeURIComponent","replace","window","Date","getTime","config","headers","Accept","Content-Type","username","password","Authorization","token","then","response","request","status","error","_requestAllPages","results","iterate","err","res","xhr","Array","push","apply","next","getResponseHeader","split","filter","link","map","exec","pop","User","repos","params","type","sort","per_page","page","join","orgs","gists","notifications","all","participating","since","constructor","toISOString","before","length","show","command","userRepos","userStarred","userGists","orgRepos","orgname","follow","unfollow","createRepo","Repository","updateTree","branch","currentTree","sha","that","getRef","repoPath","repo","name","user","fullname","ref","object","createRef","deleteRef","deleteRepo","listTags","listPulls","state","head","base","direction","getPull","number","compare","listBranches","heads","getBlob","getCommit","getSha","pathContent","getStatuses","getTree","tree","postBlob","content","encoding","baseTree","blob","base_tree","mode","postTree","commit","parent","message","userData","author","email","parents","updateHead","contributors","retry","setTimeout","contents","encodeURI","fork","listForks","oldBranch","newBranch","arguments","createPullRequest","listHooks","getHook","id","createHook","editHook","deleteHook","read","remove","move","newPath","latestCommit","forEach","rootTree","write","writeOptions","committer","undefined","getCommits","until","perpage","isStarred","owner","repository","star","unstar","createRelease","editRelease","getRelease","deleteRelease","Gist","gistPath","create","update","Issue","list","query","key","comment","issue","comments_url","body","edit","get","Search","repositories","code","issues","users","RateLimit","getRateLimit","getIssues","getRepo","getUser","getGist","getSearch"],"mappings":"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","file":"github.min.js","sourcesContent":["/*!\r\n * @overview Github.js\r\n *\r\n * @copyright (c) 2013 Michael Aufreiter, Development Seed\r\n * Github.js is freely distributable.\r\n *\r\n * @license Licensed under BSD-3-Clause-Clear\r\n *\r\n * For all details and documentation:\r\n * http://substance.io/michael/github\r\n */\r\n'use strict';\r\n\r\n(function (root, factory) {\r\n /* istanbul ignore next */\r\n if (typeof define === 'function' && define.amd) {\r\n define(\r\n [\r\n 'es6-promise',\r\n 'base-64',\r\n 'utf8',\r\n 'axios'\r\n ],\r\n function (Promise, Base64, Utf8, axios) {\r\n return (root.Github = factory(Promise, Base64, Utf8, axios));\r\n }\r\n );\r\n } else if (typeof module === 'object' && module.exports) {\r\n module.exports = factory(require('es6-promise'), require('base-64'), require('utf8'), require('axios'));\r\n } else {\r\n root.Github = factory(root.Promise, root.base64, root.utf8, root.axios);\r\n }\r\n}(this, function(Promise, Base64, Utf8, axios) { // jshint ignore:line\r\n function b64encode(string) {\r\n return Base64.encode(Utf8.encode(string));\r\n }\r\n\r\n if (Promise.polyfill) {\r\n Promise.polyfill();\r\n }\r\n\r\n // Initial Setup\r\n // -------------\r\n\r\n var Github = function (options) {\r\n options = options || {};\r\n\r\n var API_URL = options.apiUrl || 'https://api.github.com';\r\n\r\n // HTTP Request Abstraction\r\n // =======\r\n //\r\n // I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.\r\n\r\n var _request = Github._request = function _request(method, path, data, cb, raw) {\r\n function getURL() {\r\n var url = path.indexOf('//') >= 0 ? path : API_URL + path;\r\n\r\n url += ((/\\?/).test(url) ? '&' : '?');\r\n\r\n if (data && typeof data === 'object' && ['GET', 'HEAD', 'DELETE'].indexOf(method) > -1) {\r\n for(var param in data) {\r\n if (data.hasOwnProperty(param)) {\r\n url += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(data[param]);\r\n }\r\n }\r\n }\r\n\r\n return url.replace(/(×tamp=\\d+)/, '') +\r\n (typeof window !== 'undefined' ? '×tamp=' + new Date().getTime() : '');\r\n }\r\n\r\n var config = {\r\n headers: {\r\n Accept: raw ? 'application/vnd.github.v3.raw+json' : 'application/vnd.github.v3+json',\r\n 'Content-Type': 'application/json;charset=UTF-8'\r\n },\r\n method: method,\r\n data: data ? data : {},\r\n url: getURL()\r\n };\r\n\r\n if ((options.token) || (options.username && options.password)) {\r\n config.headers.Authorization = options.token ?\r\n 'token ' + options.token :\r\n 'Basic ' + b64encode(options.username + ':' + options.password);\r\n }\r\n\r\n return axios(config)\r\n .then(function (response) {\r\n cb(\r\n null,\r\n response.data || true,\r\n response.request\r\n );\r\n }, function (response) {\r\n if (response.status === 304) {\r\n cb(\r\n null,\r\n response.data || true,\r\n response.request\r\n );\r\n } else {\r\n cb({\r\n path: path,\r\n request: response.request,\r\n error: response.status\r\n });\r\n }\r\n });\r\n };\r\n\r\n var _requestAllPages = Github._requestAllPages = function _requestAllPages(path, cb) {\r\n var results = [];\r\n\r\n (function iterate() {\r\n _request('GET', path, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n if (!(res instanceof Array)) {\r\n res = [res];\r\n }\r\n\r\n results.push.apply(results, res);\r\n\r\n var next = (xhr.getResponseHeader('link') || '')\r\n .split(',')\r\n .filter(function(link) {\r\n return /rel=\"next\"/.test(link);\r\n })\r\n .map(function(link) {\r\n return (/<(.*)>/.exec(link) || [])[1];\r\n })\r\n .pop();\r\n\r\n if (!next) {\r\n cb(err, results, xhr);\r\n } else {\r\n path = next;\r\n iterate();\r\n }\r\n });\r\n })();\r\n };\r\n\r\n // User API\r\n // =======\r\n\r\n Github.User = function () {\r\n this.repos = function (options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n options = options || {};\r\n\r\n var url = '/user/repos';\r\n var params = [];\r\n\r\n params.push('type=' + encodeURIComponent(options.type || 'all'));\r\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\r\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n url += '?' + params.join('&');\r\n\r\n _requestAllPages(url, cb);\r\n };\r\n\r\n // List user organizations\r\n // -------\r\n\r\n this.orgs = function (cb) {\r\n _request('GET', '/user/orgs', null, cb);\r\n };\r\n\r\n // List authenticated user's gists\r\n // -------\r\n\r\n this.gists = function (cb) {\r\n _request('GET', '/gists', null, cb);\r\n };\r\n\r\n // List authenticated user's unread notifications\r\n // -------\r\n\r\n this.notifications = function (options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n options = options || {};\r\n var url = '/notifications';\r\n var params = [];\r\n\r\n if (options.all) {\r\n params.push('all=true');\r\n }\r\n\r\n if (options.participating) {\r\n params.push('participating=true');\r\n }\r\n\r\n if (options.since) {\r\n var since = options.since;\r\n\r\n if (since.constructor === Date) {\r\n since = since.toISOString();\r\n }\r\n\r\n params.push('since=' + encodeURIComponent(since));\r\n }\r\n\r\n if (options.before) {\r\n var before = options.before;\r\n\r\n if (before.constructor === Date) {\r\n before = before.toISOString();\r\n }\r\n\r\n params.push('before=' + encodeURIComponent(before));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Show user information\r\n // -------\r\n\r\n this.show = function (username, cb) {\r\n var command = username ? '/users/' + username : '/user';\r\n\r\n _request('GET', command, null, cb);\r\n };\r\n\r\n // List user repositories\r\n // -------\r\n\r\n this.userRepos = function (username, options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n var url = '/users/' + username + '/repos';\r\n var params = [];\r\n\r\n params.push('type=' + encodeURIComponent(options.type || 'all'));\r\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\r\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\r\n\r\n if (options.page) {\r\n params.push('page=' + encodeURIComponent(options.page));\r\n }\r\n\r\n url += '?' + params.join('&');\r\n\r\n _requestAllPages(url, cb);\r\n };\r\n\r\n // List user starred repositories\r\n // -------\r\n\r\n this.userStarred = function (username, cb) {\r\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\r\n _requestAllPages('/users/' + username + '/starred?type=all&per_page=100', cb);\r\n };\r\n\r\n // List a user's gists\r\n // -------\r\n\r\n this.userGists = function (username, cb) {\r\n _request('GET', '/users/' + username + '/gists', null, cb);\r\n };\r\n\r\n // List organization repositories\r\n // -------\r\n\r\n this.orgRepos = function (orgname, cb) {\r\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\r\n _requestAllPages('/orgs/' + orgname + '/repos?type=all&&page_num=1000&sort=updated&direction=desc', cb);\r\n };\r\n\r\n // Follow user\r\n // -------\r\n\r\n this.follow = function (username, cb) {\r\n _request('PUT', '/user/following/' + username, null, cb);\r\n };\r\n\r\n // Unfollow user\r\n // -------\r\n\r\n this.unfollow = function (username, cb) {\r\n _request('DELETE', '/user/following/' + username, null, cb);\r\n };\r\n\r\n // Create a repo\r\n // -------\r\n this.createRepo = function (options, cb) {\r\n _request('POST', '/user/repos', options, cb);\r\n };\r\n };\r\n\r\n // Repository API\r\n // =======\r\n\r\n Github.Repository = function (options) {\r\n var repo = options.name;\r\n var user = options.user;\r\n var fullname = options.fullname;\r\n\r\n var that = this;\r\n var repoPath;\r\n\r\n if (fullname) {\r\n repoPath = '/repos/' + fullname;\r\n } else {\r\n repoPath = '/repos/' + user + '/' + repo;\r\n }\r\n\r\n var currentTree = {\r\n branch: null,\r\n sha: null\r\n };\r\n\r\n // Uses the cache if branch has not been changed\r\n // -------\r\n\r\n function updateTree(branch, cb) {\r\n if (branch === currentTree.branch && currentTree.sha) {\r\n return cb(null, currentTree.sha);\r\n }\r\n\r\n that.getRef('heads/' + branch, function (err, sha) {\r\n currentTree.branch = branch;\r\n currentTree.sha = sha;\r\n cb(err, sha);\r\n });\r\n }\r\n\r\n // Get a particular reference\r\n // -------\r\n\r\n this.getRef = function (ref, cb) {\r\n _request('GET', repoPath + '/git/refs/' + ref, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.object.sha, xhr);\r\n });\r\n };\r\n\r\n // Create a new reference\r\n // --------\r\n //\r\n // {\r\n // \"ref\": \"refs/heads/my-new-branch-name\",\r\n // \"sha\": \"827efc6d56897b048c772eb4087f854f46256132\"\r\n // }\r\n\r\n this.createRef = function (options, cb) {\r\n _request('POST', repoPath + '/git/refs', options, cb);\r\n };\r\n\r\n // Delete a reference\r\n // --------\r\n //\r\n // Repo.deleteRef('heads/gh-pages')\r\n // repo.deleteRef('tags/v1.0')\r\n\r\n this.deleteRef = function (ref, cb) {\r\n _request('DELETE', repoPath + '/git/refs/' + ref, options, cb);\r\n };\r\n\r\n // Delete a repo\r\n // --------\r\n\r\n this.deleteRepo = function (cb) {\r\n _request('DELETE', repoPath, options, cb);\r\n };\r\n\r\n // List all tags of a repository\r\n // -------\r\n\r\n this.listTags = function (cb) {\r\n _request('GET', repoPath + '/tags', null, cb);\r\n };\r\n\r\n // List all pull requests of a respository\r\n // -------\r\n\r\n this.listPulls = function (options, cb) {\r\n options = options || {};\r\n var url = repoPath + '/pulls';\r\n var params = [];\r\n\r\n if (typeof options === 'string') {\r\n // Backward compatibility\r\n params.push('state=' + options);\r\n } else {\r\n if (options.state) {\r\n params.push('state=' + encodeURIComponent(options.state));\r\n }\r\n\r\n if (options.head) {\r\n params.push('head=' + encodeURIComponent(options.head));\r\n }\r\n\r\n if (options.base) {\r\n params.push('base=' + encodeURIComponent(options.base));\r\n }\r\n\r\n if (options.sort) {\r\n params.push('sort=' + encodeURIComponent(options.sort));\r\n }\r\n\r\n if (options.direction) {\r\n params.push('direction=' + encodeURIComponent(options.direction));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + options.page);\r\n }\r\n\r\n if (options.per_page) {\r\n params.push('per_page=' + options.per_page);\r\n }\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Gets details for a specific pull request\r\n // -------\r\n\r\n this.getPull = function (number, cb) {\r\n _request('GET', repoPath + '/pulls/' + number, null, cb);\r\n };\r\n\r\n // Retrieve the changes made between base and head\r\n // -------\r\n\r\n this.compare = function (base, head, cb) {\r\n _request('GET', repoPath + '/compare/' + base + '...' + head, null, cb);\r\n };\r\n\r\n // List all branches of a repository\r\n // -------\r\n\r\n this.listBranches = function (cb) {\r\n _request('GET', repoPath + '/git/refs/heads', null, function (err, heads, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n heads = heads.map(function (head) {\r\n return head.ref.replace(/^refs\\/heads\\//, '');\r\n });\r\n\r\n cb(null, heads, xhr);\r\n });\r\n };\r\n\r\n // Retrieve the contents of a blob\r\n // -------\r\n\r\n this.getBlob = function (sha, cb) {\r\n _request('GET', repoPath + '/git/blobs/' + sha, null, cb, 'raw');\r\n };\r\n\r\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\r\n // -------\r\n\r\n this.getCommit = function (branch, sha, cb) {\r\n _request('GET', repoPath + '/git/commits/' + sha, null, cb);\r\n };\r\n\r\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\r\n // -------\r\n\r\n this.getSha = function (branch, path, cb) {\r\n if (!path || path === '') {\r\n return that.getRef('heads/' + branch, cb);\r\n }\r\n\r\n _request('GET', repoPath + '/contents/' + path + (branch ? '?ref=' + branch : ''),\r\n null, function (err, pathContent, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, pathContent.sha, xhr);\r\n });\r\n };\r\n\r\n // Get the statuses for a particular SHA\r\n // -------\r\n\r\n this.getStatuses = function (sha, cb) {\r\n _request('GET', repoPath + '/statuses/' + sha, null, cb);\r\n };\r\n\r\n // Retrieve the tree a commit points to\r\n // -------\r\n\r\n this.getTree = function (tree, cb) {\r\n _request('GET', repoPath + '/git/trees/' + tree, null, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.tree, xhr);\r\n });\r\n };\r\n\r\n // Post a new blob object, getting a blob SHA back\r\n // -------\r\n\r\n this.postBlob = function (content, cb) {\r\n if (typeof content === 'string') {\r\n content = {\r\n content: content,\r\n encoding: 'utf-8'\r\n };\r\n } else {\r\n content = {\r\n content: b64encode(content),\r\n encoding: 'base64'\r\n };\r\n }\r\n\r\n _request('POST', repoPath + '/git/blobs', content, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Update an existing tree adding a new blob object getting a tree SHA back\r\n // -------\r\n\r\n this.updateTree = function (baseTree, path, blob, cb) {\r\n var data = {\r\n base_tree: baseTree,\r\n tree: [\r\n {\r\n path: path,\r\n mode: '100644',\r\n type: 'blob',\r\n sha: blob\r\n }\r\n ]\r\n };\r\n\r\n _request('POST', repoPath + '/git/trees', data, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Post a new tree object having a file path pointer replaced\r\n // with a new blob SHA getting a tree SHA back\r\n // -------\r\n\r\n this.postTree = function (tree, cb) {\r\n _request('POST', repoPath + '/git/trees', {\r\n tree: tree\r\n }, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n };\r\n\r\n // Create a new commit object with the current commit SHA as the parent\r\n // and the new tree SHA, getting a commit SHA back\r\n // -------\r\n\r\n this.commit = function (parent, tree, message, cb) {\r\n var user = new Github.User();\r\n\r\n user.show(null, function (err, userData) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n var data = {\r\n message: message,\r\n author: {\r\n name: options.user,\r\n email: userData.email\r\n },\r\n parents: [\r\n parent\r\n ],\r\n tree: tree\r\n };\r\n\r\n _request('POST', repoPath + '/git/commits', data, function (err, res, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n currentTree.sha = res.sha; // Update latest commit\r\n\r\n cb(null, res.sha, xhr);\r\n });\r\n });\r\n };\r\n\r\n // Update the reference of your head to point to the new commit SHA\r\n // -------\r\n\r\n this.updateHead = function (head, commit, cb) {\r\n _request('PATCH', repoPath + '/git/refs/heads/' + head, {\r\n sha: commit\r\n }, cb);\r\n };\r\n\r\n // Show repository information\r\n // -------\r\n\r\n this.show = function (cb) {\r\n _request('GET', repoPath, null, cb);\r\n };\r\n\r\n // Show repository contributors\r\n // -------\r\n\r\n this.contributors = function (cb, retry) {\r\n retry = retry || 1000;\r\n var that = this;\r\n\r\n _request('GET', repoPath + '/stats/contributors', null, function (err, data, xhr) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n if (xhr.status === 202) {\r\n setTimeout(\r\n function () {\r\n that.contributors(cb, retry);\r\n },\r\n retry\r\n );\r\n } else {\r\n cb(err, data, xhr);\r\n }\r\n });\r\n };\r\n\r\n // Get contents\r\n // --------\r\n\r\n this.contents = function (ref, path, cb) {\r\n path = encodeURI(path);\r\n _request('GET', repoPath + '/contents' + (path ? '/' + path : ''), {\r\n ref: ref\r\n }, cb);\r\n };\r\n\r\n // Fork repository\r\n // -------\r\n\r\n this.fork = function (cb) {\r\n _request('POST', repoPath + '/forks', null, cb);\r\n };\r\n\r\n // List forks\r\n // --------\r\n\r\n this.listForks = function (cb) {\r\n _request('GET', repoPath + '/forks', null, cb);\r\n };\r\n\r\n // Branch repository\r\n // --------\r\n\r\n this.branch = function (oldBranch, newBranch, cb) {\r\n if (arguments.length === 2 && typeof arguments[1] === 'function') {\r\n cb = newBranch;\r\n newBranch = oldBranch;\r\n oldBranch = 'master';\r\n }\r\n\r\n this.getRef('heads/' + oldBranch, function (err, ref) {\r\n if (err && cb) {\r\n return cb(err);\r\n }\r\n\r\n that.createRef({\r\n ref: 'refs/heads/' + newBranch,\r\n sha: ref\r\n }, cb);\r\n });\r\n };\r\n\r\n // Create pull request\r\n // --------\r\n\r\n this.createPullRequest = function (options, cb) {\r\n _request('POST', repoPath + '/pulls', options, cb);\r\n };\r\n\r\n // List hooks\r\n // --------\r\n\r\n this.listHooks = function (cb) {\r\n _request('GET', repoPath + '/hooks', null, cb);\r\n };\r\n\r\n // Get a hook\r\n // --------\r\n\r\n this.getHook = function (id, cb) {\r\n _request('GET', repoPath + '/hooks/' + id, null, cb);\r\n };\r\n\r\n // Create a hook\r\n // --------\r\n\r\n this.createHook = function (options, cb) {\r\n _request('POST', repoPath + '/hooks', options, cb);\r\n };\r\n\r\n // Edit a hook\r\n // --------\r\n\r\n this.editHook = function (id, options, cb) {\r\n _request('PATCH', repoPath + '/hooks/' + id, options, cb);\r\n };\r\n\r\n // Delete a hook\r\n // --------\r\n\r\n this.deleteHook = function (id, cb) {\r\n _request('DELETE', repoPath + '/hooks/' + id, null, cb);\r\n };\r\n\r\n // Read file at given path\r\n // -------\r\n\r\n this.read = function (branch, path, cb) {\r\n _request('GET', repoPath + '/contents/' + encodeURI(path) + (branch ? '?ref=' + branch : ''),\r\n null, cb, true);\r\n };\r\n\r\n // Remove a file\r\n // -------\r\n\r\n this.remove = function (branch, path, cb) {\r\n that.getSha(branch, path, function (err, sha) {\r\n if (err) {\r\n return cb(err);\r\n }\r\n\r\n _request('DELETE', repoPath + '/contents/' + path, {\r\n message: path + ' is removed',\r\n sha: sha,\r\n branch: branch\r\n }, cb);\r\n });\r\n };\r\n\r\n // Alias for repo.remove for backwards comapt.\r\n // -------\r\n this.delete = this.remove;\r\n\r\n // Move a file to a new location\r\n // -------\r\n\r\n this.move = function (branch, path, newPath, cb) {\r\n updateTree(branch, function (err, latestCommit) {\r\n that.getTree(latestCommit + '?recursive=true', function (err, tree) {\r\n // Update Tree\r\n tree.forEach(function (ref) {\r\n if (ref.path === path) {\r\n ref.path = newPath;\r\n }\r\n\r\n if (ref.type === 'tree') {\r\n delete ref.sha;\r\n }\r\n });\r\n\r\n that.postTree(tree, function (err, rootTree) {\r\n that.commit(latestCommit, rootTree, 'Deleted ' + path, function (err, commit) {\r\n that.updateHead(branch, commit, cb);\r\n });\r\n });\r\n });\r\n });\r\n };\r\n\r\n // Write file contents to a given branch and path\r\n // -------\r\n\r\n this.write = function (branch, path, content, message, options, cb) {\r\n if (typeof options === 'function') {\r\n cb = options;\r\n options = {};\r\n }\r\n\r\n that.getSha(branch, encodeURI(path), function (err, sha) {\r\n var writeOptions = {\r\n message: message,\r\n content: typeof options.encode === 'undefined' || options.encode ? b64encode(content) : content,\r\n branch: branch,\r\n committer: options && options.committer ? options.committer : undefined,\r\n author: options && options.author ? options.author : undefined\r\n };\r\n\r\n // If no error, we set the sha to overwrite an existing file\r\n if (!(err && err.error !== 404)) {\r\n writeOptions.sha = sha;\r\n }\r\n\r\n _request('PUT', repoPath + '/contents/' + encodeURI(path), writeOptions, cb);\r\n });\r\n };\r\n\r\n // List commits on a repository. Takes an object of optional parameters:\r\n // sha: SHA or branch to start listing commits from\r\n // path: Only commits containing this file path will be returned\r\n // author: Only commits by this author will be returned. Its value can be the GitHub login or the email address\r\n // since: ISO 8601 date - only commits after this date will be returned\r\n // until: ISO 8601 date - only commits before this date will be returned\r\n // -------\r\n\r\n this.getCommits = function (options, cb) {\r\n options = options || {};\r\n var url = repoPath + '/commits';\r\n var params = [];\r\n\r\n if (options.sha) {\r\n params.push('sha=' + encodeURIComponent(options.sha));\r\n }\r\n\r\n if (options.path) {\r\n params.push('path=' + encodeURIComponent(options.path));\r\n }\r\n\r\n if (options.author) {\r\n params.push('author=' + encodeURIComponent(options.author));\r\n }\r\n\r\n if (options.since) {\r\n var since = options.since;\r\n\r\n if (since.constructor === Date) {\r\n since = since.toISOString();\r\n }\r\n\r\n params.push('since=' + encodeURIComponent(since));\r\n }\r\n\r\n if (options.until) {\r\n var until = options.until;\r\n\r\n if (until.constructor === Date) {\r\n until = until.toISOString();\r\n }\r\n\r\n params.push('until=' + encodeURIComponent(until));\r\n }\r\n\r\n if (options.page) {\r\n params.push('page=' + options.page);\r\n }\r\n\r\n if (options.perpage) {\r\n params.push('per_page=' + options.perpage);\r\n }\r\n\r\n if (params.length > 0) {\r\n url += '?' + params.join('&');\r\n }\r\n\r\n _request('GET', url, null, cb);\r\n };\r\n\r\n // Check if a repository is starred.\r\n // --------\r\n\r\n this.isStarred = function(owner, repository, cb) {\r\n _request('GET', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Star a repository.\r\n // --------\r\n\r\n this.star = function(owner, repository, cb) {\r\n _request('PUT', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Unstar a repository.\r\n // --------\r\n\r\n this.unstar = function(owner, repository, cb) {\r\n _request('DELETE', '/user/starred/' + owner + '/' + repository, null, cb);\r\n };\r\n\r\n // Create a new release\r\n // --------\r\n\r\n this.createRelease = function(options, cb) {\r\n _request('POST', repoPath + '/releases', options, cb);\r\n };\r\n\r\n // Edit a release\r\n // --------\r\n\r\n this.editRelease = function(id, options, cb) {\r\n _request('PATCH', repoPath + '/releases/' + id, options, cb);\r\n };\r\n\r\n // Get a single release\r\n // --------\r\n\r\n this.getRelease = function(id, cb) {\r\n _request('GET', repoPath + '/releases/' + id, null, cb);\r\n };\r\n\r\n // Remove a release\r\n // --------\r\n\r\n this.deleteRelease = function(id, cb) {\r\n _request('DELETE', repoPath + '/releases/' + id, null, cb);\r\n };\r\n };\r\n\r\n // Gists API\r\n // =======\r\n\r\n Github.Gist = function (options) {\r\n var id = options.id;\r\n var gistPath = '/gists/' + id;\r\n\r\n // Read the gist\r\n // --------\r\n\r\n this.read = function (cb) {\r\n _request('GET', gistPath, null, cb);\r\n };\r\n\r\n // Create the gist\r\n // --------\r\n // {\r\n // \"description\": \"the description for this gist\",\r\n // \"public\": true,\r\n // \"files\": {\r\n // \"file1.txt\": {\r\n // \"content\": \"String file contents\"\r\n // }\r\n // }\r\n // }\r\n\r\n this.create = function (options, cb) {\r\n _request('POST', '/gists', options, cb);\r\n };\r\n\r\n // Delete the gist\r\n // --------\r\n\r\n this.delete = function (cb) {\r\n _request('DELETE', gistPath, null, cb);\r\n };\r\n\r\n // Fork a gist\r\n // --------\r\n\r\n this.fork = function (cb) {\r\n _request('POST', gistPath + '/fork', null, cb);\r\n };\r\n\r\n // Update a gist with the new stuff\r\n // --------\r\n\r\n this.update = function (options, cb) {\r\n _request('PATCH', gistPath, options, cb);\r\n };\r\n\r\n // Star a gist\r\n // --------\r\n\r\n this.star = function (cb) {\r\n _request('PUT', gistPath + '/star', null, cb);\r\n };\r\n\r\n // Untar a gist\r\n // --------\r\n\r\n this.unstar = function (cb) {\r\n _request('DELETE', gistPath + '/star', null, cb);\r\n };\r\n\r\n // Check if a gist is starred\r\n // --------\r\n\r\n this.isStarred = function (cb) {\r\n _request('GET', gistPath + '/star', null, cb);\r\n };\r\n };\r\n\r\n // Issues API\r\n // ==========\r\n\r\n Github.Issue = function (options) {\r\n var path = '/repos/' + options.user + '/' + options.repo + '/issues';\r\n\r\n this.create = function(options, cb) {\r\n _request('POST', path, options, cb);\r\n };\r\n\r\n this.list = function (options, cb) {\r\n var query = [];\r\n\r\n for(var key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(options[key]));\r\n }\r\n }\r\n\r\n _requestAllPages(path + '?' + query.join('&'), cb);\r\n };\r\n\r\n this.comment = function (issue, comment, cb) {\r\n _request('POST', issue.comments_url, {\r\n body: comment\r\n }, cb);\r\n };\r\n\r\n this.edit = function (issue, options, cb) {\r\n _request('PATCH', path + '/' + issue, options, cb);\r\n };\r\n\r\n this.get = function (issue, cb) {\r\n _request('GET', path + '/' + issue, null, cb);\r\n };\r\n };\r\n\r\n // Search API\r\n // ==========\r\n\r\n Github.Search = function (options) {\r\n var path = '/search/';\r\n var query = '?q=' + options.query;\r\n\r\n this.repositories = function (options, cb) {\r\n _request('GET', path + 'repositories' + query, options, cb);\r\n };\r\n\r\n this.code = function (options, cb) {\r\n _request('GET', path + 'code' + query, options, cb);\r\n };\r\n\r\n this.issues = function (options, cb) {\r\n _request('GET', path + 'issues' + query, options, cb);\r\n };\r\n\r\n this.users = function (options, cb) {\r\n _request('GET', path + 'users' + query, options, cb);\r\n };\r\n };\r\n\r\n // Rate Limit API\r\n // ==========\r\n\r\n Github.RateLimit = function() {\r\n this.getRateLimit = function(cb) {\r\n _request('GET', '/rate_limit', null, cb);\r\n };\r\n };\r\n\r\n return Github;\r\n };\r\n\r\n // Top Level API\r\n // -------\r\n\r\n Github.getIssues = function (user, repo) {\r\n return new Github.Issue({\r\n user: user,\r\n repo: repo\r\n });\r\n };\r\n\r\n Github.getRepo = function (user, repo) {\r\n if (!repo) {\r\n return new Github.Repository({\r\n fullname: user\r\n });\r\n } else {\r\n return new Github.Repository({\r\n user: user,\r\n name: repo\r\n });\r\n }\r\n };\r\n\r\n Github.getUser = function () {\r\n return new Github.User();\r\n };\r\n\r\n Github.getGist = function (id) {\r\n return new Github.Gist({\r\n id: id\r\n });\r\n };\r\n\r\n Github.getSearch = function (query) {\r\n return new Github.Search({\r\n query: query\r\n });\r\n };\r\n\r\n Github.getRateLimit = function() {\r\n return new Github.RateLimit();\r\n };\r\n\r\n return Github;\r\n}));\r\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["github.min.js"],"names":["root","factory","define","amd","Promise","Base64","Utf8","axios","Github","module","exports","require","base64","utf8","this","b64encode","string","encode","polyfill","options","API_URL","apiUrl","_request","method","path","data","cb","raw","getURL","url","indexOf","test","param","hasOwnProperty","encodeURIComponent","replace","window","Date","getTime","config","headers","Accept","Content-Type","username","password","Authorization","token","then","response","request","status","error","_requestAllPages","results","iterate","err","res","xhr","Array","push","apply","next","getResponseHeader","split","filter","link","map","exec","pop","User","repos","params","type","sort","per_page","page","join","orgs","gists","notifications","all","participating","since","constructor","toISOString","before","length","show","command","userRepos","userStarred","userGists","orgRepos","orgname","follow","unfollow","createRepo","Repository","updateTree","branch","currentTree","sha","that","getRef","repoPath","repo","name","user","fullname","ref","object","createRef","deleteRef","deleteRepo","listTags","listPulls","state","head","base","direction","getPull","number","compare","listBranches","heads","getBlob","getCommit","getSha","pathContent","getStatuses","getTree","tree","postBlob","content","encoding","baseTree","blob","base_tree","mode","postTree","commit","parent","message","userData","author","email","parents","updateHead","contributors","retry","setTimeout","collaborators","isCollaborator","contents","encodeURI","fork","listForks","oldBranch","newBranch","arguments","createPullRequest","listHooks","getHook","id","createHook","editHook","deleteHook","read","remove","move","newPath","latestCommit","forEach","rootTree","write","writeOptions","committer","undefined","getCommits","until","perpage","isStarred","owner","repository","star","unstar","createRelease","editRelease","getRelease","deleteRelease","Gist","gistPath","create","update","Issue","list","query","key","comment","issue","comments_url","body","edit","get","Search","repositories","code","issues","users","RateLimit","getRateLimit","getIssues","getRepo","getUser","getGist","getSearch"],"mappings":"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","file":"github.min.js","sourcesContent":["/*!\n * @overview Github.js\n *\n * @copyright (c) 2013 Michael Aufreiter, Development Seed\n * Github.js is freely distributable.\n *\n * @license Licensed under BSD-3-Clause-Clear\n *\n * For all details and documentation:\n * http://substance.io/michael/github\n */\n'use strict';\n\n(function (root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define(\n [\n 'es6-promise',\n 'base-64',\n 'utf8',\n 'axios'\n ],\n function (Promise, Base64, Utf8, axios) {\n return (root.Github = factory(Promise, Base64, Utf8, axios));\n }\n );\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('es6-promise'), require('base-64'), require('utf8'), require('axios'));\n } else {\n root.Github = factory(root.Promise, root.base64, root.utf8, root.axios);\n }\n}(this, function(Promise, Base64, Utf8, axios) { // jshint ignore:line\n function b64encode(string) {\n return Base64.encode(Utf8.encode(string));\n }\n\n if (Promise.polyfill) {\n Promise.polyfill();\n }\n\n // Initial Setup\n // -------------\n\n var Github = function (options) {\n options = options || {};\n\n var API_URL = options.apiUrl || 'https://api.github.com';\n\n // HTTP Request Abstraction\n // =======\n //\n // I'm not proud of this and neither should you be if you were responsible for the XMLHttpRequest spec.\n\n var _request = Github._request = function _request(method, path, data, cb, raw) {\n function getURL() {\n var url = path.indexOf('//') >= 0 ? path : API_URL + path;\n\n url += ((/\\?/).test(url) ? '&' : '?');\n\n if (data && typeof data === 'object' && ['GET', 'HEAD', 'DELETE'].indexOf(method) > -1) {\n for(var param in data) {\n if (data.hasOwnProperty(param)) {\n url += '&' + encodeURIComponent(param) + '=' + encodeURIComponent(data[param]);\n }\n }\n }\n\n return url.replace(/(×tamp=\\d+)/, '') +\n (typeof window !== 'undefined' ? '×tamp=' + new Date().getTime() : '');\n }\n\n var config = {\n headers: {\n Accept: raw ? 'application/vnd.github.v3.raw+json' : 'application/vnd.github.v3+json',\n 'Content-Type': 'application/json;charset=UTF-8'\n },\n method: method,\n data: data ? data : {},\n url: getURL()\n };\n\n if ((options.token) || (options.username && options.password)) {\n config.headers.Authorization = options.token ?\n 'token ' + options.token :\n 'Basic ' + b64encode(options.username + ':' + options.password);\n }\n\n return axios(config)\n .then(function (response) {\n cb(\n null,\n response.data || true,\n response.request\n );\n }, function (response) {\n if (response.status === 304) {\n cb(\n null,\n response.data || true,\n response.request\n );\n } else {\n cb({\n path: path,\n request: response.request,\n error: response.status\n });\n }\n });\n };\n\n var _requestAllPages = Github._requestAllPages = function _requestAllPages(path, cb) {\n var results = [];\n\n (function iterate() {\n _request('GET', path, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n if (!(res instanceof Array)) {\n res = [res];\n }\n\n results.push.apply(results, res);\n\n var next = (xhr.getResponseHeader('link') || '')\n .split(',')\n .filter(function(link) {\n return /rel=\"next\"/.test(link);\n })\n .map(function(link) {\n return (/<(.*)>/.exec(link) || [])[1];\n })\n .pop();\n\n if (!next) {\n cb(err, results, xhr);\n } else {\n path = next;\n iterate();\n }\n });\n })();\n };\n\n // User API\n // =======\n\n Github.User = function () {\n this.repos = function (options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n options = options || {};\n\n var url = '/user/repos';\n var params = [];\n\n params.push('type=' + encodeURIComponent(options.type || 'all'));\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n url += '?' + params.join('&');\n\n _requestAllPages(url, cb);\n };\n\n // List user organizations\n // -------\n\n this.orgs = function (cb) {\n _request('GET', '/user/orgs', null, cb);\n };\n\n // List authenticated user's gists\n // -------\n\n this.gists = function (cb) {\n _request('GET', '/gists', null, cb);\n };\n\n // List authenticated user's unread notifications\n // -------\n\n this.notifications = function (options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n options = options || {};\n var url = '/notifications';\n var params = [];\n\n if (options.all) {\n params.push('all=true');\n }\n\n if (options.participating) {\n params.push('participating=true');\n }\n\n if (options.since) {\n var since = options.since;\n\n if (since.constructor === Date) {\n since = since.toISOString();\n }\n\n params.push('since=' + encodeURIComponent(since));\n }\n\n if (options.before) {\n var before = options.before;\n\n if (before.constructor === Date) {\n before = before.toISOString();\n }\n\n params.push('before=' + encodeURIComponent(before));\n }\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Show user information\n // -------\n\n this.show = function (username, cb) {\n var command = username ? '/users/' + username : '/user';\n\n _request('GET', command, null, cb);\n };\n\n // List user repositories\n // -------\n\n this.userRepos = function (username, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n var url = '/users/' + username + '/repos';\n var params = [];\n\n params.push('type=' + encodeURIComponent(options.type || 'all'));\n params.push('sort=' + encodeURIComponent(options.sort || 'updated'));\n params.push('per_page=' + encodeURIComponent(options.per_page || '100')); // jscs:ignore\n\n if (options.page) {\n params.push('page=' + encodeURIComponent(options.page));\n }\n\n url += '?' + params.join('&');\n\n _requestAllPages(url, cb);\n };\n\n // List user starred repositories\n // -------\n\n this.userStarred = function (username, cb) {\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\n _requestAllPages('/users/' + username + '/starred?type=all&per_page=100', cb);\n };\n\n // List a user's gists\n // -------\n\n this.userGists = function (username, cb) {\n _request('GET', '/users/' + username + '/gists', null, cb);\n };\n\n // List organization repositories\n // -------\n\n this.orgRepos = function (orgname, cb) {\n // Github does not always honor the 1000 limit so we want to iterate over the data set.\n _requestAllPages('/orgs/' + orgname + '/repos?type=all&&page_num=1000&sort=updated&direction=desc', cb);\n };\n\n // Follow user\n // -------\n\n this.follow = function (username, cb) {\n _request('PUT', '/user/following/' + username, null, cb);\n };\n\n // Unfollow user\n // -------\n\n this.unfollow = function (username, cb) {\n _request('DELETE', '/user/following/' + username, null, cb);\n };\n\n // Create a repo\n // -------\n this.createRepo = function (options, cb) {\n _request('POST', '/user/repos', options, cb);\n };\n };\n\n // Repository API\n // =======\n\n Github.Repository = function (options) {\n var repo = options.name;\n var user = options.user;\n var fullname = options.fullname;\n\n var that = this;\n var repoPath;\n\n if (fullname) {\n repoPath = '/repos/' + fullname;\n } else {\n repoPath = '/repos/' + user + '/' + repo;\n }\n\n var currentTree = {\n branch: null,\n sha: null\n };\n\n // Uses the cache if branch has not been changed\n // -------\n\n function updateTree(branch, cb) {\n if (branch === currentTree.branch && currentTree.sha) {\n return cb(null, currentTree.sha);\n }\n\n that.getRef('heads/' + branch, function (err, sha) {\n currentTree.branch = branch;\n currentTree.sha = sha;\n cb(err, sha);\n });\n }\n\n // Get a particular reference\n // -------\n\n this.getRef = function (ref, cb) {\n _request('GET', repoPath + '/git/refs/' + ref, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.object.sha, xhr);\n });\n };\n\n // Create a new reference\n // --------\n //\n // {\n // \"ref\": \"refs/heads/my-new-branch-name\",\n // \"sha\": \"827efc6d56897b048c772eb4087f854f46256132\"\n // }\n\n this.createRef = function (options, cb) {\n _request('POST', repoPath + '/git/refs', options, cb);\n };\n\n // Delete a reference\n // --------\n //\n // Repo.deleteRef('heads/gh-pages')\n // repo.deleteRef('tags/v1.0')\n\n this.deleteRef = function (ref, cb) {\n _request('DELETE', repoPath + '/git/refs/' + ref, options, cb);\n };\n\n // Delete a repo\n // --------\n\n this.deleteRepo = function (cb) {\n _request('DELETE', repoPath, options, cb);\n };\n\n // List all tags of a repository\n // -------\n\n this.listTags = function (cb) {\n _request('GET', repoPath + '/tags', null, cb);\n };\n\n // List all pull requests of a respository\n // -------\n\n this.listPulls = function (options, cb) {\n options = options || {};\n var url = repoPath + '/pulls';\n var params = [];\n\n if (typeof options === 'string') {\n // Backward compatibility\n params.push('state=' + options);\n } else {\n if (options.state) {\n params.push('state=' + encodeURIComponent(options.state));\n }\n\n if (options.head) {\n params.push('head=' + encodeURIComponent(options.head));\n }\n\n if (options.base) {\n params.push('base=' + encodeURIComponent(options.base));\n }\n\n if (options.sort) {\n params.push('sort=' + encodeURIComponent(options.sort));\n }\n\n if (options.direction) {\n params.push('direction=' + encodeURIComponent(options.direction));\n }\n\n if (options.page) {\n params.push('page=' + options.page);\n }\n\n if (options.per_page) {\n params.push('per_page=' + options.per_page);\n }\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Gets details for a specific pull request\n // -------\n\n this.getPull = function (number, cb) {\n _request('GET', repoPath + '/pulls/' + number, null, cb);\n };\n\n // Retrieve the changes made between base and head\n // -------\n\n this.compare = function (base, head, cb) {\n _request('GET', repoPath + '/compare/' + base + '...' + head, null, cb);\n };\n\n // List all branches of a repository\n // -------\n\n this.listBranches = function (cb) {\n _request('GET', repoPath + '/git/refs/heads', null, function (err, heads, xhr) {\n if (err) {\n return cb(err);\n }\n\n heads = heads.map(function (head) {\n return head.ref.replace(/^refs\\/heads\\//, '');\n });\n\n cb(null, heads, xhr);\n });\n };\n\n // Retrieve the contents of a blob\n // -------\n\n this.getBlob = function (sha, cb) {\n _request('GET', repoPath + '/git/blobs/' + sha, null, cb, 'raw');\n };\n\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\n // -------\n\n this.getCommit = function (branch, sha, cb) {\n _request('GET', repoPath + '/git/commits/' + sha, null, cb);\n };\n\n // For a given file path, get the corresponding sha (blob for files, tree for dirs)\n // -------\n\n this.getSha = function (branch, path, cb) {\n if (!path || path === '') {\n return that.getRef('heads/' + branch, cb);\n }\n\n _request('GET', repoPath + '/contents/' + path + (branch ? '?ref=' + branch : ''),\n null, function (err, pathContent, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, pathContent.sha, xhr);\n });\n };\n\n // Get the statuses for a particular SHA\n // -------\n\n this.getStatuses = function (sha, cb) {\n _request('GET', repoPath + '/statuses/' + sha, null, cb);\n };\n\n // Retrieve the tree a commit points to\n // -------\n\n this.getTree = function (tree, cb) {\n _request('GET', repoPath + '/git/trees/' + tree, null, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.tree, xhr);\n });\n };\n\n // Post a new blob object, getting a blob SHA back\n // -------\n\n this.postBlob = function (content, cb) {\n if (typeof content === 'string') {\n content = {\n content: content,\n encoding: 'utf-8'\n };\n } else {\n content = {\n content: b64encode(content),\n encoding: 'base64'\n };\n }\n\n _request('POST', repoPath + '/git/blobs', content, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Update an existing tree adding a new blob object getting a tree SHA back\n // -------\n\n this.updateTree = function (baseTree, path, blob, cb) {\n var data = {\n base_tree: baseTree,\n tree: [\n {\n path: path,\n mode: '100644',\n type: 'blob',\n sha: blob\n }\n ]\n };\n\n _request('POST', repoPath + '/git/trees', data, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Post a new tree object having a file path pointer replaced\n // with a new blob SHA getting a tree SHA back\n // -------\n\n this.postTree = function (tree, cb) {\n _request('POST', repoPath + '/git/trees', {\n tree: tree\n }, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n cb(null, res.sha, xhr);\n });\n };\n\n // Create a new commit object with the current commit SHA as the parent\n // and the new tree SHA, getting a commit SHA back\n // -------\n\n this.commit = function (parent, tree, message, cb) {\n var user = new Github.User();\n\n user.show(null, function (err, userData) {\n if (err) {\n return cb(err);\n }\n\n var data = {\n message: message,\n author: {\n name: options.user,\n email: userData.email\n },\n parents: [\n parent\n ],\n tree: tree\n };\n\n _request('POST', repoPath + '/git/commits', data, function (err, res, xhr) {\n if (err) {\n return cb(err);\n }\n\n currentTree.sha = res.sha; // Update latest commit\n\n cb(null, res.sha, xhr);\n });\n });\n };\n\n // Update the reference of your head to point to the new commit SHA\n // -------\n\n this.updateHead = function (head, commit, cb) {\n _request('PATCH', repoPath + '/git/refs/heads/' + head, {\n sha: commit\n }, cb);\n };\n\n // Show repository information\n // -------\n\n this.show = function (cb) {\n _request('GET', repoPath, null, cb);\n };\n\n // Show repository contributors\n // -------\n\n this.contributors = function (cb, retry) {\n retry = retry || 1000;\n var that = this;\n\n _request('GET', repoPath + '/stats/contributors', null, function (err, data, xhr) {\n if (err) {\n return cb(err);\n }\n\n if (xhr.status === 202) {\n setTimeout(\n function () {\n that.contributors(cb, retry);\n },\n retry\n );\n } else {\n cb(err, data, xhr);\n }\n });\n };\n\n // Show repository collaborators\n // -------\n\n this.collaborators = function (cb) {\n _request('GET', repoPath + '/collaborators', null, cb);\n };\n\n // Check whether user is a collaborator on the repository\n // -------\n\n this.isCollaborator = function (username, cb) {\n _request('GET', repoPath + '/collaborators/' + username, null, cb);\n };\n\n // Get contents\n // --------\n\n this.contents = function (ref, path, cb) {\n path = encodeURI(path);\n _request('GET', repoPath + '/contents' + (path ? '/' + path : ''), {\n ref: ref\n }, cb);\n };\n\n // Fork repository\n // -------\n\n this.fork = function (cb) {\n _request('POST', repoPath + '/forks', null, cb);\n };\n\n // List forks\n // --------\n\n this.listForks = function (cb) {\n _request('GET', repoPath + '/forks', null, cb);\n };\n\n // Branch repository\n // --------\n\n this.branch = function (oldBranch, newBranch, cb) {\n if (arguments.length === 2 && typeof arguments[1] === 'function') {\n cb = newBranch;\n newBranch = oldBranch;\n oldBranch = 'master';\n }\n\n this.getRef('heads/' + oldBranch, function (err, ref) {\n if (err && cb) {\n return cb(err);\n }\n\n that.createRef({\n ref: 'refs/heads/' + newBranch,\n sha: ref\n }, cb);\n });\n };\n\n // Create pull request\n // --------\n\n this.createPullRequest = function (options, cb) {\n _request('POST', repoPath + '/pulls', options, cb);\n };\n\n // List hooks\n // --------\n\n this.listHooks = function (cb) {\n _request('GET', repoPath + '/hooks', null, cb);\n };\n\n // Get a hook\n // --------\n\n this.getHook = function (id, cb) {\n _request('GET', repoPath + '/hooks/' + id, null, cb);\n };\n\n // Create a hook\n // --------\n\n this.createHook = function (options, cb) {\n _request('POST', repoPath + '/hooks', options, cb);\n };\n\n // Edit a hook\n // --------\n\n this.editHook = function (id, options, cb) {\n _request('PATCH', repoPath + '/hooks/' + id, options, cb);\n };\n\n // Delete a hook\n // --------\n\n this.deleteHook = function (id, cb) {\n _request('DELETE', repoPath + '/hooks/' + id, null, cb);\n };\n\n // Read file at given path\n // -------\n\n this.read = function (branch, path, cb) {\n _request('GET', repoPath + '/contents/' + encodeURI(path) + (branch ? '?ref=' + branch : ''),\n null, cb, true);\n };\n\n // Remove a file\n // -------\n\n this.remove = function (branch, path, cb) {\n that.getSha(branch, path, function (err, sha) {\n if (err) {\n return cb(err);\n }\n\n _request('DELETE', repoPath + '/contents/' + path, {\n message: path + ' is removed',\n sha: sha,\n branch: branch\n }, cb);\n });\n };\n\n // Alias for repo.remove for backwards comapt.\n // -------\n this.delete = this.remove;\n\n // Move a file to a new location\n // -------\n\n this.move = function (branch, path, newPath, cb) {\n updateTree(branch, function (err, latestCommit) {\n that.getTree(latestCommit + '?recursive=true', function (err, tree) {\n // Update Tree\n tree.forEach(function (ref) {\n if (ref.path === path) {\n ref.path = newPath;\n }\n\n if (ref.type === 'tree') {\n delete ref.sha;\n }\n });\n\n that.postTree(tree, function (err, rootTree) {\n that.commit(latestCommit, rootTree, 'Deleted ' + path, function (err, commit) {\n that.updateHead(branch, commit, cb);\n });\n });\n });\n });\n };\n\n // Write file contents to a given branch and path\n // -------\n\n this.write = function (branch, path, content, message, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n that.getSha(branch, encodeURI(path), function (err, sha) {\n var writeOptions = {\n message: message,\n content: typeof options.encode === 'undefined' || options.encode ? b64encode(content) : content,\n branch: branch,\n committer: options && options.committer ? options.committer : undefined,\n author: options && options.author ? options.author : undefined\n };\n\n // If no error, we set the sha to overwrite an existing file\n if (!(err && err.error !== 404)) {\n writeOptions.sha = sha;\n }\n\n _request('PUT', repoPath + '/contents/' + encodeURI(path), writeOptions, cb);\n });\n };\n\n // List commits on a repository. Takes an object of optional parameters:\n // sha: SHA or branch to start listing commits from\n // path: Only commits containing this file path will be returned\n // author: Only commits by this author will be returned. Its value can be the GitHub login or the email address\n // since: ISO 8601 date - only commits after this date will be returned\n // until: ISO 8601 date - only commits before this date will be returned\n // -------\n\n this.getCommits = function (options, cb) {\n options = options || {};\n var url = repoPath + '/commits';\n var params = [];\n\n if (options.sha) {\n params.push('sha=' + encodeURIComponent(options.sha));\n }\n\n if (options.path) {\n params.push('path=' + encodeURIComponent(options.path));\n }\n\n if (options.author) {\n params.push('author=' + encodeURIComponent(options.author));\n }\n\n if (options.since) {\n var since = options.since;\n\n if (since.constructor === Date) {\n since = since.toISOString();\n }\n\n params.push('since=' + encodeURIComponent(since));\n }\n\n if (options.until) {\n var until = options.until;\n\n if (until.constructor === Date) {\n until = until.toISOString();\n }\n\n params.push('until=' + encodeURIComponent(until));\n }\n\n if (options.page) {\n params.push('page=' + options.page);\n }\n\n if (options.perpage) {\n params.push('per_page=' + options.perpage);\n }\n\n if (params.length > 0) {\n url += '?' + params.join('&');\n }\n\n _request('GET', url, null, cb);\n };\n\n // Check if a repository is starred.\n // --------\n\n this.isStarred = function(owner, repository, cb) {\n _request('GET', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Star a repository.\n // --------\n\n this.star = function(owner, repository, cb) {\n _request('PUT', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Unstar a repository.\n // --------\n\n this.unstar = function(owner, repository, cb) {\n _request('DELETE', '/user/starred/' + owner + '/' + repository, null, cb);\n };\n\n // Create a new release\n // --------\n\n this.createRelease = function(options, cb) {\n _request('POST', repoPath + '/releases', options, cb);\n };\n\n // Edit a release\n // --------\n\n this.editRelease = function(id, options, cb) {\n _request('PATCH', repoPath + '/releases/' + id, options, cb);\n };\n\n // Get a single release\n // --------\n\n this.getRelease = function(id, cb) {\n _request('GET', repoPath + '/releases/' + id, null, cb);\n };\n\n // Remove a release\n // --------\n\n this.deleteRelease = function(id, cb) {\n _request('DELETE', repoPath + '/releases/' + id, null, cb);\n };\n };\n\n // Gists API\n // =======\n\n Github.Gist = function (options) {\n var id = options.id;\n var gistPath = '/gists/' + id;\n\n // Read the gist\n // --------\n\n this.read = function (cb) {\n _request('GET', gistPath, null, cb);\n };\n\n // Create the gist\n // --------\n // {\n // \"description\": \"the description for this gist\",\n // \"public\": true,\n // \"files\": {\n // \"file1.txt\": {\n // \"content\": \"String file contents\"\n // }\n // }\n // }\n\n this.create = function (options, cb) {\n _request('POST', '/gists', options, cb);\n };\n\n // Delete the gist\n // --------\n\n this.delete = function (cb) {\n _request('DELETE', gistPath, null, cb);\n };\n\n // Fork a gist\n // --------\n\n this.fork = function (cb) {\n _request('POST', gistPath + '/fork', null, cb);\n };\n\n // Update a gist with the new stuff\n // --------\n\n this.update = function (options, cb) {\n _request('PATCH', gistPath, options, cb);\n };\n\n // Star a gist\n // --------\n\n this.star = function (cb) {\n _request('PUT', gistPath + '/star', null, cb);\n };\n\n // Untar a gist\n // --------\n\n this.unstar = function (cb) {\n _request('DELETE', gistPath + '/star', null, cb);\n };\n\n // Check if a gist is starred\n // --------\n\n this.isStarred = function (cb) {\n _request('GET', gistPath + '/star', null, cb);\n };\n };\n\n // Issues API\n // ==========\n\n Github.Issue = function (options) {\n var path = '/repos/' + options.user + '/' + options.repo + '/issues';\n\n this.create = function(options, cb) {\n _request('POST', path, options, cb);\n };\n\n this.list = function (options, cb) {\n var query = [];\n\n for(var key in options) {\n if (options.hasOwnProperty(key)) {\n query.push(encodeURIComponent(key) + '=' + encodeURIComponent(options[key]));\n }\n }\n\n _requestAllPages(path + '?' + query.join('&'), cb);\n };\n\n this.comment = function (issue, comment, cb) {\n _request('POST', issue.comments_url, {\n body: comment\n }, cb);\n };\n\n this.edit = function (issue, options, cb) {\n _request('PATCH', path + '/' + issue, options, cb);\n };\n\n this.get = function (issue, cb) {\n _request('GET', path + '/' + issue, null, cb);\n };\n };\n\n // Search API\n // ==========\n\n Github.Search = function (options) {\n var path = '/search/';\n var query = '?q=' + options.query;\n\n this.repositories = function (options, cb) {\n _request('GET', path + 'repositories' + query, options, cb);\n };\n\n this.code = function (options, cb) {\n _request('GET', path + 'code' + query, options, cb);\n };\n\n this.issues = function (options, cb) {\n _request('GET', path + 'issues' + query, options, cb);\n };\n\n this.users = function (options, cb) {\n _request('GET', path + 'users' + query, options, cb);\n };\n };\n\n // Rate Limit API\n // ==========\n\n Github.RateLimit = function() {\n this.getRateLimit = function(cb) {\n _request('GET', '/rate_limit', null, cb);\n };\n };\n\n return Github;\n };\n\n // Top Level API\n // -------\n\n Github.getIssues = function (user, repo) {\n return new Github.Issue({\n user: user,\n repo: repo\n });\n };\n\n Github.getRepo = function (user, repo) {\n if (!repo) {\n return new Github.Repository({\n fullname: user\n });\n } else {\n return new Github.Repository({\n user: user,\n name: repo\n });\n }\n };\n\n Github.getUser = function () {\n return new Github.User();\n };\n\n Github.getGist = function (id) {\n return new Github.Gist({\n id: id\n });\n };\n\n Github.getSearch = function (query) {\n return new Github.Search({\n query: query\n });\n };\n\n Github.getRateLimit = function() {\n return new Github.RateLimit();\n };\n\n return Github;\n}));\n"],"sourceRoot":"/source/"} \ No newline at end of file